From 13fea36d03529eefceadaa16b8a9d1faf3802eed Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 31 Aug 2007 15:24:43 -0400 Subject: [PATCH 001/435] Bug#15776: 32-bit signed int used for length of blob Based on contributed patch from Martin Friebe, CLA from 2007-02-24. The parser lacked support for field sizes after signed long, when it should extend to 2**32-1. Now, we correct that limitation, and also make the error handling consistent for casts. mysql-test/r/type_blob.result: Verify that blobs may be created with the size that is already documented. Additionally, test the limits of several other types. mysql-test/t/type_blob.test: Verify that blobs may be created with the size that is already documented. Additionally, test the limits of several other types. sql/field.cc: atoi() insufficient to gauge the length of some fields. Change it to strtoul(). sql/item_create.cc: atoi() insufficient to gauge the length of some fields. Change it to strtoul(). If a casted length is too long, raise an error. sql/share/errmsg.txt: Change ER_TOO_BIG_FIELDLENGTH so that it can accept sizes larger than 2**15 -- instead, 2**32. sql/sql_yacc.yy: Make lengths take, in addition to NUM, LONG_NUM, ULONGLONG_NUM, and DECIMAL_NUM. sql/unireg.h: Define new constant. --- mysql-test/r/type_blob.result | 147 +++++++++++++++++++++++++++++++ mysql-test/t/type_blob.test | 161 ++++++++++++++++++++++++++++++++++ sql/field.cc | 16 +++- sql/item_create.cc | 57 +++++++++++- sql/share/errmsg.txt | 60 ++++++------- sql/sql_yacc.yy | 55 ++++++------ sql/unireg.h | 1 + 7 files changed, 434 insertions(+), 63 deletions(-) diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result index c72ee005428..599a2224472 100644 --- a/mysql-test/r/type_blob.result +++ b/mysql-test/r/type_blob.result @@ -807,4 +807,151 @@ set @@sql_mode='TRADITIONAL'; create table t1 (a text default ''); ERROR 42000: BLOB/TEXT column 'a' can't have a default value set @@sql_mode=''; +create table b15776 (data blob(2147483647)); +drop table b15776; +create table b15776 (data blob(-1)); +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 '-1))' at line 1 +create table b15776 (data blob(2147483648)); +drop table b15776; +create table b15776 (data blob(4294967294)); +drop table b15776; +create table b15776 (data blob(4294967295)); +drop table b15776; +create table b15776 (data blob(4294967296)); +ERROR 42000: Display width out of range for column 'data' (max = 4294967295) +CREATE TABLE b15776 (a blob(2147483647), b blob(2147483648), c blob(4294967295), a1 text(2147483647), b1 text(2147483648), c1 text(4294967295) ); +show columns from b15776; +Field Type Null Key Default Extra +a longblob YES NULL +b longblob YES NULL +c longblob YES NULL +a1 longtext YES NULL +b1 longtext YES NULL +c1 longtext YES NULL +drop table b15776; +CREATE TABLE b15776 (a blob(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a text(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a blob(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a text(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a int(0)); +INSERT INTO b15776 values (NULL), (1), (42), (654); +SELECT * from b15776 ORDER BY a; +a +NULL +1 +42 +654 +DROP TABLE b15776; +CREATE TABLE b15776 (a int(-1)); +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 '-1))' at line 1 +CREATE TABLE b15776 (a int(255)); +DROP TABLE b15776; +CREATE TABLE b15776 (a int(256)); +ERROR 42000: Display width out of range for column 'a' (max = 255) +CREATE TABLE b15776 (data blob(-1)); +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 '-1))' at line 1 +CREATE TABLE b15776 (a char(2147483647)); +ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead +CREATE TABLE b15776 (a char(2147483648)); +ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead +CREATE TABLE b15776 (a char(4294967295)); +ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead +CREATE TABLE b15776 (a char(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a year(4294967295)); +INSERT INTO b15776 VALUES (42); +SELECT * FROM b15776; +a +2042 +DROP TABLE b15776; +CREATE TABLE b15776 (a year(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a year(0)); +DROP TABLE b15776; +CREATE TABLE b15776 (a year(-2)); +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 '-2))' at line 1 +CREATE TABLE b15776 (a timestamp(4294967294)); +Warnings: +Warning 1287 'TIMESTAMP(4294967294)' is deprecated; use 'TIMESTAMP' instead +DROP TABLE b15776; +CREATE TABLE b15776 (a timestamp(4294967295)); +ERROR 42000: Display width out of range for column 'a' (max = 255) +CREATE TABLE b15776 (a timestamp(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a timestamp(-2)); +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 '-2))' at line 1 +CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 select cast(null as char(4294967295)); +show columns from b15776; +Field Type Null Key Default Extra +cast(null as char(4294967295)) char(0) YES NULL +drop table b15776; +CREATE TABLE b15776 select cast(null as nchar(4294967295)); +show columns from b15776; +Field Type Null Key Default Extra +cast(null as nchar(4294967295)) char(0) YES NULL +drop table b15776; +CREATE TABLE b15776 select cast(null as binary(4294967295)); +show columns from b15776; +Field Type Null Key Default Extra +cast(null as binary(4294967295)) binary(0) YES NULL +drop table b15776; +explain select cast(1 as char(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as nchar(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as binary(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as char(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select cast(1 as nchar(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select cast(1 as binary(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select cast(1 as decimal(-1)); +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 '-1))' at line 1 +explain select cast(1 as decimal(64, 30)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as decimal(64, 999999999999999999999999999999)); +Got one of the listed errors +explain select cast(1 as decimal(4294967296)); +Got one of the listed errors +explain select cast(1 as decimal(999999999999999999999999999999999999)); +Got one of the listed errors +explain select convert(1, char(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select convert(1, char(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, nchar(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select convert(1, nchar(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, nchar(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, binary(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select convert(1, binary(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) End of 5.0 tests diff --git a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test index ba9f374a24c..097c749f977 100644 --- a/mysql-test/t/type_blob.test +++ b/mysql-test/t/type_blob.test @@ -436,4 +436,165 @@ set @@sql_mode='TRADITIONAL'; create table t1 (a text default ''); set @@sql_mode=''; +# +# Bug#15776: 32-bit signed int used for length of blob +# """LONGBLOB: A BLOB column with a maximum length of 4,294,967,295 or 4GB.""" +# +# Conditions should be in this order: +# A size is not in the allowed bounds. +# If the type is char-ish AND size is within the max blob size: +# raise ER_TOO_BIG_FIELDLENGTH (suggest using BLOB) +# If size is too small: +# raise ER_PARSE_ERROR +# raise ER_TOO_BIG_DISPLAYWIDTH + +# BLOB and TEXT types +create table b15776 (data blob(2147483647)); +drop table b15776; +--error ER_PARSE_ERROR +create table b15776 (data blob(-1)); +create table b15776 (data blob(2147483648)); +drop table b15776; +create table b15776 (data blob(4294967294)); +drop table b15776; +create table b15776 (data blob(4294967295)); +drop table b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +create table b15776 (data blob(4294967296)); + +CREATE TABLE b15776 (a blob(2147483647), b blob(2147483648), c blob(4294967295), a1 text(2147483647), b1 text(2147483648), c1 text(4294967295) ); +show columns from b15776; +drop table b15776; + +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a blob(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a text(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a blob(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a text(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); + +# Int types +# "Another extension is supported by MySQL for optionally specifying the +# display width of integer data types in parentheses following the base keyword +# for the type (for example, INT(4)). This optional display width is used to +# display integer values having a width less than the width specified for the +# column by left-padding them with spaces." § Numeric Types +CREATE TABLE b15776 (a int(0)); # 0 is special case, means default size +INSERT INTO b15776 values (NULL), (1), (42), (654); +SELECT * from b15776 ORDER BY a; +DROP TABLE b15776; +--error ER_PARSE_ERROR +CREATE TABLE b15776 (a int(-1)); +CREATE TABLE b15776 (a int(255)); +DROP TABLE b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a int(256)); +--error ER_PARSE_ERROR +CREATE TABLE b15776 (data blob(-1)); + +# Char types +# Recommend BLOB +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE b15776 (a char(2147483647)); +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE b15776 (a char(2147483648)); +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE b15776 (a char(4294967295)); +# Even BLOB won't hold +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a char(4294967296)); + + +# Other numeric-ish types +## For year, widths not "2" or "4" are silently rewritten to "4". But +## When we complain about it, we say that the max is 255. We may be +## talking about different things. It's confusing. +CREATE TABLE b15776 (a year(4294967295)); +INSERT INTO b15776 VALUES (42); +SELECT * FROM b15776; +DROP TABLE b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a year(4294967296)); +CREATE TABLE b15776 (a year(0)); # 0 is special case, means default size +DROP TABLE b15776; +--error ER_PARSE_ERROR +CREATE TABLE b15776 (a year(-2)); + +## For timestamp, we silently rewrite widths to 14 or 19. +CREATE TABLE b15776 (a timestamp(4294967294)); +DROP TABLE b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a timestamp(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a timestamp(4294967296)); +--error ER_PARSE_ERROR +CREATE TABLE b15776 (a timestamp(-2)); + + +# We've already tested the case, but this should visually show that +# widths that are too large to be interpreted cause DISPLAYWIDTH errors. +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); + +## Do not select, too much memory needed. +CREATE TABLE b15776 select cast(null as char(4294967295)); +show columns from b15776; +drop table b15776; +CREATE TABLE b15776 select cast(null as nchar(4294967295)); +show columns from b15776; +drop table b15776; +CREATE TABLE b15776 select cast(null as binary(4294967295)); +show columns from b15776; +drop table b15776; + +explain select cast(1 as char(4294967295)); +explain select cast(1 as nchar(4294967295)); +explain select cast(1 as binary(4294967295)); + +--error ER_TOO_BIG_DISPLAYWIDTH +explain select cast(1 as char(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select cast(1 as nchar(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select cast(1 as binary(4294967296)); + +--error ER_PARSE_ERROR +explain select cast(1 as decimal(-1)); +explain select cast(1 as decimal(64, 30)); +# It's not as important which errors are raised for these, since the +# limit is nowhere near 3**32. We may fix these eventually to take +# 4294967295 and still reject it because it's greater than 64 or 30, +# but that's not a high priority and the parser needn't worry about +# such a weird case. +--error ER_TOO_BIG_SCALE,ER_PARSE_ERROR +explain select cast(1 as decimal(64, 999999999999999999999999999999)); +--error ER_TOO_BIG_PRECISION,ER_PARSE_ERROR +explain select cast(1 as decimal(4294967296)); +--error ER_TOO_BIG_PRECISION,ER_PARSE_ERROR +explain select cast(1 as decimal(999999999999999999999999999999999999)); + +explain select convert(1, char(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, char(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +explain select convert(1, nchar(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, nchar(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, nchar(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +explain select convert(1, binary(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, binary(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); + --echo End of 5.0 tests diff --git a/sql/field.cc b/sql/field.cc index 3f74210807b..2950f349580 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -8395,8 +8395,20 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, (fld_type_modifier & NOT_NULL_FLAG) && fld_type != FIELD_TYPE_TIMESTAMP) flags|= NO_DEFAULT_VALUE_FLAG; - if (fld_length && !(length= (uint) atoi(fld_length))) - fld_length= 0; /* purecov: inspected */ + if (fld_length != 0) + { + errno= 0; + length= strtoul(fld_length, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), fld_name, MAX_FIELD_BLOBLENGTH); + DBUG_RETURN(TRUE); + } + + if (length == 0) + fld_length= 0; /* purecov: inspected */ + } + sign_len= fld_type_modifier & UNSIGNED_FLAG ? 0 : 1; switch (fld_type) { diff --git a/sql/item_create.cc b/sql/item_create.cc index 561613032bc..b7a9a1d7feb 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -464,8 +464,42 @@ Item *create_func_cast(Item *a, Cast_target cast_type, case ITEM_CAST_TIME: res= new Item_time_typecast(a); break; case ITEM_CAST_DATETIME: res= new Item_datetime_typecast(a); break; case ITEM_CAST_DECIMAL: - len= c_len ? atoi(c_len) : 0; - dec= c_dec ? atoi(c_dec) : 0; + if (c_len == NULL) + { + len= 0; + } + else + { + ulong decoded_size; + errno= 0; + decoded_size= strtoul(c_len, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_PRECISION, MYF(0), c_len, a->name, + DECIMAL_MAX_PRECISION); + return NULL; + } + len= decoded_size; + } + + if (c_dec == NULL) + { + dec= 0; + } + else + { + ulong decoded_size; + errno= 0; + decoded_size= strtoul(c_dec, NULL, 10); + if ((errno != 0) || (decoded_size > UINT_MAX)) + { + my_error(ER_TOO_BIG_SCALE, MYF(0), c_dec, a->name, + DECIMAL_MAX_SCALE); + return NULL; + } + dec= decoded_size; + } + my_decimal_trim(&len, &dec); if (len < dec) { @@ -486,8 +520,25 @@ Item *create_func_cast(Item *a, Cast_target cast_type, } res= new Item_decimal_typecast(a, len, dec); break; + case ITEM_CAST_CHAR: - len= c_len ? atoi(c_len) : -1; + if (c_len == NULL) + { + len= LL(-1); + } + else + { + ulong decoded_size; + errno= 0; + decoded_size= strtoul(c_len, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH); + return NULL; + } + len= decoded_size; + } + res= new Item_char_typecast(a, len, cs ? cs : current_thd->variables.collation_connection); break; diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index a52ffa8216c..80ed9c788cc 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -1771,30 +1771,30 @@ ER_BLOB_USED_AS_KEY 42000 S1009 swe "En BLOB '%-.64s' kan inte vara nyckel med den anvnda tabelltypen" ukr "BLOB '%-.64s' Φ Ц æ" ER_TOO_BIG_FIELDLENGTH 42000 S1009 - cze "P-Bli velk dlka sloupce '%-.64s' (nejvce %d). Pouijte BLOB" - dan "For stor feltlngde for kolonne '%-.64s' (maks = %d). Brug BLOB i stedet" - nla "Te grote kolomlengte voor '%-.64s' (max = %d). Maak hiervoor gebruik van het type BLOB" - eng "Column length too big for column '%-.64s' (max = %d); use BLOB or TEXT instead" - jps "column '%-.64s' ,mۂ column ̑傫܂. (ő %d ܂). BLOB ɎgpĂ.", - est "Tulba '%-.64s' pikkus on liiga pikk (maksimaalne pikkus: %d). Kasuta BLOB vljatpi" - fre "Champ '%-.64s' trop long (max = %d). Utilisez un BLOB" - ger "Feldlnge fr Feld '%-.64s' zu gro (maximal %d). BLOB- oder TEXT-Spaltentyp verwenden!" - greek " '%-.64s' (max = %d). BLOB" - hun "A(z) '%-.64s' oszlop tul hosszu. (maximum = %d). Hasznaljon BLOB tipust inkabb." - ita "La colonna '%-.64s' e` troppo grande (max=%d). Utilizza un BLOB." - jpn "column '%-.64s' ,ݤ column 礭¿ޤ. ( %d ޤ). BLOB 򤫤˻ѤƤ." - kor "Į '%-.64s' Į ̰ ʹ ϴ (ִ = %d). ſ BLOB ϼ." - nor "For stor nkkellengde for kolonne '%-.64s' (maks = %d). Bruk BLOB istedenfor" - norwegian-ny "For stor nykkellengde for felt '%-.64s' (maks = %d). Bruk BLOB istadenfor" - pol "Zbyt dua dugo? kolumny '%-.64s' (maks. = %d). W zamian uyj typu BLOB" - por "Comprimento da coluna '%-.64s' grande demais (max = %d); use BLOB em seu lugar" - rum "Lungimea coloanei '%-.64s' este prea lunga (maximum = %d). Foloseste BLOB mai bine" - rus " '%-.64s' ( = %d). BLOB TEXT " - serbian "Previe podataka za kolonu '%-.64s' (maksimum je %d). Upotrebite BLOB polje" - slo "Prli vek dka pre pole '%-.64s' (maximum = %d). Pouite BLOB" - spa "Longitud de columna demasiado grande para la columna '%-.64s' (maximo = %d).Usar BLOB en su lugar" - swe "Fr stor kolumnlngd angiven fr '%-.64s' (max= %d). Anvnd en BLOB instllet" - ukr " '%-.64s' (max = %d). BLOB" + cze "P-Bli velk dlka sloupce '%-.64s' (nejvce %lu). Pouijte BLOB" + dan "For stor feltlngde for kolonne '%-.64s' (maks = %lu). Brug BLOB i stedet" + nla "Te grote kolomlengte voor '%-.64s' (max = %lu). Maak hiervoor gebruik van het type BLOB" + eng "Column length too big for column '%-.64s' (max = %lu); use BLOB or TEXT instead" + jps "column '%-.64s' ,mۂ column ̑傫܂. (ő %lu ܂). BLOB ɎgpĂ.", + est "Tulba '%-.64s' pikkus on liiga pikk (maksimaalne pikkus: %lu). Kasuta BLOB vljatpi" + fre "Champ '%-.64s' trop long (max = %lu). Utilisez un BLOB" + ger "Feldlnge fr Feld '%-.64s' zu gro (maximal %lu). BLOB- oder TEXT-Spaltentyp verwenden!" + greek " '%-.64s' (max = %lu). BLOB" + hun "A(z) '%-.64s' oszlop tul hosszu. (maximum = %lu). Hasznaljon BLOB tipust inkabb." + ita "La colonna '%-.64s' e` troppo grande (max=%lu). Utilizza un BLOB." + jpn "column '%-.64s' ,ݤ column 礭¿ޤ. ( %lu ޤ). BLOB 򤫤˻ѤƤ." + kor "Į '%-.64s' Į ̰ ʹ ϴ (ִ = %lu). ſ BLOB ϼ." + nor "For stor nkkellengde for kolonne '%-.64s' (maks = %lu). Bruk BLOB istedenfor" + norwegian-ny "For stor nykkellengde for felt '%-.64s' (maks = %lu). Bruk BLOB istadenfor" + pol "Zbyt dua dugo? kolumny '%-.64s' (maks. = %lu). W zamian uyj typu BLOB" + por "Comprimento da coluna '%-.64s' grande demais (max = %lu); use BLOB em seu lugar" + rum "Lungimea coloanei '%-.64s' este prea lunga (maximum = %lu). Foloseste BLOB mai bine" + rus " '%-.64s' ( = %lu). BLOB TEXT " + serbian "Previe podataka za kolonu '%-.64s' (maksimum je %lu). Upotrebite BLOB polje" + slo "Prli vek dka pre pole '%-.64s' (maximum = %lu). Pouite BLOB" + spa "Longitud de columna demasiado grande para la columna '%-.64s' (maximo = %lu).Usar BLOB en su lugar" + swe "Fr stor kolumnlngd angiven fr '%-.64s' (max= %lu). Anvnd en BLOB instllet" + ukr " '%-.64s' (max = %lu). BLOB" ER_WRONG_AUTO_KEY 42000 S1009 cze "M-Bete mt pouze jedno AUTO pole a to mus bt definovno jako kl" dan "Der kan kun specificeres eet AUTO_INCREMENT-felt, og det skal vre indekseret" @@ -5508,11 +5508,11 @@ ER_SP_NO_RECURSION eng "Recursive stored functions and triggers are not allowed." ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt" ER_TOO_BIG_SCALE 42000 S1009 - eng "Too big scale %d specified for column '%-.64s'. Maximum is %d." - ger "Zu groer Skalierungsfaktor %d fr Feld '%-.64s' angegeben. Maximum ist %d" + eng "Too big scale %lu specified for column '%-.64s'. Maximum is %d." + ger "Zu groer Skalierungsfaktor %lu fr Feld '%-.64s' angegeben. Maximum ist %d" ER_TOO_BIG_PRECISION 42000 S1009 - eng "Too big precision %d specified for column '%-.64s'. Maximum is %d." - ger "Zu groe Genauigkeit %d fr Feld '%-.64s' angegeben. Maximum ist %d" + eng "Too big precision %lu specified for column '%-.64s'. Maximum is %lu." + ger "Zu groe Genauigkeit %lu fr Feld '%-.64s' angegeben. Maximum ist %lu" ER_M_BIGGER_THAN_D 42000 S1009 eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.64s')." ger "Fr FLOAT(M,D), DOUBLE(M,D) oder DECIMAL(M,D) muss M >= D sein (Feld '%-.64s')" @@ -5550,8 +5550,8 @@ ER_WARN_CANT_DROP_DEFAULT_KEYCACHE eng "Cannot drop default keycache" ger "Der vorgabemige Schlssel-Cache kann nicht gelscht werden" ER_TOO_BIG_DISPLAYWIDTH 42000 S1009 - eng "Display width out of range for column '%-.64s' (max = %d)" - ger "Anzeigebreite auerhalb des zulssigen Bereichs fr Spalte '%-.64s' (Maximum: %d)" + eng "Display width out of range for column '%-.64s' (max = %lu)" + ger "Anzeigebreite auerhalb des zulssigen Bereichs fr Spalte '%-.64s' (Maximum: %lu)" ER_XAER_DUPID XAE08 eng "XAER_DUPID: The XID already exists" ger "XAER_DUPID: Die XID existiert bereits" diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 638da3b1bb0..c270e005454 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1171,7 +1171,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); single_multi table_wild_list table_wild_one opt_wild union_clause union_list precision subselect_start opt_and charset - subselect_end select_var_list select_var_list_init help opt_len + subselect_end select_var_list select_var_list_init help opt_field_length field_length opt_extended_describe prepare prepare_src execute deallocate statement sp_suid @@ -3010,7 +3010,7 @@ udf_type: field_list: field_list_item - | field_list ',' field_list_item; + | field_list ',' field_list_item; /* FIXME: Should this be backward? */ field_list_item: @@ -3111,45 +3111,38 @@ field_spec: }; type: - int_type opt_len field_options { $$=$1; } + int_type opt_field_length field_options { $$=$1; } | real_type opt_precision field_options { $$=$1; } | FLOAT_SYM float_options field_options { $$=FIELD_TYPE_FLOAT; } | BIT_SYM { Lex->length= (char*) "1"; $$=FIELD_TYPE_BIT; } - | BIT_SYM '(' NUM ')' { Lex->length= $3.str; - $$=FIELD_TYPE_BIT; } + | BIT_SYM field_length { $$=FIELD_TYPE_BIT; } | BOOL_SYM { Lex->length=(char*) "1"; $$=FIELD_TYPE_TINY; } | BOOLEAN_SYM { Lex->length=(char*) "1"; $$=FIELD_TYPE_TINY; } - | char '(' NUM ')' opt_binary { Lex->length=$3.str; - $$=FIELD_TYPE_STRING; } + | char field_length opt_binary { $$=FIELD_TYPE_STRING; } | char opt_binary { Lex->length=(char*) "1"; $$=FIELD_TYPE_STRING; } - | nchar '(' NUM ')' opt_bin_mod { Lex->length=$3.str; - $$=FIELD_TYPE_STRING; + | nchar field_length opt_bin_mod { $$=FIELD_TYPE_STRING; Lex->charset=national_charset_info; } | nchar opt_bin_mod { Lex->length=(char*) "1"; $$=FIELD_TYPE_STRING; Lex->charset=national_charset_info; } - | BINARY '(' NUM ')' { Lex->length=$3.str; - Lex->charset=&my_charset_bin; + | BINARY field_length { Lex->charset=&my_charset_bin; $$=FIELD_TYPE_STRING; } | BINARY { Lex->length= (char*) "1"; Lex->charset=&my_charset_bin; $$=FIELD_TYPE_STRING; } - | varchar '(' NUM ')' opt_binary { Lex->length=$3.str; - $$= MYSQL_TYPE_VARCHAR; } - | nvarchar '(' NUM ')' opt_bin_mod { Lex->length=$3.str; - $$= MYSQL_TYPE_VARCHAR; + | varchar field_length opt_binary { $$= MYSQL_TYPE_VARCHAR; } + | nvarchar field_length opt_bin_mod { $$= MYSQL_TYPE_VARCHAR; Lex->charset=national_charset_info; } - | VARBINARY '(' NUM ')' { Lex->length=$3.str; - Lex->charset=&my_charset_bin; + | VARBINARY field_length { Lex->charset=&my_charset_bin; $$= MYSQL_TYPE_VARCHAR; } - | YEAR_SYM opt_len field_options { $$=FIELD_TYPE_YEAR; } + | YEAR_SYM opt_field_length field_options { $$=FIELD_TYPE_YEAR; } | DATE_SYM { $$=FIELD_TYPE_DATE; } | TIME_SYM { $$=FIELD_TYPE_TIME; } - | TIMESTAMP opt_len + | TIMESTAMP opt_field_length { if (YYTHD->variables.sql_mode & MODE_MAXDB) $$=FIELD_TYPE_DATETIME; @@ -3165,7 +3158,7 @@ type: | DATETIME { $$=FIELD_TYPE_DATETIME; } | TINYBLOB { Lex->charset=&my_charset_bin; $$=FIELD_TYPE_TINY_BLOB; } - | BLOB_SYM opt_len { Lex->charset=&my_charset_bin; + | BLOB_SYM opt_field_length { Lex->charset=&my_charset_bin; $$=FIELD_TYPE_BLOB; } | spatial_type { @@ -3187,7 +3180,7 @@ type: $$=FIELD_TYPE_MEDIUM_BLOB; } | LONG_SYM varchar opt_binary { $$=FIELD_TYPE_MEDIUM_BLOB; } | TINYTEXT opt_binary { $$=FIELD_TYPE_TINY_BLOB; } - | TEXT_SYM opt_len opt_binary { $$=FIELD_TYPE_BLOB; } + | TEXT_SYM opt_field_length opt_binary { $$=FIELD_TYPE_BLOB; } | MEDIUMTEXT opt_binary { $$=FIELD_TYPE_MEDIUM_BLOB; } | LONGTEXT opt_binary { $$=FIELD_TYPE_LONG_BLOB; } | DECIMAL_SYM float_options field_options @@ -3260,7 +3253,7 @@ real_type: float_options: /* empty */ { Lex->dec=Lex->length= (char*)0; } - | '(' NUM ')' { Lex->length=$2.str; Lex->dec= (char*)0; } + | field_length { Lex->dec= (char*)0; } | precision {}; precision: @@ -3283,9 +3276,15 @@ field_option: | UNSIGNED { Lex->type|= UNSIGNED_FLAG;} | ZEROFILL { Lex->type|= UNSIGNED_FLAG | ZEROFILL_FLAG; }; -opt_len: - /* empty */ { Lex->length=(char*) 0; } /* use default length */ - | '(' NUM ')' { Lex->length= $2.str; }; +opt_field_length: + /* empty */ { Lex->length=(char*) NULL; } /* use default length */ + | field_length {}; + +field_length: + '(' LONG_NUM ')' { Lex->length= $2.str; } + | '(' ULONGLONG_NUM ')' { Lex->length= $2.str; } + | '(' DECIMAL_NUM ')' { Lex->length= $2.str; } + | '(' NUM ')' { Lex->length= $2.str; }; opt_precision: /* empty */ {} @@ -5466,9 +5465,9 @@ in_sum_expr: }; cast_type: - BINARY opt_len { $$=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; } - | CHAR_SYM opt_len opt_binary { $$=ITEM_CAST_CHAR; Lex->dec= 0; } - | NCHAR_SYM opt_len { $$=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; } + BINARY opt_field_length { $$=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; } + | CHAR_SYM opt_field_length opt_binary { $$=ITEM_CAST_CHAR; Lex->dec= 0; } + | NCHAR_SYM opt_field_length { $$=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; } | SIGNED_SYM { $$=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } | SIGNED_SYM INT_SYM { $$=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } | UNSIGNED { $$=ITEM_CAST_UNSIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } diff --git a/sql/unireg.h b/sql/unireg.h index 81ca18c1d32..0ab2a40048b 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -60,6 +60,7 @@ #define MAX_MBWIDTH 3 /* Max multibyte sequence */ #define MAX_FIELD_CHARLENGTH 255 #define MAX_FIELD_VARCHARLENGTH 65535 +#define MAX_FIELD_BLOBLENGTH UINT_MAX #define CONVERT_IF_BIGGER_TO_BLOB 512 /* Used for CREATE ... SELECT */ /* Max column width +1 */ From 6153c248cfd509a62d3c5136df3f904914bf963b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 3 Mar 2008 12:47:05 +0100 Subject: [PATCH 002/435] Bug#34995 mysql-test-run doesn't allow client lib/binary selection mysql-test/mysql-test-run.pl: Add support for spcifying --client-libdir=s and --client-bindir=s --- mysql-test/mysql-test-run.pl | 47 +++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 7c4677b8274..83024710ce6 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -110,6 +110,7 @@ our $glob_basedir; our $path_charsetsdir; our $path_client_bindir; +our $path_client_libdir; our $path_language; our $path_timefile; our $path_snapshot; @@ -623,6 +624,8 @@ sub command_line_setup () { 'vardir=s' => \$opt_vardir, 'benchdir=s' => \$glob_mysql_bench_dir, 'mem' => \$opt_mem, + 'client-bindir=s' => \$path_client_bindir, + 'client-libdir=s' => \$path_client_libdir, # Misc 'report-features' => \$opt_report_features, @@ -717,11 +720,19 @@ sub command_line_setup () { # # Look for the client binaries directory - $path_client_bindir= mtr_path_exists("$glob_basedir/client_release", - "$glob_basedir/client_debug", - vs_config_dirs('client', ''), - "$glob_basedir/client", - "$glob_basedir/bin"); + if ($path_client_bindir) + { + # --client-bindir=path set on command line, check that the path exists + $path_client_bindir= mtr_path_exists($path_client_bindir); + } + else + { + $path_client_bindir= mtr_path_exists("$glob_basedir/client_release", + "$glob_basedir/client_debug", + vs_config_dirs('client', ''), + "$glob_basedir/client", + "$glob_basedir/bin"); + } if (!$opt_extern) { @@ -1755,19 +1766,25 @@ sub environment_setup () { my @ld_library_paths; - # -------------------------------------------------------------------------- - # Setup LD_LIBRARY_PATH so the libraries from this distro/clone - # are used in favor of the system installed ones - # -------------------------------------------------------------------------- - if ( $source_dist ) + if ($path_client_libdir) { - push(@ld_library_paths, "$glob_basedir/libmysql/.libs/", - "$glob_basedir/libmysql_r/.libs/", - "$glob_basedir/zlib.libs/"); + # Use the --client-libdir passed on commandline + push(@ld_library_paths, "$path_client_libdir"); } else { - push(@ld_library_paths, "$glob_basedir/lib"); + # Setup LD_LIBRARY_PATH so the libraries from this distro/clone + # are used in favor of the system installed ones + if ( $source_dist ) + { + push(@ld_library_paths, "$glob_basedir/libmysql/.libs/", + "$glob_basedir/libmysql_r/.libs/", + "$glob_basedir/zlib.libs/"); + } + else + { + push(@ld_library_paths, "$glob_basedir/lib"); + } } # -------------------------------------------------------------------------- @@ -5235,6 +5252,8 @@ Misc options warnings | log-warnings Pass --log-warnings to mysqld sleep=SECONDS Passed to mysqltest, will be used as fixed sleep time + client-bindir=PATH Path to the directory where client binaries are located + client-libdir=PATH Path to the directory where client libraries are located Deprecated options with-openssl Deprecated option for ssl From 5407a8ec07333c434621944bede0887d74020f6d Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 18 Mar 2008 14:24:52 +0100 Subject: [PATCH 003/435] Bug#32059 thread_id is a long rather than ulong thread_id should be defined as a dword (32 bit unsigned). mysys/my_thr_init.c: * Change variable thread_id to unsigned long. --- mysys/my_thr_init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysys/my_thr_init.c b/mysys/my_thr_init.c index c446808c7da..481d72cf3fe 100644 --- a/mysys/my_thr_init.c +++ b/mysys/my_thr_init.c @@ -223,7 +223,7 @@ void my_thread_global_end(void) #endif } -static long thread_id=0; +static ulong thread_id=0; /* Allocate thread specific memory for the thread, used by mysys and dbug From a3126bfc2ecdbe321ff05e5810e2eb6b631d02ca Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Mar 2008 12:52:55 +0100 Subject: [PATCH 004/435] Bug#33275 Server crash when creating temporary table mysql.user When creating a temporary table that uses the same name as the mysql privs table the server would crash on FLUSH PRIVILEGES. This patches corrects the problem by setting a flag to ignore any temporary table when trying to reload the privileges. mysql-test/r/grant.result: Test for checking shadowing of privilege tables mysql-test/t/grant.test: Test for checking shadowing of privilege tables sql/sql_acl.cc: Set flag for ignoring temporary tables when trying to reload privileges. --- mysql-test/r/grant.result | 6 ++++++ mysql-test/t/grant.test | 7 +++++++ sql/sql_acl.cc | 5 ++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index e27ef64af43..8a89a9dc264 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -1129,4 +1129,10 @@ DROP USER mysqltest_1@localhost; DROP DATABASE db27878; use test; DROP TABLE t1; +# +# Bug#33275 Server crash when creating temporary table mysql.user +# +CREATE TEMPORARY TABLE mysql.user (id INT); +FLUSH PRIVILEGES; +DROP TABLE mysql.user; End of 5.0 tests diff --git a/mysql-test/t/grant.test b/mysql-test/t/grant.test index ed95d90c8f8..93c416133e8 100644 --- a/mysql-test/t/grant.test +++ b/mysql-test/t/grant.test @@ -1153,4 +1153,11 @@ DROP DATABASE db27878; use test; DROP TABLE t1; +--echo # +--echo # Bug#33275 Server crash when creating temporary table mysql.user +--echo # +CREATE TEMPORARY TABLE mysql.user (id INT); +FLUSH PRIVILEGES; +DROP TABLE mysql.user; + --echo End of 5.0 tests diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 8fdd054eb39..64b1e699289 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -558,6 +558,8 @@ my_bool acl_reload(THD *thd) tables[0].next_local= tables[0].next_global= tables+1; tables[1].next_local= tables[1].next_global= tables+2; tables[0].lock_type=tables[1].lock_type=tables[2].lock_type=TL_READ; + tables[0].skip_temporary= tables[1].skip_temporary= + tables[2].skip_temporary= TRUE; if (simple_open_n_lock_tables(thd, tables)) { @@ -3528,7 +3530,8 @@ my_bool grant_reload(THD *thd) tables[0].next_local= tables[0].next_global= tables+1; tables[1].next_local= tables[1].next_global= tables+2; tables[0].lock_type= tables[1].lock_type= tables[2].lock_type= TL_READ; - + tables[0].skip_temporary= tables[1].skip_temporary= + tables[2].skip_temporary= TRUE; /* To avoid deadlocks we should obtain table locks before obtaining LOCK_grant rwlock. From 5a7d224da28d006e5d7699f8779614622a442a2a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 25 Mar 2008 20:48:20 -0300 Subject: [PATCH 005/435] Post-merge fixes for bug 35103 Don't signal errors for the COM_STMT_SEND_LONG_DATA and COM_STMT_CLOSE commands. sql/sql_prepare.cc: Move error signaling to the callers and out of the helper functions because some prepared statements commands don't signal errors (they won't send response packets). --- sql/sql_prepare.cc | 73 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 33 deletions(-) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index c922b21af90..aea2c806d85 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -155,11 +155,11 @@ public: virtual void cleanup_stmt(); bool set_name(LEX_STRING *name); inline void close_cursor() { delete cursor; cursor= 0; } - + inline bool is_in_use() { return flags & (uint) IS_IN_USE; } bool prepare(const char *packet, uint packet_length); bool execute(String *expanded_query, bool open_cursor); /* Destroy this statement */ - bool deallocate(); + void deallocate(); private: /** Store the parsed tree of a prepared statement here. @@ -198,7 +198,7 @@ inline bool is_param_null(const uchar *pos, ulong param_no) */ static Prepared_statement * -find_prepared_statement(THD *thd, ulong id, const char *where) +find_prepared_statement(THD *thd, ulong id) { /* To strictly separate namespaces of SQL prepared statements and C API @@ -208,12 +208,8 @@ find_prepared_statement(THD *thd, ulong id, const char *where) Statement *stmt= thd->stmt_map.find(id); if (stmt == 0 || stmt->type() != Query_arena::PREPARED_STATEMENT) - { - char llbuf[22]; - my_error(ER_UNKNOWN_STMT_HANDLER, MYF(0), sizeof(llbuf), llstr(id, llbuf), - where); - return 0; - } + return NULL; + return (Prepared_statement *) stmt; } @@ -2121,8 +2117,13 @@ void mysql_sql_stmt_prepare(THD *thd) If there is a statement with the same name, remove it. It is ok to remove old and fail to insert a new one at the same time. */ - if (stmt->deallocate()) + if (stmt->is_in_use()) + { + my_error(ER_PS_NO_RECURSION, MYF(0)); DBUG_VOID_RETURN; + } + + stmt->deallocate(); } if (! (query= get_dynamic_sql_string(lex, &query_len)) || @@ -2320,8 +2321,13 @@ void mysql_stmt_execute(THD *thd, char *packet_arg, uint packet_length) /* First of all clear possible warnings from the previous command */ mysql_reset_thd_for_next_command(thd); - if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_execute"))) + if (!(stmt= find_prepared_statement(thd, stmt_id))) + { + char llbuf[22]; + my_error(ER_UNKNOWN_STMT_HANDLER, MYF(0), sizeof(llbuf), + llstr(stmt_id, llbuf), "mysql_stmt_execute"); DBUG_VOID_RETURN; + } #if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER) thd->profiling.set_query_source(stmt->query, stmt->query_length); @@ -2458,8 +2464,13 @@ void mysql_stmt_fetch(THD *thd, char *packet, uint packet_length) /* First of all clear possible warnings from the previous command */ mysql_reset_thd_for_next_command(thd); status_var_increment(thd->status_var.com_stmt_fetch); - if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_fetch"))) + if (!(stmt= find_prepared_statement(thd, stmt_id))) + { + char llbuf[22]; + my_error(ER_UNKNOWN_STMT_HANDLER, MYF(0), sizeof(llbuf), + llstr(stmt_id, llbuf), "mysql_stmt_fetch"); DBUG_VOID_RETURN; + } cursor= stmt->cursor; if (!cursor) @@ -2520,8 +2531,13 @@ void mysql_stmt_reset(THD *thd, char *packet) mysql_reset_thd_for_next_command(thd); status_var_increment(thd->status_var.com_stmt_reset); - if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_reset"))) + if (!(stmt= find_prepared_statement(thd, stmt_id))) + { + char llbuf[22]; + my_error(ER_UNKNOWN_STMT_HANDLER, MYF(0), sizeof(llbuf), + llstr(stmt_id, llbuf), "mysql_stmt_reset"); DBUG_VOID_RETURN; + } stmt->close_cursor(); @@ -2557,15 +2573,15 @@ void mysql_stmt_close(THD *thd, char *packet) thd->main_da.disable_status(); - if (!(stmt= find_prepared_statement(thd, stmt_id, "mysql_stmt_close"))) + if (!(stmt= find_prepared_statement(thd, stmt_id))) DBUG_VOID_RETURN; /* The only way currently a statement can be deallocated when it's in use is from within Dynamic SQL. */ - DBUG_ASSERT(! (stmt->flags & (uint) Prepared_statement::IS_IN_USE)); - (void) stmt->deallocate(); + DBUG_ASSERT(! stmt->is_in_use()); + stmt->deallocate(); general_log_print(thd, thd->command, NullS); DBUG_VOID_RETURN; @@ -2592,14 +2608,15 @@ void mysql_sql_stmt_close(THD *thd) name->str)); if (! (stmt= (Prepared_statement*) thd->stmt_map.find_by_name(name))) - { my_error(ER_UNKNOWN_STMT_HANDLER, MYF(0), name->length, name->str, "DEALLOCATE PREPARE"); - return; - } - - if (stmt->deallocate() == 0) + else if (stmt->is_in_use()) + my_error(ER_PS_NO_RECURSION, MYF(0)); + else + { + stmt->deallocate(); my_ok(thd); + } } /** @@ -2633,17 +2650,13 @@ void mysql_stmt_get_longdata(THD *thd, char *packet, ulong packet_length) #ifndef EMBEDDED_LIBRARY /* Minimal size of long data packet is 6 bytes */ if (packet_length < MYSQL_LONG_DATA_HEADER) - { - my_error(ER_WRONG_ARGUMENTS, MYF(0), "mysql_stmt_send_long_data"); DBUG_VOID_RETURN; - } #endif stmt_id= uint4korr(packet); packet+= 4; - if (!(stmt=find_prepared_statement(thd, stmt_id, - "mysql_stmt_send_long_data"))) + if (!(stmt=find_prepared_statement(thd, stmt_id))) DBUG_VOID_RETURN; param_number= uint2korr(packet); @@ -3186,16 +3199,10 @@ error: /** Common part of DEALLOCATE PREPARE and mysql_stmt_close. */ -bool Prepared_statement::deallocate() +void Prepared_statement::deallocate() { /* We account deallocate in the same manner as mysql_stmt_close */ status_var_increment(thd->status_var.com_stmt_close); - if (flags & (uint) IS_IN_USE) - { - my_error(ER_PS_NO_RECURSION, MYF(0)); - return TRUE; - } /* Statement map calls delete stmt on erase */ thd->stmt_map.erase(this); - return FALSE; } From 266fc6121b15f868e16ec5aa42f277673efff684 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 26 Mar 2008 14:03:01 +0100 Subject: [PATCH 006/435] Corrected result-file merge error. --- mysql-test/r/grant.result | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mysql-test/r/grant.result b/mysql-test/r/grant.result index c157e1d4706..b91f2016a9e 100644 --- a/mysql-test/r/grant.result +++ b/mysql-test/r/grant.result @@ -1218,6 +1218,12 @@ DROP USER mysqltest_1@localhost; DROP DATABASE db27878; use test; DROP TABLE t1; +# +# Bug#33275 Server crash when creating temporary table mysql.user +# +CREATE TEMPORARY TABLE mysql.user (id INT); +FLUSH PRIVILEGES; +DROP TABLE mysql.user; drop table if exists test; Warnings: Note 1051 Unknown table 'test' From 73e1c5ae10994373df5d929974be02edffae70e6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 26 Mar 2008 14:52:10 -0400 Subject: [PATCH 007/435] Fix minor complaints of Marc Alff, for patch against B-g#15776. mysql-test/t/type_blob.test: Drop table in case we start from a bad state. sql/sql_yacc.yy: yacc/bison is left-recursive, so FIXME statement is wrong. --- mysql-test/t/type_blob.test | 5 ++++- sql/sql_yacc.yy | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test index 097c749f977..ad578a18979 100644 --- a/mysql-test/t/type_blob.test +++ b/mysql-test/t/type_blob.test @@ -449,6 +449,9 @@ set @@sql_mode=''; # raise ER_TOO_BIG_DISPLAYWIDTH # BLOB and TEXT types +--disable_warnings +drop table if exists b15776; +--enable_warnings create table b15776 (data blob(2147483647)); drop table b15776; --error ER_PARSE_ERROR @@ -570,7 +573,7 @@ explain select cast(1 as binary(4294967296)); explain select cast(1 as decimal(-1)); explain select cast(1 as decimal(64, 30)); # It's not as important which errors are raised for these, since the -# limit is nowhere near 3**32. We may fix these eventually to take +# limit is nowhere near 2**32. We may fix these eventually to take # 4294967295 and still reject it because it's greater than 64 or 30, # but that's not a high priority and the parser needn't worry about # such a weird case. diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index c270e005454..d47e6679269 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3010,7 +3010,7 @@ udf_type: field_list: field_list_item - | field_list ',' field_list_item; /* FIXME: Should this be backward? */ + | field_list ',' field_list_item; field_list_item: From cd14c3c91ed4104775d4e53e2888f08aa4186a8e Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 27 Mar 2008 13:42:42 +0300 Subject: [PATCH 008/435] Disable cast.test due to Bug#35594. --- mysql-test/t/disabled.def | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 9e0b681528b..4e58c30b812 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -21,3 +21,4 @@ ctype_create : Bug#32965 main.ctype_create fails status : Bug#32966 main.status fails ps_ddl : Bug#12093 2007-12-14 pending WL#4165 / WL#4166 csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables +cast : Bug#35594 2008-03-27 main.cast fails on Windows2003-64 From fba9e7c878359b0808e0f656d72aceedf34f0f56 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 28 Mar 2008 18:10:04 +0300 Subject: [PATCH 009/435] A patch for Bug#34820: log_output can be set to illegal value. We have "set" variables, which can accept empty values (like sql_mode), and which can not (like log_output). The problem was that the code does not distinguish them and allow empty values for every set variable. The fix is to introduce an attribute of a set variable telling whether it can accept empty values. mysql-test/r/variables.result: Update result file. mysql-test/t/variables.test: A test case for Bug#34820: log_output can be set to illegal value. sql/set_var.cc: Don't allow empty values if it is prohibitted. sql/set_var.h: Add a flag (m_allow_empty_value) telling if an empty value is acceptable for this variable. --- mysql-test/r/variables.result | 10 ++++++++++ mysql-test/t/variables.test | 17 +++++++++++++++++ sql/set_var.cc | 25 +++++++++++++++++++++---- sql/set_var.h | 18 +++++++++++++++--- 4 files changed, 63 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index e5c3c860c93..3f66599751d 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -1014,3 +1014,13 @@ Variable_name='table_lock_wait_timeout'; Variable_name Value table_definition_cache # table_lock_wait_timeout # + +# -- +# -- Bug#34820: log_output can be set to illegal value. +# -- +SET GLOBAL log_output = ''; +ERROR 42000: Variable 'log_output' can't be set to the value of '' +SET GLOBAL log_output = 0; +ERROR 42000: Variable 'log_output' can't be set to the value of '0' + +# -- End of Bug#34820. diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index 51f8d6db1db..221f46605cd 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -778,3 +778,20 @@ set global thread_cache_size =@my_thread_cache_size; --replace_column 2 # show global variables where Variable_name='table_definition_cache' or Variable_name='table_lock_wait_timeout'; + +########################################################################### + +--echo +--echo # -- +--echo # -- Bug#34820: log_output can be set to illegal value. +--echo # -- + +--error ER_WRONG_VALUE_FOR_VAR +SET GLOBAL log_output = ''; + +--error ER_WRONG_VALUE_FOR_VAR +SET GLOBAL log_output = 0; + +--echo +--echo # -- End of Bug#34820. + diff --git a/sql/set_var.cc b/sql/set_var.cc index 46a64b1a87c..6b07d81125a 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1664,6 +1664,14 @@ bool sys_var::check_set(THD *thd, set_var *var, TYPELIB *enum_names) strmov(buff, "NULL"); goto err; } + + if (!m_allow_empty_value && + res->length() == 0) + { + buff[0]= 0; + goto err; + } + var->save_result.ulong_value= ((ulong) find_set(enum_names, res->c_ptr(), res->length(), @@ -1679,10 +1687,19 @@ bool sys_var::check_set(THD *thd, set_var *var, TYPELIB *enum_names) else { ulonglong tmp= var->value->val_int(); - /* - For when the enum is made to contain 64 elements, as 1ULL<<64 is - undefined, we guard with a "count<64" test. - */ + + if (!m_allow_empty_value && + tmp == 0) + { + buff[0]= '0'; + buff[1]= 0; + goto err; + } + + /* + For when the enum is made to contain 64 elements, as 1ULL<<64 is + undefined, we guard with a "count<64" test. + */ if (unlikely((tmp >= ((ULL(1)) << enum_names->count)) && (enum_names->count < 64))) { diff --git a/sql/set_var.h b/sql/set_var.h index b33a3a968bb..c4fc13f1321 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -74,7 +74,8 @@ public: sys_var(const char *name_arg, sys_after_update_func func= NULL, Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG) :name(name_arg), after_update(func), no_support_one_shot(1), - binlog_status(binlog_status_arg) + binlog_status(binlog_status_arg), + m_allow_empty_value(TRUE) {} virtual ~sys_var() {} void chain_sys_var(sys_var_chain *chain_arg) @@ -109,8 +110,16 @@ public: virtual bool is_readonly() const { return 0; } virtual sys_var_pluginvar *cast_pluginvar() { return 0; } +protected: + void set_allow_empty_value(bool allow_empty_value) + { + m_allow_empty_value= allow_empty_value; + } + private: const Binlog_status_enum binlog_status; + + bool m_allow_empty_value; }; @@ -878,8 +887,11 @@ public: sys_var_log_output(sys_var_chain *chain, const char *name_arg, ulong *value_arg, TYPELIB *typelib, sys_after_update_func func) :sys_var(name_arg,func), value(value_arg), enum_names(typelib) - { chain_sys_var(chain); } - bool check(THD *thd, set_var *var) + { + chain_sys_var(chain); + set_allow_empty_value(FALSE); + } + virtual bool check(THD *thd, set_var *var) { return check_set(thd, var, enum_names); } From bae7b2672ea2f8f9273b32ee52d63a21b1a11aaf Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 28 Mar 2008 21:46:18 +0300 Subject: [PATCH 010/435] Fix for Bug#32748: Inconsistent handling of assignments to general_log_file/slow_query_log_file. The problem was that log file path was rejected if directory path was empty. The fix is to reject log file path only if it is entirely empty. mysql-test/r/log_state.result: Update result file. mysql-test/t/log_state.test: A test case for Bug#32748: Inconsistent handling of assignments to general_log_file/slow_query_log_file. sql/set_var.cc: Accept file path if dirname is empty. Reject file path if it is empty. --- mysql-test/r/log_state.result | 21 ++++++++++++++++ mysql-test/t/log_state.test | 28 +++++++++++++++++++++ sql/set_var.cc | 47 ++++++++++++++++++++++++----------- 3 files changed, 82 insertions(+), 14 deletions(-) diff --git a/mysql-test/r/log_state.result b/mysql-test/r/log_state.result index 8ecfe3b2094..c293956148f 100644 --- a/mysql-test/r/log_state.result +++ b/mysql-test/r/log_state.result @@ -249,4 +249,25 @@ set global slow_query_log_file= NULL; ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'NULL' set global general_log_file= @old_general_log_file; set global slow_query_log_file= @old_slow_query_log_file; + +# -- +# -- Bug#32748: Inconsistent handling of assignments to +# -- general_log_file/slow_query_log_file. +# -- + +SET @general_log_file_saved = @@global.general_log_file; +SET @slow_query_log_file_saved = @@global.slow_query_log_file; + +SET GLOBAL general_log_file = 'bug32748.query.log'; +SET GLOBAL slow_query_log_file = 'bug32748.slow.log'; + +SHOW VARIABLES LIKE '%log_file'; +Variable_name Value +general_log_file bug32748.query.log +slow_query_log_file bug32748.slow.log + +SET GLOBAL general_log_file = @general_log_file_saved; +SET GLOBAL slow_query_log_file = @slow_query_log_file_saved; + +# -- End of Bug#32748. End of 5.1 tests diff --git a/mysql-test/t/log_state.test b/mysql-test/t/log_state.test index a340238b724..2fd2cabc97c 100644 --- a/mysql-test/t/log_state.test +++ b/mysql-test/t/log_state.test @@ -231,6 +231,34 @@ set global slow_query_log_file= NULL; set global general_log_file= @old_general_log_file; set global slow_query_log_file= @old_slow_query_log_file; +########################################################################### + +--echo +--echo # -- +--echo # -- Bug#32748: Inconsistent handling of assignments to +--echo # -- general_log_file/slow_query_log_file. +--echo # -- + +--echo +SET @general_log_file_saved = @@global.general_log_file; +SET @slow_query_log_file_saved = @@global.slow_query_log_file; + +--echo +SET GLOBAL general_log_file = 'bug32748.query.log'; +SET GLOBAL slow_query_log_file = 'bug32748.slow.log'; + +--echo +SHOW VARIABLES LIKE '%log_file'; + +--echo +SET GLOBAL general_log_file = @general_log_file_saved; +SET GLOBAL slow_query_log_file = @slow_query_log_file_saved; + +--echo +--echo # -- End of Bug#32748. + +########################################################################### + --echo End of 5.1 tests --enable_ps_protocol diff --git a/sql/set_var.cc b/sql/set_var.cc index 6b07d81125a..e44fdc201ca 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -2399,32 +2399,51 @@ static int sys_check_log_path(THD *thd, set_var *var) MY_STAT f_stat; String str(buff, sizeof(buff), system_charset_info), *res; const char *log_file_str; - + size_t path_length; + if (!(res= var->value->val_str(&str))) goto err; log_file_str= res->c_ptr(); bzero(&f_stat, sizeof(MY_STAT)); - (void) unpack_filename(path, log_file_str); + path_length= unpack_filename(path, log_file_str); + + if (!path_length) + { + /* File name is empty. */ + + goto err; + } + if (my_stat(path, &f_stat, MYF(0))) { - /* Check if argument is a file and we have 'write' permission */ + /* + A file system object exists. Check if argument is a file and we have + 'write' permission. + */ + if (!MY_S_ISREG(f_stat.st_mode) || !(f_stat.st_mode & MY_S_IWRITE)) goto err; + + return 0; } - else - { - size_t path_length; - /* - Check if directory exists and - we have permission to create file & write to file - */ - (void) dirname_part(path, log_file_str, &path_length); - if (my_access(path, (F_OK|W_OK))) - goto err; - } + + /* Get dirname of the file path. */ + (void) dirname_part(path, log_file_str, &path_length); + + /* Dirname is empty if file path is relative. */ + if (!path_length) + return 0; + + /* + Check if directory exists and we have permission to create file and + write to file. + */ + if (my_access(path, (F_OK|W_OK))) + goto err; + return 0; err: From fb1fdabc086531a00806ac4c9a9cf6bdc2b0fefb Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Mar 2008 14:52:41 +0400 Subject: [PATCH 011/435] Remove some unused code. sql/sql_base.cc: Remove table definition stage 3 code, stage 3 will be done differently in scope of WL#3726 --- sql/sql_base.cc | 84 ------------------------------------------------- 1 file changed, 84 deletions(-) diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 3f0c1ee8a80..f0faf034027 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -345,26 +345,9 @@ TABLE_SHARE *get_table_share(THD *thd, TABLE_LIST *table_list, char *key, if (!(share= alloc_table_share(table_list, key, key_length))) { -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - pthread_mutex_unlock(&LOCK_open); -#endif DBUG_RETURN(0); } -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - // We need a write lock to be able to add a new entry - pthread_mutex_unlock(&LOCK_open); - pthread_mutex_lock(&LOCK_open); - /* Check that another thread didn't insert the same table in between */ - if ((old_share= hash_search(&table_def_cache, (uchar*) key, key_length))) - { - (void) pthread_mutex_lock(&share->mutex); - free_table_share(share); - share= old_share; - goto found; - } -#endif - /* Lock mutex to be able to read table definition from file without conflicts @@ -388,29 +371,11 @@ TABLE_SHARE *get_table_share(THD *thd, TABLE_LIST *table_list, char *key, if (my_hash_insert(&table_def_cache, (uchar*) share)) { -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - pthread_mutex_unlock(&LOCK_open); - (void) pthread_mutex_unlock(&share->mutex); -#endif free_table_share(share); DBUG_RETURN(0); // return error } -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - pthread_mutex_unlock(&LOCK_open); -#endif if (open_table_def(thd, share, db_flags)) { -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - /* - No such table or wrong table definition file - Lock first the table cache and then the mutex. - This will ensure that no other thread is using the share - structure. - */ - (void) pthread_mutex_unlock(&share->mutex); - (void) pthread_mutex_lock(&LOCK_open); - (void) pthread_mutex_lock(&share->mutex); -#endif *error= share->error; (void) hash_delete(&table_def_cache, (uchar*) share); DBUG_RETURN(0); @@ -429,9 +394,6 @@ found: /* We must do a lock to ensure that the structure is initialized */ (void) pthread_mutex_lock(&share->mutex); -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - pthread_mutex_unlock(&LOCK_open); -#endif if (share->error) { /* Table definition contained an error */ @@ -618,52 +580,6 @@ void release_table_share(TABLE_SHARE *share, enum release_type type) } pthread_mutex_unlock(&share->mutex); DBUG_VOID_RETURN; - - -#ifdef WAITING_FOR_TABLE_DEF_CACHE_STAGE_3 - if (to_be_deleted) - { - /* - We must try again with new locks as we must get LOCK_open - before share->mutex - */ - pthread_mutex_unlock(&share->mutex); - pthread_mutex_lock(&LOCK_open); - pthread_mutex_lock(&share->mutex); - if (!share->ref_count) - { // No one is using this now - TABLE_SHARE *name_lock; - if (share->replace_with_name_lock && (name_lock=get_name_lock(share))) - { - /* - This code is execured when someone does FLUSH TABLES while on has - locked tables. - */ - (void) hash_search(&def_cache,(uchar*) key,key_length); - hash_replace(&def_cache, def_cache.current_record,(uchar*) name_lock); - } - else - { - /* Remove table definition */ - hash_delete(&def_cache,(uchar*) share); - } - pthread_mutex_unlock(&LOCK_open); - free_table_share(share); - } - else - { - pthread_mutex_unlock(&LOCK_open); - if (type == RELEASE_WAIT_FOR_DROP) - wait_for_table(share, "Waiting for close"); - else - pthread_mutex_unlock(&share->mutex); - } - } - else if (type == RELEASE_WAIT_FOR_DROP) - wait_for_table(share, "Waiting for close"); - else - pthread_mutex_unlock(&share->mutex); -#endif } From 2e11542edd0934637f65b5934c8401231b2afa20 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Mar 2008 19:01:56 +0200 Subject: [PATCH 012/435] disabled.def: Disabled 'rpl_redirect', failure is sporadic and and the test is superfluous rpl_packet.test, rpl_packet.result: Removing race conditions from rpl_packet causing test to fail mysql-test/suite/rpl/t/disabled.def: Disabled 'rpl_redirect', failure is sporadic and and the test is superfluous mysql-test/suite/rpl/r/rpl_packet.result: Result change. mysql-test/suite/rpl/t/rpl_packet.test: Setting net_buffer_length correctly for the test instead of relying on it being set correctly. Waiting for slave to stop after issuing a SLAVE STOP and waiting for slave to start when issuing a SLAVE START to prevent race conditions causing test failure. --- mysql-test/suite/rpl/r/rpl_packet.result | 4 ++++ mysql-test/suite/rpl/t/disabled.def | 1 + mysql-test/suite/rpl/t/rpl_packet.test | 16 +++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/rpl/r/rpl_packet.result b/mysql-test/suite/rpl/r/rpl_packet.result index dd56eb0471c..f89d6b3459a 100644 --- a/mysql-test/suite/rpl/r/rpl_packet.result +++ b/mysql-test/suite/rpl/r/rpl_packet.result @@ -6,6 +6,10 @@ drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; drop database if exists DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________; create database DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________; +SET @@global.max_allowed_packet=1024; +SET @@global.net_buffer_length=1024; +STOP SLAVE; +START SLAVE; select @@net_buffer_length, @@max_allowed_packet; @@net_buffer_length @@max_allowed_packet 1024 1024 diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 4375a2a8aa5..968817d253f 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -15,3 +15,4 @@ rpl_innodb_bug28430 : Bug #32247 2007-11-27 mats Test reports wrong value o rpl_view : Bug#32654: rpl_view.test fails randomly rpl_ndb_multi : Bug#30751: rpl_ndb_multi missing row in output rpl_log_pos : Bug#8693 Test 'rpl_log_pos' fails sometimes +rpl_redirect : Failure is sporadic and and the test is superfluous (mats) diff --git a/mysql-test/suite/rpl/t/rpl_packet.test b/mysql-test/suite/rpl/t/rpl_packet.test index 0e17ae3144c..1bde61aef78 100644 --- a/mysql-test/suite/rpl/t/rpl_packet.test +++ b/mysql-test/suite/rpl/t/rpl_packet.test @@ -13,13 +13,25 @@ enable_warnings; eval create database $db; connection master; -select @@net_buffer_length, @@max_allowed_packet; +SET @@global.max_allowed_packet=1024; +SET @@global.net_buffer_length=1024; + +# Restart slave for setting to take effect +connection slave; +STOP SLAVE; +source include/wait_for_slave_to_stop.inc; +START SLAVE; +source include/wait_for_slave_to_start.inc; + +# Reconnect to master for new setting to take effect disconnect master; # alas, can't use eval here; if db name changed apply the change here connect (master,localhost,root,,DB_NAME_OF_MAX_LENGTH_AKA_NAME_LEN_64_BYTES_____________________); connection master; +select @@net_buffer_length, @@max_allowed_packet; + create table `t1` (`f1` LONGTEXT) ENGINE=MyISAM; INSERT INTO `t1`(`f1`) VALUES ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1023'); @@ -54,7 +66,9 @@ SET @@global.net_buffer_length=4096; # Restart slave for new setting to take effect connection slave; STOP SLAVE; +source include/wait_for_slave_to_stop.inc; START SLAVE; +source include/wait_for_slave_to_start.inc; # Reconnect to master for new setting to take effect disconnect master; From 004123892d33e2942d64d7dce404b3c5ef35db63 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Mar 2008 19:48:02 +0200 Subject: [PATCH 013/435] Fix for Bug#35335 funcs_1: Some tests fail within load_file during pushbuild runs Solution: 1. Move files with input data used in load_file, load data etc. from suite/funcs_1/ to std_data 2. Use for testsuite funcs_1 the server option --secure-file-priv= 3. Outfiles have to be stored under MYSQLTEST_VARDIR + changes according to WL#4304 Cleanup in funcs_1 tests - backport of fixes/improvements made in 5.1 to 5.0 The differences between scripts in 5.0 and 5.1 cause much additional and annoying work during any upmerge. - replace error numbers with names - improved comments - improved formatting - Unify storage engine names so that result files for storage engine variants do not differ (some tests) - remove a script no more used (tests are done in other scripts) BitKeeper/deleted/.del-triggers_master.test: Delete: mysql-test/suite/funcs_1/triggers/triggers_master.test mysql-test/std_data/funcs_1/innodb_tb1.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb1.txt -> mysql-test/std_data/funcs_1/innodb_tb1.txt mysql-test/std_data/funcs_1/innodb_tb2.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb2.txt -> mysql-test/std_data/funcs_1/innodb_tb2.txt mysql-test/std_data/funcs_1/innodb_tb3.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb3.txt -> mysql-test/std_data/funcs_1/innodb_tb3.txt mysql-test/std_data/funcs_1/innodb_tb4.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb4.txt -> mysql-test/std_data/funcs_1/innodb_tb4.txt mysql-test/std_data/funcs_1/memory_tb1.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb1.txt -> mysql-test/std_data/funcs_1/memory_tb1.txt mysql-test/std_data/funcs_1/memory_tb2.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb2.txt -> mysql-test/std_data/funcs_1/memory_tb2.txt mysql-test/std_data/funcs_1/memory_tb3.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb3.txt -> mysql-test/std_data/funcs_1/memory_tb3.txt mysql-test/std_data/funcs_1/memory_tb4.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb4.txt -> mysql-test/std_data/funcs_1/memory_tb4.txt mysql-test/std_data/funcs_1/myisam_tb1.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb1.txt -> mysql-test/std_data/funcs_1/myisam_tb1.txt mysql-test/std_data/funcs_1/myisam_tb2.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb2.txt -> mysql-test/std_data/funcs_1/myisam_tb2.txt mysql-test/std_data/funcs_1/myisam_tb3.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb3.txt -> mysql-test/std_data/funcs_1/myisam_tb3.txt mysql-test/std_data/funcs_1/myisam_tb4.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb4.txt -> mysql-test/std_data/funcs_1/myisam_tb4.txt mysql-test/std_data/funcs_1/t3.txt: Rename: mysql-test/suite/funcs_1/data/t3.txt -> mysql-test/std_data/funcs_1/t3.txt mysql-test/std_data/funcs_1/t4.txt: Rename: mysql-test/suite/funcs_1/data/t4.txt -> mysql-test/std_data/funcs_1/t4.txt mysql-test/std_data/funcs_1/t7.txt: Rename: mysql-test/suite/funcs_1/data/t7.txt -> mysql-test/std_data/funcs_1/t7.txt mysql-test/std_data/funcs_1/t9.txt: Rename: mysql-test/suite/funcs_1/data/t9.txt -> mysql-test/std_data/funcs_1/t9.txt mysql-test/Makefile.am: Introduce installation of funcs_1 files in std_data. mysql-test/mysql-test-run.pl: The tests within funcs_1 need a server started with --secure-file-priv= like the main regression tests. mysql-test/suite/funcs_1/README.txt: Extended description mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc: Cleanup mysql-test/suite/funcs_1/datadict/datadict_load.inc: Cleanup mysql-test/suite/funcs_1/include/innodb_tb1.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/innodb_tb2.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/innodb_tb3.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/innodb_tb4.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb1.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb2.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb3.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/memory_tb4.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb1.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb2.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb3.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/myisam_tb4.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/include/sp_tb.inc: Adjustment to new storage place of infile. mysql-test/suite/funcs_1/r/innodb_func_view.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_02.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_03.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_06.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_07.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_08.result: Updated results mysql-test/suite/funcs_1/r/innodb_storedproc_10.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_0102.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_03.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_0407.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_08.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_09.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result: Updated results mysql-test/suite/funcs_1/r/innodb_trig_frkey.result: Updated results mysql-test/suite/funcs_1/r/innodb_views.result: Updated results mysql-test/suite/funcs_1/r/is_columns_innodb.result: Updated results mysql-test/suite/funcs_1/r/is_columns_memory.result: Updated results mysql-test/suite/funcs_1/r/is_columns_myisam.result: Updated results mysql-test/suite/funcs_1/r/is_columns_ndb.result: Updated results mysql-test/suite/funcs_1/r/is_tables_innodb.result: Updated results mysql-test/suite/funcs_1/r/is_tables_memory.result: Updated results mysql-test/suite/funcs_1/r/is_tables_myisam.result: Updated results mysql-test/suite/funcs_1/r/is_tables_ndb.result: Updated results mysql-test/suite/funcs_1/r/memory_func_view.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_02.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_03.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_06.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_07.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_08.result: Updated results mysql-test/suite/funcs_1/r/memory_storedproc_10.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_0102.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_03.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_0407.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_08.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_09.result: Updated results mysql-test/suite/funcs_1/r/memory_trig_1011ext.result: Updated results mysql-test/suite/funcs_1/r/memory_views.result: Updated results mysql-test/suite/funcs_1/r/myisam_func_view.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_02.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_03.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_06.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_07.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_08.result: Updated results mysql-test/suite/funcs_1/r/myisam_storedproc_10.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_0102.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_03.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_0407.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_08.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_09.result: Updated results mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result: Updated results mysql-test/suite/funcs_1/r/myisam_views.result: Updated results mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc: "--echo" instead of SQL command. mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc: Adjustment to new storage place of infile + correct formatting. mysql-test/suite/funcs_1/storedproc/storedproc_02.inc: Backport from 5.1 + correct formatting. mysql-test/suite/funcs_1/storedproc/storedproc_03.inc: Minor improvements + correct formatting. mysql-test/suite/funcs_1/storedproc/storedproc_06.inc: Backport from 5.1 + correct formatting mysql-test/suite/funcs_1/storedproc/storedproc_10.inc: Backport from 5.1. + correct formatting mysql-test/suite/funcs_1/t/innodb_trig_0407.test: Cleanup mysql-test/suite/funcs_1/t/is_basics_mixed.test: Adjustment to new storage place of outfile. mysql-test/suite/funcs_1/t/memory_storedproc_02.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_03.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_06.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_07.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_08.test: Cleanup mysql-test/suite/funcs_1/t/memory_storedproc_10.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_02.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_03.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_06.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_07.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_08.test: Cleanup mysql-test/suite/funcs_1/t/myisam_storedproc_10.test: Cleanup mysql-test/suite/funcs_1/triggers/trig_frkey2.inc: Cleanup mysql-test/suite/funcs_1/triggers/triggers_0102.inc: Cleanup mysql-test/suite/funcs_1/triggers/triggers_03.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_0407.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_08.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_09.inc: Backport from 5.1 mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc: Backport from 5.1 mysql-test/suite/funcs_1/views/func_view.inc: Backport from 5.1 mysql-test/suite/funcs_1/views/views_master.inc: Cleanup mysql-test/std_data/funcs_1/load_file.txt: New BitKeeper file ``mysql-test/std_data/funcs_1/load_file.txt'' --- mysql-test/Makefile.am | 8 +- mysql-test/mysql-test-run.pl | 4 +- .../data => std_data/funcs_1}/innodb_tb1.txt | 0 .../data => std_data/funcs_1}/innodb_tb2.txt | 0 .../data => std_data/funcs_1}/innodb_tb3.txt | 0 .../data => std_data/funcs_1}/innodb_tb4.txt | 0 mysql-test/std_data/funcs_1/load_file.txt | 1 + .../data => std_data/funcs_1}/memory_tb1.txt | 0 .../data => std_data/funcs_1}/memory_tb2.txt | 0 .../data => std_data/funcs_1}/memory_tb3.txt | 0 .../data => std_data/funcs_1}/memory_tb4.txt | 0 .../data => std_data/funcs_1}/myisam_tb1.txt | 0 .../data => std_data/funcs_1}/myisam_tb2.txt | 0 .../data => std_data/funcs_1}/myisam_tb3.txt | 0 .../data => std_data/funcs_1}/myisam_tb4.txt | 0 .../funcs_1/data => std_data/funcs_1}/t3.txt | 0 .../funcs_1/data => std_data/funcs_1}/t4.txt | 0 .../funcs_1/data => std_data/funcs_1}/t7.txt | 0 .../funcs_1/data => std_data/funcs_1}/t9.txt | 0 mysql-test/suite/funcs_1/README.txt | 10 +- .../funcs_1/datadict/datadict_bug_12777.inc | 12 +- .../suite/funcs_1/datadict/datadict_load.inc | 16 +- .../suite/funcs_1/include/innodb_tb1.inc | 119 +- .../suite/funcs_1/include/innodb_tb2.inc | 106 +- .../suite/funcs_1/include/innodb_tb3.inc | 122 +- .../suite/funcs_1/include/innodb_tb4.inc | 106 +- .../suite/funcs_1/include/memory_tb1.inc | 104 +- .../suite/funcs_1/include/memory_tb2.inc | 106 +- .../suite/funcs_1/include/memory_tb3.inc | 111 +- .../suite/funcs_1/include/memory_tb4.inc | 106 +- .../suite/funcs_1/include/myisam_tb1.inc | 118 +- .../suite/funcs_1/include/myisam_tb2.inc | 138 +- .../suite/funcs_1/include/myisam_tb3.inc | 122 +- .../suite/funcs_1/include/myisam_tb4.inc | 136 +- mysql-test/suite/funcs_1/include/sp_tb.inc | 83 +- .../suite/funcs_1/r/innodb_func_view.result | 1222 ++++--- .../funcs_1/r/innodb_storedproc_02.result | 79 +- .../funcs_1/r/innodb_storedproc_03.result | 48 +- .../funcs_1/r/innodb_storedproc_06.result | 51 +- .../funcs_1/r/innodb_storedproc_07.result | 48 +- .../funcs_1/r/innodb_storedproc_08.result | 48 +- .../funcs_1/r/innodb_storedproc_10.result | 157 +- .../suite/funcs_1/r/innodb_trig_0102.result | 185 +- .../suite/funcs_1/r/innodb_trig_03.result | 345 +- .../suite/funcs_1/r/innodb_trig_0407.result | 167 +- .../suite/funcs_1/r/innodb_trig_08.result | 322 +- .../suite/funcs_1/r/innodb_trig_09.result | 160 +- .../funcs_1/r/innodb_trig_1011ext.result | 149 +- .../suite/funcs_1/r/innodb_trig_frkey.result | 119 +- .../suite/funcs_1/r/innodb_views.result | 206 +- .../suite/funcs_1/r/is_columns_innodb.result | 585 ++-- .../suite/funcs_1/r/is_columns_memory.result | 559 ++-- .../suite/funcs_1/r/is_columns_myisam.result | 633 ++-- .../suite/funcs_1/r/is_columns_ndb.result | 42 +- .../suite/funcs_1/r/is_tables_innodb.result | 585 ++-- .../suite/funcs_1/r/is_tables_memory.result | 559 ++-- .../suite/funcs_1/r/is_tables_myisam.result | 633 ++-- .../suite/funcs_1/r/is_tables_ndb.result | 42 +- .../suite/funcs_1/r/memory_func_view.result | 1222 ++++--- .../funcs_1/r/memory_storedproc_02.result | 79 +- .../funcs_1/r/memory_storedproc_03.result | 48 +- .../funcs_1/r/memory_storedproc_06.result | 51 +- .../funcs_1/r/memory_storedproc_07.result | 48 +- .../funcs_1/r/memory_storedproc_08.result | 48 +- .../funcs_1/r/memory_storedproc_10.result | 157 +- .../suite/funcs_1/r/memory_trig_0102.result | 173 +- .../suite/funcs_1/r/memory_trig_03.result | 333 +- .../suite/funcs_1/r/memory_trig_0407.result | 155 +- .../suite/funcs_1/r/memory_trig_08.result | 310 +- .../suite/funcs_1/r/memory_trig_09.result | 148 +- .../funcs_1/r/memory_trig_1011ext.result | 137 +- .../suite/funcs_1/r/memory_views.result | 206 +- .../suite/funcs_1/r/myisam_func_view.result | 1222 ++++--- .../funcs_1/r/myisam_storedproc_02.result | 79 +- .../funcs_1/r/myisam_storedproc_03.result | 48 +- .../funcs_1/r/myisam_storedproc_06.result | 51 +- .../funcs_1/r/myisam_storedproc_07.result | 48 +- .../funcs_1/r/myisam_storedproc_08.result | 48 +- .../funcs_1/r/myisam_storedproc_10.result | 157 +- .../suite/funcs_1/r/myisam_trig_0102.result | 185 +- .../suite/funcs_1/r/myisam_trig_03.result | 345 +- .../suite/funcs_1/r/myisam_trig_0407.result | 167 +- .../suite/funcs_1/r/myisam_trig_08.result | 322 +- .../suite/funcs_1/r/myisam_trig_09.result | 160 +- .../funcs_1/r/myisam_trig_1011ext.result | 149 +- .../suite/funcs_1/r/myisam_views.result | 238 +- .../funcs_1/storedproc/cleanup_sp_tb.inc | 5 +- .../suite/funcs_1/storedproc/load_sp_tb.inc | 107 +- .../funcs_1/storedproc/storedproc_02.inc | 348 +- .../funcs_1/storedproc/storedproc_03.inc | 86 +- .../funcs_1/storedproc/storedproc_06.inc | 69 +- .../funcs_1/storedproc/storedproc_10.inc | 109 +- .../suite/funcs_1/t/innodb_trig_0407.test | 2 +- .../suite/funcs_1/t/is_basics_mixed.test | 2 +- .../suite/funcs_1/t/memory_storedproc_02.test | 4 +- .../suite/funcs_1/t/memory_storedproc_03.test | 4 +- .../suite/funcs_1/t/memory_storedproc_06.test | 4 +- .../suite/funcs_1/t/memory_storedproc_07.test | 4 +- .../suite/funcs_1/t/memory_storedproc_08.test | 4 +- .../suite/funcs_1/t/memory_storedproc_10.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_02.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_03.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_06.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_07.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_08.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_10.test | 4 +- .../suite/funcs_1/triggers/trig_frkey2.inc | 102 +- .../suite/funcs_1/triggers/triggers_0102.inc | 228 +- .../suite/funcs_1/triggers/triggers_03.inc | 175 +- .../suite/funcs_1/triggers/triggers_0407.inc | 218 +- .../suite/funcs_1/triggers/triggers_08.inc | 279 +- .../suite/funcs_1/triggers/triggers_09.inc | 154 +- .../funcs_1/triggers/triggers_1011ext.inc | 42 +- .../funcs_1/triggers/triggers_master.test | 2818 ----------------- mysql-test/suite/funcs_1/views/func_view.inc | 276 +- .../suite/funcs_1/views/views_master.inc | 6 +- 116 files changed, 9138 insertions(+), 10742 deletions(-) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb4.txt (100%) create mode 100644 mysql-test/std_data/funcs_1/load_file.txt rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb4.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb4.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t4.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t7.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t9.txt (100%) delete mode 100644 mysql-test/suite/funcs_1/triggers/triggers_master.test diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 75d00457d14..c11b8e0d5fe 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -45,7 +45,8 @@ dist-hook: mkdir -p $(distdir)/t $(distdir)/r $(distdir)/include \ $(distdir)/std_data \ $(distdir)/std_data/ndb_backup50_data_be $(distdir)/std_data/ndb_backup50_data_le \ - $(distdir)/lib + $(distdir)/lib \ + $(distdir)/funcs_1 -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t @@ -66,6 +67,7 @@ dist-hook: $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(distdir)/std_data/ndb_backup50_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(distdir)/std_data/ndb_backup50_data_le + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib -rm -rf `find $(distdir)/suite -type d -name SCCS` @@ -77,7 +79,8 @@ install-data-local: $(DESTDIR)$(testdir)/std_data \ $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be \ $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le \ - $(DESTDIR)$(testdir)/lib + $(DESTDIR)$(testdir)/lib \ + $(DESTDIR)$(testdir)/funcs_1 $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t @@ -103,6 +106,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib for f in `(cd $(srcdir); find suite -type f | grep -v SCCS)`; \ do \ diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 7c4677b8274..86e41c19284 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -3739,9 +3739,9 @@ sub mysqld_arguments ($$$$) { { # By default, prevent the started mysqld to access files outside of vardir my $secure_file_dir= $opt_vardir; - if ( $opt_suite ne "main" ) + if ( $opt_suite ne "main" and $opt_suite ne "funcs_1" ) { - # When running a suite other than default allow the mysqld + # When running a suite other than default or funcs_1 allow the mysqld # access to subdirs of mysql-test/ in order to make it possible # to "load data" from the suites data/ directory. $secure_file_dir= $glob_mysql_test_dir; diff --git a/mysql-test/suite/funcs_1/data/innodb_tb1.txt b/mysql-test/std_data/funcs_1/innodb_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb1.txt rename to mysql-test/std_data/funcs_1/innodb_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/innodb_tb2.txt b/mysql-test/std_data/funcs_1/innodb_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb2.txt rename to mysql-test/std_data/funcs_1/innodb_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/innodb_tb3.txt b/mysql-test/std_data/funcs_1/innodb_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb3.txt rename to mysql-test/std_data/funcs_1/innodb_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/innodb_tb4.txt b/mysql-test/std_data/funcs_1/innodb_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb4.txt rename to mysql-test/std_data/funcs_1/innodb_tb4.txt diff --git a/mysql-test/std_data/funcs_1/load_file.txt b/mysql-test/std_data/funcs_1/load_file.txt new file mode 100644 index 00000000000..930ac1cf371 --- /dev/null +++ b/mysql-test/std_data/funcs_1/load_file.txt @@ -0,0 +1 @@ +Here is content from load_file diff --git a/mysql-test/suite/funcs_1/data/memory_tb1.txt b/mysql-test/std_data/funcs_1/memory_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb1.txt rename to mysql-test/std_data/funcs_1/memory_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/memory_tb2.txt b/mysql-test/std_data/funcs_1/memory_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb2.txt rename to mysql-test/std_data/funcs_1/memory_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/memory_tb3.txt b/mysql-test/std_data/funcs_1/memory_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb3.txt rename to mysql-test/std_data/funcs_1/memory_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/memory_tb4.txt b/mysql-test/std_data/funcs_1/memory_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb4.txt rename to mysql-test/std_data/funcs_1/memory_tb4.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb1.txt b/mysql-test/std_data/funcs_1/myisam_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb1.txt rename to mysql-test/std_data/funcs_1/myisam_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb2.txt b/mysql-test/std_data/funcs_1/myisam_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb2.txt rename to mysql-test/std_data/funcs_1/myisam_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb3.txt b/mysql-test/std_data/funcs_1/myisam_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb3.txt rename to mysql-test/std_data/funcs_1/myisam_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb4.txt b/mysql-test/std_data/funcs_1/myisam_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb4.txt rename to mysql-test/std_data/funcs_1/myisam_tb4.txt diff --git a/mysql-test/suite/funcs_1/data/t3.txt b/mysql-test/std_data/funcs_1/t3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t3.txt rename to mysql-test/std_data/funcs_1/t3.txt diff --git a/mysql-test/suite/funcs_1/data/t4.txt b/mysql-test/std_data/funcs_1/t4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t4.txt rename to mysql-test/std_data/funcs_1/t4.txt diff --git a/mysql-test/suite/funcs_1/data/t7.txt b/mysql-test/std_data/funcs_1/t7.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t7.txt rename to mysql-test/std_data/funcs_1/t7.txt diff --git a/mysql-test/suite/funcs_1/data/t9.txt b/mysql-test/std_data/funcs_1/t9.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t9.txt rename to mysql-test/std_data/funcs_1/t9.txt diff --git a/mysql-test/suite/funcs_1/README.txt b/mysql-test/suite/funcs_1/README.txt index 7e98d1bc117..65f6226d0f2 100644 --- a/mysql-test/suite/funcs_1/README.txt +++ b/mysql-test/suite/funcs_1/README.txt @@ -25,7 +25,7 @@ SESSION_STATUS SESSION_VARIABLES -3. Some hints: +3. Some hints for maintainers of this suite: - SHOW TABLES ... LIKE '' does a case sensitive comparison between the tablename and the pattern. @@ -43,4 +43,12 @@ ERROR 42000: Access denied for user ... to database 'information_schema' DROP DATABASE INFORMATION_SCHEMA; ERROR 42000: Access denied for user ... to database 'INFORMATION_SCHEMA' + - Try to unify results by + --replace_result $engine_type + if we could expect that the results for storage engine variants of a + test differ only in the engine names. + This makes future maintenance easier. + - Avoid the use of include/show_msg*.inc. + They produce "SQL" noise which annoys during server debugging and can be + easy replaced by "--echo ...". diff --git a/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc b/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc index 0bca30b1dc3..5ba969fe4cb 100644 --- a/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc +++ b/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc @@ -2,7 +2,7 @@ # # columns in INFORMATION_SCHEMA with VARCHAR(4096) on Linux and Intel or AMD -# processor are shown as VARCHAR(512) on Windows, VARCHAR(1023) on AIX and HPUX, +# processor are shown as VARCHAR(512) on Windows, VARCHAR(1023) on AIX and HPUX, # VARCHAR(1024) on Solaris10, ... see below and in bug #12777 for details. # So we need to replace the output for these systems. There may be other still # not tested / detected systems. @@ -10,10 +10,10 @@ # Setting the variables used below has been moved to the beginning of the datadict # tests to "suite/funcs_1/datadict/datadict_load.inc". # -# SELECT character_maximum_length INTO @CML -# FROM information_schema.columns -# WHERE table_schema = 'information_schema' -# AND table_name = 'columns' +# SELECT character_maximum_length INTO @CML +# FROM information_schema.columns +# WHERE table_schema = 'information_schema' +# AND table_name = 'columns' # AND column_name = 'table_catalog'; # this enables the --replace_result only if needed, using this we never replace @@ -31,7 +31,7 @@ if ($bug_12777_0512) --replace_result 512 4096 1536 12288 } -# aix52, aix52-64bit, hp3750, hp3750-64bit, hpux11, hpux11-64bit, +# aix52, aix52-64bit, hp3750, hp3750-64bit, hpux11, hpux11-64bit, if ($bug_12777_1023) { # nnnn 3*n diff --git a/mysql-test/suite/funcs_1/datadict/datadict_load.inc b/mysql-test/suite/funcs_1/datadict/datadict_load.inc index 542f3bb8eb6..67b25b555ed 100644 --- a/mysql-test/suite/funcs_1/datadict/datadict_load.inc +++ b/mysql-test/suite/funcs_1/datadict/datadict_load.inc @@ -12,14 +12,14 @@ --disable_query_log # ------------------------------------------------------------------------------ -# Get the size of ONE known colum and check the size against some values to -# be able to use the correct --replace_result statement. Using this only the -# one pair of 'wrong' values is replaced and not all occurrencies of all +# Get the size of ONE known colum and check the size against some values to +# be able to use the correct --replace_result statement. Using this only the +# one pair of 'wrong' values is replaced and not all occurrencies of all # possible pairs of values. See bug #12777 for details. -SELECT character_maximum_length INTO @CML - FROM information_schema.columns - WHERE table_schema = 'information_schema' - AND table_name = 'columns' +SELECT character_maximum_length INTO @CML + FROM information_schema.columns + WHERE table_schema = 'information_schema' + AND table_name = 'columns' AND column_name = 'table_catalog'; let $bug_12777_0512= `SELECT @CML = 512`; @@ -53,7 +53,7 @@ let $SERVER_NAME= `SELECT DISTINCT host FROM mysql.user WHERE host NOT In ("loca # load tables # ----------- # -# this was part of the 3 files $_datadict.test, but it has been moved +# this was part of the 3 files $_datadict.test, but it has been moved # here to have only one place where all preparation for the test is done. # ################################################################################ diff --git a/mysql-test/suite/funcs_1/include/innodb_tb1.inc b/mysql-test/suite/funcs_1/include/innodb_tb1.inc index 115d8b6318d..4fede496478 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb1.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb1.inc @@ -4,66 +4,67 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = innodb; - ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb1.txt' +into table tb1; diff --git a/mysql-test/suite/funcs_1/include/innodb_tb2.inc b/mysql-test/suite/funcs_1/include/innodb_tb2.inc index 99c09c1d963..b9a0910a0af 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb2.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb2.inc @@ -4,58 +4,60 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; diff --git a/mysql-test/suite/funcs_1/include/innodb_tb3.inc b/mysql-test/suite/funcs_1/include/innodb_tb3.inc index d8397b2b581..b8562d7acf2 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb3.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb3.inc @@ -4,65 +4,67 @@ drop table if exists tb3 ; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/innodb_tb4.inc b/mysql-test/suite/funcs_1/include/innodb_tb4.inc index 2cff9e57075..ef8fc240eca 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb4.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb4.inc @@ -4,56 +4,56 @@ drop table if exists tb4; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -64,5 +64,7 @@ f240 varchar(2000) unicode, f241 char(100) unicode ) engine = innodb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb4.txt' +into table tb4; diff --git a/mysql-test/suite/funcs_1/include/memory_tb1.inc b/mysql-test/suite/funcs_1/include/memory_tb1.inc index 7d66443c62f..3a4ebb0c484 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb1.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb1.inc @@ -4,57 +4,59 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f1 char, +f2 char binary, +f3 char ascii, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb1.txt' +into table tb1; diff --git a/mysql-test/suite/funcs_1/include/memory_tb2.inc b/mysql-test/suite/funcs_1/include/memory_tb2.inc index 869a4904ce0..c059e565c64 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb2.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb2.inc @@ -4,58 +4,60 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; diff --git a/mysql-test/suite/funcs_1/include/memory_tb3.inc b/mysql-test/suite/funcs_1/include/memory_tb3.inc index 5aa56d06ede..b5d4bb93f12 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb3.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb3.inc @@ -4,60 +4,61 @@ drop table if exists tb3; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; - +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/memory_tb4.inc b/mysql-test/suite/funcs_1/include/memory_tb4.inc index 97bc04118bd..f9cc1d53c52 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb4.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb4.inc @@ -4,56 +4,56 @@ drop table if exists tb4 ; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f236 char(95) unicode, f241 char(255) unicode, @@ -63,5 +63,7 @@ f239 varbinary(0), f240 varchar(1200) unicode ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb4.txt' +into table tb4; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb1.inc b/mysql-test/suite/funcs_1/include/myisam_tb1.inc index f2a8be4f5d6..da740cffaf3 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb1.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb1.inc @@ -4,65 +4,67 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char, +f2 char binary, +f3 char ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = myisam; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb1.txt' +into table tb1; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb2.inc b/mysql-test/suite/funcs_1/include/myisam_tb2.inc index 528031700cb..c878b1853f0 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb2.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb2.inc @@ -4,77 +4,79 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; # The original columns. They are replaced by varbinary, because the funcs_1 tests should # not depend on the optional availability of the geometry feature. -# f110 geometry null, -# f111 point null , -# f112 linestring null , -# f113 polygon null , -# f114 geometrycollection , -# f115 multipoint null , -# f116 multilinestring null, -# f117 multipolygon null +# f110 geometry null, +# f111 point null , +# f112 linestring null , +# f113 polygon null , +# f114 geometrycollection , +# f115 multipoint null , +# f116 multilinestring null, +# f117 multipolygon null ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb3.inc b/mysql-test/suite/funcs_1/include/myisam_tb3.inc index aca35c0e11b..4ee6388f3bc 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb3.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb3.inc @@ -4,65 +4,67 @@ drop table if exists tb3 ; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb4.inc b/mysql-test/suite/funcs_1/include/myisam_tb4.inc index d9051847c45..1f7d19fd061 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb4.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb4.inc @@ -4,64 +4,64 @@ drop table if exists tb4 ; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), -f226 set("1set","2set"), -f227 VARBINARY(64), -f228 VARBINARY(27), -f229 VARBINARY(64), -f230 VARBINARY(192), -f231 VARBINARY(192), -f232 VARBINARY(27), -f233 VARBINARY(64), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), +f226 set("1set","2set"), +f227 VARBINARY(64), +f228 VARBINARY(27), +f229 VARBINARY(64), +f230 VARBINARY(192), +f231 VARBINARY(192), +f232 VARBINARY(27), +f233 VARBINARY(64), f234 VARBINARY(192), f235 char(255) unicode, f236 char(60) ascii, @@ -75,14 +75,16 @@ f242 bit(30) # The original columns. They are replaced by varbinary, because the funcs_1 tests should # not depend on the optional availability of the geometry feature. -# f227 geometry, -# f228 point, -# f229 linestring, -# f230 polygon, -# f231 geometrycollection, -# f232 multipoint, -# f233 multilinestring, +# f227 geometry, +# f228 point, +# f229 linestring, +# f230 polygon, +# f231 geometrycollection, +# f232 multipoint, +# f233 multilinestring, # f234 multipolygon, ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb4.txt' +into table tb4; diff --git a/mysql-test/suite/funcs_1/include/sp_tb.inc b/mysql-test/suite/funcs_1/include/sp_tb.inc index b37f2cc7ffe..ae1114fb5f1 100644 --- a/mysql-test/suite/funcs_1/include/sp_tb.inc +++ b/mysql-test/suite/funcs_1/include/sp_tb.inc @@ -5,29 +5,46 @@ USE test; --disable_warnings DROP TABLE IF EXISTS t1, t2, t4, t10, t11; --enable_warnings -eval CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +eval +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; --disable_warnings drop TABLE if exists t3; --enable_warnings -eval CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +eval +CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; #--------------------------- @@ -37,9 +54,12 @@ drop database if exists test4; CREATE database test4; use test4; -eval CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +eval +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; #--------------------------- use test; @@ -47,18 +67,23 @@ use test; --disable_warnings drop TABLE if exists t7, t8; --enable_warnings -eval CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = $engine_type; -eval CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +eval +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = $engine_type; +eval +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; --disable_warnings drop TABLE if exists t9; --enable_warnings eval CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; diff --git a/mysql-test/suite/funcs_1/r/innodb_func_view.result b/mysql-test/suite/funcs_1/r/innodb_func_view.result index f901bcf8246..c2689a36801 100644 --- a/mysql-test/suite/funcs_1/r/innodb_func_view.result +++ b/mysql-test/suite/funcs_1/r/innodb_func_view.result @@ -1,7 +1,3 @@ - -! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables --------------------------------------------------------------------------------- DROP TABLE IF EXISTS t1_selects, t1_modes, t1_values; DROP VIEW IF EXISTS v1; CREATE TABLE t1_values @@ -9,7 +5,7 @@ CREATE TABLE t1_values id BIGINT AUTO_INCREMENT, select_id BIGINT, PRIMARY KEY(id) -) ENGINE = 'InnoDB' ; +) ENGINE = ; ALTER TABLE t1_values ADD my_char_30 CHAR(30); ALTER TABLE t1_values ADD my_varchar_1000 VARCHAR(1000); ALTER TABLE t1_values ADD my_binary_30 BINARY(30); @@ -39,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -54,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -89,6 +85,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 4; INSERT INTO t1_values SET select_id = @select_id, my_bigint = -25; +##### 1.1.1. CAST --> BINARY +##### 1.1.2. CAST --> CHAR +##### 1.1.3. CAST --> DATE INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27'; INSERT INTO t1_values SET select_id = @select_id, @@ -101,6 +100,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 20050627; INSERT INTO t1_values SET select_id = @select_id, my_double = +20.050627E+6; +##### 1.1.4. CAST --> DATETIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -113,6 +113,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 200506271758; INSERT INTO t1_values SET select_id = @select_id, my_double = +0.0200506271758E+13; +##### 1.1.5. CAST --> TIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -123,10 +124,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, my_bigint = 1758; - -some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = +1.758E+3; +##### 1.1.6. CAST --> DECIMAL INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, @@ -135,51 +135,39 @@ INSERT INTO t1_values SET select_id = @select_id, my_binary_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '-3333.3333'; - -some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = -0.33333333E+4; +##### 1.1.7. CAST --> SIGNED INTEGER "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later" --------------------------------------------------------------------------------- - -some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result + Status: To be fixed later" -------------------------------------------------------------------------------- +##### 1.1.8. CAST --> UNSIGNED INTEGER "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809" + The file with expected results suffers from Bug 5913" -------------------------------------------------------------------------------- some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast +Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; - -"Attention: IF(my_year IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails." --------------------------------------------------------------------------------- SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_varchar_1000), @@ -192,22 +180,20 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; - -"Attention: LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, -because there are 32/64 Bit differences --------------------------------------------------------------------------------- +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_double), my_double, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varchar_1000), @@ -216,8 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -299,19 +287,19 @@ SET sql_mode = ''; -------------------------------------------------------------------------------- CREATE VIEW v1 AS SELECT my_char_30, id FROM t1_values; SELECT my_char_30, id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL; +WHERE select_id = 193 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL); +WHERE select_id = 193 OR select_id IS NULL) order by id; DROP VIEW v1; CREATE VIEW v1 AS SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values; SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL; +WHERE select_id = 192 OR select_id IS NULL order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -323,7 +311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat(_latin1'A',`t1_values`.`my_char_30`) AS `CONCAT('A',my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL); +WHERE select_id = 192 OR select_id IS NULL) order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -337,13 +325,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL; +WHERE select_id = 191 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varbinary_1000`) AS `LTRIM(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL); +WHERE select_id = 191 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -351,13 +339,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values; SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL; +WHERE select_id = 190 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_binary_30`) AS `LTRIM(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL); +WHERE select_id = 190 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -365,13 +353,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL; +WHERE select_id = 189 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varchar_1000`) AS `LTRIM(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL); +WHERE select_id = 189 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -379,13 +367,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values; SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL; +WHERE select_id = 188 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_char_30`) AS `LTRIM(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL); +WHERE select_id = 188 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -393,13 +381,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL; +WHERE select_id = 187 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varbinary_1000`) AS `LOWER(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL); +WHERE select_id = 187 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -407,13 +395,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values; SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL; +WHERE select_id = 186 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_binary_30`) AS `LOWER(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL); +WHERE select_id = 186 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -421,13 +409,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL; +WHERE select_id = 185 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LOWER(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL); +WHERE select_id = 185 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -435,13 +423,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_char_30), my_char_30, id FROM t1_values; SELECT LOWER(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL; +WHERE select_id = 184 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_char_30`) AS `LOWER(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL); +WHERE select_id = 184 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -449,13 +437,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL; +WHERE select_id = 183 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_decimal`) AS `LOCATE('-', ' - -ABC', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL); +WHERE select_id = 183 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -463,13 +451,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL; +WHERE select_id = 182 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_double`) AS `LOCATE('-', ' - -ABC', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL); +WHERE select_id = 182 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -477,13 +465,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL; +WHERE select_id = 181 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_bigint`) AS `LOCATE('-', ' - -ABC', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL); +WHERE select_id = 181 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -491,13 +479,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL; +WHERE select_id = 180 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varbinary_1000`,3) AS `LOCATE('-', my_varbinary_1000, 3)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL); +WHERE select_id = 180 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -505,13 +493,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values; SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL; +WHERE select_id = 179 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_binary_30`,3) AS `LOCATE('-', my_binary_30, 3)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL); +WHERE select_id = 179 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -519,13 +507,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values; SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL; +WHERE select_id = 178 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varchar_1000`,3) AS `LOCATE('-', my_varchar_1000, 3)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL); +WHERE select_id = 178 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -533,13 +521,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values; SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL; +WHERE select_id = 177 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_char_30`,3) AS `LOCATE('-', my_char_30, 3)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL); +WHERE select_id = 177 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -547,13 +535,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL; +WHERE select_id = 176 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varbinary_1000, my_binary_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL); +WHERE select_id = 176 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -561,13 +549,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL; +WHERE select_id = 175 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varbinary_1000, my_varchar_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL); +WHERE select_id = 175 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -575,13 +563,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL; +WHERE select_id = 174 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varbinary_1000, my_char_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL); +WHERE select_id = 174 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -589,13 +577,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL; +WHERE select_id = 173 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varbinary_1000, my_varbinary_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL); +WHERE select_id = 173 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -603,13 +591,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL; +WHERE select_id = 172 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_binary_30, my_varbinary_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL); +WHERE select_id = 172 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -617,13 +605,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL; +WHERE select_id = 171 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_binary_30, my_varchar_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL); +WHERE select_id = 171 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -631,13 +619,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values; SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL; +WHERE select_id = 170 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_binary_30, my_char_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL); +WHERE select_id = 170 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -645,13 +633,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values; SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL; +WHERE select_id = 169 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_binary_30, my_binary_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL); +WHERE select_id = 169 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -659,13 +647,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL; +WHERE select_id = 168 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varchar_1000, my_varbinary_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL); +WHERE select_id = 168 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -673,13 +661,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL; +WHERE select_id = 167 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varchar_1000, my_binary_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL); +WHERE select_id = 167 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -687,13 +675,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL; +WHERE select_id = 166 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varchar_1000, my_char_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL); +WHERE select_id = 166 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -701,13 +689,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL; +WHERE select_id = 165 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varchar_1000, my_varchar_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL); +WHERE select_id = 165 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -715,13 +703,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL; +WHERE select_id = 164 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_char_30, my_varbinary_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL); +WHERE select_id = 164 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -729,13 +717,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values; SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL; +WHERE select_id = 163 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_char_30, my_binary_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL); +WHERE select_id = 163 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -743,13 +731,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL; +WHERE select_id = 162 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_char_30, my_varchar_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL); +WHERE select_id = 162 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -757,13 +745,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values; SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL; +WHERE select_id = 161 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_char_30, my_char_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL); +WHERE select_id = 161 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -771,13 +759,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL; +WHERE select_id = 160 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varbinary_1000`) AS `LOCATE('char', my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL); +WHERE select_id = 160 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -785,13 +773,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values; SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL; +WHERE select_id = 159 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_binary_30`) AS `LOCATE('char', my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL); +WHERE select_id = 159 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -799,13 +787,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL; +WHERE select_id = 158 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varchar_1000`) AS `LOCATE('char', my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL); +WHERE select_id = 158 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -813,46 +801,50 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values; SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL; +WHERE select_id = 157 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `LOCATE('char', my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL); +WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../log/current_test'), id FROM t1_values; -SELECT LOAD_FILE('../log/current_test'), id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL; -LOAD_FILE('../log/current_test') id -CURRENT_TEST: innodb_func_view +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values +WHERE select_id = 156 OR select_id IS NULL order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: innodb_func_view +Here is content from load_file 2 -CURRENT_TEST: innodb_func_view +Here is content from load_file 3 -CURRENT_TEST: innodb_func_view +Here is content from load_file 4 -CURRENT_TEST: innodb_func_view +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'../log/current_test') AS `LOAD_FILE('../log/current_test')`,`t1_values`.`id` AS `id` from `t1_values` +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL); -LOAD_FILE('../log/current_test') id -CURRENT_TEST: innodb_func_view +WHERE select_id = 156 OR select_id IS NULL) order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: innodb_func_view +Here is content from load_file 2 -CURRENT_TEST: innodb_func_view +Here is content from load_file 3 -CURRENT_TEST: innodb_func_view +Here is content from load_file 4 -CURRENT_TEST: innodb_func_view +Here is content from load_file 5 DROP VIEW v1; @@ -861,13 +853,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL; +WHERE select_id = 155 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varbinary_1000`) AS `LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL); +WHERE select_id = 155 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -875,13 +867,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL; +WHERE select_id = 154 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_binary_30`) AS `LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL); +WHERE select_id = 154 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -889,13 +881,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL; +WHERE select_id = 153 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varchar_1000`) AS `LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL); +WHERE select_id = 153 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -903,19 +895,49 @@ CREATE VIEW v1 AS SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL; +WHERE select_id = 152 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_char_30`) AS `LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL); +WHERE select_id = 152 OR select_id IS NULL) order by id; +DROP VIEW v1; + + +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values; SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL; +WHERE select_id = 150 OR select_id IS NULL order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -930,7 +952,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL); +WHERE select_id = 150 OR select_id IS NULL) order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -943,9 +965,33 @@ Error 1292 Truncated incorrect DECIMAL value: '' DROP VIEW v1; +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_bigint`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values; SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL; +WHERE select_id = 148 OR select_id IS NULL order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -957,7 +1003,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varbinary_1000`,2) AS `LEFT(my_varbinary_1000, 2)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL); +WHERE select_id = 148 OR select_id IS NULL) order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -969,19 +1015,19 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values; SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL; +WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL); +WHERE select_id = 147 OR select_id IS NULL) order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 2 @@ -993,7 +1039,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values; SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL; +WHERE select_id = 146 OR select_id IS NULL order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1005,7 +1051,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varchar_1000`,2) AS `LEFT(my_varchar_1000, 2)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL); +WHERE select_id = 146 OR select_id IS NULL) order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1017,7 +1063,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values; SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL; +WHERE select_id = 145 OR select_id IS NULL order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1029,7 +1075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_char_30`,2) AS `LEFT(my_char_30, 2)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL); +WHERE select_id = 145 OR select_id IS NULL) order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1043,13 +1089,13 @@ CREATE VIEW v1 AS SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL; +WHERE select_id = 144 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LCASE(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL); +WHERE select_id = 144 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1057,13 +1103,13 @@ CREATE VIEW v1 AS SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values; SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL; +WHERE select_id = 143 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `INSTR(my_char_30, 'char')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL); +WHERE select_id = 143 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1071,7 +1117,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL; +WHERE select_id = 142 OR select_id IS NULL order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1083,7 +1129,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varbinary_1000`) AS `BIT_LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL); +WHERE select_id = 142 OR select_id IS NULL) order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1097,19 +1143,19 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL; +WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL); +WHERE select_id = 141 OR select_id IS NULL) order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 240 2 @@ -1123,7 +1169,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL; +WHERE select_id = 140 OR select_id IS NULL order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1135,7 +1181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varchar_1000`) AS `BIT_LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL); +WHERE select_id = 140 OR select_id IS NULL) order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1149,7 +1195,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL; +WHERE select_id = 139 OR select_id IS NULL order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1161,7 +1207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_char_30`) AS `BIT_LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL); +WHERE select_id = 139 OR select_id IS NULL) order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1175,7 +1221,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values; SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL; +WHERE select_id = 138 OR select_id IS NULL order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1187,7 +1233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_year`,_latin1'IS_NULL') AS `IFNULL(my_year,'IS_NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL); +WHERE select_id = 138 OR select_id IS NULL) order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1201,7 +1247,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values; SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL; +WHERE select_id = 137 OR select_id IS NULL order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1213,7 +1259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_time`,_latin1'IS_NULL') AS `IFNULL(my_time,'IS_NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL); +WHERE select_id = 137 OR select_id IS NULL) order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1227,7 +1273,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values; SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL; +WHERE select_id = 136 OR select_id IS NULL order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1239,7 +1285,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_timestamp`,_latin1'IS_NULL') AS `IFNULL(my_timestamp,'IS_NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL); +WHERE select_id = 136 OR select_id IS NULL) order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1253,7 +1299,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values; SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL; +WHERE select_id = 135 OR select_id IS NULL order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1265,7 +1311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_date`,_latin1'IS_NULL') AS `IFNULL(my_date,'IS_NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL); +WHERE select_id = 135 OR select_id IS NULL) order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1279,7 +1325,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values; SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL; +WHERE select_id = 134 OR select_id IS NULL order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1291,7 +1337,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_datetime`,_latin1'IS_NULL') AS `IFNULL(my_datetime,'IS_NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL); +WHERE select_id = 134 OR select_id IS NULL) order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1305,7 +1351,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values; SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL; +WHERE select_id = 133 OR select_id IS NULL order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1317,7 +1363,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_double`,_latin1'IS_NULL') AS `IFNULL(my_double,'IS_NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL); +WHERE select_id = 133 OR select_id IS NULL) order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1331,7 +1377,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values; SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL; +WHERE select_id = 132 OR select_id IS NULL order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1343,7 +1389,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_decimal`,_latin1'IS_NULL') AS `IFNULL(my_decimal,'IS_NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL); +WHERE select_id = 132 OR select_id IS NULL) order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1357,7 +1403,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values; SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL; +WHERE select_id = 131 OR select_id IS NULL order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1369,7 +1415,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_bigint`,_latin1'IS_NULL') AS `IFNULL(my_bigint,'IS_NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL); +WHERE select_id = 131 OR select_id IS NULL) order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1383,7 +1429,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values; SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL; +WHERE select_id = 130 OR select_id IS NULL order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1395,7 +1441,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varbinary_1000`,_latin1'IS_NULL') AS `IFNULL(my_varbinary_1000,'IS_NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL); +WHERE select_id = 130 OR select_id IS NULL) order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1409,19 +1455,19 @@ CREATE VIEW v1 AS SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values; SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL; +WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,_latin1'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL); +WHERE select_id = 129 OR select_id IS NULL) order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 2 @@ -1435,7 +1481,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values; SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL; +WHERE select_id = 128 OR select_id IS NULL order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1447,7 +1493,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varchar_1000`,_latin1'IS_NULL') AS `IFNULL(my_varchar_1000,'IS_NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL); +WHERE select_id = 128 OR select_id IS NULL) order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1461,7 +1507,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values; SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL; +WHERE select_id = 127 OR select_id IS NULL order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1473,7 +1519,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_char_30`,_latin1'IS_NULL') AS `IFNULL(my_char_30,'IS_NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL); +WHERE select_id = 127 OR select_id IS NULL) order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1487,7 +1533,7 @@ CREATE VIEW v1 AS SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values; SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL; +WHERE select_id = 126 OR select_id IS NULL order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1501,7 +1547,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL); +WHERE select_id = 126 OR select_id IS NULL) order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1516,7 +1562,7 @@ CREATE VIEW v1 AS SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values; SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL; +WHERE select_id = 125 OR select_id IS NULL order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1530,7 +1576,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL); +WHERE select_id = 125 OR select_id IS NULL) order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1545,7 +1591,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL; +WHERE select_id = 124 OR select_id IS NULL order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1559,7 +1605,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL); +WHERE select_id = 124 OR select_id IS NULL) order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1574,7 +1620,7 @@ CREATE VIEW v1 AS SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values; SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL; +WHERE select_id = 123 OR select_id IS NULL order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1588,7 +1634,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL); +WHERE select_id = 123 OR select_id IS NULL) order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1603,7 +1649,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values; SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL; +WHERE select_id = 122 OR select_id IS NULL order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1617,7 +1663,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL); +WHERE select_id = 122 OR select_id IS NULL) order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1632,7 +1678,7 @@ CREATE VIEW v1 AS SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values; SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL; +WHERE select_id = 121 OR select_id IS NULL order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1646,7 +1692,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL); +WHERE select_id = 121 OR select_id IS NULL) order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1661,7 +1707,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values; SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL; +WHERE select_id = 120 OR select_id IS NULL order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1675,7 +1721,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL); +WHERE select_id = 120 OR select_id IS NULL) order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1690,7 +1736,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values; SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL; +WHERE select_id = 119 OR select_id IS NULL order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1704,7 +1750,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL); +WHERE select_id = 119 OR select_id IS NULL) order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1719,7 +1765,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL; +WHERE select_id = 118 OR select_id IS NULL order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1733,7 +1779,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL); +WHERE select_id = 118 OR select_id IS NULL) order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1748,21 +1794,21 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL; +WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),_latin1'IS NULL',_latin1'IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL); +WHERE select_id = 117 OR select_id IS NULL) order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 @@ -1777,7 +1823,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL; +WHERE select_id = 116 OR select_id IS NULL order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1791,7 +1837,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL); +WHERE select_id = 116 OR select_id IS NULL) order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1806,7 +1852,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values; SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL; +WHERE select_id = 115 OR select_id IS NULL order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1820,7 +1866,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL); +WHERE select_id = 115 OR select_id IS NULL) order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1835,7 +1881,7 @@ CREATE VIEW v1 AS SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values; SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL; +WHERE select_id = 114 OR select_id IS NULL order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1847,7 +1893,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_year`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_year, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL); +WHERE select_id = 114 OR select_id IS NULL) order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1861,7 +1907,7 @@ CREATE VIEW v1 AS SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values; SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL; +WHERE select_id = 113 OR select_id IS NULL order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1873,7 +1919,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_time`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_time, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL); +WHERE select_id = 113 OR select_id IS NULL) order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1887,7 +1933,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL; +WHERE select_id = 112 OR select_id IS NULL order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1899,7 +1945,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_timestamp`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL); +WHERE select_id = 112 OR select_id IS NULL) order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1913,7 +1959,7 @@ CREATE VIEW v1 AS SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values; SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL; +WHERE select_id = 111 OR select_id IS NULL order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1925,7 +1971,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_date`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_date, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL); +WHERE select_id = 111 OR select_id IS NULL) order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1939,7 +1985,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values; SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL; +WHERE select_id = 110 OR select_id IS NULL order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1951,7 +1997,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_datetime`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_datetime, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL); +WHERE select_id = 110 OR select_id IS NULL) order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1965,7 +2011,7 @@ CREATE VIEW v1 AS SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values; SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL; +WHERE select_id = 109 OR select_id IS NULL order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1977,7 +2023,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_double`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_double, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL); +WHERE select_id = 109 OR select_id IS NULL) order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1991,7 +2037,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values; SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL; +WHERE select_id = 108 OR select_id IS NULL order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2003,7 +2049,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_decimal`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_decimal, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL); +WHERE select_id = 108 OR select_id IS NULL) order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2017,7 +2063,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values; SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL; +WHERE select_id = 107 OR select_id IS NULL order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2029,7 +2075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_bigint`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_bigint, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL); +WHERE select_id = 107 OR select_id IS NULL) order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2043,7 +2089,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL; +WHERE select_id = 106 OR select_id IS NULL order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2055,7 +2101,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL); +WHERE select_id = 106 OR select_id IS NULL) order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2069,13 +2115,13 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL; +WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2086,7 +2132,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL); +WHERE select_id = 105 OR select_id IS NULL) order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2105,7 +2151,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL; +WHERE select_id = 104 OR select_id IS NULL order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2117,7 +2163,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL); +WHERE select_id = 104 OR select_id IS NULL) order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2131,7 +2177,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values; SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL; +WHERE select_id = 103 OR select_id IS NULL order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2146,7 +2192,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL); +WHERE select_id = 103 OR select_id IS NULL) order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2159,11 +2205,11 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL; +WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2175,7 +2221,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using koi8r) AS `CONVERT(my_varbinary_1000 USING koi8r)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL); +WHERE select_id = 102 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2185,23 +2231,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL; +WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL); +WHERE select_id = 101 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 2 @@ -2211,11 +2257,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL; +WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2227,7 +2273,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using koi8r) AS `CONVERT(my_varchar_1000 USING koi8r)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL); +WHERE select_id = 100 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2237,11 +2283,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL; +WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2253,7 +2299,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using koi8r) AS `CONVERT(my_char_30 USING koi8r)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL); +WHERE select_id = 99 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2263,11 +2309,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL; +WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2279,7 +2325,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using utf8) AS `CONVERT(my_varbinary_1000 USING utf8)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL); +WHERE select_id = 98 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2289,23 +2335,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL; +WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL); +WHERE select_id = 97 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 2 @@ -2315,11 +2361,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL; +WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2331,7 +2377,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using utf8) AS `CONVERT(my_varchar_1000 USING utf8)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL); +WHERE select_id = 96 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2341,11 +2387,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL; +WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2357,7 +2403,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using utf8) AS `CONVERT(my_char_30 USING utf8)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL); +WHERE select_id = 95 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2371,7 +2417,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL; +WHERE select_id = 94 OR select_id IS NULL order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2383,7 +2429,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as unsigned) AS `CAST(my_year AS UNSIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL); +WHERE select_id = 94 OR select_id IS NULL) order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2397,7 +2443,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL; +WHERE select_id = 93 OR select_id IS NULL order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2409,7 +2455,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as unsigned) AS `CAST(my_time AS UNSIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL); +WHERE select_id = 93 OR select_id IS NULL) order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2423,7 +2469,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL; +WHERE select_id = 92 OR select_id IS NULL order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2435,7 +2481,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as unsigned) AS `CAST(my_timestamp AS UNSIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL); +WHERE select_id = 92 OR select_id IS NULL) order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2449,7 +2495,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL; +WHERE select_id = 91 OR select_id IS NULL order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2461,7 +2507,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as unsigned) AS `CAST(my_date AS UNSIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL); +WHERE select_id = 91 OR select_id IS NULL) order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2475,7 +2521,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL; +WHERE select_id = 90 OR select_id IS NULL order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2487,7 +2533,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as unsigned) AS `CAST(my_datetime AS UNSIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL); +WHERE select_id = 90 OR select_id IS NULL) order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2497,11 +2543,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL) order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL; +WHERE select_id = 88 OR select_id IS NULL order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2517,7 +2595,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL); +WHERE select_id = 88 OR select_id IS NULL) order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2535,7 +2613,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL; +WHERE select_id = 87 OR select_id IS NULL order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2547,7 +2625,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as unsigned) AS `CAST(my_bigint AS UNSIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL); +WHERE select_id = 87 OR select_id IS NULL) order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2561,7 +2639,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL; +WHERE select_id = 86 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2578,7 +2656,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as unsigned) AS `CAST(my_varbinary_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL); +WHERE select_id = 86 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2597,13 +2675,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL; +WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2615,7 +2693,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as unsigned) AS `CAST(my_binary_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL); +WHERE select_id = 85 OR select_id IS NULL) order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2635,7 +2713,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL; +WHERE select_id = 84 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2652,7 +2730,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as unsigned) AS `CAST(my_varchar_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL); +WHERE select_id = 84 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2671,7 +2749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL; +WHERE select_id = 83 OR select_id IS NULL order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2688,7 +2766,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as unsigned) AS `CAST(my_char_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL); +WHERE select_id = 83 OR select_id IS NULL) order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2707,7 +2785,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL; +WHERE select_id = 82 OR select_id IS NULL order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2719,7 +2797,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as signed) AS `CAST(my_year AS SIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL); +WHERE select_id = 82 OR select_id IS NULL) order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2733,7 +2811,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL; +WHERE select_id = 81 OR select_id IS NULL order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2745,7 +2823,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as signed) AS `CAST(my_time AS SIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL); +WHERE select_id = 81 OR select_id IS NULL) order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2759,7 +2837,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL; +WHERE select_id = 80 OR select_id IS NULL order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2771,7 +2849,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as signed) AS `CAST(my_timestamp AS SIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL); +WHERE select_id = 80 OR select_id IS NULL) order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2785,7 +2863,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL; +WHERE select_id = 79 OR select_id IS NULL order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2797,7 +2875,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as signed) AS `CAST(my_date AS SIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL); +WHERE select_id = 79 OR select_id IS NULL) order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2811,7 +2889,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL; +WHERE select_id = 78 OR select_id IS NULL order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2823,7 +2901,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as signed) AS `CAST(my_datetime AS SIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL); +WHERE select_id = 78 OR select_id IS NULL) order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2833,11 +2911,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL) order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL; +WHERE select_id = 76 OR select_id IS NULL order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2852,7 +2962,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL); +WHERE select_id = 76 OR select_id IS NULL) order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2869,7 +2979,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL; +WHERE select_id = 75 OR select_id IS NULL order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2881,7 +2991,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as signed) AS `CAST(my_bigint AS SIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL); +WHERE select_id = 75 OR select_id IS NULL) order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2895,7 +3005,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL; +WHERE select_id = 74 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2911,7 +3021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as signed) AS `CAST(my_varbinary_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL); +WHERE select_id = 74 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2929,13 +3039,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL; +WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2946,7 +3056,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as signed) AS `CAST(my_binary_30 AS SIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL); +WHERE select_id = 73 OR select_id IS NULL) order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2965,7 +3075,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL; +WHERE select_id = 72 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2981,7 +3091,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as signed) AS `CAST(my_varchar_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL); +WHERE select_id = 72 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2999,7 +3109,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL; +WHERE select_id = 71 OR select_id IS NULL order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3015,7 +3125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as signed) AS `CAST(my_char_30 AS SIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL); +WHERE select_id = 71 OR select_id IS NULL) order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3033,7 +3143,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values; SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL; +WHERE select_id = 70 OR select_id IS NULL order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3045,7 +3155,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as decimal(37,2)) AS `CAST(my_year AS DECIMAL(37,2))`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL); +WHERE select_id = 70 OR select_id IS NULL) order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3059,7 +3169,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values; SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL; +WHERE select_id = 69 OR select_id IS NULL order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3071,7 +3181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as decimal(37,2)) AS `CAST(my_time AS DECIMAL(37,2))`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL); +WHERE select_id = 69 OR select_id IS NULL) order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3085,7 +3195,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL; +WHERE select_id = 68 OR select_id IS NULL order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3097,7 +3207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as decimal(37,2)) AS `CAST(my_timestamp AS DECIMAL(37,2))`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL); +WHERE select_id = 68 OR select_id IS NULL) order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3111,7 +3221,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values; SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL; +WHERE select_id = 67 OR select_id IS NULL order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3123,7 +3233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as decimal(37,2)) AS `CAST(my_date AS DECIMAL(37,2))`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL); +WHERE select_id = 67 OR select_id IS NULL) order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3137,7 +3247,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL; +WHERE select_id = 66 OR select_id IS NULL order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3149,7 +3259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as decimal(37,2)) AS `CAST(my_datetime AS DECIMAL(37,2))`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL); +WHERE select_id = 66 OR select_id IS NULL) order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3159,11 +3269,49 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values; +SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL) order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL; +WHERE select_id = 64 OR select_id IS NULL order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3175,7 +3323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as decimal(37,2)) AS `CAST(my_decimal AS DECIMAL(37,2))`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL); +WHERE select_id = 64 OR select_id IS NULL) order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3189,7 +3337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL; +WHERE select_id = 63 OR select_id IS NULL order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3201,7 +3349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as decimal(37,2)) AS `CAST(my_bigint AS DECIMAL(37,2))`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL); +WHERE select_id = 63 OR select_id IS NULL) order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3215,14 +3363,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL; +WHERE select_id = 62 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3232,14 +3380,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL); +WHERE select_id = 62 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3251,14 +3399,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL; +WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 27 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3273,14 +3421,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL); +WHERE select_id = 61 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 27 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3297,14 +3445,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL; +WHERE select_id = 60 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3314,14 +3462,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL); +WHERE select_id = 60 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3333,14 +3481,14 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL; +WHERE select_id = 59 OR select_id IS NULL order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3353,14 +3501,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL); +WHERE select_id = 59 OR select_id IS NULL) order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3375,7 +3523,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS TIME), my_year, id FROM t1_values; SELECT CAST(my_year AS TIME), my_year, id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL; +WHERE select_id = 58 OR select_id IS NULL order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3387,7 +3535,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as time) AS `CAST(my_year AS TIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL); +WHERE select_id = 58 OR select_id IS NULL) order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3401,7 +3549,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS TIME), my_time, id FROM t1_values; SELECT CAST(my_time AS TIME), my_time, id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL; +WHERE select_id = 57 OR select_id IS NULL order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3413,7 +3561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as time) AS `CAST(my_time AS TIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL); +WHERE select_id = 57 OR select_id IS NULL) order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3427,7 +3575,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL; +WHERE select_id = 56 OR select_id IS NULL order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3439,7 +3587,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as time) AS `CAST(my_timestamp AS TIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL); +WHERE select_id = 56 OR select_id IS NULL) order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3453,7 +3601,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS TIME), my_date, id FROM t1_values; SELECT CAST(my_date AS TIME), my_date, id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL; +WHERE select_id = 55 OR select_id IS NULL order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3465,7 +3613,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as time) AS `CAST(my_date AS TIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL); +WHERE select_id = 55 OR select_id IS NULL) order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3479,7 +3627,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL; +WHERE select_id = 54 OR select_id IS NULL order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3491,7 +3639,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as time) AS `CAST(my_datetime AS TIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL); +WHERE select_id = 54 OR select_id IS NULL) order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3501,11 +3649,45 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values; +SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL) order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL; +WHERE select_id = 52 OR select_id IS NULL order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3521,7 +3703,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as time) AS `CAST(my_bigint AS TIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL); +WHERE select_id = 52 OR select_id IS NULL) order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3539,7 +3721,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL; +WHERE select_id = 51 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3556,7 +3738,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as time) AS `CAST(my_varbinary_1000 AS TIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL); +WHERE select_id = 51 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3575,14 +3757,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL; +WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -3594,7 +3776,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as time) AS `CAST(my_binary_30 AS TIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL); +WHERE select_id = 50 OR select_id IS NULL) order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 00:00:00 2 @@ -3615,7 +3797,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL; +WHERE select_id = 49 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3632,7 +3814,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as time) AS `CAST(my_varchar_1000 AS TIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL); +WHERE select_id = 49 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3651,7 +3833,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL; +WHERE select_id = 48 OR select_id IS NULL order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3668,7 +3850,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as time) AS `CAST(my_char_30 AS TIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL); +WHERE select_id = 48 OR select_id IS NULL) order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3687,7 +3869,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values; SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL; +WHERE select_id = 47 OR select_id IS NULL order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3704,7 +3886,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as datetime) AS `CAST(my_year AS DATETIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL); +WHERE select_id = 47 OR select_id IS NULL) order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3723,7 +3905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values; SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL; +WHERE select_id = 46 OR select_id IS NULL order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3738,7 +3920,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as datetime) AS `CAST(my_time AS DATETIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL); +WHERE select_id = 46 OR select_id IS NULL) order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3755,7 +3937,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL; +WHERE select_id = 45 OR select_id IS NULL order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3767,7 +3949,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as datetime) AS `CAST(my_timestamp AS DATETIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL); +WHERE select_id = 45 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3781,7 +3963,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values; SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL; +WHERE select_id = 44 OR select_id IS NULL order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3793,7 +3975,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as datetime) AS `CAST(my_date AS DATETIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL); +WHERE select_id = 44 OR select_id IS NULL) order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3807,7 +3989,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL; +WHERE select_id = 43 OR select_id IS NULL order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3819,7 +4001,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as datetime) AS `CAST(my_datetime AS DATETIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL); +WHERE select_id = 43 OR select_id IS NULL) order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3833,7 +4015,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values; SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL; +WHERE select_id = 42 OR select_id IS NULL order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3852,7 +4034,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as datetime) AS `CAST(my_double AS DATETIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL); +WHERE select_id = 42 OR select_id IS NULL) order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3873,7 +4055,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL; +WHERE select_id = 41 OR select_id IS NULL order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3892,7 +4074,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as datetime) AS `CAST(my_bigint AS DATETIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL); +WHERE select_id = 41 OR select_id IS NULL) order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3913,7 +4095,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL; +WHERE select_id = 40 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3931,7 +4113,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as datetime) AS `CAST(my_varbinary_1000 AS DATETIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL); +WHERE select_id = 40 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3951,14 +4133,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL; +WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -3970,7 +4152,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as datetime) AS `CAST(my_binary_30 AS DATETIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL); +WHERE select_id = 39 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 NULL 2 @@ -3991,7 +4173,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL; +WHERE select_id = 38 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4009,7 +4191,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as datetime) AS `CAST(my_varchar_1000 AS DATETIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL); +WHERE select_id = 38 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4029,7 +4211,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL; +WHERE select_id = 37 OR select_id IS NULL order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4047,7 +4229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as datetime) AS `CAST(my_char_30 AS DATETIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL); +WHERE select_id = 37 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4067,7 +4249,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATE), my_year, id FROM t1_values; SELECT CAST(my_year AS DATE), my_year, id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL; +WHERE select_id = 36 OR select_id IS NULL order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4084,7 +4266,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as date) AS `CAST(my_year AS DATE)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL); +WHERE select_id = 36 OR select_id IS NULL) order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4103,7 +4285,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATE), my_time, id FROM t1_values; SELECT CAST(my_time AS DATE), my_time, id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL; +WHERE select_id = 35 OR select_id IS NULL order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4115,7 +4297,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as date) AS `CAST(my_time AS DATE)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL); +WHERE select_id = 35 OR select_id IS NULL) order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4129,7 +4311,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL; +WHERE select_id = 34 OR select_id IS NULL order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4141,7 +4323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as date) AS `CAST(my_timestamp AS DATE)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL); +WHERE select_id = 34 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4155,7 +4337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATE), my_date, id FROM t1_values; SELECT CAST(my_date AS DATE), my_date, id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL; +WHERE select_id = 33 OR select_id IS NULL order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4167,7 +4349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as date) AS `CAST(my_date AS DATE)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL); +WHERE select_id = 33 OR select_id IS NULL) order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4181,7 +4363,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL; +WHERE select_id = 32 OR select_id IS NULL order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4193,7 +4375,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as date) AS `CAST(my_datetime AS DATE)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL); +WHERE select_id = 32 OR select_id IS NULL) order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4207,7 +4389,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATE), my_double, id FROM t1_values; SELECT CAST(my_double AS DATE), my_double, id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL; +WHERE select_id = 31 OR select_id IS NULL order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4225,7 +4407,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as date) AS `CAST(my_double AS DATE)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL); +WHERE select_id = 31 OR select_id IS NULL) order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4245,7 +4427,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL; +WHERE select_id = 30 OR select_id IS NULL order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4263,7 +4445,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as date) AS `CAST(my_bigint AS DATE)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL); +WHERE select_id = 30 OR select_id IS NULL) order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4283,7 +4465,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL; +WHERE select_id = 29 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4301,7 +4483,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as date) AS `CAST(my_varbinary_1000 AS DATE)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL); +WHERE select_id = 29 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4321,14 +4503,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL; +WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -4340,7 +4522,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as date) AS `CAST(my_binary_30 AS DATE)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL); +WHERE select_id = 28 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 NULL 2 @@ -4361,7 +4543,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL; +WHERE select_id = 27 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4379,7 +4561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as date) AS `CAST(my_varchar_1000 AS DATE)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL); +WHERE select_id = 27 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4399,7 +4581,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL; +WHERE select_id = 26 OR select_id IS NULL order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4417,7 +4599,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as date) AS `CAST(my_char_30 AS DATE)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL); +WHERE select_id = 26 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4437,7 +4619,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values; SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL; +WHERE select_id = 25 OR select_id IS NULL order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4449,7 +4631,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset latin1) AS `CAST(my_year AS CHAR)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL); +WHERE select_id = 25 OR select_id IS NULL) order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4463,7 +4645,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values; SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL; +WHERE select_id = 24 OR select_id IS NULL order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4475,7 +4657,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset latin1) AS `CAST(my_time AS CHAR)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL); +WHERE select_id = 24 OR select_id IS NULL) order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4489,7 +4671,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL; +WHERE select_id = 23 OR select_id IS NULL order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4501,7 +4683,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset latin1) AS `CAST(my_timestamp AS CHAR)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL); +WHERE select_id = 23 OR select_id IS NULL) order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4515,7 +4697,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values; SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL; +WHERE select_id = 22 OR select_id IS NULL order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4527,7 +4709,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset latin1) AS `CAST(my_date AS CHAR)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL); +WHERE select_id = 22 OR select_id IS NULL) order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4541,7 +4723,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL; +WHERE select_id = 21 OR select_id IS NULL order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4553,7 +4735,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset latin1) AS `CAST(my_datetime AS CHAR)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL); +WHERE select_id = 21 OR select_id IS NULL) order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4567,7 +4749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values; SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL; +WHERE select_id = 20 OR select_id IS NULL order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4579,7 +4761,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset latin1) AS `CAST(my_double AS CHAR)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL); +WHERE select_id = 20 OR select_id IS NULL) order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4593,7 +4775,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL; +WHERE select_id = 19 OR select_id IS NULL order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4605,7 +4787,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset latin1) AS `CAST(my_decimal AS CHAR)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL); +WHERE select_id = 19 OR select_id IS NULL) order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4619,7 +4801,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL; +WHERE select_id = 18 OR select_id IS NULL order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4631,7 +4813,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset latin1) AS `CAST(my_bigint AS CHAR)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL); +WHERE select_id = 18 OR select_id IS NULL) order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4645,7 +4827,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL; +WHERE select_id = 17 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4657,7 +4839,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset latin1) AS `CAST(my_varbinary_1000 AS CHAR)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL); +WHERE select_id = 17 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4671,19 +4853,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL; +WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL); +WHERE select_id = 16 OR select_id IS NULL) order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 2 @@ -4697,7 +4879,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL; +WHERE select_id = 15 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4709,7 +4891,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset latin1) AS `CAST(my_varchar_1000 AS CHAR)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL); +WHERE select_id = 15 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4723,7 +4905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL; +WHERE select_id = 14 OR select_id IS NULL order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4735,7 +4917,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset latin1) AS `CAST(my_char_30 AS CHAR)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL); +WHERE select_id = 14 OR select_id IS NULL) order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4749,7 +4931,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values; SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL; +WHERE select_id = 13 OR select_id IS NULL order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4761,7 +4943,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset binary) AS `CAST(my_year AS BINARY)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL); +WHERE select_id = 13 OR select_id IS NULL) order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4775,7 +4957,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values; SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL; +WHERE select_id = 12 OR select_id IS NULL order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4787,7 +4969,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset binary) AS `CAST(my_time AS BINARY)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL); +WHERE select_id = 12 OR select_id IS NULL) order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4801,7 +4983,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL; +WHERE select_id = 11 OR select_id IS NULL order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4813,7 +4995,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset binary) AS `CAST(my_timestamp AS BINARY)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL); +WHERE select_id = 11 OR select_id IS NULL) order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4827,7 +5009,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values; SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL; +WHERE select_id = 10 OR select_id IS NULL order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4839,7 +5021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset binary) AS `CAST(my_date AS BINARY)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL); +WHERE select_id = 10 OR select_id IS NULL) order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4853,7 +5035,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL; +WHERE select_id = 9 OR select_id IS NULL order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4865,7 +5047,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset binary) AS `CAST(my_datetime AS BINARY)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL); +WHERE select_id = 9 OR select_id IS NULL) order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4879,7 +5061,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values; SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL; +WHERE select_id = 8 OR select_id IS NULL order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4891,7 +5073,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset binary) AS `CAST(my_double AS BINARY)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL); +WHERE select_id = 8 OR select_id IS NULL) order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4905,7 +5087,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL; +WHERE select_id = 7 OR select_id IS NULL order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4917,7 +5099,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset binary) AS `CAST(my_decimal AS BINARY)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL); +WHERE select_id = 7 OR select_id IS NULL) order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4931,7 +5113,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL; +WHERE select_id = 6 OR select_id IS NULL order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4943,7 +5125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset binary) AS `CAST(my_bigint AS BINARY)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL); +WHERE select_id = 6 OR select_id IS NULL) order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4957,7 +5139,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL; +WHERE select_id = 5 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4969,7 +5151,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset binary) AS `CAST(my_varbinary_1000 AS BINARY)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL); +WHERE select_id = 5 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4983,19 +5165,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL; +WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL); +WHERE select_id = 4 OR select_id IS NULL) order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 2 @@ -5009,7 +5191,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL; +WHERE select_id = 3 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5021,7 +5203,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset binary) AS `CAST(my_varchar_1000 AS BINARY)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL); +WHERE select_id = 3 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5035,7 +5217,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL; +WHERE select_id = 2 OR select_id IS NULL order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5047,7 +5229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset binary) AS `CAST(my_char_30 AS BINARY)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL); +WHERE select_id = 2 OR select_id IS NULL) order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5059,7 +5241,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT sqrt(my_bigint), my_bigint, id FROM t1_values; SELECT sqrt(my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL; +WHERE select_id = 1 OR select_id IS NULL order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -5073,7 +5255,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sqrt(`t1_values`.`my_bigint`) AS `sqrt(my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL); +WHERE select_id = 1 OR select_id IS NULL) order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result index 9081c6da3f7..6ba95c9fa63 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -164,7 +172,7 @@ declare y integer default 1; set @x = x; set @y = y; set @z = 234; -SELECT f1, f2 into @x, @y from t2 limit 1; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -207,7 +215,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; -SELECT f4, f3 into @x, @y from t2 limit 1; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// CALL sp1(); @@ -695,7 +703,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -794,7 +802,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -902,7 +910,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1082,7 +1090,8 @@ declare f2_value char(20); declare f5_value char(20); declare f4_value integer; declare f6_value integer; -declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1165,7 +1174,7 @@ of a compound statement ends. DROP TABLE IF EXISTS temp1; DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; f1 f2 f4 f5 a` a` -5000 a` aaa aaa -4999 aaa @@ -1185,8 +1194,8 @@ declare newf1 char(20); declare newf2 char(20); declare newf5 char(20); declare newf4 integer; -declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; -declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1268,8 +1277,10 @@ declare i_newf11 char(20); declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; -declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; -declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1300,8 +1311,10 @@ DECLARE o_newf11 CHAR(20); DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; -DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; -DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result index faf598b090b..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result index 639e8cdb48b..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- @@ -79,6 +87,7 @@ BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' +USE db_storedproc_1; root@localhost db_storedproc_1 GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -90,6 +99,7 @@ CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// +USE db_storedproc_1; root@localhost db_storedproc_1 DROP USER 'user_1'@'localhost'; @@ -115,6 +125,7 @@ CREATE FUNCTION fn1(v1 int) returns int BEGIN return v1; END// +USE db_storedproc_1; root@localhost db_storedproc_1 drop user 'user_1'@'localhost'; diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result index d0b9d8ae806..cbe0a18435a 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result index 68e32626425..40ebc1e51e4 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result index f2c47342019..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -78,7 +86,7 @@ connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK); user_1@localhost db_storedproc CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN -SELECT * FROM db_storedproc.t1 LIMIT 1; +SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// CREATE FUNCTION fn31105(n INT) RETURNS INT BEGIN @@ -93,6 +101,8 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +connection default; +USE db_storedproc; root@localhost db_storedproc CALL sp31102(); @@ -112,6 +122,8 @@ a` a` 1000-01-01 -5000 a` -5000 SELECT fn31105( 9 ); fn31105( 9 ) 81 +connection default; +USE db_storedproc; root@localhost db_storedproc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; @@ -129,6 +141,7 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +USE db_storedproc; root@localhost db_storedproc DROP PROCEDURE sp31102; @@ -176,6 +189,8 @@ DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; CREATE PROCEDURE sp_ins_1() @@ -203,49 +218,72 @@ END; SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// +CREATE PROCEDURE sp_del() +BEGIN +DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// +CREATE PROCEDURE sp_with_rowcount() +BEGIN +BEGIN +INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), +('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); +END; +SELECT row_count() AS 'row_count() after insert'; +SELECT row_count() AS 'row_count() after select row_count()'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; +SELECT row_count() AS 'row_count() after update'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +DELETE FROM temp WHERE temp.f1 = 'updated_2'; +SELECT row_count() AS 'row_count() after delete'; +END// CALL sp_ins_1(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 CALL sp_ins_3(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 +abc xyz 1949-05-23 100 uvw 1000 +abc xyz 1989-11-09 100 uvw 1000 +abc xyz 2005-10-24 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 -abc xyz 1949-05-23 100 uvw 1000 -abc xyz 1989-11-09 100 uvw 1000 -abc xyz 2005-10-24 100 uvw 1000 CALL sp_upd(); SELECT row_count(); row_count() 4 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -254,8 +292,6 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 @@ -279,6 +315,8 @@ row_count() 3 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -287,26 +325,73 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +qwe xyz 1998-03-26 100 uvw 1000 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 updated xyz 2005-10-24 100 uvw 1000 updated_2 abc 1989-11-09 100 uvw 1000 -qwe xyz 1998-03-26 100 uvw 1000 updated_2 abc 2000-11-09 100 uvw 1000 updated_2 abc 2005-11-07 100 uvw 1000 +CALL sp_del(); +SELECT row_count(); +row_count() +4 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +a` a` 1000-01-01 -5000 a` -5000 +aaa aaa 1000-01-02 -4999 aaa -4999 +abaa abaa 1000-01-03 -4998 abaa -4998 +acaaa acaaa 1000-01-04 -4997 acaaa -4997 +adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 +aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 +afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 +agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 +updated abc 2005-10-03 100 uvw 1000 +updated xyz 1949-05-23 100 uvw 1000 +updated xyz 1989-11-09 100 uvw 1000 +updated xyz 2005-10-24 100 uvw 1000 +DELETE FROM temp; +CALL sp_with_rowcount(); +row_count() after insert +4 +row_count() after select row_count() +-1 +f1 f2 f3 +qwe abc 1989-11-09 +qwe abc 2000-11-09 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +row_count() after update +2 +f1 f2 f3 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +updated_2 abc 1989-11-09 +updated_2 abc 2000-11-09 +row_count() after delete +2 +SELECT row_count(); +row_count() +-1 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +qwe xyz 1998-03-26 100 uvw 1000 +qwe xyz 2005-11-07 100 uvw 1000 DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_0102.result b/mysql-test/suite/funcs_1/r/innodb_trig_0102.result index 9c2c2a38a4d..ff1836f1313 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_0102.result @@ -1,96 +1,97 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -103,9 +104,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -113,7 +114,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -141,7 +142,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -194,7 +195,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=innodb; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -206,7 +207,7 @@ update t1 set f2='update 3.5.1.7'; select * from t1; f1 f2 f3 NULL update 3.5.1.7 42 -select trigger_name from information_schema.triggers; +select trigger_name from information_schema.triggers order by trigger_name; trigger_name trg5_1 trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -226,7 +227,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -234,11 +235,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = innodb; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -262,9 +263,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = innodb; create table t2 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -294,15 +295,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -313,7 +314,7 @@ insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; @test_var1 @test_var2 @test_var3 trig1 trig2 trig3 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -323,7 +324,7 @@ trig2 3 select * from trig_db3.t1; f1 f2 trig3 4 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -341,17 +342,17 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = innodb; create table trig_db2.t1 (f1 char(50), f2 integer) engine = innodb; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table -trig_db1 trig1_b t1 trig_db1 trig1_a t1 +trig_db1 trig1_b t1 trig_db2 trig2 t1 set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03.result b/mysql-test/suite/funcs_1/r/innodb_trig_03.result index 4e6b4523f1d..e45115cdfab 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_03.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_03.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -106,7 +107,7 @@ set new.f1 = 'trig 3.5.3.2_1-no'; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no select current_user; @@ -121,15 +122,12 @@ root@localhost use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-yes'); ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - -note: once 15166 is fixed a similar case for SELECT needs to be added ---------------------------------------------------------------------- insert into t1 (f1) values ('insert 3.5.3.2-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -141,7 +139,7 @@ drop trigger trg1_2; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -150,12 +148,12 @@ use priv_db; drop trigger trg1_2; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg1_2; Testcase 3.5.3.7a: @@ -180,23 +178,22 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +create trigger trg4a_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1a'; insert into t1 (f1) values ('insert 3.5.3.7-1a'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg4a_1; use priv_db; select current_user; @@ -207,18 +204,13 @@ Grants for test_yesprivs@localhost GRANT UPDATE, SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' create trigger trg4a_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2a'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a drop trigger trg4a_2; @@ -245,30 +237,29 @@ Grants for test_noprivs@localhost GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4b_1 before UPDATE on t1 for each row +set new.f1 = 'trig 3.5.3.7-1b'; +ERROR 42000: Access denied; you need the SUPER privilege for this operation insert into t1 (f1) values ('insert 3.5.3.7-1b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a insert 3.5.3.7-1b +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a update 3.5.3.7-1b drop trigger trg4b_1; +ERROR HY000: Trigger does not exist show grants; Grants for test_yesprivs@localhost GRANT SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' @@ -276,32 +267,26 @@ GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4b_2 before UPDATE on t1 for each row set new.f1 = 'trig 3.5.3.7-2b'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a -update 3.5.3.7-1b insert 3.5.3.7-2b -update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; -select f1 from t1; -f1 -insert 3.5.3.2-no trig 3.5.3.2_2-yes trig 3.5.3.2_2-yes -insert 3.5.3.6-no -insert 3.5.3.7-1a trig 3.5.3.7-2a update 3.5.3.7-1b +update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; +select f1 from t1 order by f1; +f1 +insert 3.5.3.2-no +insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a trig 3.5.3.7-2b +update 3.5.3.7-1b drop trigger trg4b_2; Testcase 3.5.3.7c @@ -327,21 +312,19 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4c_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1c'; insert into t1 (f1) values ('insert 3.5.3.7-1c'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c +update 3.5.3.7-1b drop trigger trg4c_1; show grants; Grants for test_yesprivs@localhost @@ -350,23 +333,17 @@ GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4c_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2c'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2c'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c +update 3.5.3.7-1b drop trigger trg4c_2; Testcase 3.5.3.7d: @@ -390,23 +367,20 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4d_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1d'; insert into t1 (f1) values ('insert 3.5.3.7-1d'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d +update 3.5.3.7-1b drop trigger trg4d_1; show grants; Grants for test_yesprivs@localhost @@ -415,25 +389,18 @@ GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4d_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2d'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2d'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d trig 3.5.3.7-2d +update 3.5.3.7-1b drop trigger trg4d_2; Testcase 3.5.3.8a: @@ -458,14 +425,14 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5a_1 before INSERT on t1 for each row +set @test_var = new.f1; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; @test_var before trig 3.5.3.8-1a insert into t1 (f1) values ('insert 3.5.3.8-1a'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1a @@ -483,10 +450,6 @@ set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; @test_var before trig 3.5.3.8-2a - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @test_var @@ -517,15 +480,15 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5b_1 before UPDATE on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1b'; insert into t1 (f1) values ('insert 3.5.3.8-1b'); select @test_var; @test_var before trig 3.5.3.8-1b update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1b @@ -542,10 +505,6 @@ insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; @test_var before trig 3.5.3.8-2b - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.* to test_yesprivs@localhost; update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; @test_var @@ -576,11 +535,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5c_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1c @@ -593,10 +552,6 @@ use priv_db; create trigger trg5c_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2c'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; @test_var @@ -626,11 +581,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5d_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1d @@ -643,10 +598,6 @@ use priv_db; create trigger trg5d_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2d'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @test_var @@ -682,10 +633,10 @@ ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); -select f1 from t1; +select f1 from t1 order by f1; f1 4 -select f2 from t2; +select f2 from t2 order by f2; f2 4 use priv_db; @@ -698,11 +649,11 @@ ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 2 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 1 use priv_db; @@ -715,12 +666,12 @@ ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 -2 1 -select f2 from t2; +2 +4 +select f2 from t2 order by f2; f2 1 select @aaa; @@ -736,13 +687,13 @@ ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 +1 +1 2 -1 -1 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_0407.result b/mysql-test/suite/funcs_1/r/innodb_trig_0407.result index e7f2b374845..bd190c7ed2f 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_0407.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -88,22 +89,22 @@ Use db_drop; create table t1 (f1 char(30)) engine=innodb; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 Trigger 3.5.4.1 drop trigger trg1; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table Insert into t1 values ('Insert no trigger 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 -Trigger 3.5.4.1 Insert no trigger 3.5.4.1 +Trigger 3.5.4.1 drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -127,7 +128,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=innodb; create table t1_433a (f1a char (5)) engine=innodb; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -148,7 +149,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=innodb; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -184,7 +185,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=innodb; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -221,7 +222,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -229,7 +230,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -257,7 +258,7 @@ use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); Warnings: Warning 1265 Data truncated for column 'f1' at row 1 -Select * from dbtest_two.t2; +Select * from dbtest_two.t2 order by f1; f1 1st Insert 3.5. 2nd Insert 3.5. @@ -310,9 +311,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -330,9 +331,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -358,9 +359,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -378,9 +379,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -408,9 +409,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -440,12 +441,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_08.result b/mysql-test/suite/funcs_1/r/innodb_trig_08.result index a13116df9b4..19e42143a5d 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_08.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_08.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,17 +90,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=innodb; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=innodb; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -122,18 +123,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -161,14 +162,22 @@ select @test_var; 3.5.8.4 - single SQL - insert ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row -insert into db_test.t1_i +BEGIN +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); +END// +Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; +f120 f122 f136 f144 f163 +1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000 +select * from db_test.t1_i order by i120; +i120 i136 i144 i163 +1 00222 0000023456 1.050000000000000000000000000000 update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_i; +select * from db_test.t1_i order by i120; i120 i136 i144 i163 1 00222 0000023456 1.050000000000000000000000000000 I 00222 0000023456 1.050000000000000000000000000000 @@ -177,7 +186,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -185,27 +194,27 @@ update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_u; +select * from db_test.t1_u order by u120; u120 u136 u144 u163 a 00111 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 f 00333 0000099999 999.990000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 3.5.8.3/4 - single SQL - delete ------------------------------- drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_d; +select * from db_test.t1_d order by d120; d120 d136 d144 d163 a 00111 0000099999 999.990000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 @@ -214,10 +223,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -245,36 +254,36 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if -d Test 3.5.8.5-if 00010 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00101 three 2nd else D Test 3.5.8.5-if 00102 three 2nd else -d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00103 three 2nd else create trigger trg3 before update on tb3 for each row BEGIN @@ -289,7 +298,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -331,60 +340,60 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -398,40 +407,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -466,33 +475,62 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; Testcase 3.5.8.6: (requirement void) ------------------------------------ +CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// +CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW +BEGIN +CALL sp_01 (); +END// +Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); +update tb3 set f120='S', f136=111, +f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; +select f120, f122 +from tb3 where f122 like 'Test 3.5.8.6%' order by f120; +f120 f122 +S Test 3.5.8.6-tr8_1 +DROP TRIGGER trg8_1; +DROP PROCEDURE sp_01; -Testcase 3.5.8.7: (Disabled as a result of bug _____) ------------------------------------------------------ +Testcase 3.5.8.7 +---------------- +Create trigger trg9_1 before update on tb3 for each row +BEGIN +Start transaction; +Set new.f120='U'; +Commit; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. +Create trigger trg9_2 before delete on tb3 for each row +BEGIN +Start transaction; +Set @var2=old.f120; +Rollback; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. drop user test_general@localhost; drop user test_general; drop user test_super@localhost; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_09.result b/mysql-test/suite/funcs_1/r/innodb_trig_09.result index 34a430ba052..321b988587e 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_09.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_09.result @@ -1,74 +1,75 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -80,15 +81,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -116,17 +117,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -135,13 +136,13 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 delete from tb3 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -172,17 +173,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4%'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -194,15 +195,15 @@ Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; Warnings: Warning 1048 Column 'f136' cannot be null -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4-trig'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -240,6 +241,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result b/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result index 8976787420d..7412b8c8eff 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -86,7 +87,7 @@ Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 -from tb3 where f122 like 'Test 3.5.10.1/2/3%'; +from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000 NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000 @@ -100,7 +101,7 @@ f121 f122 f151 f163 NULL Not in View 3 111.110000000000000000000000000000 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 @@ -114,7 +115,7 @@ before delete 0 delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 select f121, f122, f151, f163 from vw11; @@ -141,11 +142,11 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 -Select * from tb_load limit 10; +Select * from tb_load order by f1 limit 10; f1 f2 f3 -5000 a` 1000 -4999 aaa 999 @@ -240,7 +241,7 @@ insert into t3 (f1) values (new.f1+1000); create trigger tr2_4 after insert on t2_4 for each row insert into t3 (f1) values (new.f1+10000); insert into t1 values (1); -select * from t3; +select * from t3 order by f1; f1 12 102 @@ -275,14 +276,14 @@ create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); insert into t1 values (1); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. -select * from t1; +select * from t1 order by f1; f1 0 -select * from t2; +select * from t2 order by f2; f2 -select * from t3; +select * from t3 order by f3; f3 -select * from t4; +select * from t4 order by f4; f4 drop trigger tr1; drop trigger tr2; @@ -293,8 +294,8 @@ drop table t2; drop table t3; drop table t4; -Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889) ----------------------------------------------------------------------- +Testcase y.y.y.4: Recursive trigger/SP references +------------------------------------------------- set @sql_mode='traditional'; create table t1_sp ( count integer, @@ -382,12 +383,12 @@ start transaction; insert into t1 values (1); ERROR 22003: Out of range value adjusted for column 'f4' at row 1 commit; -select * from t1; +select * from t1 order by f1; f1 1 -select * from t2; +select * from t2 order by f2; f2 -select * from t3; +select * from t3 order by f3; f3 drop trigger tr1; drop trigger tr2; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result index debbec1dde3..fe341762047 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase x.x.x.1: ----------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_views.result b/mysql-test/suite/funcs_1/r/innodb_views.result index 20d8c0ba2f3..d29e38925f6 100644 --- a/mysql-test/suite/funcs_1/r/innodb_views.result +++ b/mysql-test/suite/funcs_1/r/innodb_views.result @@ -1,117 +1,119 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; USE test; ! Attention: The file with the expected results is not diff --git a/mysql-test/suite/funcs_1/r/is_columns_innodb.result b/mysql-test/suite/funcs_1/r/is_columns_innodb.result index 101e7140645..d80ab62a987 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result +++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result @@ -3,63 +3,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = innodb; Warnings: @@ -76,180 +76,183 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/innodb_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; drop table if exists tb4; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -259,89 +262,97 @@ f239 varchar(20000) binary, f240 varchar(2000) unicode, f241 char(100) unicode ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/innodb_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -353,7 +364,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -367,7 +378,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_columns_memory.result b/mysql-test/suite/funcs_1/r/is_columns_memory.result index 7f49fcb97d0..ae7c5919447 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_memory.result +++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result @@ -4,55 +4,55 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f1 char, +f2 char binary, +f3 char ascii, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = memory; Warnings: @@ -72,174 +72,177 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/memory_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f236 char(95) unicode, f241 char(255) unicode, @@ -248,89 +251,97 @@ f238 varchar(25000) binary, f239 varbinary(0), f240 varchar(1200) unicode ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/memory_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -342,7 +353,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -356,7 +367,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam.result b/mysql-test/suite/funcs_1/r/is_columns_myisam.result index a30acc64a8d..94574c33d74 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result +++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result @@ -4,63 +4,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char, +f2 char binary, +f3 char ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = myisam; Warnings: @@ -80,196 +80,199 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/myisam_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), -f226 set("1set","2set"), -f227 VARBINARY(64), -f228 VARBINARY(27), -f229 VARBINARY(64), -f230 VARBINARY(192), -f231 VARBINARY(192), -f232 VARBINARY(27), -f233 VARBINARY(64), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), +f226 set("1set","2set"), +f227 VARBINARY(64), +f228 VARBINARY(27), +f229 VARBINARY(64), +f230 VARBINARY(192), +f231 VARBINARY(192), +f232 VARBINARY(27), +f233 VARBINARY(64), f234 VARBINARY(192), f235 char(255) unicode, f236 char(60) ascii, @@ -280,97 +283,105 @@ f240 varchar(120) unicode, f241 char(100) unicode, f242 bit(30) ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/myisam_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -382,7 +393,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -396,7 +407,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_columns_ndb.result b/mysql-test/suite/funcs_1/r/is_columns_ndb.result index 4ae1723140e..444c62eb010 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_ndb.result +++ b/mysql-test/suite/funcs_1/r/is_columns_ndb.result @@ -4,29 +4,35 @@ USE test; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = ndb; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = ndb; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -38,7 +44,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -52,7 +58,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_tables_innodb.result b/mysql-test/suite/funcs_1/r/is_tables_innodb.result index c160ac7f749..215e2c86654 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_innodb.result +++ b/mysql-test/suite/funcs_1/r/is_tables_innodb.result @@ -3,63 +3,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = innodb; Warnings: @@ -76,180 +76,183 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/innodb_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; drop table if exists tb4; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -259,89 +262,97 @@ f239 varchar(20000) binary, f240 varchar(2000) unicode, f241 char(100) unicode ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/innodb_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -353,7 +364,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -367,7 +378,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/is_tables_memory.result b/mysql-test/suite/funcs_1/r/is_tables_memory.result index c1dfc42e1db..bfc83fa1f92 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_memory.result +++ b/mysql-test/suite/funcs_1/r/is_tables_memory.result @@ -4,55 +4,55 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f1 char, +f2 char binary, +f3 char ascii, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = memory; Warnings: @@ -72,174 +72,177 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/memory_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f236 char(95) unicode, f241 char(255) unicode, @@ -248,89 +251,97 @@ f238 varchar(25000) binary, f239 varbinary(0), f240 varchar(1200) unicode ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/memory_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -342,7 +353,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -356,7 +367,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/is_tables_myisam.result b/mysql-test/suite/funcs_1/r/is_tables_myisam.result index f48128f6794..99d34818d98 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_myisam.result +++ b/mysql-test/suite/funcs_1/r/is_tables_myisam.result @@ -4,63 +4,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char, +f2 char binary, +f3 char ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = myisam; Warnings: @@ -80,196 +80,199 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/myisam_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), -f226 set("1set","2set"), -f227 VARBINARY(64), -f228 VARBINARY(27), -f229 VARBINARY(64), -f230 VARBINARY(192), -f231 VARBINARY(192), -f232 VARBINARY(27), -f233 VARBINARY(64), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), +f226 set("1set","2set"), +f227 VARBINARY(64), +f228 VARBINARY(27), +f229 VARBINARY(64), +f230 VARBINARY(192), +f231 VARBINARY(192), +f232 VARBINARY(27), +f233 VARBINARY(64), f234 VARBINARY(192), f235 char(255) unicode, f236 char(60) ascii, @@ -280,97 +283,105 @@ f240 varchar(120) unicode, f241 char(100) unicode, f242 bit(30) ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/myisam_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -382,7 +393,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -396,7 +407,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/is_tables_ndb.result b/mysql-test/suite/funcs_1/r/is_tables_ndb.result index 189f7f3464a..467f4566912 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_ndb.result +++ b/mysql-test/suite/funcs_1/r/is_tables_ndb.result @@ -4,29 +4,35 @@ USE test; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = NDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = NDB; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = NDB; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = NDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -38,7 +44,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -52,7 +58,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/memory_func_view.result b/mysql-test/suite/funcs_1/r/memory_func_view.result index 552b549a1a0..c2689a36801 100644 --- a/mysql-test/suite/funcs_1/r/memory_func_view.result +++ b/mysql-test/suite/funcs_1/r/memory_func_view.result @@ -1,7 +1,3 @@ - -! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables --------------------------------------------------------------------------------- DROP TABLE IF EXISTS t1_selects, t1_modes, t1_values; DROP VIEW IF EXISTS v1; CREATE TABLE t1_values @@ -9,7 +5,7 @@ CREATE TABLE t1_values id BIGINT AUTO_INCREMENT, select_id BIGINT, PRIMARY KEY(id) -) ENGINE = 'MEMORY' ; +) ENGINE = ; ALTER TABLE t1_values ADD my_char_30 CHAR(30); ALTER TABLE t1_values ADD my_varchar_1000 VARCHAR(1000); ALTER TABLE t1_values ADD my_binary_30 BINARY(30); @@ -39,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -54,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -89,6 +85,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 4; INSERT INTO t1_values SET select_id = @select_id, my_bigint = -25; +##### 1.1.1. CAST --> BINARY +##### 1.1.2. CAST --> CHAR +##### 1.1.3. CAST --> DATE INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27'; INSERT INTO t1_values SET select_id = @select_id, @@ -101,6 +100,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 20050627; INSERT INTO t1_values SET select_id = @select_id, my_double = +20.050627E+6; +##### 1.1.4. CAST --> DATETIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -113,6 +113,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 200506271758; INSERT INTO t1_values SET select_id = @select_id, my_double = +0.0200506271758E+13; +##### 1.1.5. CAST --> TIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -123,10 +124,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, my_bigint = 1758; - -some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = +1.758E+3; +##### 1.1.6. CAST --> DECIMAL INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, @@ -135,51 +135,39 @@ INSERT INTO t1_values SET select_id = @select_id, my_binary_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '-3333.3333'; - -some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = -0.33333333E+4; +##### 1.1.7. CAST --> SIGNED INTEGER "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later" --------------------------------------------------------------------------------- - -some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result + Status: To be fixed later" -------------------------------------------------------------------------------- +##### 1.1.8. CAST --> UNSIGNED INTEGER "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809" + The file with expected results suffers from Bug 5913" -------------------------------------------------------------------------------- some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast +Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; - -"Attention: IF(my_year IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails." --------------------------------------------------------------------------------- SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_varchar_1000), @@ -192,22 +180,20 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; - -"Attention: LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, -because there are 32/64 Bit differences --------------------------------------------------------------------------------- +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_double), my_double, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varchar_1000), @@ -216,8 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -299,19 +287,19 @@ SET sql_mode = ''; -------------------------------------------------------------------------------- CREATE VIEW v1 AS SELECT my_char_30, id FROM t1_values; SELECT my_char_30, id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL; +WHERE select_id = 193 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL); +WHERE select_id = 193 OR select_id IS NULL) order by id; DROP VIEW v1; CREATE VIEW v1 AS SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values; SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL; +WHERE select_id = 192 OR select_id IS NULL order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -323,7 +311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat(_latin1'A',`t1_values`.`my_char_30`) AS `CONCAT('A',my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL); +WHERE select_id = 192 OR select_id IS NULL) order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -337,13 +325,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL; +WHERE select_id = 191 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varbinary_1000`) AS `LTRIM(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL); +WHERE select_id = 191 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -351,13 +339,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values; SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL; +WHERE select_id = 190 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_binary_30`) AS `LTRIM(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL); +WHERE select_id = 190 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -365,13 +353,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL; +WHERE select_id = 189 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varchar_1000`) AS `LTRIM(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL); +WHERE select_id = 189 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -379,13 +367,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values; SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL; +WHERE select_id = 188 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_char_30`) AS `LTRIM(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL); +WHERE select_id = 188 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -393,13 +381,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL; +WHERE select_id = 187 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varbinary_1000`) AS `LOWER(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL); +WHERE select_id = 187 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -407,13 +395,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values; SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL; +WHERE select_id = 186 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_binary_30`) AS `LOWER(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL); +WHERE select_id = 186 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -421,13 +409,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL; +WHERE select_id = 185 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LOWER(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL); +WHERE select_id = 185 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -435,13 +423,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_char_30), my_char_30, id FROM t1_values; SELECT LOWER(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL; +WHERE select_id = 184 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_char_30`) AS `LOWER(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL); +WHERE select_id = 184 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -449,13 +437,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL; +WHERE select_id = 183 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_decimal`) AS `LOCATE('-', ' - -ABC', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL); +WHERE select_id = 183 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -463,13 +451,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL; +WHERE select_id = 182 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_double`) AS `LOCATE('-', ' - -ABC', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL); +WHERE select_id = 182 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -477,13 +465,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL; +WHERE select_id = 181 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_bigint`) AS `LOCATE('-', ' - -ABC', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL); +WHERE select_id = 181 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -491,13 +479,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL; +WHERE select_id = 180 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varbinary_1000`,3) AS `LOCATE('-', my_varbinary_1000, 3)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL); +WHERE select_id = 180 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -505,13 +493,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values; SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL; +WHERE select_id = 179 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_binary_30`,3) AS `LOCATE('-', my_binary_30, 3)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL); +WHERE select_id = 179 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -519,13 +507,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values; SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL; +WHERE select_id = 178 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varchar_1000`,3) AS `LOCATE('-', my_varchar_1000, 3)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL); +WHERE select_id = 178 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -533,13 +521,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values; SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL; +WHERE select_id = 177 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_char_30`,3) AS `LOCATE('-', my_char_30, 3)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL); +WHERE select_id = 177 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -547,13 +535,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL; +WHERE select_id = 176 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varbinary_1000, my_binary_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL); +WHERE select_id = 176 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -561,13 +549,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL; +WHERE select_id = 175 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varbinary_1000, my_varchar_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL); +WHERE select_id = 175 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -575,13 +563,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL; +WHERE select_id = 174 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varbinary_1000, my_char_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL); +WHERE select_id = 174 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -589,13 +577,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL; +WHERE select_id = 173 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varbinary_1000, my_varbinary_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL); +WHERE select_id = 173 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -603,13 +591,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL; +WHERE select_id = 172 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_binary_30, my_varbinary_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL); +WHERE select_id = 172 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -617,13 +605,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL; +WHERE select_id = 171 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_binary_30, my_varchar_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL); +WHERE select_id = 171 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -631,13 +619,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values; SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL; +WHERE select_id = 170 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_binary_30, my_char_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL); +WHERE select_id = 170 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -645,13 +633,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values; SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL; +WHERE select_id = 169 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_binary_30, my_binary_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL); +WHERE select_id = 169 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -659,13 +647,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL; +WHERE select_id = 168 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varchar_1000, my_varbinary_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL); +WHERE select_id = 168 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -673,13 +661,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL; +WHERE select_id = 167 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varchar_1000, my_binary_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL); +WHERE select_id = 167 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -687,13 +675,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL; +WHERE select_id = 166 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varchar_1000, my_char_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL); +WHERE select_id = 166 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -701,13 +689,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL; +WHERE select_id = 165 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varchar_1000, my_varchar_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL); +WHERE select_id = 165 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -715,13 +703,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL; +WHERE select_id = 164 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_char_30, my_varbinary_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL); +WHERE select_id = 164 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -729,13 +717,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values; SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL; +WHERE select_id = 163 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_char_30, my_binary_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL); +WHERE select_id = 163 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -743,13 +731,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL; +WHERE select_id = 162 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_char_30, my_varchar_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL); +WHERE select_id = 162 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -757,13 +745,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values; SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL; +WHERE select_id = 161 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_char_30, my_char_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL); +WHERE select_id = 161 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -771,13 +759,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL; +WHERE select_id = 160 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varbinary_1000`) AS `LOCATE('char', my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL); +WHERE select_id = 160 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -785,13 +773,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values; SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL; +WHERE select_id = 159 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_binary_30`) AS `LOCATE('char', my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL); +WHERE select_id = 159 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -799,13 +787,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL; +WHERE select_id = 158 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varchar_1000`) AS `LOCATE('char', my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL); +WHERE select_id = 158 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -813,46 +801,50 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values; SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL; +WHERE select_id = 157 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `LOCATE('char', my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL); +WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../log/current_test'), id FROM t1_values; -SELECT LOAD_FILE('../log/current_test'), id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL; -LOAD_FILE('../log/current_test') id -CURRENT_TEST: memory_func_view +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values +WHERE select_id = 156 OR select_id IS NULL order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: memory_func_view +Here is content from load_file 2 -CURRENT_TEST: memory_func_view +Here is content from load_file 3 -CURRENT_TEST: memory_func_view +Here is content from load_file 4 -CURRENT_TEST: memory_func_view +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'../log/current_test') AS `LOAD_FILE('../log/current_test')`,`t1_values`.`id` AS `id` from `t1_values` +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL); -LOAD_FILE('../log/current_test') id -CURRENT_TEST: memory_func_view +WHERE select_id = 156 OR select_id IS NULL) order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: memory_func_view +Here is content from load_file 2 -CURRENT_TEST: memory_func_view +Here is content from load_file 3 -CURRENT_TEST: memory_func_view +Here is content from load_file 4 -CURRENT_TEST: memory_func_view +Here is content from load_file 5 DROP VIEW v1; @@ -861,13 +853,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL; +WHERE select_id = 155 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varbinary_1000`) AS `LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL); +WHERE select_id = 155 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -875,13 +867,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL; +WHERE select_id = 154 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_binary_30`) AS `LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL); +WHERE select_id = 154 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -889,13 +881,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL; +WHERE select_id = 153 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varchar_1000`) AS `LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL); +WHERE select_id = 153 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -903,19 +895,49 @@ CREATE VIEW v1 AS SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL; +WHERE select_id = 152 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_char_30`) AS `LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL); +WHERE select_id = 152 OR select_id IS NULL) order by id; +DROP VIEW v1; + + +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values; SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL; +WHERE select_id = 150 OR select_id IS NULL order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -930,7 +952,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL); +WHERE select_id = 150 OR select_id IS NULL) order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -943,9 +965,33 @@ Error 1292 Truncated incorrect DECIMAL value: '' DROP VIEW v1; +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_bigint`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values; SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL; +WHERE select_id = 148 OR select_id IS NULL order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -957,7 +1003,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varbinary_1000`,2) AS `LEFT(my_varbinary_1000, 2)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL); +WHERE select_id = 148 OR select_id IS NULL) order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -969,19 +1015,19 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values; SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL; +WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL); +WHERE select_id = 147 OR select_id IS NULL) order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 2 @@ -993,7 +1039,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values; SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL; +WHERE select_id = 146 OR select_id IS NULL order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1005,7 +1051,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varchar_1000`,2) AS `LEFT(my_varchar_1000, 2)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL); +WHERE select_id = 146 OR select_id IS NULL) order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1017,7 +1063,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values; SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL; +WHERE select_id = 145 OR select_id IS NULL order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1029,7 +1075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_char_30`,2) AS `LEFT(my_char_30, 2)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL); +WHERE select_id = 145 OR select_id IS NULL) order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1043,13 +1089,13 @@ CREATE VIEW v1 AS SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL; +WHERE select_id = 144 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LCASE(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL); +WHERE select_id = 144 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1057,13 +1103,13 @@ CREATE VIEW v1 AS SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values; SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL; +WHERE select_id = 143 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `INSTR(my_char_30, 'char')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL); +WHERE select_id = 143 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1071,7 +1117,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL; +WHERE select_id = 142 OR select_id IS NULL order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1083,7 +1129,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varbinary_1000`) AS `BIT_LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL); +WHERE select_id = 142 OR select_id IS NULL) order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1097,19 +1143,19 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL; +WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL); +WHERE select_id = 141 OR select_id IS NULL) order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 240 2 @@ -1123,7 +1169,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL; +WHERE select_id = 140 OR select_id IS NULL order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1135,7 +1181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varchar_1000`) AS `BIT_LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL); +WHERE select_id = 140 OR select_id IS NULL) order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1149,7 +1195,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL; +WHERE select_id = 139 OR select_id IS NULL order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1161,7 +1207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_char_30`) AS `BIT_LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL); +WHERE select_id = 139 OR select_id IS NULL) order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1175,7 +1221,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values; SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL; +WHERE select_id = 138 OR select_id IS NULL order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1187,7 +1233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_year`,_latin1'IS_NULL') AS `IFNULL(my_year,'IS_NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL); +WHERE select_id = 138 OR select_id IS NULL) order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1201,7 +1247,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values; SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL; +WHERE select_id = 137 OR select_id IS NULL order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1213,7 +1259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_time`,_latin1'IS_NULL') AS `IFNULL(my_time,'IS_NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL); +WHERE select_id = 137 OR select_id IS NULL) order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1227,7 +1273,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values; SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL; +WHERE select_id = 136 OR select_id IS NULL order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1239,7 +1285,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_timestamp`,_latin1'IS_NULL') AS `IFNULL(my_timestamp,'IS_NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL); +WHERE select_id = 136 OR select_id IS NULL) order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1253,7 +1299,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values; SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL; +WHERE select_id = 135 OR select_id IS NULL order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1265,7 +1311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_date`,_latin1'IS_NULL') AS `IFNULL(my_date,'IS_NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL); +WHERE select_id = 135 OR select_id IS NULL) order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1279,7 +1325,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values; SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL; +WHERE select_id = 134 OR select_id IS NULL order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1291,7 +1337,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_datetime`,_latin1'IS_NULL') AS `IFNULL(my_datetime,'IS_NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL); +WHERE select_id = 134 OR select_id IS NULL) order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1305,7 +1351,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values; SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL; +WHERE select_id = 133 OR select_id IS NULL order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1317,7 +1363,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_double`,_latin1'IS_NULL') AS `IFNULL(my_double,'IS_NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL); +WHERE select_id = 133 OR select_id IS NULL) order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1331,7 +1377,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values; SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL; +WHERE select_id = 132 OR select_id IS NULL order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1343,7 +1389,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_decimal`,_latin1'IS_NULL') AS `IFNULL(my_decimal,'IS_NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL); +WHERE select_id = 132 OR select_id IS NULL) order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1357,7 +1403,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values; SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL; +WHERE select_id = 131 OR select_id IS NULL order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1369,7 +1415,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_bigint`,_latin1'IS_NULL') AS `IFNULL(my_bigint,'IS_NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL); +WHERE select_id = 131 OR select_id IS NULL) order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1383,7 +1429,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values; SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL; +WHERE select_id = 130 OR select_id IS NULL order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1395,7 +1441,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varbinary_1000`,_latin1'IS_NULL') AS `IFNULL(my_varbinary_1000,'IS_NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL); +WHERE select_id = 130 OR select_id IS NULL) order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1409,19 +1455,19 @@ CREATE VIEW v1 AS SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values; SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL; +WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,_latin1'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL); +WHERE select_id = 129 OR select_id IS NULL) order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 2 @@ -1435,7 +1481,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values; SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL; +WHERE select_id = 128 OR select_id IS NULL order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1447,7 +1493,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varchar_1000`,_latin1'IS_NULL') AS `IFNULL(my_varchar_1000,'IS_NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL); +WHERE select_id = 128 OR select_id IS NULL) order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1461,7 +1507,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values; SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL; +WHERE select_id = 127 OR select_id IS NULL order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1473,7 +1519,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_char_30`,_latin1'IS_NULL') AS `IFNULL(my_char_30,'IS_NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL); +WHERE select_id = 127 OR select_id IS NULL) order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1487,7 +1533,7 @@ CREATE VIEW v1 AS SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values; SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL; +WHERE select_id = 126 OR select_id IS NULL order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1501,7 +1547,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL); +WHERE select_id = 126 OR select_id IS NULL) order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1516,7 +1562,7 @@ CREATE VIEW v1 AS SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values; SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL; +WHERE select_id = 125 OR select_id IS NULL order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1530,7 +1576,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL); +WHERE select_id = 125 OR select_id IS NULL) order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1545,7 +1591,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL; +WHERE select_id = 124 OR select_id IS NULL order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1559,7 +1605,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL); +WHERE select_id = 124 OR select_id IS NULL) order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1574,7 +1620,7 @@ CREATE VIEW v1 AS SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values; SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL; +WHERE select_id = 123 OR select_id IS NULL order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1588,7 +1634,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL); +WHERE select_id = 123 OR select_id IS NULL) order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1603,7 +1649,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values; SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL; +WHERE select_id = 122 OR select_id IS NULL order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1617,7 +1663,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL); +WHERE select_id = 122 OR select_id IS NULL) order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1632,7 +1678,7 @@ CREATE VIEW v1 AS SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values; SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL; +WHERE select_id = 121 OR select_id IS NULL order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1646,7 +1692,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL); +WHERE select_id = 121 OR select_id IS NULL) order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1661,7 +1707,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values; SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL; +WHERE select_id = 120 OR select_id IS NULL order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1675,7 +1721,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL); +WHERE select_id = 120 OR select_id IS NULL) order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1690,7 +1736,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values; SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL; +WHERE select_id = 119 OR select_id IS NULL order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1704,7 +1750,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL); +WHERE select_id = 119 OR select_id IS NULL) order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1719,7 +1765,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL; +WHERE select_id = 118 OR select_id IS NULL order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1733,7 +1779,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL); +WHERE select_id = 118 OR select_id IS NULL) order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1748,21 +1794,21 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL; +WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),_latin1'IS NULL',_latin1'IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL); +WHERE select_id = 117 OR select_id IS NULL) order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 @@ -1777,7 +1823,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL; +WHERE select_id = 116 OR select_id IS NULL order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1791,7 +1837,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL); +WHERE select_id = 116 OR select_id IS NULL) order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1806,7 +1852,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values; SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL; +WHERE select_id = 115 OR select_id IS NULL order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1820,7 +1866,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL); +WHERE select_id = 115 OR select_id IS NULL) order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1835,7 +1881,7 @@ CREATE VIEW v1 AS SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values; SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL; +WHERE select_id = 114 OR select_id IS NULL order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1847,7 +1893,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_year`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_year, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL); +WHERE select_id = 114 OR select_id IS NULL) order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1861,7 +1907,7 @@ CREATE VIEW v1 AS SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values; SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL; +WHERE select_id = 113 OR select_id IS NULL order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1873,7 +1919,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_time`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_time, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL); +WHERE select_id = 113 OR select_id IS NULL) order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1887,7 +1933,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL; +WHERE select_id = 112 OR select_id IS NULL order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1899,7 +1945,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_timestamp`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL); +WHERE select_id = 112 OR select_id IS NULL) order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1913,7 +1959,7 @@ CREATE VIEW v1 AS SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values; SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL; +WHERE select_id = 111 OR select_id IS NULL order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1925,7 +1971,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_date`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_date, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL); +WHERE select_id = 111 OR select_id IS NULL) order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1939,7 +1985,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values; SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL; +WHERE select_id = 110 OR select_id IS NULL order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1951,7 +1997,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_datetime`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_datetime, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL); +WHERE select_id = 110 OR select_id IS NULL) order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1965,7 +2011,7 @@ CREATE VIEW v1 AS SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values; SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL; +WHERE select_id = 109 OR select_id IS NULL order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1977,7 +2023,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_double`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_double, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL); +WHERE select_id = 109 OR select_id IS NULL) order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1991,7 +2037,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values; SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL; +WHERE select_id = 108 OR select_id IS NULL order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2003,7 +2049,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_decimal`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_decimal, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL); +WHERE select_id = 108 OR select_id IS NULL) order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2017,7 +2063,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values; SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL; +WHERE select_id = 107 OR select_id IS NULL order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2029,7 +2075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_bigint`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_bigint, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL); +WHERE select_id = 107 OR select_id IS NULL) order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2043,7 +2089,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL; +WHERE select_id = 106 OR select_id IS NULL order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2055,7 +2101,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL); +WHERE select_id = 106 OR select_id IS NULL) order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2069,13 +2115,13 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL; +WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2086,7 +2132,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL); +WHERE select_id = 105 OR select_id IS NULL) order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2105,7 +2151,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL; +WHERE select_id = 104 OR select_id IS NULL order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2117,7 +2163,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL); +WHERE select_id = 104 OR select_id IS NULL) order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2131,7 +2177,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values; SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL; +WHERE select_id = 103 OR select_id IS NULL order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2146,7 +2192,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL); +WHERE select_id = 103 OR select_id IS NULL) order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2159,11 +2205,11 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL; +WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2175,7 +2221,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using koi8r) AS `CONVERT(my_varbinary_1000 USING koi8r)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL); +WHERE select_id = 102 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2185,23 +2231,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL; +WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL); +WHERE select_id = 101 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 2 @@ -2211,11 +2257,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL; +WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2227,7 +2273,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using koi8r) AS `CONVERT(my_varchar_1000 USING koi8r)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL); +WHERE select_id = 100 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2237,11 +2283,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL; +WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2253,7 +2299,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using koi8r) AS `CONVERT(my_char_30 USING koi8r)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL); +WHERE select_id = 99 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2263,11 +2309,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL; +WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2279,7 +2325,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using utf8) AS `CONVERT(my_varbinary_1000 USING utf8)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL); +WHERE select_id = 98 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2289,23 +2335,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL; +WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL); +WHERE select_id = 97 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 2 @@ -2315,11 +2361,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL; +WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2331,7 +2377,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using utf8) AS `CONVERT(my_varchar_1000 USING utf8)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL); +WHERE select_id = 96 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2341,11 +2387,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL; +WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2357,7 +2403,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using utf8) AS `CONVERT(my_char_30 USING utf8)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL); +WHERE select_id = 95 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2371,7 +2417,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL; +WHERE select_id = 94 OR select_id IS NULL order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2383,7 +2429,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as unsigned) AS `CAST(my_year AS UNSIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL); +WHERE select_id = 94 OR select_id IS NULL) order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2397,7 +2443,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL; +WHERE select_id = 93 OR select_id IS NULL order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2409,7 +2455,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as unsigned) AS `CAST(my_time AS UNSIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL); +WHERE select_id = 93 OR select_id IS NULL) order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2423,7 +2469,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL; +WHERE select_id = 92 OR select_id IS NULL order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2435,7 +2481,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as unsigned) AS `CAST(my_timestamp AS UNSIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL); +WHERE select_id = 92 OR select_id IS NULL) order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2449,7 +2495,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL; +WHERE select_id = 91 OR select_id IS NULL order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2461,7 +2507,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as unsigned) AS `CAST(my_date AS UNSIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL); +WHERE select_id = 91 OR select_id IS NULL) order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2475,7 +2521,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL; +WHERE select_id = 90 OR select_id IS NULL order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2487,7 +2533,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as unsigned) AS `CAST(my_datetime AS UNSIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL); +WHERE select_id = 90 OR select_id IS NULL) order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2497,11 +2543,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL) order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL; +WHERE select_id = 88 OR select_id IS NULL order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2517,7 +2595,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL); +WHERE select_id = 88 OR select_id IS NULL) order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2535,7 +2613,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL; +WHERE select_id = 87 OR select_id IS NULL order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2547,7 +2625,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as unsigned) AS `CAST(my_bigint AS UNSIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL); +WHERE select_id = 87 OR select_id IS NULL) order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2561,7 +2639,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL; +WHERE select_id = 86 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2578,7 +2656,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as unsigned) AS `CAST(my_varbinary_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL); +WHERE select_id = 86 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2597,13 +2675,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL; +WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2615,7 +2693,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as unsigned) AS `CAST(my_binary_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL); +WHERE select_id = 85 OR select_id IS NULL) order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2635,7 +2713,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL; +WHERE select_id = 84 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2652,7 +2730,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as unsigned) AS `CAST(my_varchar_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL); +WHERE select_id = 84 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2671,7 +2749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL; +WHERE select_id = 83 OR select_id IS NULL order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2688,7 +2766,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as unsigned) AS `CAST(my_char_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL); +WHERE select_id = 83 OR select_id IS NULL) order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2707,7 +2785,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL; +WHERE select_id = 82 OR select_id IS NULL order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2719,7 +2797,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as signed) AS `CAST(my_year AS SIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL); +WHERE select_id = 82 OR select_id IS NULL) order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2733,7 +2811,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL; +WHERE select_id = 81 OR select_id IS NULL order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2745,7 +2823,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as signed) AS `CAST(my_time AS SIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL); +WHERE select_id = 81 OR select_id IS NULL) order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2759,7 +2837,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL; +WHERE select_id = 80 OR select_id IS NULL order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2771,7 +2849,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as signed) AS `CAST(my_timestamp AS SIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL); +WHERE select_id = 80 OR select_id IS NULL) order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2785,7 +2863,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL; +WHERE select_id = 79 OR select_id IS NULL order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2797,7 +2875,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as signed) AS `CAST(my_date AS SIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL); +WHERE select_id = 79 OR select_id IS NULL) order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2811,7 +2889,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL; +WHERE select_id = 78 OR select_id IS NULL order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2823,7 +2901,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as signed) AS `CAST(my_datetime AS SIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL); +WHERE select_id = 78 OR select_id IS NULL) order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2833,11 +2911,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL) order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL; +WHERE select_id = 76 OR select_id IS NULL order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2852,7 +2962,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL); +WHERE select_id = 76 OR select_id IS NULL) order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2869,7 +2979,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL; +WHERE select_id = 75 OR select_id IS NULL order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2881,7 +2991,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as signed) AS `CAST(my_bigint AS SIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL); +WHERE select_id = 75 OR select_id IS NULL) order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2895,7 +3005,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL; +WHERE select_id = 74 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2911,7 +3021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as signed) AS `CAST(my_varbinary_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL); +WHERE select_id = 74 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2929,13 +3039,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL; +WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2946,7 +3056,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as signed) AS `CAST(my_binary_30 AS SIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL); +WHERE select_id = 73 OR select_id IS NULL) order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2965,7 +3075,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL; +WHERE select_id = 72 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2981,7 +3091,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as signed) AS `CAST(my_varchar_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL); +WHERE select_id = 72 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2999,7 +3109,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL; +WHERE select_id = 71 OR select_id IS NULL order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3015,7 +3125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as signed) AS `CAST(my_char_30 AS SIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL); +WHERE select_id = 71 OR select_id IS NULL) order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3033,7 +3143,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values; SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL; +WHERE select_id = 70 OR select_id IS NULL order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3045,7 +3155,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as decimal(37,2)) AS `CAST(my_year AS DECIMAL(37,2))`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL); +WHERE select_id = 70 OR select_id IS NULL) order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3059,7 +3169,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values; SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL; +WHERE select_id = 69 OR select_id IS NULL order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3071,7 +3181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as decimal(37,2)) AS `CAST(my_time AS DECIMAL(37,2))`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL); +WHERE select_id = 69 OR select_id IS NULL) order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3085,7 +3195,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL; +WHERE select_id = 68 OR select_id IS NULL order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3097,7 +3207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as decimal(37,2)) AS `CAST(my_timestamp AS DECIMAL(37,2))`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL); +WHERE select_id = 68 OR select_id IS NULL) order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3111,7 +3221,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values; SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL; +WHERE select_id = 67 OR select_id IS NULL order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3123,7 +3233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as decimal(37,2)) AS `CAST(my_date AS DECIMAL(37,2))`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL); +WHERE select_id = 67 OR select_id IS NULL) order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3137,7 +3247,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL; +WHERE select_id = 66 OR select_id IS NULL order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3149,7 +3259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as decimal(37,2)) AS `CAST(my_datetime AS DECIMAL(37,2))`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL); +WHERE select_id = 66 OR select_id IS NULL) order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3159,11 +3269,49 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values; +SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL) order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL; +WHERE select_id = 64 OR select_id IS NULL order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3175,7 +3323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as decimal(37,2)) AS `CAST(my_decimal AS DECIMAL(37,2))`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL); +WHERE select_id = 64 OR select_id IS NULL) order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3189,7 +3337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL; +WHERE select_id = 63 OR select_id IS NULL order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3201,7 +3349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as decimal(37,2)) AS `CAST(my_bigint AS DECIMAL(37,2))`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL); +WHERE select_id = 63 OR select_id IS NULL) order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3215,14 +3363,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL; +WHERE select_id = 62 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3232,14 +3380,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL); +WHERE select_id = 62 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3251,14 +3399,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL; +WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 27 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3273,14 +3421,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL); +WHERE select_id = 61 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 27 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3297,14 +3445,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL; +WHERE select_id = 60 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3314,14 +3462,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL); +WHERE select_id = 60 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3333,14 +3481,14 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL; +WHERE select_id = 59 OR select_id IS NULL order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3353,14 +3501,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL); +WHERE select_id = 59 OR select_id IS NULL) order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3375,7 +3523,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS TIME), my_year, id FROM t1_values; SELECT CAST(my_year AS TIME), my_year, id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL; +WHERE select_id = 58 OR select_id IS NULL order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3387,7 +3535,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as time) AS `CAST(my_year AS TIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL); +WHERE select_id = 58 OR select_id IS NULL) order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3401,7 +3549,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS TIME), my_time, id FROM t1_values; SELECT CAST(my_time AS TIME), my_time, id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL; +WHERE select_id = 57 OR select_id IS NULL order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3413,7 +3561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as time) AS `CAST(my_time AS TIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL); +WHERE select_id = 57 OR select_id IS NULL) order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3427,7 +3575,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL; +WHERE select_id = 56 OR select_id IS NULL order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3439,7 +3587,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as time) AS `CAST(my_timestamp AS TIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL); +WHERE select_id = 56 OR select_id IS NULL) order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3453,7 +3601,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS TIME), my_date, id FROM t1_values; SELECT CAST(my_date AS TIME), my_date, id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL; +WHERE select_id = 55 OR select_id IS NULL order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3465,7 +3613,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as time) AS `CAST(my_date AS TIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL); +WHERE select_id = 55 OR select_id IS NULL) order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3479,7 +3627,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL; +WHERE select_id = 54 OR select_id IS NULL order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3491,7 +3639,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as time) AS `CAST(my_datetime AS TIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL); +WHERE select_id = 54 OR select_id IS NULL) order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3501,11 +3649,45 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values; +SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL) order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL; +WHERE select_id = 52 OR select_id IS NULL order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3521,7 +3703,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as time) AS `CAST(my_bigint AS TIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL); +WHERE select_id = 52 OR select_id IS NULL) order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3539,7 +3721,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL; +WHERE select_id = 51 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3556,7 +3738,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as time) AS `CAST(my_varbinary_1000 AS TIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL); +WHERE select_id = 51 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3575,14 +3757,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL; +WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -3594,7 +3776,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as time) AS `CAST(my_binary_30 AS TIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL); +WHERE select_id = 50 OR select_id IS NULL) order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 00:00:00 2 @@ -3615,7 +3797,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL; +WHERE select_id = 49 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3632,7 +3814,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as time) AS `CAST(my_varchar_1000 AS TIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL); +WHERE select_id = 49 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3651,7 +3833,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL; +WHERE select_id = 48 OR select_id IS NULL order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3668,7 +3850,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as time) AS `CAST(my_char_30 AS TIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL); +WHERE select_id = 48 OR select_id IS NULL) order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3687,7 +3869,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values; SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL; +WHERE select_id = 47 OR select_id IS NULL order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3704,7 +3886,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as datetime) AS `CAST(my_year AS DATETIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL); +WHERE select_id = 47 OR select_id IS NULL) order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3723,7 +3905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values; SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL; +WHERE select_id = 46 OR select_id IS NULL order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3738,7 +3920,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as datetime) AS `CAST(my_time AS DATETIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL); +WHERE select_id = 46 OR select_id IS NULL) order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3755,7 +3937,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL; +WHERE select_id = 45 OR select_id IS NULL order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3767,7 +3949,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as datetime) AS `CAST(my_timestamp AS DATETIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL); +WHERE select_id = 45 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3781,7 +3963,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values; SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL; +WHERE select_id = 44 OR select_id IS NULL order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3793,7 +3975,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as datetime) AS `CAST(my_date AS DATETIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL); +WHERE select_id = 44 OR select_id IS NULL) order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3807,7 +3989,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL; +WHERE select_id = 43 OR select_id IS NULL order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3819,7 +4001,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as datetime) AS `CAST(my_datetime AS DATETIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL); +WHERE select_id = 43 OR select_id IS NULL) order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3833,7 +4015,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values; SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL; +WHERE select_id = 42 OR select_id IS NULL order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3852,7 +4034,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as datetime) AS `CAST(my_double AS DATETIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL); +WHERE select_id = 42 OR select_id IS NULL) order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3873,7 +4055,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL; +WHERE select_id = 41 OR select_id IS NULL order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3892,7 +4074,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as datetime) AS `CAST(my_bigint AS DATETIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL); +WHERE select_id = 41 OR select_id IS NULL) order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3913,7 +4095,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL; +WHERE select_id = 40 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3931,7 +4113,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as datetime) AS `CAST(my_varbinary_1000 AS DATETIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL); +WHERE select_id = 40 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3951,14 +4133,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL; +WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -3970,7 +4152,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as datetime) AS `CAST(my_binary_30 AS DATETIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL); +WHERE select_id = 39 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 NULL 2 @@ -3991,7 +4173,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL; +WHERE select_id = 38 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4009,7 +4191,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as datetime) AS `CAST(my_varchar_1000 AS DATETIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL); +WHERE select_id = 38 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4029,7 +4211,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL; +WHERE select_id = 37 OR select_id IS NULL order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4047,7 +4229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as datetime) AS `CAST(my_char_30 AS DATETIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL); +WHERE select_id = 37 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4067,7 +4249,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATE), my_year, id FROM t1_values; SELECT CAST(my_year AS DATE), my_year, id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL; +WHERE select_id = 36 OR select_id IS NULL order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4084,7 +4266,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as date) AS `CAST(my_year AS DATE)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL); +WHERE select_id = 36 OR select_id IS NULL) order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4103,7 +4285,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATE), my_time, id FROM t1_values; SELECT CAST(my_time AS DATE), my_time, id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL; +WHERE select_id = 35 OR select_id IS NULL order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4115,7 +4297,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as date) AS `CAST(my_time AS DATE)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL); +WHERE select_id = 35 OR select_id IS NULL) order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4129,7 +4311,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL; +WHERE select_id = 34 OR select_id IS NULL order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4141,7 +4323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as date) AS `CAST(my_timestamp AS DATE)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL); +WHERE select_id = 34 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4155,7 +4337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATE), my_date, id FROM t1_values; SELECT CAST(my_date AS DATE), my_date, id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL; +WHERE select_id = 33 OR select_id IS NULL order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4167,7 +4349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as date) AS `CAST(my_date AS DATE)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL); +WHERE select_id = 33 OR select_id IS NULL) order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4181,7 +4363,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL; +WHERE select_id = 32 OR select_id IS NULL order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4193,7 +4375,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as date) AS `CAST(my_datetime AS DATE)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL); +WHERE select_id = 32 OR select_id IS NULL) order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4207,7 +4389,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATE), my_double, id FROM t1_values; SELECT CAST(my_double AS DATE), my_double, id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL; +WHERE select_id = 31 OR select_id IS NULL order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4225,7 +4407,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as date) AS `CAST(my_double AS DATE)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL); +WHERE select_id = 31 OR select_id IS NULL) order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4245,7 +4427,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL; +WHERE select_id = 30 OR select_id IS NULL order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4263,7 +4445,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as date) AS `CAST(my_bigint AS DATE)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL); +WHERE select_id = 30 OR select_id IS NULL) order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4283,7 +4465,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL; +WHERE select_id = 29 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4301,7 +4483,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as date) AS `CAST(my_varbinary_1000 AS DATE)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL); +WHERE select_id = 29 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4321,14 +4503,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL; +WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -4340,7 +4522,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as date) AS `CAST(my_binary_30 AS DATE)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL); +WHERE select_id = 28 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 NULL 2 @@ -4361,7 +4543,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL; +WHERE select_id = 27 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4379,7 +4561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as date) AS `CAST(my_varchar_1000 AS DATE)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL); +WHERE select_id = 27 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4399,7 +4581,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL; +WHERE select_id = 26 OR select_id IS NULL order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4417,7 +4599,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as date) AS `CAST(my_char_30 AS DATE)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL); +WHERE select_id = 26 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4437,7 +4619,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values; SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL; +WHERE select_id = 25 OR select_id IS NULL order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4449,7 +4631,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset latin1) AS `CAST(my_year AS CHAR)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL); +WHERE select_id = 25 OR select_id IS NULL) order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4463,7 +4645,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values; SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL; +WHERE select_id = 24 OR select_id IS NULL order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4475,7 +4657,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset latin1) AS `CAST(my_time AS CHAR)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL); +WHERE select_id = 24 OR select_id IS NULL) order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4489,7 +4671,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL; +WHERE select_id = 23 OR select_id IS NULL order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4501,7 +4683,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset latin1) AS `CAST(my_timestamp AS CHAR)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL); +WHERE select_id = 23 OR select_id IS NULL) order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4515,7 +4697,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values; SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL; +WHERE select_id = 22 OR select_id IS NULL order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4527,7 +4709,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset latin1) AS `CAST(my_date AS CHAR)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL); +WHERE select_id = 22 OR select_id IS NULL) order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4541,7 +4723,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL; +WHERE select_id = 21 OR select_id IS NULL order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4553,7 +4735,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset latin1) AS `CAST(my_datetime AS CHAR)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL); +WHERE select_id = 21 OR select_id IS NULL) order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4567,7 +4749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values; SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL; +WHERE select_id = 20 OR select_id IS NULL order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4579,7 +4761,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset latin1) AS `CAST(my_double AS CHAR)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL); +WHERE select_id = 20 OR select_id IS NULL) order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4593,7 +4775,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL; +WHERE select_id = 19 OR select_id IS NULL order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4605,7 +4787,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset latin1) AS `CAST(my_decimal AS CHAR)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL); +WHERE select_id = 19 OR select_id IS NULL) order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4619,7 +4801,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL; +WHERE select_id = 18 OR select_id IS NULL order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4631,7 +4813,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset latin1) AS `CAST(my_bigint AS CHAR)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL); +WHERE select_id = 18 OR select_id IS NULL) order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4645,7 +4827,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL; +WHERE select_id = 17 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4657,7 +4839,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset latin1) AS `CAST(my_varbinary_1000 AS CHAR)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL); +WHERE select_id = 17 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4671,19 +4853,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL; +WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL); +WHERE select_id = 16 OR select_id IS NULL) order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 2 @@ -4697,7 +4879,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL; +WHERE select_id = 15 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4709,7 +4891,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset latin1) AS `CAST(my_varchar_1000 AS CHAR)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL); +WHERE select_id = 15 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4723,7 +4905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL; +WHERE select_id = 14 OR select_id IS NULL order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4735,7 +4917,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset latin1) AS `CAST(my_char_30 AS CHAR)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL); +WHERE select_id = 14 OR select_id IS NULL) order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4749,7 +4931,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values; SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL; +WHERE select_id = 13 OR select_id IS NULL order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4761,7 +4943,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset binary) AS `CAST(my_year AS BINARY)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL); +WHERE select_id = 13 OR select_id IS NULL) order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4775,7 +4957,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values; SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL; +WHERE select_id = 12 OR select_id IS NULL order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4787,7 +4969,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset binary) AS `CAST(my_time AS BINARY)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL); +WHERE select_id = 12 OR select_id IS NULL) order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4801,7 +4983,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL; +WHERE select_id = 11 OR select_id IS NULL order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4813,7 +4995,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset binary) AS `CAST(my_timestamp AS BINARY)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL); +WHERE select_id = 11 OR select_id IS NULL) order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4827,7 +5009,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values; SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL; +WHERE select_id = 10 OR select_id IS NULL order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4839,7 +5021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset binary) AS `CAST(my_date AS BINARY)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL); +WHERE select_id = 10 OR select_id IS NULL) order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4853,7 +5035,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL; +WHERE select_id = 9 OR select_id IS NULL order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4865,7 +5047,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset binary) AS `CAST(my_datetime AS BINARY)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL); +WHERE select_id = 9 OR select_id IS NULL) order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4879,7 +5061,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values; SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL; +WHERE select_id = 8 OR select_id IS NULL order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4891,7 +5073,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset binary) AS `CAST(my_double AS BINARY)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL); +WHERE select_id = 8 OR select_id IS NULL) order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4905,7 +5087,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL; +WHERE select_id = 7 OR select_id IS NULL order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4917,7 +5099,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset binary) AS `CAST(my_decimal AS BINARY)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL); +WHERE select_id = 7 OR select_id IS NULL) order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4931,7 +5113,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL; +WHERE select_id = 6 OR select_id IS NULL order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4943,7 +5125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset binary) AS `CAST(my_bigint AS BINARY)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL); +WHERE select_id = 6 OR select_id IS NULL) order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4957,7 +5139,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL; +WHERE select_id = 5 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4969,7 +5151,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset binary) AS `CAST(my_varbinary_1000 AS BINARY)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL); +WHERE select_id = 5 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4983,19 +5165,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL; +WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL); +WHERE select_id = 4 OR select_id IS NULL) order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 2 @@ -5009,7 +5191,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL; +WHERE select_id = 3 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5021,7 +5203,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset binary) AS `CAST(my_varchar_1000 AS BINARY)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL); +WHERE select_id = 3 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5035,7 +5217,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL; +WHERE select_id = 2 OR select_id IS NULL order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5047,7 +5229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset binary) AS `CAST(my_char_30 AS BINARY)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL); +WHERE select_id = 2 OR select_id IS NULL) order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5059,7 +5241,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT sqrt(my_bigint), my_bigint, id FROM t1_values; SELECT sqrt(my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL; +WHERE select_id = 1 OR select_id IS NULL order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -5073,7 +5255,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sqrt(`t1_values`.`my_bigint`) AS `sqrt(my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL); +WHERE select_id = 1 OR select_id IS NULL) order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result index fd31aa76ab9..6ba95c9fa63 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -164,7 +172,7 @@ declare y integer default 1; set @x = x; set @y = y; set @z = 234; -SELECT f1, f2 into @x, @y from t2 limit 1; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -207,7 +215,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; -SELECT f4, f3 into @x, @y from t2 limit 1; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// CALL sp1(); @@ -695,7 +703,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -794,7 +802,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -902,7 +910,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1082,7 +1090,8 @@ declare f2_value char(20); declare f5_value char(20); declare f4_value integer; declare f6_value integer; -declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1165,7 +1174,7 @@ of a compound statement ends. DROP TABLE IF EXISTS temp1; DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; f1 f2 f4 f5 a` a` -5000 a` aaa aaa -4999 aaa @@ -1185,8 +1194,8 @@ declare newf1 char(20); declare newf2 char(20); declare newf5 char(20); declare newf4 integer; -declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; -declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1268,8 +1277,10 @@ declare i_newf11 char(20); declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; -declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; -declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1300,8 +1311,10 @@ DECLARE o_newf11 CHAR(20); DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; -DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; -DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_03.result b/mysql-test/suite/funcs_1/r/memory_storedproc_03.result index c982691daad..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_06.result b/mysql-test/suite/funcs_1/r/memory_storedproc_06.result index 890498e1966..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_06.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- @@ -79,6 +87,7 @@ BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' +USE db_storedproc_1; root@localhost db_storedproc_1 GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -90,6 +99,7 @@ CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// +USE db_storedproc_1; root@localhost db_storedproc_1 DROP USER 'user_1'@'localhost'; @@ -115,6 +125,7 @@ CREATE FUNCTION fn1(v1 int) returns int BEGIN return v1; END// +USE db_storedproc_1; root@localhost db_storedproc_1 drop user 'user_1'@'localhost'; diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_07.result b/mysql-test/suite/funcs_1/r/memory_storedproc_07.result index 0980ca84a8c..cbe0a18435a 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result index e3f9556a082..40ebc1e51e4 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_10.result b/mysql-test/suite/funcs_1/r/memory_storedproc_10.result index 7f9946218e9..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -78,7 +86,7 @@ connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK); user_1@localhost db_storedproc CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN -SELECT * FROM db_storedproc.t1 LIMIT 1; +SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// CREATE FUNCTION fn31105(n INT) RETURNS INT BEGIN @@ -93,6 +101,8 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +connection default; +USE db_storedproc; root@localhost db_storedproc CALL sp31102(); @@ -112,6 +122,8 @@ a` a` 1000-01-01 -5000 a` -5000 SELECT fn31105( 9 ); fn31105( 9 ) 81 +connection default; +USE db_storedproc; root@localhost db_storedproc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; @@ -129,6 +141,7 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +USE db_storedproc; root@localhost db_storedproc DROP PROCEDURE sp31102; @@ -176,6 +189,8 @@ DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; CREATE PROCEDURE sp_ins_1() @@ -203,49 +218,72 @@ END; SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// +CREATE PROCEDURE sp_del() +BEGIN +DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// +CREATE PROCEDURE sp_with_rowcount() +BEGIN +BEGIN +INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), +('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); +END; +SELECT row_count() AS 'row_count() after insert'; +SELECT row_count() AS 'row_count() after select row_count()'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; +SELECT row_count() AS 'row_count() after update'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +DELETE FROM temp WHERE temp.f1 = 'updated_2'; +SELECT row_count() AS 'row_count() after delete'; +END// CALL sp_ins_1(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 CALL sp_ins_3(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 +abc xyz 1949-05-23 100 uvw 1000 +abc xyz 1989-11-09 100 uvw 1000 +abc xyz 2005-10-24 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 -abc xyz 1949-05-23 100 uvw 1000 -abc xyz 1989-11-09 100 uvw 1000 -abc xyz 2005-10-24 100 uvw 1000 CALL sp_upd(); SELECT row_count(); row_count() 4 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -254,8 +292,6 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 @@ -279,6 +315,8 @@ row_count() 3 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -287,26 +325,73 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +qwe xyz 1998-03-26 100 uvw 1000 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 updated xyz 2005-10-24 100 uvw 1000 updated_2 abc 1989-11-09 100 uvw 1000 -qwe xyz 1998-03-26 100 uvw 1000 updated_2 abc 2000-11-09 100 uvw 1000 updated_2 abc 2005-11-07 100 uvw 1000 +CALL sp_del(); +SELECT row_count(); +row_count() +4 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +a` a` 1000-01-01 -5000 a` -5000 +aaa aaa 1000-01-02 -4999 aaa -4999 +abaa abaa 1000-01-03 -4998 abaa -4998 +acaaa acaaa 1000-01-04 -4997 acaaa -4997 +adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 +aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 +afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 +agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 +updated abc 2005-10-03 100 uvw 1000 +updated xyz 1949-05-23 100 uvw 1000 +updated xyz 1989-11-09 100 uvw 1000 +updated xyz 2005-10-24 100 uvw 1000 +DELETE FROM temp; +CALL sp_with_rowcount(); +row_count() after insert +4 +row_count() after select row_count() +-1 +f1 f2 f3 +qwe abc 1989-11-09 +qwe abc 2000-11-09 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +row_count() after update +2 +f1 f2 f3 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +updated_2 abc 1989-11-09 +updated_2 abc 2000-11-09 +row_count() after delete +2 +SELECT row_count(); +row_count() +-1 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +qwe xyz 1998-03-26 100 uvw 1000 +qwe xyz 2005-11-07 100 uvw 1000 DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/memory_trig_0102.result b/mysql-test/suite/funcs_1/r/memory_trig_0102.result index a9477604425..d926d682d13 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_0102.result @@ -1,90 +1,91 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -97,9 +98,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -107,7 +108,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -135,7 +136,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -188,7 +189,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=memory; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -200,7 +201,7 @@ update t1 set f2='update 3.5.1.7'; select * from t1; f1 f2 f3 NULL update 3.5.1.7 42 -select trigger_name from information_schema.triggers; +select trigger_name from information_schema.triggers order by trigger_name; trigger_name trg5_1 trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -220,7 +221,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -228,11 +229,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = memory; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -256,9 +257,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = memory; create table t2 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -288,15 +289,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -307,7 +308,7 @@ insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; @test_var1 @test_var2 @test_var3 trig1 trig2 trig3 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -317,7 +318,7 @@ trig2 3 select * from trig_db3.t1; f1 f2 trig3 4 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -335,17 +336,17 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = memory; create table trig_db2.t1 (f1 char(50), f2 integer) engine = memory; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table -trig_db1 trig1_b t1 trig_db1 trig1_a t1 +trig_db1 trig1_b t1 trig_db2 trig2 t1 set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03.result b/mysql-test/suite/funcs_1/r/memory_trig_03.result index e5813236213..4fa5a72afd5 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_03.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_03.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -100,7 +101,7 @@ set new.f1 = 'trig 3.5.3.2_1-no'; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no select current_user; @@ -115,15 +116,12 @@ root@localhost use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-yes'); ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - -note: once 15166 is fixed a similar case for SELECT needs to be added ---------------------------------------------------------------------- insert into t1 (f1) values ('insert 3.5.3.2-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -135,7 +133,7 @@ drop trigger trg1_2; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -144,12 +142,12 @@ use priv_db; drop trigger trg1_2; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg1_2; Testcase 3.5.3.7a: @@ -174,23 +172,22 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +create trigger trg4a_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1a'; insert into t1 (f1) values ('insert 3.5.3.7-1a'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg4a_1; use priv_db; select current_user; @@ -201,18 +198,13 @@ Grants for test_yesprivs@localhost GRANT UPDATE, SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' create trigger trg4a_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2a'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a drop trigger trg4a_2; @@ -239,30 +231,29 @@ Grants for test_noprivs@localhost GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4b_1 before UPDATE on t1 for each row +set new.f1 = 'trig 3.5.3.7-1b'; +ERROR 42000: Access denied; you need the SUPER privilege for this operation insert into t1 (f1) values ('insert 3.5.3.7-1b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a insert 3.5.3.7-1b +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a update 3.5.3.7-1b drop trigger trg4b_1; +ERROR HY000: Trigger does not exist show grants; Grants for test_yesprivs@localhost GRANT SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' @@ -270,32 +261,26 @@ GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4b_2 before UPDATE on t1 for each row set new.f1 = 'trig 3.5.3.7-2b'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a -update 3.5.3.7-1b insert 3.5.3.7-2b -update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; -select f1 from t1; -f1 -insert 3.5.3.2-no trig 3.5.3.2_2-yes trig 3.5.3.2_2-yes -insert 3.5.3.6-no -insert 3.5.3.7-1a trig 3.5.3.7-2a update 3.5.3.7-1b +update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; +select f1 from t1 order by f1; +f1 +insert 3.5.3.2-no +insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a trig 3.5.3.7-2b +update 3.5.3.7-1b drop trigger trg4b_2; Testcase 3.5.3.7c @@ -321,21 +306,19 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4c_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1c'; insert into t1 (f1) values ('insert 3.5.3.7-1c'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c +update 3.5.3.7-1b drop trigger trg4c_1; show grants; Grants for test_yesprivs@localhost @@ -344,23 +327,17 @@ GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4c_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2c'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2c'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c +update 3.5.3.7-1b drop trigger trg4c_2; Testcase 3.5.3.7d: @@ -384,23 +361,20 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4d_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1d'; insert into t1 (f1) values ('insert 3.5.3.7-1d'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d +update 3.5.3.7-1b drop trigger trg4d_1; show grants; Grants for test_yesprivs@localhost @@ -409,25 +383,18 @@ GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4d_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2d'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2d'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d trig 3.5.3.7-2d +update 3.5.3.7-1b drop trigger trg4d_2; Testcase 3.5.3.8a: @@ -452,14 +419,14 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5a_1 before INSERT on t1 for each row +set @test_var = new.f1; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; @test_var before trig 3.5.3.8-1a insert into t1 (f1) values ('insert 3.5.3.8-1a'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1a @@ -477,10 +444,6 @@ set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; @test_var before trig 3.5.3.8-2a - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @test_var @@ -511,15 +474,15 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5b_1 before UPDATE on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1b'; insert into t1 (f1) values ('insert 3.5.3.8-1b'); select @test_var; @test_var before trig 3.5.3.8-1b update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1b @@ -536,10 +499,6 @@ insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; @test_var before trig 3.5.3.8-2b - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.* to test_yesprivs@localhost; update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; @test_var @@ -570,11 +529,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5c_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1c @@ -587,10 +546,6 @@ use priv_db; create trigger trg5c_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2c'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; @test_var @@ -620,11 +575,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5d_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1d @@ -637,10 +592,6 @@ use priv_db; create trigger trg5d_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2d'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @test_var @@ -676,10 +627,10 @@ ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); -select f1 from t1; +select f1 from t1 order by f1; f1 4 -select f2 from t2; +select f2 from t2 order by f2; f2 4 use priv_db; @@ -692,11 +643,11 @@ ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 2 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 1 use priv_db; @@ -709,12 +660,12 @@ ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 -2 1 -select f2 from t2; +2 +4 +select f2 from t2 order by f2; f2 1 select @aaa; @@ -730,13 +681,13 @@ ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 +1 +1 2 -1 -1 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_0407.result b/mysql-test/suite/funcs_1/r/memory_trig_0407.result index 14974428ecf..65bb3b91c9e 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_0407.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -82,22 +83,22 @@ Use db_drop; create table t1 (f1 char(30)) engine=memory; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 Trigger 3.5.4.1 drop trigger trg1; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table Insert into t1 values ('Insert no trigger 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 -Trigger 3.5.4.1 Insert no trigger 3.5.4.1 +Trigger 3.5.4.1 drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -121,7 +122,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=memory; create table t1_433a (f1a char (5)) engine=memory; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -142,7 +143,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=memory; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -178,7 +179,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=memory; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -215,7 +216,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -223,7 +224,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -251,7 +252,7 @@ use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); Warnings: Warning 1265 Data truncated for column 'f1' at row 1 -Select * from dbtest_two.t2; +Select * from dbtest_two.t2 order by f1; f1 1st Insert 3.5. 2nd Insert 3.5. @@ -304,9 +305,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -324,9 +325,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -352,9 +353,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -372,9 +373,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -402,9 +403,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -434,12 +435,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_08.result b/mysql-test/suite/funcs_1/r/memory_trig_08.result index a703de751c2..3224df54f4d 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_08.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_08.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -83,17 +84,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=memory; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=memory; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -116,18 +117,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -155,14 +156,22 @@ select @test_var; 3.5.8.4 - single SQL - insert ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row -insert into db_test.t1_i +BEGIN +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); +END// +Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; +f120 f122 f136 f144 f163 +1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000 +select * from db_test.t1_i order by i120; +i120 i136 i144 i163 +1 00222 0000023456 1.050000000000000000000000000000 update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_i; +select * from db_test.t1_i order by i120; i120 i136 i144 i163 1 00222 0000023456 1.050000000000000000000000000000 I 00222 0000023456 1.050000000000000000000000000000 @@ -171,7 +180,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -179,27 +188,27 @@ update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_u; +select * from db_test.t1_u order by u120; u120 u136 u144 u163 a 00111 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 f 00333 0000099999 999.990000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 3.5.8.3/4 - single SQL - delete ------------------------------- drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_d; +select * from db_test.t1_d order by d120; d120 d136 d144 d163 a 00111 0000099999 999.990000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 @@ -208,10 +217,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -239,36 +248,36 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if -d Test 3.5.8.5-if 00010 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00101 three 2nd else D Test 3.5.8.5-if 00102 three 2nd else -d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00103 three 2nd else create trigger trg3 before update on tb3 for each row BEGIN @@ -283,7 +292,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -325,60 +334,60 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -392,40 +401,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -460,33 +469,62 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; Testcase 3.5.8.6: (requirement void) ------------------------------------ +CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// +CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW +BEGIN +CALL sp_01 (); +END// +Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); +update tb3 set f120='S', f136=111, +f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; +select f120, f122 +from tb3 where f122 like 'Test 3.5.8.6%' order by f120; +f120 f122 +S Test 3.5.8.6-tr8_1 +DROP TRIGGER trg8_1; +DROP PROCEDURE sp_01; -Testcase 3.5.8.7: (Disabled as a result of bug _____) ------------------------------------------------------ +Testcase 3.5.8.7 +---------------- +Create trigger trg9_1 before update on tb3 for each row +BEGIN +Start transaction; +Set new.f120='U'; +Commit; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. +Create trigger trg9_2 before delete on tb3 for each row +BEGIN +Start transaction; +Set @var2=old.f120; +Rollback; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. drop user test_general@localhost; drop user test_general; drop user test_super@localhost; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_09.result b/mysql-test/suite/funcs_1/r/memory_trig_09.result index da8b15901d9..b14e0a02aa2 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_09.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_09.result @@ -1,68 +1,69 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -74,15 +75,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 9 9 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -110,17 +111,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -129,13 +130,13 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 delete from tb3 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -166,17 +167,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4%'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -188,15 +189,15 @@ Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; Warnings: Warning 1048 Column 'f136' cannot be null -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4-trig'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -234,6 +235,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result b/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result index 8fc9178f494..5f7859189aa 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -80,7 +81,7 @@ Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 -from tb3 where f122 like 'Test 3.5.10.1/2/3%'; +from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000 NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000 @@ -94,7 +95,7 @@ f121 f122 f151 f163 NULL Not in View 3 111.110000000000000000000000000000 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 @@ -108,7 +109,7 @@ before delete 0 delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 select f121, f122, f151, f163 from vw11; @@ -135,11 +136,11 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 -Select * from tb_load limit 10; +Select * from tb_load order by f1 limit 10; f1 f2 f3 -5000 a` 1000 -4999 aaa 999 @@ -234,7 +235,7 @@ insert into t3 (f1) values (new.f1+1000); create trigger tr2_4 after insert on t2_4 for each row insert into t3 (f1) values (new.f1+10000); insert into t1 values (1); -select * from t3; +select * from t3 order by f1; f1 12 102 @@ -269,17 +270,17 @@ create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); insert into t1 values (1); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. -select * from t1; +select * from t1 order by f1; f1 0 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 -select * from t4; +select * from t4 order by f4; f4 4 drop trigger tr1; @@ -291,8 +292,8 @@ drop table t2; drop table t3; drop table t4; -Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889) ----------------------------------------------------------------------- +Testcase y.y.y.4: Recursive trigger/SP references +------------------------------------------------- set @sql_mode='traditional'; create table t1_sp ( count integer, @@ -380,14 +381,14 @@ start transaction; insert into t1 values (1); ERROR 22003: Out of range value adjusted for column 'f4' at row 1 commit; -select * from t1; +select * from t1 order by f1; f1 1 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 drop trigger tr1; diff --git a/mysql-test/suite/funcs_1/r/memory_views.result b/mysql-test/suite/funcs_1/r/memory_views.result index cc50c8219f0..7bd674b8d76 100644 --- a/mysql-test/suite/funcs_1/r/memory_views.result +++ b/mysql-test/suite/funcs_1/r/memory_views.result @@ -1,117 +1,119 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; USE test; ! Attention: The file with the expected results is not diff --git a/mysql-test/suite/funcs_1/r/myisam_func_view.result b/mysql-test/suite/funcs_1/r/myisam_func_view.result index 94cba9796a2..c2689a36801 100644 --- a/mysql-test/suite/funcs_1/r/myisam_func_view.result +++ b/mysql-test/suite/funcs_1/r/myisam_func_view.result @@ -1,7 +1,3 @@ - -! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables --------------------------------------------------------------------------------- DROP TABLE IF EXISTS t1_selects, t1_modes, t1_values; DROP VIEW IF EXISTS v1; CREATE TABLE t1_values @@ -9,7 +5,7 @@ CREATE TABLE t1_values id BIGINT AUTO_INCREMENT, select_id BIGINT, PRIMARY KEY(id) -) ENGINE = 'MYISAM' ; +) ENGINE = ; ALTER TABLE t1_values ADD my_char_30 CHAR(30); ALTER TABLE t1_values ADD my_varchar_1000 VARCHAR(1000); ALTER TABLE t1_values ADD my_binary_30 BINARY(30); @@ -39,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -54,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -89,6 +85,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 4; INSERT INTO t1_values SET select_id = @select_id, my_bigint = -25; +##### 1.1.1. CAST --> BINARY +##### 1.1.2. CAST --> CHAR +##### 1.1.3. CAST --> DATE INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27'; INSERT INTO t1_values SET select_id = @select_id, @@ -101,6 +100,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 20050627; INSERT INTO t1_values SET select_id = @select_id, my_double = +20.050627E+6; +##### 1.1.4. CAST --> DATETIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -113,6 +113,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 200506271758; INSERT INTO t1_values SET select_id = @select_id, my_double = +0.0200506271758E+13; +##### 1.1.5. CAST --> TIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -123,10 +124,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, my_bigint = 1758; - -some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = +1.758E+3; +##### 1.1.6. CAST --> DECIMAL INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, @@ -135,51 +135,39 @@ INSERT INTO t1_values SET select_id = @select_id, my_binary_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '-3333.3333'; - -some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = -0.33333333E+4; +##### 1.1.7. CAST --> SIGNED INTEGER "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later" --------------------------------------------------------------------------------- - -some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result + Status: To be fixed later" -------------------------------------------------------------------------------- +##### 1.1.8. CAST --> UNSIGNED INTEGER "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809" + The file with expected results suffers from Bug 5913" -------------------------------------------------------------------------------- some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast +Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; - -"Attention: IF(my_year IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails." --------------------------------------------------------------------------------- SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_varchar_1000), @@ -192,22 +180,20 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; - -"Attention: LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, -because there are 32/64 Bit differences --------------------------------------------------------------------------------- +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_double), my_double, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varchar_1000), @@ -216,8 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -299,19 +287,19 @@ SET sql_mode = ''; -------------------------------------------------------------------------------- CREATE VIEW v1 AS SELECT my_char_30, id FROM t1_values; SELECT my_char_30, id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL; +WHERE select_id = 193 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL); +WHERE select_id = 193 OR select_id IS NULL) order by id; DROP VIEW v1; CREATE VIEW v1 AS SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values; SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL; +WHERE select_id = 192 OR select_id IS NULL order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -323,7 +311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat(_latin1'A',`t1_values`.`my_char_30`) AS `CONCAT('A',my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL); +WHERE select_id = 192 OR select_id IS NULL) order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -337,13 +325,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL; +WHERE select_id = 191 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varbinary_1000`) AS `LTRIM(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL); +WHERE select_id = 191 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -351,13 +339,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values; SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL; +WHERE select_id = 190 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_binary_30`) AS `LTRIM(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL); +WHERE select_id = 190 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -365,13 +353,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL; +WHERE select_id = 189 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varchar_1000`) AS `LTRIM(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL); +WHERE select_id = 189 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -379,13 +367,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values; SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL; +WHERE select_id = 188 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_char_30`) AS `LTRIM(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL); +WHERE select_id = 188 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -393,13 +381,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL; +WHERE select_id = 187 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varbinary_1000`) AS `LOWER(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL); +WHERE select_id = 187 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -407,13 +395,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values; SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL; +WHERE select_id = 186 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_binary_30`) AS `LOWER(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL); +WHERE select_id = 186 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -421,13 +409,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL; +WHERE select_id = 185 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LOWER(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL); +WHERE select_id = 185 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -435,13 +423,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_char_30), my_char_30, id FROM t1_values; SELECT LOWER(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL; +WHERE select_id = 184 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_char_30`) AS `LOWER(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL); +WHERE select_id = 184 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -449,13 +437,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL; +WHERE select_id = 183 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_decimal`) AS `LOCATE('-', ' - -ABC', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL); +WHERE select_id = 183 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -463,13 +451,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL; +WHERE select_id = 182 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_double`) AS `LOCATE('-', ' - -ABC', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL); +WHERE select_id = 182 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -477,13 +465,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL; +WHERE select_id = 181 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_bigint`) AS `LOCATE('-', ' - -ABC', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL); +WHERE select_id = 181 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -491,13 +479,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL; +WHERE select_id = 180 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varbinary_1000`,3) AS `LOCATE('-', my_varbinary_1000, 3)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL); +WHERE select_id = 180 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -505,13 +493,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values; SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL; +WHERE select_id = 179 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_binary_30`,3) AS `LOCATE('-', my_binary_30, 3)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL); +WHERE select_id = 179 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -519,13 +507,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values; SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL; +WHERE select_id = 178 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varchar_1000`,3) AS `LOCATE('-', my_varchar_1000, 3)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL); +WHERE select_id = 178 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -533,13 +521,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values; SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL; +WHERE select_id = 177 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_char_30`,3) AS `LOCATE('-', my_char_30, 3)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL); +WHERE select_id = 177 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -547,13 +535,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL; +WHERE select_id = 176 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varbinary_1000, my_binary_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL); +WHERE select_id = 176 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -561,13 +549,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL; +WHERE select_id = 175 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varbinary_1000, my_varchar_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL); +WHERE select_id = 175 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -575,13 +563,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL; +WHERE select_id = 174 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varbinary_1000, my_char_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL); +WHERE select_id = 174 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -589,13 +577,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL; +WHERE select_id = 173 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varbinary_1000, my_varbinary_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL); +WHERE select_id = 173 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -603,13 +591,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL; +WHERE select_id = 172 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_binary_30, my_varbinary_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL); +WHERE select_id = 172 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -617,13 +605,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL; +WHERE select_id = 171 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_binary_30, my_varchar_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL); +WHERE select_id = 171 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -631,13 +619,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values; SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL; +WHERE select_id = 170 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_binary_30, my_char_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL); +WHERE select_id = 170 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -645,13 +633,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values; SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL; +WHERE select_id = 169 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_binary_30, my_binary_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL); +WHERE select_id = 169 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -659,13 +647,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL; +WHERE select_id = 168 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varchar_1000, my_varbinary_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL); +WHERE select_id = 168 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -673,13 +661,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL; +WHERE select_id = 167 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varchar_1000, my_binary_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL); +WHERE select_id = 167 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -687,13 +675,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL; +WHERE select_id = 166 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varchar_1000, my_char_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL); +WHERE select_id = 166 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -701,13 +689,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL; +WHERE select_id = 165 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varchar_1000, my_varchar_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL); +WHERE select_id = 165 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -715,13 +703,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL; +WHERE select_id = 164 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_char_30, my_varbinary_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL); +WHERE select_id = 164 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -729,13 +717,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values; SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL; +WHERE select_id = 163 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_char_30, my_binary_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL); +WHERE select_id = 163 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -743,13 +731,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL; +WHERE select_id = 162 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_char_30, my_varchar_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL); +WHERE select_id = 162 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -757,13 +745,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values; SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL; +WHERE select_id = 161 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_char_30, my_char_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL); +WHERE select_id = 161 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -771,13 +759,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL; +WHERE select_id = 160 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varbinary_1000`) AS `LOCATE('char', my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL); +WHERE select_id = 160 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -785,13 +773,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values; SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL; +WHERE select_id = 159 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_binary_30`) AS `LOCATE('char', my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL); +WHERE select_id = 159 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -799,13 +787,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL; +WHERE select_id = 158 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varchar_1000`) AS `LOCATE('char', my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL); +WHERE select_id = 158 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -813,46 +801,50 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values; SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL; +WHERE select_id = 157 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `LOCATE('char', my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL); +WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../log/current_test'), id FROM t1_values; -SELECT LOAD_FILE('../log/current_test'), id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL; -LOAD_FILE('../log/current_test') id -CURRENT_TEST: myisam_func_view +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values +WHERE select_id = 156 OR select_id IS NULL order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: myisam_func_view +Here is content from load_file 2 -CURRENT_TEST: myisam_func_view +Here is content from load_file 3 -CURRENT_TEST: myisam_func_view +Here is content from load_file 4 -CURRENT_TEST: myisam_func_view +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'../log/current_test') AS `LOAD_FILE('../log/current_test')`,`t1_values`.`id` AS `id` from `t1_values` +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL); -LOAD_FILE('../log/current_test') id -CURRENT_TEST: myisam_func_view +WHERE select_id = 156 OR select_id IS NULL) order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: myisam_func_view +Here is content from load_file 2 -CURRENT_TEST: myisam_func_view +Here is content from load_file 3 -CURRENT_TEST: myisam_func_view +Here is content from load_file 4 -CURRENT_TEST: myisam_func_view +Here is content from load_file 5 DROP VIEW v1; @@ -861,13 +853,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL; +WHERE select_id = 155 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varbinary_1000`) AS `LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL); +WHERE select_id = 155 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -875,13 +867,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL; +WHERE select_id = 154 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_binary_30`) AS `LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL); +WHERE select_id = 154 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -889,13 +881,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL; +WHERE select_id = 153 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varchar_1000`) AS `LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL); +WHERE select_id = 153 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -903,19 +895,49 @@ CREATE VIEW v1 AS SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL; +WHERE select_id = 152 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_char_30`) AS `LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL); +WHERE select_id = 152 OR select_id IS NULL) order by id; +DROP VIEW v1; + + +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values; SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL; +WHERE select_id = 150 OR select_id IS NULL order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -930,7 +952,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL); +WHERE select_id = 150 OR select_id IS NULL) order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -943,9 +965,33 @@ Error 1292 Truncated incorrect DECIMAL value: '' DROP VIEW v1; +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_bigint`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values; SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL; +WHERE select_id = 148 OR select_id IS NULL order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -957,7 +1003,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varbinary_1000`,2) AS `LEFT(my_varbinary_1000, 2)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL); +WHERE select_id = 148 OR select_id IS NULL) order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -969,19 +1015,19 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values; SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL; +WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL); +WHERE select_id = 147 OR select_id IS NULL) order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 2 @@ -993,7 +1039,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values; SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL; +WHERE select_id = 146 OR select_id IS NULL order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1005,7 +1051,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varchar_1000`,2) AS `LEFT(my_varchar_1000, 2)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL); +WHERE select_id = 146 OR select_id IS NULL) order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1017,7 +1063,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values; SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL; +WHERE select_id = 145 OR select_id IS NULL order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1029,7 +1075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_char_30`,2) AS `LEFT(my_char_30, 2)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL); +WHERE select_id = 145 OR select_id IS NULL) order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1043,13 +1089,13 @@ CREATE VIEW v1 AS SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL; +WHERE select_id = 144 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LCASE(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL); +WHERE select_id = 144 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1057,13 +1103,13 @@ CREATE VIEW v1 AS SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values; SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL; +WHERE select_id = 143 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `INSTR(my_char_30, 'char')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL); +WHERE select_id = 143 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1071,7 +1117,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL; +WHERE select_id = 142 OR select_id IS NULL order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1083,7 +1129,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varbinary_1000`) AS `BIT_LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL); +WHERE select_id = 142 OR select_id IS NULL) order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1097,19 +1143,19 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL; +WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL); +WHERE select_id = 141 OR select_id IS NULL) order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 240 2 @@ -1123,7 +1169,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL; +WHERE select_id = 140 OR select_id IS NULL order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1135,7 +1181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varchar_1000`) AS `BIT_LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL); +WHERE select_id = 140 OR select_id IS NULL) order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1149,7 +1195,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL; +WHERE select_id = 139 OR select_id IS NULL order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1161,7 +1207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_char_30`) AS `BIT_LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL); +WHERE select_id = 139 OR select_id IS NULL) order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1175,7 +1221,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values; SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL; +WHERE select_id = 138 OR select_id IS NULL order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1187,7 +1233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_year`,_latin1'IS_NULL') AS `IFNULL(my_year,'IS_NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL); +WHERE select_id = 138 OR select_id IS NULL) order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1201,7 +1247,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values; SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL; +WHERE select_id = 137 OR select_id IS NULL order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1213,7 +1259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_time`,_latin1'IS_NULL') AS `IFNULL(my_time,'IS_NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL); +WHERE select_id = 137 OR select_id IS NULL) order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1227,7 +1273,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values; SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL; +WHERE select_id = 136 OR select_id IS NULL order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1239,7 +1285,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_timestamp`,_latin1'IS_NULL') AS `IFNULL(my_timestamp,'IS_NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL); +WHERE select_id = 136 OR select_id IS NULL) order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1253,7 +1299,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values; SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL; +WHERE select_id = 135 OR select_id IS NULL order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1265,7 +1311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_date`,_latin1'IS_NULL') AS `IFNULL(my_date,'IS_NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL); +WHERE select_id = 135 OR select_id IS NULL) order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1279,7 +1325,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values; SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL; +WHERE select_id = 134 OR select_id IS NULL order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1291,7 +1337,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_datetime`,_latin1'IS_NULL') AS `IFNULL(my_datetime,'IS_NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL); +WHERE select_id = 134 OR select_id IS NULL) order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1305,7 +1351,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values; SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL; +WHERE select_id = 133 OR select_id IS NULL order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1317,7 +1363,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_double`,_latin1'IS_NULL') AS `IFNULL(my_double,'IS_NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL); +WHERE select_id = 133 OR select_id IS NULL) order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1331,7 +1377,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values; SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL; +WHERE select_id = 132 OR select_id IS NULL order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1343,7 +1389,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_decimal`,_latin1'IS_NULL') AS `IFNULL(my_decimal,'IS_NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL); +WHERE select_id = 132 OR select_id IS NULL) order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1357,7 +1403,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values; SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL; +WHERE select_id = 131 OR select_id IS NULL order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1369,7 +1415,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_bigint`,_latin1'IS_NULL') AS `IFNULL(my_bigint,'IS_NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL); +WHERE select_id = 131 OR select_id IS NULL) order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1383,7 +1429,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values; SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL; +WHERE select_id = 130 OR select_id IS NULL order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1395,7 +1441,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varbinary_1000`,_latin1'IS_NULL') AS `IFNULL(my_varbinary_1000,'IS_NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL); +WHERE select_id = 130 OR select_id IS NULL) order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1409,19 +1455,19 @@ CREATE VIEW v1 AS SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values; SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL; +WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,_latin1'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL); +WHERE select_id = 129 OR select_id IS NULL) order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 2 @@ -1435,7 +1481,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values; SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL; +WHERE select_id = 128 OR select_id IS NULL order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1447,7 +1493,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varchar_1000`,_latin1'IS_NULL') AS `IFNULL(my_varchar_1000,'IS_NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL); +WHERE select_id = 128 OR select_id IS NULL) order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1461,7 +1507,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values; SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL; +WHERE select_id = 127 OR select_id IS NULL order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1473,7 +1519,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_char_30`,_latin1'IS_NULL') AS `IFNULL(my_char_30,'IS_NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL); +WHERE select_id = 127 OR select_id IS NULL) order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1487,7 +1533,7 @@ CREATE VIEW v1 AS SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values; SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL; +WHERE select_id = 126 OR select_id IS NULL order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1501,7 +1547,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL); +WHERE select_id = 126 OR select_id IS NULL) order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1516,7 +1562,7 @@ CREATE VIEW v1 AS SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values; SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL; +WHERE select_id = 125 OR select_id IS NULL order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1530,7 +1576,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL); +WHERE select_id = 125 OR select_id IS NULL) order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1545,7 +1591,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL; +WHERE select_id = 124 OR select_id IS NULL order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1559,7 +1605,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL); +WHERE select_id = 124 OR select_id IS NULL) order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1574,7 +1620,7 @@ CREATE VIEW v1 AS SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values; SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL; +WHERE select_id = 123 OR select_id IS NULL order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1588,7 +1634,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL); +WHERE select_id = 123 OR select_id IS NULL) order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1603,7 +1649,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values; SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL; +WHERE select_id = 122 OR select_id IS NULL order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1617,7 +1663,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL); +WHERE select_id = 122 OR select_id IS NULL) order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1632,7 +1678,7 @@ CREATE VIEW v1 AS SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values; SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL; +WHERE select_id = 121 OR select_id IS NULL order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1646,7 +1692,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL); +WHERE select_id = 121 OR select_id IS NULL) order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1661,7 +1707,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values; SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL; +WHERE select_id = 120 OR select_id IS NULL order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1675,7 +1721,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL); +WHERE select_id = 120 OR select_id IS NULL) order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1690,7 +1736,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values; SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL; +WHERE select_id = 119 OR select_id IS NULL order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1704,7 +1750,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL); +WHERE select_id = 119 OR select_id IS NULL) order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1719,7 +1765,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL; +WHERE select_id = 118 OR select_id IS NULL order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1733,7 +1779,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL); +WHERE select_id = 118 OR select_id IS NULL) order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1748,21 +1794,21 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL; +WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),_latin1'IS NULL',_latin1'IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL); +WHERE select_id = 117 OR select_id IS NULL) order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 @@ -1777,7 +1823,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL; +WHERE select_id = 116 OR select_id IS NULL order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1791,7 +1837,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL); +WHERE select_id = 116 OR select_id IS NULL) order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1806,7 +1852,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values; SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL; +WHERE select_id = 115 OR select_id IS NULL order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1820,7 +1866,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL); +WHERE select_id = 115 OR select_id IS NULL) order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1835,7 +1881,7 @@ CREATE VIEW v1 AS SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values; SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL; +WHERE select_id = 114 OR select_id IS NULL order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1847,7 +1893,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_year`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_year, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL); +WHERE select_id = 114 OR select_id IS NULL) order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1861,7 +1907,7 @@ CREATE VIEW v1 AS SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values; SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL; +WHERE select_id = 113 OR select_id IS NULL order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1873,7 +1919,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_time`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_time, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL); +WHERE select_id = 113 OR select_id IS NULL) order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1887,7 +1933,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL; +WHERE select_id = 112 OR select_id IS NULL order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1899,7 +1945,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_timestamp`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL); +WHERE select_id = 112 OR select_id IS NULL) order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1913,7 +1959,7 @@ CREATE VIEW v1 AS SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values; SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL; +WHERE select_id = 111 OR select_id IS NULL order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1925,7 +1971,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_date`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_date, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL); +WHERE select_id = 111 OR select_id IS NULL) order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1939,7 +1985,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values; SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL; +WHERE select_id = 110 OR select_id IS NULL order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1951,7 +1997,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_datetime`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_datetime, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL); +WHERE select_id = 110 OR select_id IS NULL) order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1965,7 +2011,7 @@ CREATE VIEW v1 AS SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values; SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL; +WHERE select_id = 109 OR select_id IS NULL order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1977,7 +2023,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_double`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_double, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL); +WHERE select_id = 109 OR select_id IS NULL) order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1991,7 +2037,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values; SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL; +WHERE select_id = 108 OR select_id IS NULL order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2003,7 +2049,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_decimal`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_decimal, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL); +WHERE select_id = 108 OR select_id IS NULL) order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2017,7 +2063,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values; SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL; +WHERE select_id = 107 OR select_id IS NULL order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2029,7 +2075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_bigint`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_bigint, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL); +WHERE select_id = 107 OR select_id IS NULL) order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2043,7 +2089,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL; +WHERE select_id = 106 OR select_id IS NULL order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2055,7 +2101,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL); +WHERE select_id = 106 OR select_id IS NULL) order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2069,13 +2115,13 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL; +WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2086,7 +2132,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL); +WHERE select_id = 105 OR select_id IS NULL) order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2105,7 +2151,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL; +WHERE select_id = 104 OR select_id IS NULL order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2117,7 +2163,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL); +WHERE select_id = 104 OR select_id IS NULL) order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2131,7 +2177,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values; SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL; +WHERE select_id = 103 OR select_id IS NULL order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2146,7 +2192,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL); +WHERE select_id = 103 OR select_id IS NULL) order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2159,11 +2205,11 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL; +WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2175,7 +2221,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using koi8r) AS `CONVERT(my_varbinary_1000 USING koi8r)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL); +WHERE select_id = 102 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2185,23 +2231,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL; +WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL); +WHERE select_id = 101 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 2 @@ -2211,11 +2257,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL; +WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2227,7 +2273,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using koi8r) AS `CONVERT(my_varchar_1000 USING koi8r)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL); +WHERE select_id = 100 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2237,11 +2283,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL; +WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2253,7 +2299,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using koi8r) AS `CONVERT(my_char_30 USING koi8r)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL); +WHERE select_id = 99 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2263,11 +2309,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL; +WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2279,7 +2325,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using utf8) AS `CONVERT(my_varbinary_1000 USING utf8)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL); +WHERE select_id = 98 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2289,23 +2335,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL; +WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL); +WHERE select_id = 97 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 2 @@ -2315,11 +2361,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL; +WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2331,7 +2377,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using utf8) AS `CONVERT(my_varchar_1000 USING utf8)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL); +WHERE select_id = 96 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2341,11 +2387,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL; +WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2357,7 +2403,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using utf8) AS `CONVERT(my_char_30 USING utf8)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL); +WHERE select_id = 95 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2371,7 +2417,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL; +WHERE select_id = 94 OR select_id IS NULL order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2383,7 +2429,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as unsigned) AS `CAST(my_year AS UNSIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL); +WHERE select_id = 94 OR select_id IS NULL) order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2397,7 +2443,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL; +WHERE select_id = 93 OR select_id IS NULL order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2409,7 +2455,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as unsigned) AS `CAST(my_time AS UNSIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL); +WHERE select_id = 93 OR select_id IS NULL) order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2423,7 +2469,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL; +WHERE select_id = 92 OR select_id IS NULL order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2435,7 +2481,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as unsigned) AS `CAST(my_timestamp AS UNSIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL); +WHERE select_id = 92 OR select_id IS NULL) order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2449,7 +2495,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL; +WHERE select_id = 91 OR select_id IS NULL order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2461,7 +2507,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as unsigned) AS `CAST(my_date AS UNSIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL); +WHERE select_id = 91 OR select_id IS NULL) order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2475,7 +2521,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL; +WHERE select_id = 90 OR select_id IS NULL order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2487,7 +2533,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as unsigned) AS `CAST(my_datetime AS UNSIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL); +WHERE select_id = 90 OR select_id IS NULL) order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2497,11 +2543,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL) order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL; +WHERE select_id = 88 OR select_id IS NULL order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2517,7 +2595,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL); +WHERE select_id = 88 OR select_id IS NULL) order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2535,7 +2613,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL; +WHERE select_id = 87 OR select_id IS NULL order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2547,7 +2625,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as unsigned) AS `CAST(my_bigint AS UNSIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL); +WHERE select_id = 87 OR select_id IS NULL) order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2561,7 +2639,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL; +WHERE select_id = 86 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2578,7 +2656,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as unsigned) AS `CAST(my_varbinary_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL); +WHERE select_id = 86 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2597,13 +2675,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL; +WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2615,7 +2693,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as unsigned) AS `CAST(my_binary_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL); +WHERE select_id = 85 OR select_id IS NULL) order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2635,7 +2713,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL; +WHERE select_id = 84 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2652,7 +2730,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as unsigned) AS `CAST(my_varchar_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL); +WHERE select_id = 84 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2671,7 +2749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL; +WHERE select_id = 83 OR select_id IS NULL order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2688,7 +2766,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as unsigned) AS `CAST(my_char_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL); +WHERE select_id = 83 OR select_id IS NULL) order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2707,7 +2785,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL; +WHERE select_id = 82 OR select_id IS NULL order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2719,7 +2797,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as signed) AS `CAST(my_year AS SIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL); +WHERE select_id = 82 OR select_id IS NULL) order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2733,7 +2811,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL; +WHERE select_id = 81 OR select_id IS NULL order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2745,7 +2823,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as signed) AS `CAST(my_time AS SIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL); +WHERE select_id = 81 OR select_id IS NULL) order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2759,7 +2837,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL; +WHERE select_id = 80 OR select_id IS NULL order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2771,7 +2849,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as signed) AS `CAST(my_timestamp AS SIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL); +WHERE select_id = 80 OR select_id IS NULL) order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2785,7 +2863,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL; +WHERE select_id = 79 OR select_id IS NULL order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2797,7 +2875,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as signed) AS `CAST(my_date AS SIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL); +WHERE select_id = 79 OR select_id IS NULL) order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2811,7 +2889,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL; +WHERE select_id = 78 OR select_id IS NULL order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2823,7 +2901,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as signed) AS `CAST(my_datetime AS SIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL); +WHERE select_id = 78 OR select_id IS NULL) order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2833,11 +2911,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL) order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL; +WHERE select_id = 76 OR select_id IS NULL order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2852,7 +2962,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL); +WHERE select_id = 76 OR select_id IS NULL) order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2869,7 +2979,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL; +WHERE select_id = 75 OR select_id IS NULL order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2881,7 +2991,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as signed) AS `CAST(my_bigint AS SIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL); +WHERE select_id = 75 OR select_id IS NULL) order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2895,7 +3005,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL; +WHERE select_id = 74 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2911,7 +3021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as signed) AS `CAST(my_varbinary_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL); +WHERE select_id = 74 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2929,13 +3039,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL; +WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2946,7 +3056,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as signed) AS `CAST(my_binary_30 AS SIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL); +WHERE select_id = 73 OR select_id IS NULL) order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2965,7 +3075,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL; +WHERE select_id = 72 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2981,7 +3091,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as signed) AS `CAST(my_varchar_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL); +WHERE select_id = 72 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2999,7 +3109,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL; +WHERE select_id = 71 OR select_id IS NULL order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3015,7 +3125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as signed) AS `CAST(my_char_30 AS SIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL); +WHERE select_id = 71 OR select_id IS NULL) order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3033,7 +3143,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values; SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL; +WHERE select_id = 70 OR select_id IS NULL order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3045,7 +3155,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as decimal(37,2)) AS `CAST(my_year AS DECIMAL(37,2))`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL); +WHERE select_id = 70 OR select_id IS NULL) order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3059,7 +3169,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values; SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL; +WHERE select_id = 69 OR select_id IS NULL order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3071,7 +3181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as decimal(37,2)) AS `CAST(my_time AS DECIMAL(37,2))`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL); +WHERE select_id = 69 OR select_id IS NULL) order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3085,7 +3195,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL; +WHERE select_id = 68 OR select_id IS NULL order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3097,7 +3207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as decimal(37,2)) AS `CAST(my_timestamp AS DECIMAL(37,2))`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL); +WHERE select_id = 68 OR select_id IS NULL) order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3111,7 +3221,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values; SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL; +WHERE select_id = 67 OR select_id IS NULL order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3123,7 +3233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as decimal(37,2)) AS `CAST(my_date AS DECIMAL(37,2))`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL); +WHERE select_id = 67 OR select_id IS NULL) order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3137,7 +3247,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL; +WHERE select_id = 66 OR select_id IS NULL order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3149,7 +3259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as decimal(37,2)) AS `CAST(my_datetime AS DECIMAL(37,2))`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL); +WHERE select_id = 66 OR select_id IS NULL) order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3159,11 +3269,49 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values; +SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL) order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL; +WHERE select_id = 64 OR select_id IS NULL order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3175,7 +3323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as decimal(37,2)) AS `CAST(my_decimal AS DECIMAL(37,2))`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL); +WHERE select_id = 64 OR select_id IS NULL) order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3189,7 +3337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL; +WHERE select_id = 63 OR select_id IS NULL order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3201,7 +3349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as decimal(37,2)) AS `CAST(my_bigint AS DECIMAL(37,2))`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL); +WHERE select_id = 63 OR select_id IS NULL) order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3215,14 +3363,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL; +WHERE select_id = 62 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3232,14 +3380,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL); +WHERE select_id = 62 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3251,14 +3399,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL; +WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 27 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3273,14 +3421,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL); +WHERE select_id = 61 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 27 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3297,14 +3445,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL; +WHERE select_id = 60 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3314,14 +3462,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL); +WHERE select_id = 60 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3333,14 +3481,14 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL; +WHERE select_id = 59 OR select_id IS NULL order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3353,14 +3501,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL); +WHERE select_id = 59 OR select_id IS NULL) order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3375,7 +3523,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS TIME), my_year, id FROM t1_values; SELECT CAST(my_year AS TIME), my_year, id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL; +WHERE select_id = 58 OR select_id IS NULL order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3387,7 +3535,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as time) AS `CAST(my_year AS TIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL); +WHERE select_id = 58 OR select_id IS NULL) order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3401,7 +3549,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS TIME), my_time, id FROM t1_values; SELECT CAST(my_time AS TIME), my_time, id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL; +WHERE select_id = 57 OR select_id IS NULL order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3413,7 +3561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as time) AS `CAST(my_time AS TIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL); +WHERE select_id = 57 OR select_id IS NULL) order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3427,7 +3575,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL; +WHERE select_id = 56 OR select_id IS NULL order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3439,7 +3587,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as time) AS `CAST(my_timestamp AS TIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL); +WHERE select_id = 56 OR select_id IS NULL) order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3453,7 +3601,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS TIME), my_date, id FROM t1_values; SELECT CAST(my_date AS TIME), my_date, id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL; +WHERE select_id = 55 OR select_id IS NULL order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3465,7 +3613,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as time) AS `CAST(my_date AS TIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL); +WHERE select_id = 55 OR select_id IS NULL) order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3479,7 +3627,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL; +WHERE select_id = 54 OR select_id IS NULL order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3491,7 +3639,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as time) AS `CAST(my_datetime AS TIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL); +WHERE select_id = 54 OR select_id IS NULL) order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3501,11 +3649,45 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values; +SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL) order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL; +WHERE select_id = 52 OR select_id IS NULL order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3521,7 +3703,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as time) AS `CAST(my_bigint AS TIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL); +WHERE select_id = 52 OR select_id IS NULL) order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3539,7 +3721,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL; +WHERE select_id = 51 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3556,7 +3738,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as time) AS `CAST(my_varbinary_1000 AS TIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL); +WHERE select_id = 51 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3575,14 +3757,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL; +WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -3594,7 +3776,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as time) AS `CAST(my_binary_30 AS TIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL); +WHERE select_id = 50 OR select_id IS NULL) order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 00:00:00 2 @@ -3615,7 +3797,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL; +WHERE select_id = 49 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3632,7 +3814,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as time) AS `CAST(my_varchar_1000 AS TIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL); +WHERE select_id = 49 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3651,7 +3833,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL; +WHERE select_id = 48 OR select_id IS NULL order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3668,7 +3850,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as time) AS `CAST(my_char_30 AS TIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL); +WHERE select_id = 48 OR select_id IS NULL) order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3687,7 +3869,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values; SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL; +WHERE select_id = 47 OR select_id IS NULL order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3704,7 +3886,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as datetime) AS `CAST(my_year AS DATETIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL); +WHERE select_id = 47 OR select_id IS NULL) order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3723,7 +3905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values; SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL; +WHERE select_id = 46 OR select_id IS NULL order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3738,7 +3920,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as datetime) AS `CAST(my_time AS DATETIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL); +WHERE select_id = 46 OR select_id IS NULL) order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3755,7 +3937,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL; +WHERE select_id = 45 OR select_id IS NULL order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3767,7 +3949,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as datetime) AS `CAST(my_timestamp AS DATETIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL); +WHERE select_id = 45 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3781,7 +3963,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values; SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL; +WHERE select_id = 44 OR select_id IS NULL order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3793,7 +3975,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as datetime) AS `CAST(my_date AS DATETIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL); +WHERE select_id = 44 OR select_id IS NULL) order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3807,7 +3989,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL; +WHERE select_id = 43 OR select_id IS NULL order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3819,7 +4001,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as datetime) AS `CAST(my_datetime AS DATETIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL); +WHERE select_id = 43 OR select_id IS NULL) order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3833,7 +4015,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values; SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL; +WHERE select_id = 42 OR select_id IS NULL order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3852,7 +4034,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as datetime) AS `CAST(my_double AS DATETIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL); +WHERE select_id = 42 OR select_id IS NULL) order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3873,7 +4055,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL; +WHERE select_id = 41 OR select_id IS NULL order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3892,7 +4074,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as datetime) AS `CAST(my_bigint AS DATETIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL); +WHERE select_id = 41 OR select_id IS NULL) order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3913,7 +4095,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL; +WHERE select_id = 40 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3931,7 +4113,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as datetime) AS `CAST(my_varbinary_1000 AS DATETIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL); +WHERE select_id = 40 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3951,14 +4133,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL; +WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -3970,7 +4152,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as datetime) AS `CAST(my_binary_30 AS DATETIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL); +WHERE select_id = 39 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 NULL 2 @@ -3991,7 +4173,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL; +WHERE select_id = 38 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4009,7 +4191,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as datetime) AS `CAST(my_varchar_1000 AS DATETIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL); +WHERE select_id = 38 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4029,7 +4211,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL; +WHERE select_id = 37 OR select_id IS NULL order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4047,7 +4229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as datetime) AS `CAST(my_char_30 AS DATETIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL); +WHERE select_id = 37 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4067,7 +4249,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATE), my_year, id FROM t1_values; SELECT CAST(my_year AS DATE), my_year, id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL; +WHERE select_id = 36 OR select_id IS NULL order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4084,7 +4266,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as date) AS `CAST(my_year AS DATE)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL); +WHERE select_id = 36 OR select_id IS NULL) order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4103,7 +4285,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATE), my_time, id FROM t1_values; SELECT CAST(my_time AS DATE), my_time, id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL; +WHERE select_id = 35 OR select_id IS NULL order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4115,7 +4297,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as date) AS `CAST(my_time AS DATE)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL); +WHERE select_id = 35 OR select_id IS NULL) order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4129,7 +4311,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL; +WHERE select_id = 34 OR select_id IS NULL order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4141,7 +4323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as date) AS `CAST(my_timestamp AS DATE)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL); +WHERE select_id = 34 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4155,7 +4337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATE), my_date, id FROM t1_values; SELECT CAST(my_date AS DATE), my_date, id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL; +WHERE select_id = 33 OR select_id IS NULL order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4167,7 +4349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as date) AS `CAST(my_date AS DATE)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL); +WHERE select_id = 33 OR select_id IS NULL) order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4181,7 +4363,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL; +WHERE select_id = 32 OR select_id IS NULL order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4193,7 +4375,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as date) AS `CAST(my_datetime AS DATE)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL); +WHERE select_id = 32 OR select_id IS NULL) order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4207,7 +4389,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATE), my_double, id FROM t1_values; SELECT CAST(my_double AS DATE), my_double, id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL; +WHERE select_id = 31 OR select_id IS NULL order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4225,7 +4407,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as date) AS `CAST(my_double AS DATE)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL); +WHERE select_id = 31 OR select_id IS NULL) order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4245,7 +4427,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL; +WHERE select_id = 30 OR select_id IS NULL order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4263,7 +4445,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as date) AS `CAST(my_bigint AS DATE)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL); +WHERE select_id = 30 OR select_id IS NULL) order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4283,7 +4465,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL; +WHERE select_id = 29 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4301,7 +4483,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as date) AS `CAST(my_varbinary_1000 AS DATE)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL); +WHERE select_id = 29 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4321,14 +4503,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL; +WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -4340,7 +4522,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as date) AS `CAST(my_binary_30 AS DATE)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL); +WHERE select_id = 28 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 NULL 2 @@ -4361,7 +4543,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL; +WHERE select_id = 27 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4379,7 +4561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as date) AS `CAST(my_varchar_1000 AS DATE)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL); +WHERE select_id = 27 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4399,7 +4581,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL; +WHERE select_id = 26 OR select_id IS NULL order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4417,7 +4599,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as date) AS `CAST(my_char_30 AS DATE)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL); +WHERE select_id = 26 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4437,7 +4619,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values; SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL; +WHERE select_id = 25 OR select_id IS NULL order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4449,7 +4631,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset latin1) AS `CAST(my_year AS CHAR)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL); +WHERE select_id = 25 OR select_id IS NULL) order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4463,7 +4645,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values; SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL; +WHERE select_id = 24 OR select_id IS NULL order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4475,7 +4657,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset latin1) AS `CAST(my_time AS CHAR)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL); +WHERE select_id = 24 OR select_id IS NULL) order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4489,7 +4671,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL; +WHERE select_id = 23 OR select_id IS NULL order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4501,7 +4683,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset latin1) AS `CAST(my_timestamp AS CHAR)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL); +WHERE select_id = 23 OR select_id IS NULL) order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4515,7 +4697,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values; SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL; +WHERE select_id = 22 OR select_id IS NULL order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4527,7 +4709,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset latin1) AS `CAST(my_date AS CHAR)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL); +WHERE select_id = 22 OR select_id IS NULL) order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4541,7 +4723,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL; +WHERE select_id = 21 OR select_id IS NULL order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4553,7 +4735,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset latin1) AS `CAST(my_datetime AS CHAR)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL); +WHERE select_id = 21 OR select_id IS NULL) order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4567,7 +4749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values; SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL; +WHERE select_id = 20 OR select_id IS NULL order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4579,7 +4761,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset latin1) AS `CAST(my_double AS CHAR)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL); +WHERE select_id = 20 OR select_id IS NULL) order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4593,7 +4775,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL; +WHERE select_id = 19 OR select_id IS NULL order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4605,7 +4787,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset latin1) AS `CAST(my_decimal AS CHAR)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL); +WHERE select_id = 19 OR select_id IS NULL) order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4619,7 +4801,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL; +WHERE select_id = 18 OR select_id IS NULL order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4631,7 +4813,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset latin1) AS `CAST(my_bigint AS CHAR)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL); +WHERE select_id = 18 OR select_id IS NULL) order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4645,7 +4827,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL; +WHERE select_id = 17 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4657,7 +4839,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset latin1) AS `CAST(my_varbinary_1000 AS CHAR)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL); +WHERE select_id = 17 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4671,19 +4853,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL; +WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL); +WHERE select_id = 16 OR select_id IS NULL) order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 2 @@ -4697,7 +4879,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL; +WHERE select_id = 15 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4709,7 +4891,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset latin1) AS `CAST(my_varchar_1000 AS CHAR)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL); +WHERE select_id = 15 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4723,7 +4905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL; +WHERE select_id = 14 OR select_id IS NULL order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4735,7 +4917,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset latin1) AS `CAST(my_char_30 AS CHAR)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL); +WHERE select_id = 14 OR select_id IS NULL) order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4749,7 +4931,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values; SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL; +WHERE select_id = 13 OR select_id IS NULL order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4761,7 +4943,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset binary) AS `CAST(my_year AS BINARY)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL); +WHERE select_id = 13 OR select_id IS NULL) order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4775,7 +4957,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values; SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL; +WHERE select_id = 12 OR select_id IS NULL order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4787,7 +4969,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset binary) AS `CAST(my_time AS BINARY)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL); +WHERE select_id = 12 OR select_id IS NULL) order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4801,7 +4983,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL; +WHERE select_id = 11 OR select_id IS NULL order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4813,7 +4995,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset binary) AS `CAST(my_timestamp AS BINARY)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL); +WHERE select_id = 11 OR select_id IS NULL) order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4827,7 +5009,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values; SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL; +WHERE select_id = 10 OR select_id IS NULL order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4839,7 +5021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset binary) AS `CAST(my_date AS BINARY)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL); +WHERE select_id = 10 OR select_id IS NULL) order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4853,7 +5035,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL; +WHERE select_id = 9 OR select_id IS NULL order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4865,7 +5047,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset binary) AS `CAST(my_datetime AS BINARY)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL); +WHERE select_id = 9 OR select_id IS NULL) order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4879,7 +5061,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values; SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL; +WHERE select_id = 8 OR select_id IS NULL order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4891,7 +5073,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset binary) AS `CAST(my_double AS BINARY)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL); +WHERE select_id = 8 OR select_id IS NULL) order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4905,7 +5087,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL; +WHERE select_id = 7 OR select_id IS NULL order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4917,7 +5099,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset binary) AS `CAST(my_decimal AS BINARY)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL); +WHERE select_id = 7 OR select_id IS NULL) order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4931,7 +5113,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL; +WHERE select_id = 6 OR select_id IS NULL order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4943,7 +5125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset binary) AS `CAST(my_bigint AS BINARY)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL); +WHERE select_id = 6 OR select_id IS NULL) order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4957,7 +5139,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL; +WHERE select_id = 5 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4969,7 +5151,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset binary) AS `CAST(my_varbinary_1000 AS BINARY)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL); +WHERE select_id = 5 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4983,19 +5165,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL; +WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL); +WHERE select_id = 4 OR select_id IS NULL) order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 2 @@ -5009,7 +5191,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL; +WHERE select_id = 3 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5021,7 +5203,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset binary) AS `CAST(my_varchar_1000 AS BINARY)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL); +WHERE select_id = 3 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5035,7 +5217,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL; +WHERE select_id = 2 OR select_id IS NULL order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5047,7 +5229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset binary) AS `CAST(my_char_30 AS BINARY)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL); +WHERE select_id = 2 OR select_id IS NULL) order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5059,7 +5241,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT sqrt(my_bigint), my_bigint, id FROM t1_values; SELECT sqrt(my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL; +WHERE select_id = 1 OR select_id IS NULL order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -5073,7 +5255,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sqrt(`t1_values`.`my_bigint`) AS `sqrt(my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL); +WHERE select_id = 1 OR select_id IS NULL) order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result index aff27fbabc4..6ba95c9fa63 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -164,7 +172,7 @@ declare y integer default 1; set @x = x; set @y = y; set @z = 234; -SELECT f1, f2 into @x, @y from t2 limit 1; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -207,7 +215,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; -SELECT f4, f3 into @x, @y from t2 limit 1; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// CALL sp1(); @@ -695,7 +703,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -794,7 +802,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -902,7 +910,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1082,7 +1090,8 @@ declare f2_value char(20); declare f5_value char(20); declare f4_value integer; declare f6_value integer; -declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1165,7 +1174,7 @@ of a compound statement ends. DROP TABLE IF EXISTS temp1; DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; f1 f2 f4 f5 a` a` -5000 a` aaa aaa -4999 aaa @@ -1185,8 +1194,8 @@ declare newf1 char(20); declare newf2 char(20); declare newf5 char(20); declare newf4 integer; -declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; -declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1268,8 +1277,10 @@ declare i_newf11 char(20); declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; -declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; -declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1300,8 +1311,10 @@ DECLARE o_newf11 CHAR(20); DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; -DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; -DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result index 0057b7ef229..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result index a85c4347962..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- @@ -79,6 +87,7 @@ BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' +USE db_storedproc_1; root@localhost db_storedproc_1 GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -90,6 +99,7 @@ CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// +USE db_storedproc_1; root@localhost db_storedproc_1 DROP USER 'user_1'@'localhost'; @@ -115,6 +125,7 @@ CREATE FUNCTION fn1(v1 int) returns int BEGIN return v1; END// +USE db_storedproc_1; root@localhost db_storedproc_1 drop user 'user_1'@'localhost'; diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result index 0865d77e4f0..cbe0a18435a 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result index 3e612817200..40ebc1e51e4 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result index b24e222fc4b..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -78,7 +86,7 @@ connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK); user_1@localhost db_storedproc CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN -SELECT * FROM db_storedproc.t1 LIMIT 1; +SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// CREATE FUNCTION fn31105(n INT) RETURNS INT BEGIN @@ -93,6 +101,8 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +connection default; +USE db_storedproc; root@localhost db_storedproc CALL sp31102(); @@ -112,6 +122,8 @@ a` a` 1000-01-01 -5000 a` -5000 SELECT fn31105( 9 ); fn31105( 9 ) 81 +connection default; +USE db_storedproc; root@localhost db_storedproc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; @@ -129,6 +141,7 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +USE db_storedproc; root@localhost db_storedproc DROP PROCEDURE sp31102; @@ -176,6 +189,8 @@ DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; CREATE PROCEDURE sp_ins_1() @@ -203,49 +218,72 @@ END; SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// +CREATE PROCEDURE sp_del() +BEGIN +DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// +CREATE PROCEDURE sp_with_rowcount() +BEGIN +BEGIN +INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), +('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); +END; +SELECT row_count() AS 'row_count() after insert'; +SELECT row_count() AS 'row_count() after select row_count()'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; +SELECT row_count() AS 'row_count() after update'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +DELETE FROM temp WHERE temp.f1 = 'updated_2'; +SELECT row_count() AS 'row_count() after delete'; +END// CALL sp_ins_1(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 CALL sp_ins_3(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 +abc xyz 1949-05-23 100 uvw 1000 +abc xyz 1989-11-09 100 uvw 1000 +abc xyz 2005-10-24 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 -abc xyz 1949-05-23 100 uvw 1000 -abc xyz 1989-11-09 100 uvw 1000 -abc xyz 2005-10-24 100 uvw 1000 CALL sp_upd(); SELECT row_count(); row_count() 4 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -254,8 +292,6 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 @@ -279,6 +315,8 @@ row_count() 3 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -287,26 +325,73 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +qwe xyz 1998-03-26 100 uvw 1000 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 updated xyz 2005-10-24 100 uvw 1000 updated_2 abc 1989-11-09 100 uvw 1000 -qwe xyz 1998-03-26 100 uvw 1000 updated_2 abc 2000-11-09 100 uvw 1000 updated_2 abc 2005-11-07 100 uvw 1000 +CALL sp_del(); +SELECT row_count(); +row_count() +4 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +a` a` 1000-01-01 -5000 a` -5000 +aaa aaa 1000-01-02 -4999 aaa -4999 +abaa abaa 1000-01-03 -4998 abaa -4998 +acaaa acaaa 1000-01-04 -4997 acaaa -4997 +adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 +aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 +afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 +agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 +updated abc 2005-10-03 100 uvw 1000 +updated xyz 1949-05-23 100 uvw 1000 +updated xyz 1989-11-09 100 uvw 1000 +updated xyz 2005-10-24 100 uvw 1000 +DELETE FROM temp; +CALL sp_with_rowcount(); +row_count() after insert +4 +row_count() after select row_count() +-1 +f1 f2 f3 +qwe abc 1989-11-09 +qwe abc 2000-11-09 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +row_count() after update +2 +f1 f2 f3 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +updated_2 abc 1989-11-09 +updated_2 abc 2000-11-09 +row_count() after delete +2 +SELECT row_count(); +row_count() +-1 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +qwe xyz 1998-03-26 100 uvw 1000 +qwe xyz 2005-11-07 100 uvw 1000 DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_0102.result b/mysql-test/suite/funcs_1/r/myisam_trig_0102.result index 08ad956b167..b49fe114791 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_0102.result @@ -1,96 +1,97 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -103,9 +104,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -113,7 +114,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -141,7 +142,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -194,7 +195,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=myisam; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -206,7 +207,7 @@ update t1 set f2='update 3.5.1.7'; select * from t1; f1 f2 f3 NULL update 3.5.1.7 42 -select trigger_name from information_schema.triggers; +select trigger_name from information_schema.triggers order by trigger_name; trigger_name trg5_1 trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -226,7 +227,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -234,11 +235,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = myisam; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -262,9 +263,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = myisam; create table t2 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -294,15 +295,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -313,7 +314,7 @@ insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; @test_var1 @test_var2 @test_var3 trig1 trig2 trig3 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -323,7 +324,7 @@ trig2 3 select * from trig_db3.t1; f1 f2 trig3 4 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -341,17 +342,17 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = myisam; create table trig_db2.t1 (f1 char(50), f2 integer) engine = myisam; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table -trig_db1 trig1_b t1 trig_db1 trig1_a t1 +trig_db1 trig1_b t1 trig_db2 trig2 t1 set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03.result b/mysql-test/suite/funcs_1/r/myisam_trig_03.result index 42e984245e3..ae003721cb4 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_03.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_03.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -106,7 +107,7 @@ set new.f1 = 'trig 3.5.3.2_1-no'; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no select current_user; @@ -121,15 +122,12 @@ root@localhost use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-yes'); ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - -note: once 15166 is fixed a similar case for SELECT needs to be added ---------------------------------------------------------------------- insert into t1 (f1) values ('insert 3.5.3.2-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -141,7 +139,7 @@ drop trigger trg1_2; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -150,12 +148,12 @@ use priv_db; drop trigger trg1_2; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg1_2; Testcase 3.5.3.7a: @@ -180,23 +178,22 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +create trigger trg4a_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1a'; insert into t1 (f1) values ('insert 3.5.3.7-1a'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg4a_1; use priv_db; select current_user; @@ -207,18 +204,13 @@ Grants for test_yesprivs@localhost GRANT UPDATE, SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' create trigger trg4a_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2a'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a drop trigger trg4a_2; @@ -245,30 +237,29 @@ Grants for test_noprivs@localhost GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4b_1 before UPDATE on t1 for each row +set new.f1 = 'trig 3.5.3.7-1b'; +ERROR 42000: Access denied; you need the SUPER privilege for this operation insert into t1 (f1) values ('insert 3.5.3.7-1b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a insert 3.5.3.7-1b +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a update 3.5.3.7-1b drop trigger trg4b_1; +ERROR HY000: Trigger does not exist show grants; Grants for test_yesprivs@localhost GRANT SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' @@ -276,32 +267,26 @@ GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4b_2 before UPDATE on t1 for each row set new.f1 = 'trig 3.5.3.7-2b'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a -update 3.5.3.7-1b insert 3.5.3.7-2b -update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; -select f1 from t1; -f1 -insert 3.5.3.2-no trig 3.5.3.2_2-yes trig 3.5.3.2_2-yes -insert 3.5.3.6-no -insert 3.5.3.7-1a trig 3.5.3.7-2a update 3.5.3.7-1b +update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; +select f1 from t1 order by f1; +f1 +insert 3.5.3.2-no +insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a trig 3.5.3.7-2b +update 3.5.3.7-1b drop trigger trg4b_2; Testcase 3.5.3.7c @@ -327,21 +312,19 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4c_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1c'; insert into t1 (f1) values ('insert 3.5.3.7-1c'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c +update 3.5.3.7-1b drop trigger trg4c_1; show grants; Grants for test_yesprivs@localhost @@ -350,23 +333,17 @@ GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4c_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2c'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2c'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c +update 3.5.3.7-1b drop trigger trg4c_2; Testcase 3.5.3.7d: @@ -390,23 +367,20 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4d_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1d'; insert into t1 (f1) values ('insert 3.5.3.7-1d'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d +update 3.5.3.7-1b drop trigger trg4d_1; show grants; Grants for test_yesprivs@localhost @@ -415,25 +389,18 @@ GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4d_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2d'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2d'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d trig 3.5.3.7-2d +update 3.5.3.7-1b drop trigger trg4d_2; Testcase 3.5.3.8a: @@ -458,14 +425,14 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5a_1 before INSERT on t1 for each row +set @test_var = new.f1; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; @test_var before trig 3.5.3.8-1a insert into t1 (f1) values ('insert 3.5.3.8-1a'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1a @@ -483,10 +450,6 @@ set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; @test_var before trig 3.5.3.8-2a - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @test_var @@ -517,15 +480,15 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5b_1 before UPDATE on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1b'; insert into t1 (f1) values ('insert 3.5.3.8-1b'); select @test_var; @test_var before trig 3.5.3.8-1b update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1b @@ -542,10 +505,6 @@ insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; @test_var before trig 3.5.3.8-2b - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.* to test_yesprivs@localhost; update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; @test_var @@ -576,11 +535,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5c_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1c @@ -593,10 +552,6 @@ use priv_db; create trigger trg5c_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2c'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; @test_var @@ -626,11 +581,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5d_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1d @@ -643,10 +598,6 @@ use priv_db; create trigger trg5d_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2d'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @test_var @@ -682,10 +633,10 @@ ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); -select f1 from t1; +select f1 from t1 order by f1; f1 4 -select f2 from t2; +select f2 from t2 order by f2; f2 4 use priv_db; @@ -698,11 +649,11 @@ ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 2 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 1 use priv_db; @@ -715,12 +666,12 @@ ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 -2 1 -select f2 from t2; +2 +4 +select f2 from t2 order by f2; f2 1 select @aaa; @@ -736,13 +687,13 @@ ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 +1 +1 2 -1 -1 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_0407.result b/mysql-test/suite/funcs_1/r/myisam_trig_0407.result index 4e578888fe5..ade033fa852 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_0407.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -88,22 +89,22 @@ Use db_drop; create table t1 (f1 char(30)) engine=myisam; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 Trigger 3.5.4.1 drop trigger trg1; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table Insert into t1 values ('Insert no trigger 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 -Trigger 3.5.4.1 Insert no trigger 3.5.4.1 +Trigger 3.5.4.1 drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -127,7 +128,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=myisam; create table t1_433a (f1a char (5)) engine=myisam; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -148,7 +149,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=myisam; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -184,7 +185,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=myisam; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -221,7 +222,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -229,7 +230,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -257,7 +258,7 @@ use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); Warnings: Warning 1265 Data truncated for column 'f1' at row 1 -Select * from dbtest_two.t2; +Select * from dbtest_two.t2 order by f1; f1 1st Insert 3.5. 2nd Insert 3.5. @@ -310,9 +311,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -330,9 +331,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -358,9 +359,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -378,9 +379,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -408,9 +409,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -440,12 +441,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_08.result b/mysql-test/suite/funcs_1/r/myisam_trig_08.result index bab8d0f2ddd..dcfa0aa7ddf 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_08.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_08.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,17 +90,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=myisam; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=myisam; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -122,18 +123,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -161,14 +162,22 @@ select @test_var; 3.5.8.4 - single SQL - insert ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row -insert into db_test.t1_i +BEGIN +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); +END// +Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; +f120 f122 f136 f144 f163 +1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000 +select * from db_test.t1_i order by i120; +i120 i136 i144 i163 +1 00222 0000023456 1.050000000000000000000000000000 update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_i; +select * from db_test.t1_i order by i120; i120 i136 i144 i163 1 00222 0000023456 1.050000000000000000000000000000 I 00222 0000023456 1.050000000000000000000000000000 @@ -177,7 +186,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -185,27 +194,27 @@ update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_u; +select * from db_test.t1_u order by u120; u120 u136 u144 u163 a 00111 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 f 00333 0000099999 999.990000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 3.5.8.3/4 - single SQL - delete ------------------------------- drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_d; +select * from db_test.t1_d order by d120; d120 d136 d144 d163 a 00111 0000099999 999.990000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 @@ -214,10 +223,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -245,36 +254,36 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if -d Test 3.5.8.5-if 00010 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00101 three 2nd else D Test 3.5.8.5-if 00102 three 2nd else -d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00103 three 2nd else create trigger trg3 before update on tb3 for each row BEGIN @@ -289,7 +298,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -331,60 +340,60 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -398,40 +407,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -466,33 +475,62 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; Testcase 3.5.8.6: (requirement void) ------------------------------------ +CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// +CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW +BEGIN +CALL sp_01 (); +END// +Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); +update tb3 set f120='S', f136=111, +f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; +select f120, f122 +from tb3 where f122 like 'Test 3.5.8.6%' order by f120; +f120 f122 +S Test 3.5.8.6-tr8_1 +DROP TRIGGER trg8_1; +DROP PROCEDURE sp_01; -Testcase 3.5.8.7: (Disabled as a result of bug _____) ------------------------------------------------------ +Testcase 3.5.8.7 +---------------- +Create trigger trg9_1 before update on tb3 for each row +BEGIN +Start transaction; +Set new.f120='U'; +Commit; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. +Create trigger trg9_2 before delete on tb3 for each row +BEGIN +Start transaction; +Set @var2=old.f120; +Rollback; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. drop user test_general@localhost; drop user test_general; drop user test_super@localhost; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_09.result b/mysql-test/suite/funcs_1/r/myisam_trig_09.result index 7cbcd8a6862..3d89bc6d3c5 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_09.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_09.result @@ -1,74 +1,75 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -80,15 +81,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -116,17 +117,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -135,13 +136,13 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 delete from tb3 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -172,17 +173,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4%'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -194,15 +195,15 @@ Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; Warnings: Warning 1048 Column 'f136' cannot be null -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4-trig'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -240,6 +241,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result b/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result index c991fb67ec1..fe8fdd29446 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -86,7 +87,7 @@ Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 -from tb3 where f122 like 'Test 3.5.10.1/2/3%'; +from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000 NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000 @@ -100,7 +101,7 @@ f121 f122 f151 f163 NULL Not in View 3 111.110000000000000000000000000000 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 @@ -114,7 +115,7 @@ before delete 0 delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 select f121, f122, f151, f163 from vw11; @@ -141,11 +142,11 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 -Select * from tb_load limit 10; +Select * from tb_load order by f1 limit 10; f1 f2 f3 -5000 a` 1000 -4999 aaa 999 @@ -240,7 +241,7 @@ insert into t3 (f1) values (new.f1+1000); create trigger tr2_4 after insert on t2_4 for each row insert into t3 (f1) values (new.f1+10000); insert into t1 values (1); -select * from t3; +select * from t3 order by f1; f1 12 102 @@ -275,17 +276,17 @@ create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); insert into t1 values (1); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. -select * from t1; +select * from t1 order by f1; f1 0 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 -select * from t4; +select * from t4 order by f4; f4 4 drop trigger tr1; @@ -297,8 +298,8 @@ drop table t2; drop table t3; drop table t4; -Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889) ----------------------------------------------------------------------- +Testcase y.y.y.4: Recursive trigger/SP references +------------------------------------------------- set @sql_mode='traditional'; create table t1_sp ( count integer, @@ -386,14 +387,14 @@ start transaction; insert into t1 values (1); ERROR 22003: Out of range value adjusted for column 'f4' at row 1 commit; -select * from t1; +select * from t1 order by f1; f1 1 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 drop trigger tr1; diff --git a/mysql-test/suite/funcs_1/r/myisam_views.result b/mysql-test/suite/funcs_1/r/myisam_views.result index a9c4d4c7f43..bde591c13bf 100644 --- a/mysql-test/suite/funcs_1/r/myisam_views.result +++ b/mysql-test/suite/funcs_1/r/myisam_views.result @@ -1,133 +1,135 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; Attention: The nesting level @max_level in Testcase 3.3.1.A6 diff --git a/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc b/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc index 493c4373d20..bd41f2dcb16 100644 --- a/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc +++ b/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc @@ -1,5 +1,6 @@ -let $message= --source suite/funcs_1/storedproc/cleanup_sp_tb.inc; ---source include/show_msg80.inc +--echo +--echo --source suite/funcs_1/storedproc/cleanup_sp_tb.inc +--echo -------------------------------------------------------------------------------- # called both to cleanup possibly existing data before and after the SP tests diff --git a/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc b/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc index b7f7b2cae02..5224860925c 100644 --- a/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc +++ b/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc @@ -1,11 +1,12 @@ -let $message= --source suite/funcs_1/storedproc/load_sp_tb.inc; ---source include/show_msg80.inc +--echo +--echo --source suite/funcs_1/storedproc/load_sp_tb.inc +--echo -------------------------------------------------------------------------------- # ============================================================================== # -# this load script can be called multiple times inside a test script because it +# This load script can be called multiple times inside a test script because it # first cleans up all objects that will be created. -# therefore the same script is used as it will be used at the end of a test. +# Therefore the same script is used as it will be used at the end of a test. # # ============================================================================== @@ -20,46 +21,84 @@ CREATE DATABASE db_storedproc_1; USE db_storedproc; -eval create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; +--replace_result $engine_type +eval +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t1; -eval create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; +--replace_result $engine_type +eval +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t2; -eval create table t3(f1 char(20),f2 char(20),f3 integer) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; +--replace_result $engine_type +eval +create table t3(f1 char(20),f2 char(20),f3 integer) engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t3.txt' into table t3; -eval create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +--replace_result $engine_type +eval +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -eval create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +--replace_result $engine_type +eval +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -eval create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +--replace_result $engine_type +eval +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' into table t7; -eval create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +--replace_result $engine_type +eval +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' into table t8; -eval create table t9(f1 int, f2 char(25), f3 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; +--replace_result $engine_type +eval +create table t9(f1 int, f2 char(25), f3 int) engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t9.txt' into table t9; -eval create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; +--replace_result $engine_type +eval +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t10; -eval create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +--replace_result $engine_type +eval +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t11; diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc index a8d52fee0b5..0f62a559985 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc @@ -5,85 +5,192 @@ # ============================================================================== # (numbering from requirement document TP v1.0, Last updated: 25 Jan 2005 01:00) # -# 3.1.2 Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: +# 3.1.2 Syntax checks for the stored procedure-specific programming statements +# BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: # #- 1. Ensure that all subclauses that should be supported are supported. -#- 2. Ensure that all subclauses that should not be supported are disallowed with an appropriate error message. -#- 3. Ensure that all supported subclauses are supported only in the correct order. -#- 4. Ensure that an appropriate error message is returned if a subclause is out-of-order in a stored procedure definition. -#- 5. Ensure that all subclauses that are defined to be mandatory are indeed required to be mandatory by the MySQL server and tools. -#- 6. Ensure that any subclauses that are defined to be optional are indeed treated as optional by the MySQL server and tools. -#- 7. Ensure that every BEGIN statement is coupled with a terminating END statement. -## 8. Ensure that the scope of each BEGIN/END compound statement within a stored procedure definition is properly applied. -#- 9. Ensure that the labels enclosing each BEGIN/END compound statement must match. -#- 10. Ensure that it is possible to put a beginning label at the start of a BEGIN/END compound statement without also requiring an ending label at the end of the same statement. -#- 11. Ensure that it is not possible to put an ending label at the end of a BEGIN/END compound statement without also requiring a matching beginning label at the start of the same statement. +#- 2. Ensure that all subclauses that should not be supported are disallowed +# with an appropriate error message. +#- 3. Ensure that all supported subclauses are supported only in the +# correct order. +#- 4. Ensure that an appropriate error message is returned if a subclause is +# out-of-order in a stored procedure definition. +#- 5. Ensure that all subclauses that are defined to be mandatory are indeed +# required to be mandatory by the MySQL server and tools. +#- 6. Ensure that any subclauses that are defined to be optional are indeed +# treated as optional by the MySQL server and tools. +#- 7. Ensure that every BEGIN statement is coupled with a terminating +# END statement. +## 8. Ensure that the scope of each BEGIN/END compound statement within a +# stored procedure definition is properly applied. +#- 9. Ensure that the labels enclosing each BEGIN/END compound statement +# must match. +#- 10. Ensure that it is possible to put a beginning label at the start of +# a BEGIN/END compound statement without also requiring an ending label +# at the end of the same statement. +#- 11. Ensure that it is not possible to put an ending label at the end of +# a BEGIN/END compound statement without also requiring a matching +# beginning label at the start of the same statement. #- 12. Ensure that every beginning label must end with a colon (:). #- 13. Ensure that every beginning label with the same scope must be unique. -#- 14. Ensure that the variables, cursors, conditions, and handlers declared for a stored procedure (with the DECLARE statement) may only be properly defined. -#- 15. Ensure that the variables, cursors, conditions, and handlers declared for a stored procedure (with the DECLARE statement) may only be defined in the correct order. -#- 16. Ensure that every possible type of variable -- utilizing every data type definition supported by the MySQL server in combination with both no DEFAULT subclause and with DEFAULT subclauses that set the variables default value to a range of appropriate values -- may be declared for a stored procedure. -#- 17. Ensure that the DECLARE statement can declare multiple variables both separately and all at once from a variable list. -#- 18. Ensure that invalid variable declarations are rejected, with an appropriate error message. -#- 19. Ensure that every possible type of cursor may be declared for a stored procedure. -#- 20. Ensure that invalid cursor declarations are rejected, with an appropriate error message. -#- 21. Ensure that every possible type of condition may be declared for a stored procedure. -# -22. Ensure that invalid condition declarations are rejected, with an appropriate error message. -#- 23. Ensure that every possible type of handler may be declared for a stored procedure. -#- 24. Ensure that invalid handler declarations are rejected, with an appropriate error message. -#- 25. Ensure that the scope of every variable, cursor, condition, and handler declared for a stored procedure (with the DECLARE statement) is properly applied. -## 26. Ensure that the initial value of every variable declared for a stored procedure is either NULL or its DEFAULT value, as appropriate. -#- 27. Ensure that the SET statement can assign a value to every local variable declared within a stored procedures definition, as well as to every appropriate global server variable. -#- 28. Ensure that the SET statement can assign values to variables either separately or to multiple variables in a list. -#- 29. Ensure that the SET statement may assign only those values to a variable that are appropriate for that variables data type definition. -## 30. Ensure that, when a stored procedure is called/executed, every variable always uses the correct value: either the value with which it is initialized or the value to which it is subsequently SET or otherwise assigned, as appropriate. -## 31. Ensure that the SELECT ... INTO statement properly assigns values to the variables in its variable list. -## 32. Ensure that a SELECT ... INTO statement that retrieves multiple rows is rejected, with an appropriate error message. -## 33. Ensure that a SELECT ... INTO statement that retrieves too many columns for the number of variables in its variable list is rejected, with an appropriate error message. -## 34. Ensure that a SELECT ... INTO statement that retrieves too few columns for the number of variables in its variable list is rejected, with an appropriate error message. -#- 35. Ensure that a SELECT ... INTO statement that retrieves column values with inappropriate data types for the matching variables in its variable list is rejected, with an appropriate error message. -#- 36. Ensure that the DECLARE ... CONDITION FOR statement can declare a properly-named condition for every possible SQLSTATE and MySQL-specific error code. -#- 37. Ensure that no two conditions declared with the same scope may have the same condition name. +#- 14. Ensure that the variables, cursors, conditions, and handlers declared +# for a stored procedure (with the DECLARE statement) may only be +# properly defined. +#- 15. Ensure that the variables, cursors, conditions, and handlers declared for +# a stored procedure (with the DECLARE statement) may only be defined in +# the correct order. +#- 16. Ensure that every possible type of variable -- utilizing every data type +# definition supported by the MySQL server in combination with both no +# DEFAULT subclause and with DEFAULT subclauses that set the variable’s +# default value to a range of appropriate values -- may be declared for +# a stored procedure. +#- 17. Ensure that the DECLARE statement can declare multiple variables both +# separately and all at once from a variable list. +#- 18. Ensure that invalid variable declarations are rejected, with an +# appropriate error message. +#- 19. Ensure that every possible type of cursor may be declared for a +# stored procedure. +#- 20. Ensure that invalid cursor declarations are rejected, with an appropriate +# error message. +#- 21. Ensure that every possible type of condition may be declared for +# a stored procedure. +# -22. Ensure that invalid condition declarations are rejected, with an +# appropriate error message. +#- 23. Ensure that every possible type of handler may be declared for a +# stored procedure. +#- 24. Ensure that invalid handler declarations are rejected, with an +# appropriate error message. +#- 25. Ensure that the scope of every variable, cursor, condition, and handler +# declared for a stored procedure (with the DECLARE statement) is +# properly applied. +## 26. Ensure that the initial value of every variable declared for a stored +# procedure is either NULL or its DEFAULT value, as appropriate. +#- 27. Ensure that the SET statement can assign a value to every local variable +# declared within a stored procedure’s definition, as well as to every +# appropriate global server variable. +#- 28. Ensure that the SET statement can assign values to variables either +# separately or to multiple variables in a list. +#- 29. Ensure that the SET statement may assign only those values to a variable +# that are appropriate for that variable’s data type definition. +## 30. Ensure that, when a stored procedure is called/executed, every variable +# always uses the correct value: either the value with which it is +# initialized or the value to which it is subsequently SET or otherwise +# assigned, as appropriate. +## 31. Ensure that the SELECT ... INTO statement properly assigns values to the +# variables in its variable list. +## 32. Ensure that a SELECT ... INTO statement that retrieves multiple rows is +# rejected, with an appropriate error message. +## 33. Ensure that a SELECT ... INTO statement that retrieves too many columns +# for the number of variables in its variable list is rejected, with an +# appropriate error message. +## 34. Ensure that a SELECT ... INTO statement that retrieves too few columns +# for the number of variables in its variable list is rejected, with an +# appropriate error message. +#- 35. Ensure that a SELECT ... INTO statement that retrieves column values +# with inappropriate data types for the matching variables in its variable +# list is rejected, with an appropriate error message. +#- 36. Ensure that the DECLARE ... CONDITION FOR statement can declare a +# properly-named condition for every possible SQLSTATE and MySQL-specific +# error code. +#- 37. Ensure that no two conditions declared with the same scope may have the +# same condition name. ## 38. Ensure that the scope of every condition declared is properly applied. -#- 39. Ensure that every SQLSTATE value declared with a DECLARE ... CONDITION FOR statement is a character string that is 5 characters long. -#- 40. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a condition for an invalid SQLSTATE. -#- 41. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a condition for the successful completion SQLSTATE: 00000. -#- 42. Ensure that the DECLARE ... HANDLER FOR statement can declare a CONTINUE, EXIT, and UNDO handler for every condition declared (with a DECLARE ... CONDITION FOR statement), within the scope of the handler, for a stored procedure, as well as for every possible SQLSTATE and MySQL-specific error code, as well as for the predefined conditions SQLWARNING, NOT FOUND, and SQLEXCEPTION. -## 43. Ensure that the DECLARE ... HANDLER FOR statement can not declare any handler for a condition declared outside of the scope of the handler. -## 44. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a handler for any invalid, or undeclared, condition. +#- 39. Ensure that every SQLSTATE value declared with a DECLARE ... CONDITION +# FOR statement is a character string that is 5 characters long. +#- 40. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a +# condition for an invalid SQLSTATE. +#- 41. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a +# condition for the “successful completion SQLSTATE: “00000“. +#- 42. Ensure that the DECLARE ... HANDLER FOR statement can declare a CONTINUE, +# EXIT, and UNDO handler for every condition declared (with a DECLARE ... +# CONDITION FOR statement), within the scope of the handler, for a stored +# procedure, as well as for every possible SQLSTATE and MySQL-specific +# error code, as well as for the predefined conditions SQLWARNING, +# NOT FOUND, and SQLEXCEPTION. +## 43. Ensure that the DECLARE ... HANDLER FOR statement can not declare any +# handler for a condition declared outside of the scope of the handler. +## 44. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a +# handler for any invalid, or undeclared, condition. ## 45. Ensure that the scope of every handler declared is properly applied. -#- 46. Ensure that, within the same scope, no two handlers may be declared for the same condition. -#- 47. Ensure that every SQLSTATE value declared with a DECLARE ... HANDLER FOR statement is a character string that is 5 characters long. -#- 48. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a condition for an invalid SQLSTATE. -#- 49. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a condition for the successful completion SQLSTATE: 00000. -## 50. Ensure that a CONTINUE handler allows the execution of the stored procedure to continue once the handler statement has completed its own execution (that is, once the handler action statement has been executed). -## 51. Ensure that an EXIT handler causes the execution of the stored procedure to terminate, within its scope, once the handler action statement has been executed. -## 52. Ensure that an EXIT handler does not cause the execution of the stored procedure to terminate outside of its scope. -#- 53. Ensure that a handler condition of SQLWARNING takes the same action as a handler condition defined with an SQLSTATE that begins with 01. -## 54. Ensure that a handler with a condition defined with an SQLSTATE that begins with 01 is always exactly equivalent in action to a handler with an SQLWARNING condition. -#- 55. Ensure that a handler condition of NOT FOUND takes the same action as a handler condition defined with an SQLSTATE that begins with 02. -## 56. Ensure that a handler with a condition defined with an SQLSTATE that begins with 02 is always exactly equivalent in action to a handler with a NOT FOUND condition. -#- 57. Ensure that a handler condition of SQLEXCEPTION takes the same action as a handler condition defined with an SQLSTATE that begins with anything other that 01 or 02. -## 58. Ensure that a handler with a condition defined with an SQLSTATE that begins with anything other that 01 or 02 is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. +#- 46. Ensure that, within the same scope, no two handlers may be declared for +# the same condition. +#- 47. Ensure that every SQLSTATE value declared with a DECLARE ... HANDLER FOR +# statement is a character string that is 5 characters long. +#- 48. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a +# condition for an invalid SQLSTATE. +#- 49. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a +# condition for the “successful completion SQLSTATE: “00000“. +## 50. Ensure that a CONTINUE handler allows the execution of the stored +# procedure to continue once the handler statement has completed its +# own execution (that is, once the handler action statement has been +# executed). +## 51. Ensure that an EXIT handler causes the execution of the stored procedure +# to terminate, within its scope, once the handler action statement has +# been executed. +## 52. Ensure that an EXIT handler does not cause the execution of the stored +# procedure to terminate outside of its scope. +#- 53. Ensure that a handler condition of SQLWARNING takes the same action as +# a handler condition defined with an SQLSTATE that begins with “01“. +## 54. Ensure that a handler with a condition defined with an SQLSTATE that +# begins with “01“ is always exactly equivalent in action to a +# handler with an SQLWARNING condition. +#- 55. Ensure that a handler condition of NOT FOUND takes the same action as a +# handler condition defined with an SQLSTATE that begins with “02“. +## 56. Ensure that a handler with a condition defined with an SQLSTATE that +# begins with “02“ is always exactly equivalent in action to a +# handler with a NOT FOUND condition. +#- 57. Ensure that a handler condition of SQLEXCEPTION takes the same action +# as a handler condition defined with an SQLSTATE that begins with +# anything other that “01“ or “02“. +## 58. Ensure that a handler with a condition defined with an SQLSTATE that +# begins with anything other that “01“ or “02“ is always +# exactly equivalent in action to a handler with an SQLEXCEPTION condition. #- 59. Ensure that no two cursors in a stored procedure can have the same name. -#- 60. Ensure that a cursor declaration may not include a SELECT ... INTO statement. -#- 61. Ensure that a cursor declaration that includes an ORDER BY clause may not be an updatable cursor. -#- 62. Ensure that OPEN fails unless a cursor with the same name has already been declared. -#- 63. Ensure that OPEN fails if the same cursor is currently already open. -#- 64. Ensure that FETCH fails unless a cursor with the same name is already open. -## 65. Ensure that FETCH returns the first row of the cursors result set the first time FETCH is executed, that it returns each subsequent row of the cursors result set each of the subsequent times FETCH is executed, and that it returns a NOT FOUND warning if it is executed after the last row of the cursors result set has already been fetched. -#- 66. Ensure that FETCH fails with an appropriate error message if it is executed before the cursor has been opened. -#- 67. Ensure that FETCH fails with an appropriate error message if it is executed after the cursor has been closed. -## 68. Ensure that FETCH fails with an appropriate error message if the number of columns to be fetched does not match the number of variables specified by the FETCH statement. -#- 69. Ensure that FETCH fails with an appropriate error message if the data type of the column values being fetched are not appropriate for the matching FETCH variables to which the data is being assigned. -#- 70. Ensure that CLOSE fails unless a cursor with the same name is already open. -#- 71. Ensure that all cursors are closed when a transaction terminates with a COMMIT statement. -#- 72. Ensure that all cursors are closed when a transaction terminates with a ROLLBACK statement. -#- 73. Ensure that the result set of a cursor that has been closed is not longer available to the FETCH statement. -#- 74. Ensure that every cursor declared within a compound statement is closed when that compound statement ends. -## 75. Ensure that, for nested compound statements, a cursor that was declared and opened during an outer level of the statement is not closed when an inner level of a compound statement ends. -## 76. Ensure that all cursors operate asensitively, so that there is no concurrency conflict between cursors operating on the same, or similar, sets of results during execution of one or more stored procedures. -# 77. Ensure that multiple cursors, nested within multiple compound statements within a stored procedure, always act correctly and return the expected result. +#- 60. Ensure that a cursor declaration may not include a SELECT ... INTO +# statement. +#- 61. Ensure that a cursor declaration that includes an ORDER BY clause may +# not be an updatable cursor. +#- 62. Ensure that OPEN fails unless a cursor with the same name +# has already been declared. +#- 63. Ensure that OPEN fails if the same cursor is currently +# already open. +#- 64. Ensure that FETCH fails unless a cursor with the same name +# is already open. +## 65. Ensure that FETCH returns the first row of the cursor’s +# result set the first time FETCH is executed, that it returns each +# subsequent row of the cursor’s result set each of the subsequent +# times FETCH is executed, and that it returns a NOT FOUND warning if it +# is executed after the last row of the cursor’s result set has already +# been fetched. +#- 66. Ensure that FETCH fails with an appropriate error message +# if it is executed before the cursor has been opened. +#- 67. Ensure that FETCH fails with an appropriate error message +# if it is executed after the cursor has been closed. +## 68. Ensure that FETCH fails with an appropriate error message +# if the number of columns to be fetched does not match the number of +# variables specified by the FETCH statement. +#- 69. Ensure that FETCH fails with an appropriate error message +# if the data type of the column values being fetched are not appropriate +# for the matching FETCH variables to which the data is being assigned. +#- 70. Ensure that CLOSE fails unless a cursor with the same name +# is already open. +#- 71. Ensure that all cursors are closed when a transaction terminates with +# a COMMIT statement. +#- 72. Ensure that all cursors are closed when a transaction terminates with +# a ROLLBACK statement. +#- 73. Ensure that the result set of a cursor that has been closed is not +# longer available to the FETCH statement. +#- 74. Ensure that every cursor declared within a compound statement is closed +# when that compound statement ends. +## 75. Ensure that, for nested compound statements, a cursor that was declared +# and opened during an outer level of the statement is not closed when an +# inner level of a compound statement ends. +## 76. Ensure that all cursors operate asensitively, so that there is no +# concurrency conflict between cursors operating on the same, or similar, +# sets of results during execution of one or more stored procedures. +# 77. Ensure that multiple cursors, nested within multiple compound statements +# within a stored procedure, always act correctly and return the +# expected result. # # ============================================================================== let $message= Section 3.1.2 - Syntax checks for the stored procedure-specific @@ -209,7 +316,7 @@ BEGIN set @x = x; set @y = y; set @z = 234; - SELECT f1, f2 into @x, @y from t2 limit 1; + SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -257,7 +364,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; - SELECT f4, f3 into @x, @y from t2 limit 1; + SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// delimiter ;// @@ -290,8 +397,9 @@ BEGIN END// delimiter ;// -#Error: 1172 SQLSTATE: 42000 (ER_TOO_MANY_ROWS) Message: Result consisted of more than one row ---error 1172 +# Error: SQLSTATE: 42000 (ER_TOO_MANY_ROWS) +# Message: Result consisted of more than one row +--error ER_TOO_MANY_ROWS CALL sp1(); # cleanup 3.1.2.32 @@ -321,7 +429,7 @@ BEGIN END// delimiter ;// ---error 1222 +--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT CALL sp1(); # cleanup 3.1.2.33 @@ -352,7 +460,7 @@ BEGIN END// delimiter ;// ---error 1222 +--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT CALL sp1(); # cleanup 3.1.2.34 @@ -375,8 +483,10 @@ create table res_t1(w char unique, x char); insert into res_t1 values('a', 'b'); -# Error: 1339 SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) Message: Case not found for CASE statement -# Error: 1022 SQLSTATE: 23000 (ER_DUP_KEY) Message: Can't write; duplicate key in table '%s' +# Error: SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) +# Message: Case not found for CASE statement +# Error: SQLSTATE: 23000 (ER_DUP_KEY) +# Message: Can't write; duplicate key in table '%s' delimiter //; CREATE PROCEDURE h1 () @@ -472,7 +582,7 @@ create table res_t1(w char unique, x char); insert into res_t1 values ('a', 'b'); delimiter //; ---error 1319 +--error ER_SP_COND_MISMATCH CREATE PROCEDURE h1 () BEGIN declare x1, x2, x3, x4, x5, x6 int default 0; @@ -561,8 +671,9 @@ DROP PROCEDURE IF EXISTS h1; --enable_warnings delimiter //; -#Error: 1319 SQLSTATE: 42000 (ER_SP_COND_MISMATCH) Message: Undefined CONDITION: %s ---error 1319 +# Error: SQLSTATE: 42000 (ER_SP_COND_MISMATCH) +# Message: Undefined CONDITION: %s +--error ER_SP_COND_MISMATCH CREATE PROCEDURE h1 () BEGIN declare x1, x2, x3, x4, x5, x6 int default 0; @@ -582,8 +693,9 @@ BEGIN END; END// -#Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR) Message: %s near '%s' at line %d ---error 1064 +# Error: SQLSTATE: 42000 (ER_PARSE_ERROR) +# Message: %s near '%s' at line %d +--error ER_PARSE_ERROR CREATE PROCEDURE h1 () BEGIN DECLARE x1 INT DEFAULT 0; @@ -593,8 +705,9 @@ BEGIN DECLARE CONTINUE HANDLER FOR condname1 SET x1 = 1; END// -#Error: 1407 SQLSTATE: 42000 (ER_SP_BAD_SQLSTATE) Message: Bad SQLSTATE: '%s' ---error 1407 +# Error: SQLSTATE: 42000 (ER_SP_BAD_SQLSTATE) +# Message: Bad SQLSTATE: '%s' +--error ER_SP_BAD_SQLSTATE CREATE PROCEDURE h1 () BEGIN DECLARE x1 INT DEFAULT 0; @@ -632,7 +745,7 @@ drop table IF EXISTS res_t1; --echo ==> 'UNDO' is still not supported. delimiter //; ---error 1064 +--error ER_PARSE_ERROR create procedure p1undo () begin declare undo handler for sqlexception select '1'; @@ -723,7 +836,7 @@ DROP TABLE res_t1; let $message= Testcase 3.1.2.50:; --source include/show_msg.inc -# testcase: ensure that a continue handler allows the execution of the stored procedure +# Testcase: Ensure that a continue handler allows the execution of the stored procedure # to continue once the handler statement has completed its own execution # (that is, once the handler action statement has been executed). @@ -794,8 +907,9 @@ BEGIN END// delimiter ;// -# Error: 1318 SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) Message: Incorrect number of arguments for %s %s; expected %u, got %u ---error 1318 +# Error: SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) +# Message: Incorrect number of arguments for %s %s; expected %u, got %u +--error ER_SP_WRONG_NO_OF_ARGS CALL sp1(1); CALL sp2(); SELECT '-3-', @x2, @x; @@ -858,7 +972,7 @@ let $message= Testcase 3.1.2.54:; --source include/show_msg.inc let $message= Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition.; --source include/show_msg80.inc @@ -959,7 +1073,7 @@ let $message= Testcase 3.1.2.56:; --source include/show_msg.inc let $message= Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition.; --source include/show_msg80.inc @@ -1052,7 +1166,7 @@ BEGIN END// delimiter ;// ---error 1329 +--error ER_SP_FETCH_NO_DATA CALL sp0(); SELECT @done, @x; @@ -1081,13 +1195,16 @@ let $message= Testcase 3.1.2.58:; --source include/show_msg.inc let $message= Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition.; --source include/show_msg80.inc -# Error: 1339 SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) Message: Case not found for CASE statement -# Error: 1222 SQLSTATE: 21000 (ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT) Message: The used SELECT statements have a different number of columns -# Error: 1326 SQLSTATE: 24000 (ER_SP_CURSOR_NOT_OPEN) Message: Cursor is not open +# Error: SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) +# Message: Case not found for CASE statement +# Error: SQLSTATE: 21000 (ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT) +# Message: The used SELECT statements have a different number of columns +# Error: SQLSTATE: 24000 (ER_SP_CURSOR_NOT_OPEN) +# Message: Cursor is not open --disable_warnings DROP PROCEDURE IF EXISTS sp0; @@ -1271,7 +1388,8 @@ BEGIN declare f5_value char(20); declare f4_value integer; declare f6_value integer; - declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; + declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 + where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1282,7 +1400,7 @@ BEGIN END// delimiter ;// ---error 1329 +--error ER_SP_FETCH_NO_DATA CALL sp1(); SELECT * FROM temp; @@ -1338,11 +1456,11 @@ END// delimiter ;// --echo --> not enough columns in FETCH statement ---error 1328 +--error ER_SP_WRONG_NO_OF_FETCH_ARGS CALL sp1(); --echo --> too many columns in FETCH statement ---error 1328 +--error ER_SP_WRONG_NO_OF_FETCH_ARGS CALL sp2(); # cleanup 3.1.2.68 @@ -1366,9 +1484,10 @@ DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -#Error: 1329 SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA) Message: No data to FETCH +# Error: SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA) +# Message: No data to FETCH -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; delimiter //; CREATE PROCEDURE sp1( ) @@ -1379,8 +1498,8 @@ BEGIN declare newf2 char(20); declare newf5 char(20); declare newf4 integer; - declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; - declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; + declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; + declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1453,8 +1572,10 @@ BEGIN declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; - declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; - declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; + declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 + where f4>=-5000 order by f4 limit 4; + declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 + where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1486,8 +1607,10 @@ BEGIN DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; - DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; - DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; + DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 + WHERE f4>=-5000 ORDER BY f4 LIMIT 5; + DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 + WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; @@ -1526,6 +1649,7 @@ DROP TABLE temp2; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc index 9ffa7d7f66c..01810390a92 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc @@ -5,38 +5,67 @@ # ============================================================================== # (numbering from requirement document TP v1.0, Last updated: 25 Jan 2005 01:00) # -# 3.1.3 Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: +# 3.1.3 Syntax checks for the stored procedure-specific flow control statements +# IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: # #- 1. Ensure that all subclauses that should be supported are supported. -#- 2. Ensure that all subclauses that should not be supported are disallowed with an appropriate error message. -#- 3. Ensure that all supported subclauses are supported only in the correct order. -#- 4. Ensure that an appropriate error message is returned if a subclause is out-of-order in a stored procedure definition. -#- 5. Ensure that all subclauses that are defined to be mandatory are indeed required to be mandatory by the MySQL server and tools. -#- 6. Ensure that any subclauses that are defined to be optional are indeed treated as optional by the MySQL server and tools. -## 7. Ensure that the IF statement acts correctly for all variants, including cases where statements are nested. -## 8. Ensure that the CASE statement acts correctly for all variants, including cases where statements are nested. -## 9. Ensure that the LOOP statement acts correctly for all variants, including cases where statements are nested. +#- 2. Ensure that all subclauses that should not be supported are disallowed +# with an appropriate error message. +#- 3. Ensure that all supported subclauses are supported only in the +# correct order. +#- 4. Ensure that an appropriate error message is returned if a subclause is +# out-of-order in a stored procedure definition. +#- 5. Ensure that all subclauses that are defined to be mandatory are indeed +# required to be mandatory by the MySQL server and tools. +#- 6. Ensure that any subclauses that are defined to be optional are indeed +# treated as optional by the MySQL server and tools. +## 7. Ensure that the IF statement acts correctly for all variants, including +# cases where statements are nested. +## 8. Ensure that the CASE statement acts correctly for all variants, +# including cases where statements are nested. +## 9. Ensure that the LOOP statement acts correctly for all variants, +# including cases where statements are nested. #- 10. Ensure that the labels enclosing each LOOP statement must match. -#- 11. Ensure that it is possible to put a beginning label at the start of a LOOP statement without also requiring an ending label at the end of the same statement. -#- 12. Ensure that it is not possible to put an ending label at the end of a LOOP statement without also requiring a matching beginning label at the start of the same statement. +#- 11. Ensure that it is possible to put a beginning label at the start of +# a LOOP statement without also requiring an ending label at the end of +# the same statement. +#- 12. Ensure that it is not possible to put an ending label at the end of +# a LOOP statement without also requiring a matching beginning label +# at the start of the same statement. #- 13. Ensure that every beginning label must end with a colon (:). #- 14. Ensure that every beginning label with the same scope must be unique. -## 15. Ensure that the LEAVE statement acts correctly for all variants, including cases where statements are nested. -## 16. Ensure that the ITERATE statement acts correctly for all variants, including cases where statements are nested. -#- 17. Ensure that the ITERATE statement fails, with an appropriate error message, if it appears in any context other than within LOOP, REPEAT, or WHILE statements. -## 18. Ensure that the REPEAT statement acts correctly for all variants, including cases where statements are nested. +## 15. Ensure that the LEAVE statement acts correctly for all variants, +# including cases where statements are nested. +## 16. Ensure that the ITERATE statement acts correctly for all variants, +# including cases where statements are nested. +#- 17. Ensure that the ITERATE statement fails, with an appropriate error +# message, if it appears in any context other than within LOOP, REPEAT, +# or WHILE statements. +## 18. Ensure that the REPEAT statement acts correctly for all variants, +# including cases where statements are nested. #- 19. Ensure that the labels enclosing each REPEAT statement must match. -#- 20. Ensure that it is possible to put a beginning label at the start of a REPEAT statement without also requiring an ending label at the end of the same statement. -#- 21. Ensure that it is not possible to put an ending label at the end of a REPEAT statement without also requiring a matching beginning label at the start of the same statement. +#- 20. Ensure that it is possible to put a beginning label at the start of +# a REPEAT statement without also requiring an ending label at the end +# of the same statement. +#- 21. Ensure that it is not possible to put an ending label at the end of +# a REPEAT statement without also requiring a matching beginning label +# at the start of the same statement. #- 22. Ensure that every beginning label must end with a colon (:). #- 23. Ensure that every beginning label with the same scope must be unique. -## 24. Ensure that the WHILE statement acts correctly for all variants, including cases where statements are nested. +## 24. Ensure that the WHILE statement acts correctly for all variants, +# including cases where statements are nested. #- 25. Ensure that the labels enclosing each WHILE statement must match. -#- 26. Ensure that it is possible to put a beginning label at the start of a WHILE statement without also requiring an ending label at the end of the same statement. -#- 27. Ensure that it is not possible to put an ending label at the end of a WHILE statement without also requiring a matching beginning label at the start of the same statement. +#- 26. Ensure that it is possible to put a beginning label at the start of +# a WHILE statement without also requiring an ending label at the end +# of the same statement. +#- 27. Ensure that it is not possible to put an ending label at the end of +# a WHILE statement without also requiring a matching beginning label +# at the start of the same statement. #- 28. Ensure that every beginning label must end with a colon (:). #- 29. Ensure that every beginning label with the same scope must be unique. -## 30. Ensure that multiple cases of all possible combinations of the control flow statements, nested within multiple compound statements within a stored procedure, always act correctly and return the expected result. +## 30. Ensure that multiple cases of all possible combinations of the control +# flow statements, nested within multiple compound statements within +# a stored procedure, always act correctly and return the expected result. # # ============================================================================== let $message= Section 3.1.3 - Syntax checks for the stored procedure-specific flow @@ -237,8 +266,9 @@ DROP PROCEDURE IF EXISTS sp31316; delimiter //; # wrong label at iterate -#Error: 1308 SQLSTATE: 42000 (ER_SP_LILABEL_MISMATCH) Message: %s with no matching label: %s ---error 1308 +# Error: SQLSTATE: 42000 (ER_SP_LILABEL_MISMATCH) +# Message: %s with no matching label: %s +--error ER_SP_LILABEL_MISMATCH CREATE PROCEDURE sp31316( ) BEGIN declare count1 integer default 1; @@ -436,8 +466,9 @@ BEGIN END// delimiter ;// -#Error: 1318 SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) Message: Incorrect number of arguments for %s %s; expected %u, got %u ---error 1318 +# Error: SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) +# Message: Incorrect number of arguments for %s %s; expected %u, got %u +--error ER_SP_WRONG_NO_OF_ARGS CALL sp31330(); CALL sp31330(1); @@ -459,6 +490,7 @@ drop table res_tbl; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc index e2b9e846b97..1a4dd9ff327 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc @@ -7,20 +7,29 @@ # # 3.1.6 Privilege checks: # -# 1. Ensure that no user may create a stored procedure without the GRANT CREATE ROUTINE privilege. +# 1. Ensure that no user may create a stored procedure without the +# GRANT CREATE ROUTINE privilege. # 2. Ensure that root always has the GRANT CREATE ROUTINE privilege. -# 3. Ensure that a user with the GRANT CREATE ROUTINE privilege can always create both a procedure and a function, on any appropriate database. -# 4. Ensure that the default security provision of a stored procedure is SQL SECURITY DEFINER. -# 5. Ensure that a stored procedure defined with SQL SECURITY DEFINER can be called/executed by any user, using only the privileges (including database access privileges) associated with the user who created the stored procedure. -# 6. Ensure that a stored procedure defined with SQL SECURITY INVOKER can be called/executed by any user, using only the privileges (including database access privileges) associated with the user executing the stored procedure. +# 3. Ensure that a user with the GRANT CREATE ROUTINE privilege can always +# create both a procedure and a function, on any appropriate database. +# 4. Ensure that the default security provision of a stored procedure is +# SQL SECURITY DEFINER. +# 5. Ensure that a stored procedure defined with SQL SECURITY DEFINER can be +# called/executed by any user, using only the privileges (including +# database access privileges) associated with the user who created +# the stored procedure. +# 6. Ensure that a stored procedure defined with SQL SECURITY INVOKER can be +# called/executed by any user, using only the privileges (including +# database access privileges) associated with the user executing +# the stored procedure. # # ============================================================================== let $message= Section 3.1.6 - Privilege Checks:; --source include/show_msg80.inc -USE db_storedproc_1; connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc # ------------------------------------------------------------------------------ @@ -47,7 +56,7 @@ connect (user1a, localhost, user_1, , db_storedproc_1); USE db_storedproc_1; delimiter //; ---error 1044 +--error ER_DBACCESS_DENIED_ERROR CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; @@ -58,6 +67,7 @@ disconnect user1a; # add privilege again and check connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -77,6 +87,7 @@ disconnect user1b; # cleanup connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc DROP USER 'user_1'@'localhost'; @@ -132,6 +143,7 @@ disconnect user2; # cleanup connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc drop user 'user_1'@'localhost'; @@ -242,33 +254,33 @@ disconnect user5_1; connect (user5_2, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); # now 'add' INSERT to DEFINER connection default; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); grant insert on db_storedproc_1.* to 'user_1'@'localhost'; flush privileges; connection user5_2; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); CALL sp5_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); # now 'add' SELECT to DEFINER connection default; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); grant SELECT on db_storedproc_1.* to 'user_1'@'localhost'; #grant execute on db_storedproc_1.* to 'user_2'@'localhost'; @@ -288,9 +300,9 @@ flush privileges; connection user5_2; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_ins(); CALL sp5_sel(); @@ -302,11 +314,11 @@ flush privileges; connection user5_2; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); # cleanup @@ -373,9 +385,9 @@ disconnect user6_1; connect (user6_2, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_ins(); CALL sp3166_sel(); @@ -405,10 +417,10 @@ FLUSH PRIVILEGES; --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (user6_4, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_s_i(); CALL sp3166_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_sel(); disconnect user6_4; @@ -422,11 +434,11 @@ FLUSH PRIVILEGES; --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (user6_5, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp3166_s_i(); ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp3166_ins(); ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp3166_sel(); disconnect user6_5; @@ -447,6 +459,7 @@ DROP USER 'user_2'@'localhost'; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc index d7b0a370a82..8e32a43e18f 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc @@ -7,14 +7,21 @@ # # 3.1.10 CALL checks: # -## 1. Ensure that a properly defined procedure can always be called, assuming the appropriate privileges exist. -#- 2. Ensure that a procedure cannot be called if the appropriate privileges do not exist. +## 1. Ensure that a properly defined procedure can always be called, assuming +# the appropriate privileges exist. +#- 2. Ensure that a procedure cannot be called if the appropriate privileges +# do not exist. ## 3. Ensure that a function can never be called. -## 4. Ensure that a properly defined function can always be executed, assuming the appropriate privileges exist. -#- 5. Ensure that a function cannot be executed if the appropriate privileges do not exist. +## 4. Ensure that a properly defined function can always be executed, assuming +# the appropriate privileges exist. +#- 5. Ensure that a function cannot be executed if the appropriate privileges +# do not exist. ## 6. Ensure that a procedure can never be executed. -## 7. Ensure that the ROW_COUNT() SQL function always returns the correct number of rows affected by the execution of a stored procedure. -## 8. Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. +## 7. Ensure that the ROW_COUNT() SQL function always returns the correct +# number of rows affected by the execution of a stored procedure. +## 8. Ensure that the mysql_affected_rows() C API function always returns +# the correct number of rows affected by the execution of a +# stored procedure. # # ============================================================================== let $message= Section 3.1.10 - CALL checks:; @@ -54,7 +61,7 @@ connect (user2_1, localhost, user_1, , db_storedproc); delimiter //; CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN - SELECT * FROM db_storedproc.t1 LIMIT 1; + SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// delimiter ;// @@ -74,12 +81,14 @@ connect (user2_2, localhost, user_2, , db_storedproc); --source suite/funcs_1/include/show_connection.inc # no privileges exist ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp31102(); SELECT fn31105( 9 ); # now 'add' EXECUTE to INVOKER +--echo connection default; connection default; +USE db_storedproc; --source suite/funcs_1/include/show_connection.inc # root can execute ... CALL sp31102(); @@ -97,7 +106,9 @@ SELECT fn31105( 9 ); disconnect user2_3; # now 'remove' SELECT from INVOKER +--echo connection default; connection default; +USE db_storedproc; --source suite/funcs_1/include/show_connection.inc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; FLUSH PRIVILEGES; @@ -115,6 +126,7 @@ disconnect user2_4; # cleanup connection default; +USE db_storedproc; --source suite/funcs_1/include/show_connection.inc DROP PROCEDURE sp31102; @@ -142,7 +154,7 @@ BEGIN END// delimiter ;// ---error 1305 +--error ER_SP_DOES_NOT_EXIST CALL fn1(); # cleanup @@ -168,7 +180,7 @@ BEGIN END// delimiter ;// ---error 1305 +--error ER_SP_DOES_NOT_EXIST SELECT sp1(); # cleanup @@ -182,26 +194,32 @@ let $message= Ensure that the ROW_COUNT() SQL function always returns the correct number of rows affected by the execution of a stored procedure.; --source include/show_msg80.inc +# Note(mleich): Information taken from a comments in +# Bug#21818 Return value of ROW_COUNT() is incorrect for +# ALTER TABLE, LOAD DATA +# ROW_COUNT() is -1 following any statement which is not DELETE, INSERT +# or UPDATE. +# Also, after a CALL statement, ROW_COUNT() will return the value of the +# last statement in the stored procedure. --disable_warnings DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; --enable_warnings CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; delimiter //; -#FIXME: add to proc: SELECT row_count() 'ins'; CREATE PROCEDURE sp_ins_1() BEGIN INSERT INTO temp VALUES ('abc', 'abc', '20051003', 100, 'uvw', 1000); END// - -#FIXME: add to proc: SELECT row_count() 'ins_3'; CREATE PROCEDURE sp_ins_3() BEGIN INSERT INTO temp VALUES ('abc', 'xyz', '19490523', 100, 'uvw', 1000); @@ -209,26 +227,11 @@ BEGIN INSERT INTO temp VALUES ('abc', 'xyz', '2005-10-24', 100, 'uvw', 1000); END// -# FIXME: add to proc: SELECT row_count() AS 'updated'; CREATE PROCEDURE sp_upd() BEGIN UPDATE temp SET temp.f1 = 'updated' WHERE temp.f1 ='abc'; END// -# FIXME: use commented proc -# CREATE PROCEDURE sp_ins_upd() -# BEGIN -# BEGIN -# INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000); -# INSERT INTO temp VALUES ('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000); -# INSERT INTO temp VALUES ('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000); -# INSERT INTO temp VALUES ('qwe', 'abc', '2005-11-07', 100, 'uvw', 1000); -# END; -# SELECT row_count() AS 'insert "qwe"'; -# SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; -# UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; -# SELECT row_count() AS 'update "qwe" AND "abc"'; -# END// CREATE PROCEDURE sp_ins_upd() BEGIN BEGIN @@ -240,31 +243,70 @@ BEGIN SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// + +CREATE PROCEDURE sp_del() +BEGIN + DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// + +CREATE PROCEDURE sp_with_rowcount() +BEGIN + BEGIN + INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), + ('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), + ('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), + ('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); + END; + SELECT row_count() AS 'row_count() after insert'; + SELECT row_count() AS 'row_count() after select row_count()'; + SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; + UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; + SELECT row_count() AS 'row_count() after update'; + SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; + DELETE FROM temp WHERE temp.f1 = 'updated_2'; + SELECT row_count() AS 'row_count() after delete'; +END// delimiter ;// CALL sp_ins_1(); SELECT row_count(); +--sorted_result SELECT * FROM temp; CALL sp_ins_3(); -#FIXME: check is 1 correct here? I expect 3 for 3 inserted rows inside the procedure SELECT row_count(); +--sorted_result SELECT * FROM temp; CALL sp_upd(); SELECT row_count(); +--sorted_result SELECT * FROM temp; -#FIXME: check is 3 correct here? I expect 7 for 4 inserted and then 3 updated rows inside the procedure CALL sp_ins_upd(); SELECT row_count(); +--sorted_result SELECT * FROM temp; +CALL sp_del(); +SELECT row_count(); +--sorted_result +SELECT * FROM temp; + +DELETE FROM temp; +CALL sp_with_rowcount(); +SELECT row_count(); +--sorted_result +SELECT * FROM temp; + + # cleanup DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; @@ -272,7 +314,7 @@ DROP TABLE temp; let $message= Testcase 3.1.10.8:; --source include/show_msg.inc let $message= -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure.; --source include/show_msg80.inc @@ -283,6 +325,7 @@ number of rows affected by the execution of a stored procedure.; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/t/innodb_trig_0407.test b/mysql-test/suite/funcs_1/t/innodb_trig_0407.test index d6b7d4a9942..1a0689847b1 100644 --- a/mysql-test/suite/funcs_1/t/innodb_trig_0407.test +++ b/mysql-test/suite/funcs_1/t/innodb_trig_0407.test @@ -10,7 +10,7 @@ let $engine_type= innodb; # Create some objects needed in many testcases USE test; --source suite/funcs_1/include/innodb_tb3.inc - + --source suite/funcs_1/triggers/triggers_0407.inc DROP TABLE test.tb3; diff --git a/mysql-test/suite/funcs_1/t/is_basics_mixed.test b/mysql-test/suite/funcs_1/t/is_basics_mixed.test index 8097c3ab3b1..30aeba12915 100644 --- a/mysql-test/suite/funcs_1/t/is_basics_mixed.test +++ b/mysql-test/suite/funcs_1/t/is_basics_mixed.test @@ -174,7 +174,7 @@ WHERE table_schema = 'db_datadict' ORDER BY table_name LIMIT 1; SELECT @table_name,@table_schema; # # SELECT INTO OUTFILE -let $OUTFILE = $MYSQL_TMP_DIR/datadict.out; +let $OUTFILE = $MYSQLTEST_VARDIR/tmp/datadict.out; --error 0,1 remove_file $OUTFILE; --replace_result $OUTFILE diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_02.test b/mysql-test/suite/funcs_1/t/memory_storedproc_02.test index f92657ee665..5b5e0b52932 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_02.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_02.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_02.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_02.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_03.test b/mysql-test/suite/funcs_1/t/memory_storedproc_03.test index 8a839b255e1..61a601c8c66 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_03.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_03.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_03.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_03.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_06.test b/mysql-test/suite/funcs_1/t/memory_storedproc_06.test index 059528590b9..ac4b1173553 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_06.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_06.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_06.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_06.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_07.test b/mysql-test/suite/funcs_1/t/memory_storedproc_07.test index 1d7cee3dbd6..be74d5c9c38 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_07.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_07.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_07.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_07.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_08.test b/mysql-test/suite/funcs_1/t/memory_storedproc_08.test index 304be8c477a..d898f288f29 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_08.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_08.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_08.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_08.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_10.test b/mysql-test/suite/funcs_1/t/memory_storedproc_10.test index 13fbe99fabf..753e5d0bfc7 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_10.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_10.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_10.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_10.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test index 108b0fe5611..be3e0e9685f 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_02.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_02.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test index b181e3ce7ab..740db774552 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_03.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_03.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test index 81d3d24a01f..1038a40b57d 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_06.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_06.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test index a02f2f544ee..674c3ef3fb6 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_07.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_07.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test index 24e574fa9e2..a27d593bd92 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_08.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_08.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test index 6b4f6c21b62..bfa83c01a57 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_10.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_10.inc diff --git a/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc b/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc index 51cc2a81d18..c3de88a28f7 100644 --- a/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc +++ b/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc @@ -1,17 +1,17 @@ ################################################################# -# This file inclde tests that address the foreign key cases of -# the following requirements since they are specific to innodb. -# Other test cases for these requirements are included in the +# This file inclde tests that address the foreign key cases of +# the following requirements since they are specific to innodb. +# Other test cases for these requirements are included in the # triggers_master.test file. ################################################################# --disable_abort_on_error # OBN - The following tests are disabled until triggers are supported with forign -# keys in innodb (foreign keys tests dispabled - bug 11472) +# keys in innodb (foreign keys tests dispabled - bug 11472) ################################################################################# #Section x.x.x.3 -# Test case: Similar to 3.5.10.5 but with ten tables to see if multiple triggers +# Test case: Similar to 3.5.10.5 but with ten tables to see if multiple triggers # can be executed at once let $message= Testcase x.x.x.3:; --source include/show_msg.inc @@ -21,58 +21,58 @@ let $message= Testcase x.x.x.3:; --enable_warnings eval CREATE TABLE t0 (col1 char(50)) ENGINE=$engine_type; - eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), + eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), PRIMARY KEY (id)) ENGINE=$engine_type; - eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL) ENGINE=$engine_type; - eval CREATE TABLE t3 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t3 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t4 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t4 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t5 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t5 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t6 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t6 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t7 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t7 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t8 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t8 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t9 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t9 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t10(id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t10(id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t11(id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t11(id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - create trigger tr1 after update on t2 for each row + create trigger tr1 after update on t2 for each row insert into t0 values ('tr_t2'); - create trigger tr2 after update on t3 for each row + create trigger tr2 after update on t3 for each row insert into t0 values ('tr_t3'); - create trigger tr3 after update on t4 for each row + create trigger tr3 after update on t4 for each row insert into t0 values ('tr_t4'); - create trigger tr3 after update on t5 for each row + create trigger tr3 after update on t5 for each row insert into t0 values ('tr_t5'); - create trigger tr4 after update on t6 for each row + create trigger tr4 after update on t6 for each row insert into t0 values ('tr_t6'); - create trigger tr5 after update on t7 for each row + create trigger tr5 after update on t7 for each row insert into t0 values ('tr_t7'); - create trigger tr5 after update on t8 for each row + create trigger tr5 after update on t8 for each row insert into t0 values ('tr_t8'); - create trigger tr6 after update on t9 for each row + create trigger tr6 after update on t9 for each row insert into t0 values ('tr_t9'); - create trigger tr7 after update on t10 for each row + create trigger tr7 after update on t10 for each row insert into t0 values ('tr_t10'); - create trigger tr8 after update on t11 for each row + create trigger tr8 after update on t11 for each row insert into t0 values ('tr_t11'); insert into t1 values (1,'Department A'); @@ -134,10 +134,10 @@ let $message= Testcase x.x.x.3:; #Section 3.5.10.5 -# Test case: Ensure that every trigger that should be activated by every possible -# type of implicit update of its subject table (e.g. a FOREIGN KEY SET -# DEFAULT action or an UPDATE of a view based on the subject table) -# is indeed activated correctly. +# Test case: Ensure that every trigger that should be activated by every possible +# type of implicit update of its subject table (e.g. a FOREIGN KEY SET +# DEFAULT action or an UPDATE of a view based on the subject table) +# is indeed activated correctly. let $message= Testcase 3.5.10.5 (foreign keys):; --source include/show_msg.inc @@ -146,11 +146,11 @@ let $message= Testcase 3.5.10.5 (foreign keys):; DROP TABLE IF EXISTS t1, t2; --enable_warnings - eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), + eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), PRIMARY KEY (id)) ENGINE=$engine_type; - eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, - INDEX par_ind (f_id), col1 char(50), - FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, + INDEX par_ind (f_id), col1 char(50), + FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; create trigger tr_t2 after update on t2 for each row set @counter=@counter+1; @@ -191,9 +191,9 @@ let $message= Testcase 3.5.10.5 (foreign keys):; #Section 3.5.10.6 -# Test case: Ensure that every trigger that should be activated by every possible -# type of implicit deletion from its subject table (e.g. a FOREIGN KEY -# CASCADE action or a DELETE from a view based on the subject table) +# Test case: Ensure that every trigger that should be activated by every possible +# type of implicit deletion from its subject table (e.g. a FOREIGN KEY +# CASCADE action or a DELETE from a view based on the subject table) # is indeed activated correctly. let $message= Testcase 3.5.10.6 (foreign keys):; --source include/show_msg.inc @@ -202,11 +202,11 @@ let $message= Testcase 3.5.10.6 (foreign keys):; DROP TABLE IF EXISTS t1, t2; --enable_warnings - eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), + eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), PRIMARY KEY (id)) ENGINE=$engine_type; - eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, - INDEX par_ind (f_id), col1 char(50), - FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, + INDEX par_ind (f_id), col1 char(50), + FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE CASCADE) ENGINE=$engine_type; create trigger tr_t2 before delete on t2 diff --git a/mysql-test/suite/funcs_1/triggers/triggers_0102.inc b/mysql-test/suite/funcs_1/triggers/triggers_0102.inc index b11455c07d3..cadfb9ec9be 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_0102.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_0102.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== # OBM - ToDo @@ -20,37 +20,37 @@ # Testcase: Ensure that all clauses that should be supported are supported. let $message= Testcase: 3.5.1.1:; --source include/show_msg.inc -# OBN - This test case tests basic trigger definition and execution +# OBN - This test case tests basic trigger definition and execution # of INSERT/UPDATE/DELETE actions and BEFORE/AFTER timings. -# As such it covers the equirements in sections 3.5.6.1, 3.5.6.2, +# As such it covers the equirements in sections 3.5.6.1, 3.5.6.2, # 3.5.6.4, 3.5.6.5, 3.5.7.1, 3.5.7.2, 3.5.7.3, 3.5.7.17 below. -# - Note currently as a result of limitations with locking tables in +# - Note currently as a result of limitations with locking tables in # triggers, a specifc lockingof the tables is done. # Once fixed, the locking and alias referances should be removed use test; # Trigger Definition - Create trigger trg1_1 BEFORE INSERT + Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; - Create trigger trg1_2 AFTER INSERT + Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; - Create trigger trg1_4 BEFORE UPDATE - on tb3 for each row set @test_before = 27, - new.f142 = @test_before, + Create trigger trg1_4 BEFORE UPDATE + on tb3 for each row set @test_before = 27, + new.f142 = @test_before, new.f122 = 'Before Update Trigger'; - Create trigger trg1_3 AFTER UPDATE + Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; - Create trigger trg1_5 BEFORE DELETE on tb3 for each row - select count(*) into @test_before from tb3 as tr_tb3 + Create trigger trg1_5 BEFORE DELETE on tb3 for each row + select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; - Create trigger trg1_6 AFTER DELETE on tb3 for each row - select count(*) into @test_after from tb3 as tr_tb3 + Create trigger trg1_6 AFTER DELETE on tb3 for each row + select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; # Trigger Execution Insert (before and after) set @test_before = 1; set @test_after = 5; select @test_before, @test_after; - Insert into tb3 (f121, f122, f142, f144, f134) + Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; select @test_before, @test_after; @@ -59,15 +59,15 @@ use test; set @test_before = 18; set @test_after = 8; select @test_before, @test_after; - Update tb3 set tb3.f122 = 'Update', - tb3.f142 = @test_before, - tb3.f144 = @test_after + Update tb3 set tb3.f122 = 'Update', + tb3.f142 = @test_before, + tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; select @test_before, @test_after; # Trigger Execution Delete (before and after) - Insert into tb3 (f121, f122, f142, f144, f134) + Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -79,35 +79,35 @@ use test; #Cleanup --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_3; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_4; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_5; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_6; --enable_warnings delete from tb3 where f121='Test 3.5.1.1'; --enable_warnings #Section 3.5.1.2 -# Testcase: Ensure that all clauses that should not be supported are disallowed -# with an appropriate error message. +# Testcase: Ensure that all clauses that should not be supported are disallowed +# with an appropriate error message. let $message= Testcase: 3.5.1.2:; --source include/show_msg.inc - --error 1064 - Create trigger trg_1 after insert + --error ER_PARSE_ERROR + Create trigger trg_1 after insert on tb3 for each statement set @x= 1; -#Cleanup - --disable_warnings - --error 0, 1360 +#Cleanup + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg_1; --enable_warnings @@ -116,66 +116,66 @@ let $message= Testcase: 3.5.1.2:; # Testcase: Ensure that all supported clauses are supported only in the correct order. let $message= Testcase 3.5.1.3:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg3_1 on tb3 BEFORE INSERT for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg3_3 Before DELETE on tb3 set @ret1 = 'test' for each row; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg3_4 DELETE AFTER on tb3 set @ret1 = 'test' for each row; - --error 1064 - CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'; + --error ER_PARSE_ERROR + CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'; #Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_3; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_4; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_5; --enable_warnings #Section 3.5.1.4 -# Testcase: Ensure that an appropriate error message is returned if a clause +# Testcase: Ensure that an appropriate error message is returned if a clause # is out-of-order in an SQL statement. # OBN - FIXME - Missing 3.5.1.4 need to add #Section 3.5.1.5 -# Testcase: Ensure that all clauses that are defined to be mandatory are indeed +# Testcase: Ensure that all clauses that are defined to be mandatory are indeed # required to be mandatory by the MySQL server and tools let $message= Testcase: 3.5.1.5:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_1 AFTER on tb3 for each row set new.f120 = 'e'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_2 INSERT on tb3 for each set row new.f120 = 'f'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_3 BEFORE INSERT tb3 for each row set new.f120 = 'g'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_4 AFTER UPDATE on tb3 for each set new.f120 = 'g'; - --error 1064 + --error ER_PARSE_ERROR CREATE trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_6 BEFORE DELETE for each row set new.f120 = 'g'; #Cleanup @@ -183,19 +183,19 @@ let $message= Testcase: 3.5.1.5:; # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_3; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_4; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_5; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_6; - --enable_warnings + --enable_warnings #Section 3.5.1.6 # Testcase: Ensure that any clauses that are defined to be optional are indeed @@ -204,15 +204,15 @@ let $message= Testcase 3.5.1.6: - Need to fix; --source include/show_msg.inc # OBN - FIXME - Missing 3.5.1.6 need to add -#Section 3.5.1.7 -# Testcase: Ensure that all valid, fully-qualified, and non-qualified, +#Section 3.5.1.7 +# Testcase: Ensure that all valid, fully-qualified, and non-qualified, # trigger names are accepted, at creation time. let $message= Testcase 3.5.1.7: - need to fix; --source include/show_msg.inc drop table if exists t1; eval create table t1 (f1 int, f2 char(25),f3 int) engine=$engine_type; - CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 + CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -221,39 +221,39 @@ let $message= Testcase 3.5.1.7: - need to fix; select * from t1; update t1 set f2='update 3.5.1.7'; select * from t1; - select trigger_name from information_schema.triggers; + select trigger_name from information_schema.triggers order by trigger_name; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5_1; # The above trigger should be dropped since the name was trimmed. drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ; drop table t1; #Section 3.5.1.8 -# Testcase: Ensure that any invalid trigger name is never accepted, and that an +# Testcase: Ensure that any invalid trigger name is never accepted, and that an # appropriate error message is returned when the name is rejected. let $message= Testcase 3.5.1.8:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg12* before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trigger before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER 100 before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; - --error 1435 - CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 + --error ER_TRG_IN_WRONG_SCHEMA + CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; --disable_warnings @@ -265,29 +265,29 @@ let $message= Testcase 3.5.1.8:; # Can't create a trigger in a different database use test; - --error 1146 - CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 + --error ER_NO_SUCH_TABLE + CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; # Can't create a trigger refrencing a table in a different db use trig_db; - --error 1435 - CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 + --error ER_TRG_IN_WRONG_SCHEMA + CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; use test; #Cleanup - --disable_warnings + --disable_warnings drop database trig_db; # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_3; - --enable_warnings + --enable_warnings #Section 3.5.1.9 #Testcase: Ensure that a reference to a non-existent trigger is rejected with @@ -297,41 +297,41 @@ let $message= Testcase 3.5.1.9:(cannot be inplemented at this point); #Section 3.5.1.10 -#Testcase: Ensure that it is not possible to create two triggers with the same name on +#Testcase: Ensure that it is not possible to create two triggers with the same name on # the same table let $message= Testcase 3.5.1.10:; --source include/show_msg.inc CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X'; - --error 1359 + --error ER_TRG_ALREADY_EXISTS CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y'; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg7_1; --enable_warnings -#Section 3.5.1.? -# Testcase: Ensure that it is not possible to create two or more triggers with +#Section 3.5.1.? +# Testcase: Ensure that it is not possible to create two or more triggers with # the same name, provided each is associated with a different table. let $message= Testcase 3.5.1.?:; --source include/show_msg.inc - --disable_warnings + --disable_warnings drop table if exists t1; drop table if exists t2; --enable_warnings eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; eval create table t2 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 + create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; - --error 1359 - create trigger trig before update on t2 + --error ER_TRG_ALREADY_EXISTS + create trigger trig before update on t2 for each row set new.f1 ='trig t2'; insert into t1 value ('insert to t1',1); @@ -343,16 +343,16 @@ let $message= Testcase 3.5.1.?:; select * from t2; #Cleanup - --disable_warnings + --disable_warnings drop table t1; drop table t2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trig; --enable_warnings -#Section 3.5.1.11 -# Testcase: Ensure that it is possible to create two or more triggers with +#Section 3.5.1.11 +# Testcase: Ensure that it is possible to create two or more triggers with # the same name, provided each resides in a different database let $message= Testcase 3.5.1.11:; --source include/show_msg.inc @@ -367,15 +367,15 @@ let $message= Testcase 3.5.1.11:; create database trig_db3; use trig_db1; eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 + create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; eval create table t2 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t2 + create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 + create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; @@ -385,14 +385,14 @@ let $message= Testcase 3.5.1.11:; insert into trig_db2.t2 (f1,f2) values ('insert to db2 t2 from db1',3); insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; - select * from t1; + select * from t1 order by f2; select * from trig_db2.t2; select * from trig_db3.t1; - select * from t1; + select * from t1 order by f2; use test; #Cleanup - --disable_warnings + --disable_warnings drop database trig_db1; drop database trig_db2; drop database trig_db3; @@ -403,16 +403,16 @@ let $message= Testcase 3.5.1.11:; # Check for the global nature of Triggers # ########################################### -#Section 3.5.2.1 -# Test case: Ensure that if a trigger created without a qualifying database +#Section 3.5.2.1 +# Test case: Ensure that if a trigger created without a qualifying database # name belongs to the database in use at creation time. -#Section 3.5.2.2 -# Test case: Ensure that if a trigger created with a qualifying database name +#Section 3.5.2.2 +# Test case: Ensure that if a trigger created with a qualifying database name # belongs to the database specified. -#Section 3.5.2.3 -# Test case: Ensure that if a trigger created with a qualifying database name -# does not belong to the database in use at creation time unless -# the qualifying database name identifies the database that is +#Section 3.5.2.3 +# Test case: Ensure that if a trigger created with a qualifying database name +# does not belong to the database in use at creation time unless +# the qualifying database name identifies the database that is # also in use at creation time. let $message= Testcase 3.5.2.1/2/3:; --source include/show_msg.inc @@ -427,14 +427,14 @@ let $message= Testcase 3.5.2.1/2/3:; use trig_db1; eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; eval create table trig_db2.t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig1_b before insert on t1 + create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; - create trigger trig_db1.trig1_a after insert on t1 + create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; - create trigger trig_db2.trig2 before insert on trig_db2.t1 + create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table - from information_schema.triggers; + from information_schema.triggers order by trigger_name; set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); @@ -442,6 +442,6 @@ let $message= Testcase 3.5.2.1/2/3:; select @test_var1, @test_var2, @test_var3; #Cleanup - --disable_warnings + --disable_warnings drop database trig_db1; drop database trig_db2; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03.inc b/mysql-test/suite/funcs_1/triggers/triggers_03.inc index 764fccec734..ac76dc83062 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03.inc @@ -63,14 +63,14 @@ let $message= Testcase 3.5.3.2:; select current_user; use priv_db; - --error 1227 + --error ER_SPECIFIC_ACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; connection default; use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); - select f1 from t1; + select f1 from t1 order by f1; connection yes_privs; select current_user; @@ -83,29 +83,27 @@ let $message= Testcase 3.5.3.2:; select current_user; use priv_db; - # Added following the fix to bug 5861 - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR insert into t1 (f1) values ('insert 3.5.3.2-yes'); - select f1 from t1; - grant UPDATE on priv_db.t1 to test_yesprivs@localhost; -let $message= note: once 15166 is fixed a similar case for SELECT needs to be added; ---source include/show_msg.inc + select f1 from t1 order by f1; + + grant UPDATE on priv_db.t1 to test_yesprivs@localhost; + insert into t1 (f1) values ('insert 3.5.3.2-yes'); + select f1 from t1 order by f1; - insert into t1 (f1) values ('insert 3.5.3.2-yes'); - select f1 from t1; let $message= Testcase 3.5.3.6:; --source include/show_msg.inc connection no_privs; use priv_db; - --error 1227 + --error ER_SPECIFIC_ACCESS_DENIED_ERROR drop trigger trg1_2; connection default; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); - select f1 from t1; + select f1 from t1 order by f1; connection yes_privs; use priv_db; @@ -115,12 +113,12 @@ let $message= Testcase 3.5.3.6:; connection default; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings connection default; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_2; disconnect no_privs; disconnect yes_privs; @@ -131,8 +129,6 @@ let $message= Testcase 3.5.3.6:; # Test case: Ensure that use of the construct "SET NEW. = " # fails at CREATE TRIGGER time, if the current user does not have the # UPDATE privilege on the column specified -# Note: As a result of bug 8884 the triggers are actually created. -# Disabled because of bug 8884 # --- 3.5.3.7a - Privs set on a global level let $message=Testcase 3.5.3.7a:; @@ -156,18 +152,15 @@ let $message=Testcase 3.5.3.7a:; select current_user; use priv_db; show grants; - select f1 from t1; + select f1 from t1 order by f1; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4a_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1a'; + create trigger trg4a_1 before INSERT on t1 for each row + set new.f1 = 'trig 3.5.3.7-1a'; connection default; + --error ER_COLUMNACCESS_DENIED_ERROR insert into t1 (f1) values ('insert 3.5.3.7-1a'); - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4a_1; connection yes_privs_424a; @@ -179,14 +172,8 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT on *.* to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2b'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings @@ -220,18 +207,14 @@ let $message= Testcase 3.5.3.7b:; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4b_1 before UPDATE on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1b'; + create trigger trg4b_1 before UPDATE on t1 for each row + set new.f1 = 'trig 3.5.3.7-1b'; connection default; insert into t1 (f1) values ('insert 3.5.3.7-1b'); - select f1 from t1; + select f1 from t1 order by f1; update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4b_1; connection yes_privs_424b; @@ -242,15 +225,10 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT on priv_db.* to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2b'); - select f1 from t1; + select f1 from t1 order by f1; update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings drop trigger trg4b_2; @@ -283,16 +261,12 @@ let $message= Testcase 3.5.3.7c; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4c_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1c'; + create trigger trg4c_1 before INSERT on t1 for each row + set new.f1 = 'trig 3.5.3.7-1c'; connection default; insert into t1 (f1) values ('insert 3.5.3.7-1c'); - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4c_1; connection yes_privs_424c; @@ -303,13 +277,8 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2c'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings @@ -344,16 +313,12 @@ let $message= Testcase 3.5.3.7d:; connection no_privs_424d; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4d_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1d'; + create trigger trg4d_1 before INSERT on t1 for each row + set new.f1 = 'trig 3.5.3.7-1d'; connection default; insert into t1 (f1) values ('insert 3.5.3.7-1d'); - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4d_1; connection yes_privs_424d; @@ -364,13 +329,8 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2d'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings @@ -408,18 +368,14 @@ let $message= Testcase 3.5.3.8a:; use priv_db; show grants; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5a_1 before INSERT on t1 for each row -# set @test_var = new.f1; + create trigger trg5a_1 before INSERT on t1 for each row + set @test_var = new.f1; connection default; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; insert into t1 (f1) values ('insert 3.5.3.8-1a'); select @test_var; - --error 0, 1360 drop trigger trg5a_1; connection yes_privs_425a; @@ -433,11 +389,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE on *.* to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @@ -473,11 +424,8 @@ let $message= Testcase: 3.5.3.8b; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5b_1 before UPDATE on t1 for each row -# set @test_var= new.f1; + create trigger trg5b_1 before UPDATE on t1 for each row + set @test_var= new.f1; connection default; set @test_var= 'before trig 3.5.3.8-1b'; @@ -485,7 +433,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; select @test_var; update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; select @test_var; - --error 0, 1360 drop trigger trg5b_1; connection yes_privs_425b; @@ -499,11 +446,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE on priv_db.* to test_yesprivs@localhost; - update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; # Cleanup @@ -538,17 +480,13 @@ let $message= Testcase 3.5.3.8c:; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5c_1 before INSERT on t1 for each row -# set @test_var= new.f1; + create trigger trg5c_1 before INSERT on t1 for each row + set @test_var= new.f1; connection default; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); select @test_var; - --error 0, 1360 drop trigger trg5c_1; connection yes_privs_425c; @@ -560,11 +498,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; connection default; set @test_var='before trig 3.5.3.8-2c'; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; # Cleanup @@ -598,17 +531,13 @@ let $message=Testcase: 3.5.3.8d:; connection no_privs_425d; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5d_1 before INSERT on t1 for each row -# set @test_var= new.f1; + create trigger trg5d_1 before INSERT on t1 for each row + set @test_var= new.f1; connection default; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); select @test_var; - --error 0, 1360 drop trigger trg5d_1; connection yes_privs_425d; @@ -620,11 +549,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; connection default; set @test_var='before trig 3.5.3.8-2d'; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @@ -633,8 +557,7 @@ let $message= UPDATE priv added to bypass bug 15166; drop trigger trg5d_2; --enable_warnings -# --- 3.5.3.x - additional tests following the fix to bug 5861 / WL 2818 -# to test for trigger definer privs in the case of trigger +# --- 3.5.3.x to test for trigger definer privs in the case of trigger # actions (insert/update/delete/select) performed on other # tables. let $message=Testcase: 3.5.3.x:; @@ -671,8 +594,8 @@ let $message=Testcase: 3.5.3.x:; revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; connection yes_353x; use priv_db; @@ -687,8 +610,8 @@ let $message=Testcase: 3.5.3.x:; revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; connection yes_353x; use priv_db; @@ -703,8 +626,8 @@ let $message=Testcase: 3.5.3.x:; revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; select @aaa; connection yes_353x; @@ -720,8 +643,8 @@ let $message=Testcase: 3.5.3.x:; revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_0407.inc b/mysql-test/suite/funcs_1/triggers/triggers_0407.inc index 15c94ada975..a05bdb45bac 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_0407.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_0407.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== --disable_abort_on_error @@ -46,32 +46,32 @@ let $message= Testcase 3.5.4.1:; eval create table t1 (f1 char(30)) engine=$engine_type; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; - Create trigger trg1 BEFORE INSERT on t1 + Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; connection con1_general; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); - Select * from t1; + Select * from t1 order by f1; connection con1_super; drop trigger trg1; select trigger_schema, trigger_name, event_object_table - from information_schema.triggers; + from information_schema.triggers order by trigger_name; connection con1_general; Insert into t1 values ('Insert no trigger 3.5.4.1'); - Select * from t1; + Select * from t1 order by f1; #Cleanup - --disable_warnings + --disable_warnings connection con1_super; --disable_warnings - --error 0,1360 - drop trigger trg1; + --error 0,ER_TRG_DOES_NOT_EXIST + drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; --enable_warnings #Section 3.5.4.2 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate error +# Test case: Ensure that DROP TRIGGER fails, with an appropriate error # message, if the trigger name does not exist. let $message= Testcase 3.5.4.2:; --source include/show_msg.inc @@ -83,16 +83,16 @@ let $message= Testcase 3.5.4.2:; drop table if exists t1_432 ; --enable_warnings eval create table t1_432 (f1 char (30)) engine=$engine_type; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger tr_does_not_exit; -#cleanup +#cleanup --disable_warnings drop table if exists t1_432 ; drop database if exists db_drop2; --enable_warnings #Section 3.5.4.3 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate +# Test case: Ensure that DROP TRIGGER fails, with an appropriate # error message, if is not a qualified name. let $message= Testcase 3.5.4.3:; --source include/show_msg.inc @@ -107,33 +107,33 @@ let $message= Testcase 3.5.4.3:; eval create table t1_433 (f1 char (30)) engine=$engine_type; eval create table t1_433a (f1a char (5)) engine=$engine_type; - CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row + CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; -# Using table - --error 1064 +# Using table + --error ER_PARSE_ERROR Drop trigger t1.433.trg3; -# Using database.table - --error 1064 +# Using database.table + --error ER_PARSE_ERROR Drop trigger db_drop3.t1.433.trg3; # wrong database - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger mysql.trg3; # database does not exist - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger tbx.trg3; -#cleanup +#cleanup Drop trigger db_drop3.trg3; drop table if exists t1_433; drop table if exists t1_433a; drop database if exists db_drop3; #Section 3.5.4.4 -# Test case: Ensure that when a database is dropped, all triggers created within +# Test case: Ensure that when a database is dropped, all triggers created within # that database are also cleanly dropped. let $message= Testcase 3.5.4.4:; --source include/show_msg.inc @@ -143,7 +143,7 @@ let $message= Testcase 3.5.4.4:; Use db_drop4; eval create table t1 (f1 char(30)) engine=$engine_type; grant INSERT, SELECT on db_drop4.t1 to test_general; - Create trigger trg4 BEFORE INSERT on t1 + Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; connection con1_general; Use db_drop4; @@ -166,14 +166,14 @@ let $message= Testcase 3.5.4.4:; #Cleanup connection con1_super; --disable_warnings - --error 1360 - drop trigger trg4; + --error ER_TRG_DOES_NOT_EXIST + drop trigger trg4; drop database if exists db_drop4; --enable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; #Section 3.5.4.5 -# Test case: Ensure that when a table is dropped, all triggers for which it is the +# Test case: Ensure that when a table is dropped, all triggers for which it is the # subject table are also cleanly dropped. let $message= Testcase 3.5.4.5:; --source include/show_msg.inc @@ -183,7 +183,7 @@ let $message= Testcase 3.5.4.5:; Use db_drop5; eval create table t1 (f1 char(50)) engine=$engine_type; grant INSERT, SELECT on t1 to test_general; - Create trigger trg5 BEFORE INSERT on t1 + Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; connection con1_general; Use db_drop5; @@ -204,8 +204,8 @@ let $message= Testcase 3.5.4.5:; #Cleanup connection con1_super; --disable_warnings - --error 1360 - drop trigger trg5; + --error ER_TRG_DOES_NOT_EXIST + drop trigger trg5; drop database if exists db_drop5; --enable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -223,55 +223,55 @@ let $message= Testcase 3.5.5:; use test; #Section 3.5.5.1 -# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent +# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent # subject table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.1:; --source include/show_msg.inc - --error 1146 + --error ER_NO_SUCH_TABLE Create trigger trg1 before INSERT on t100 for each row set new.f2=1000; #Section 3.5.5.2 -# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table +# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table # as the subject table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.2:; --source include/show_msg.inc Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); - --error 1361 - Create trigger trg2 before INSERT + --error ER_TRG_ON_VIEW_OR_TEMP_TABLE + Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; #Cleanup - --disable_warnings + --disable_warnings drop table t1_temp; --enable_warnings #Section 3.5.5.3 -# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject +# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject # table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.3:; --source include/show_msg.inc Create view vw3 as select f118 from tb3; -# OBN Not sure why the server is returning error 1347 - --error 1347 - Create trigger trg3 before INSERT +# OBN Not sure why the server is returning error ER_WRONG_OBJECT + --error ER_WRONG_OBJECT + Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; #Cleanup - --disable_warnings + --disable_warnings drop view vw3; --enable_warnings #Section 3.5.5.4 -# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides -# in a different database than in which the trigger will reside, the +# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides +# in a different database than in which the trigger will reside, the # statement fails with an appropriate error message; that is, ensure that # the trigger and its subject table must reside in the same database. let $message= Testcase 3.5.5.4:; @@ -283,7 +283,7 @@ let $message= Testcase 3.5.5.4:; use dbtest_two; eval create table t2 (f1 char(15)) engine=$engine_type; use dbtest_one; - --error 1435 + --error ER_TRG_IN_WRONG_SCHEMA create trigger trg4 before INSERT on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4'; grant INSERT, SELECT on dbtest_two.t2 to test_general; @@ -294,11 +294,11 @@ let $message= Testcase 3.5.5.4:; Select * from t2; use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); - Select * from dbtest_two.t2; + Select * from dbtest_two.t2 order by f1; #Cleanup connection con1_super; - --disable_warnings + --disable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; DROP DATABASE if exists dbtest_one; drop database if EXISTS dbtest_two; @@ -316,7 +316,7 @@ let $message= Testcase 3.5.6:; use test; #Section 3.5.6.1 -# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. +# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. # See section 3.5.1.1 let $message= Testcase 3.5.6.1 (see Testcase 3.5.1.1); --source include/show_msg.inc @@ -328,37 +328,37 @@ let $message= Testcase 3.5.6.2 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.6.3 -# Test case: Ensure that a trigger definition that specifies a trigger action -# time that is not either BEFORE or AFTER fails, with an appropriate +# Test case: Ensure that a trigger definition that specifies a trigger action +# time that is not either BEFORE or AFTER fails, with an appropriate # error message, at CREATE TRIGGER time. let $message= Testcase 3.5.6.3:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15; -#Cleanup +#Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg3_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg3_2; --enable_warnings #Section 3.5.6.4 -# Test case: Ensure that a trigger defined with a trigger action time of BEFORE -# always executes its triggered action immediately before the trigger event. +# Test case: Ensure that a trigger defined with a trigger action time of BEFORE +# always executes its triggered action immediately before the trigger event. # See section 3.5.1.1 let $message= Testcase 3.5.6.4 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.6.5 -# Test case: Ensure that a trigger defined with a trigger action time of AFTER +# Test case: Ensure that a trigger defined with a trigger action time of AFTER # always executes its triggered action immediately after the trigger event. let $message= Testcase 3.5.6.5 (see Testcase 3.5.1.1); --source include/show_msg.inc @@ -384,40 +384,40 @@ let $message= Testcase 3.5.7.3 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.7.4 -# Test case: Ensure that a trigger definition that specifies a trigger event that -# is not either INSERT, UPDATE or DELETE fails, with an appropriate error +# Test case: Ensure that a trigger definition that specifies a trigger event that +# is not either INSERT, UPDATE or DELETE fails, with an appropriate error # message, at CREATE TRIGGER time. let $message= Testcase 3.5.7.4:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1; -#Cleanup +#Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg4_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg4_2; --enable_warnings -#Section 3.5.7.5 / 3.5.7.6 -# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers +#Section 3.5.7.5 / 3.5.7.6 +# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.5 / 3.5.7.6:; --source include/show_msg.inc - Create trigger trg5_1 BEFORE INSERT + Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg5_2 BEFORE INSERT + --error ER_NOT_SUPPORTED_YET + Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -426,27 +426,27 @@ let $message= Testcase 3.5.7.5 / 3.5.7.6:; Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg5_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5_2; delete from tb3 where f121='Test 3.5.7.5/6'; --enable_warnings -#Section 3.5.7.7 / 3.5.7.8 -# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers +#Section 3.5.7.7 / 3.5.7.8 +# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.7 / 3.5.7.8:; --source include/show_msg.inc set @test_var='Before trig 3.5.7.7'; - Create trigger trg6_1 AFTER INSERT + Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg6_2 AFTER INSERT + --error ER_NOT_SUPPORTED_YET + Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; select @test_var; @@ -458,26 +458,26 @@ let $message= Testcase 3.5.7.7 / 3.5.7.8:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg6_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_2; delete from tb3 where f121='Test 3.5.7.7/8'; --enable_warnings #Section 3.5.7.9 / 3.5.7.10 -# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers -# on the same table, even if the triggers have different names / different +# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers +# on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.9/10:; --source include/show_msg.inc - Create trigger trg7_1 BEFORE UPDATE + Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg7_2 BEFORE UPDATE + --error ER_NOT_SUPPORTED_YET + Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -486,25 +486,25 @@ let $message= Testcase 3.5.7.9/10:; Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg7_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg7_2; delete from tb3 where f121='Test 3.5.7.9/10'; #Section 3.5.7.11 / 3.5.7.12 -# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers +# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers # on the same table, even if the triggers have different names / different -# triggered actions. +# triggered actions. let $message= Testcase 3.5.7.11/12:; --source include/show_msg.inc set @test_var='Before trig 3.5.7.11'; - Create trigger trg8_1 AFTER UPDATE + Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg8_2 AFTER UPDATE + --error ER_NOT_SUPPORTED_YET + Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; @@ -518,25 +518,25 @@ let $message= Testcase 3.5.7.11/12:; delete from tb3 where f121='Test 3.5.7.11/12'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg8_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg8_2; delete from tb3 where f121='Test 3.5.7.11/12'; #Section 3.5.7.13 / 3.5.7.14 -# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers +# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.13/14:; --source include/show_msg.inc set @test_var=1; - Create trigger trg9_1 BEFORE DELETE + Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; - --error ER_NOT_SUPPORTED_YET - Create trigger trg9_2 BEFORE DELETE + --error ER_NOT_SUPPORTED_YET + Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; select @test_var; @@ -550,29 +550,29 @@ let $message= Testcase 3.5.7.13/14:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg9_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg9_2; delete from tb3 where f121='Test 3.5.7.13/14'; #Section 3.5.7.15 / 3.5.7.16 -# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers -# on the same table, even if the triggers have different names / different +# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers +# on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.15/16:; --source include/show_msg.inc set @test_var=1; - Create trigger trg_3_406010_1 AFTER DELETE + Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; - --error ER_NOT_SUPPORTED_YET - Create trigger trg_3_406010_2 AFTER DELETE + --error ER_NOT_SUPPORTED_YET + Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; - --error 1359 - Create trigger trg_3_406010_1 AFTER INSERT + --error ER_TRG_ALREADY_EXISTS + Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; select @test_var; @@ -586,18 +586,18 @@ let $message= Testcase 3.5.7.15/16:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg_3_406010_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg_3_406010_2; delete from tb3 where f121='Test 3.5.7.15/16'; --enable_warnings #Section 3.5.7.17 -# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, -# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE -# trigger on the same table; that is, ensure that every persistent base +# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, +# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE +# trigger on the same table; that is, ensure that every persistent base # table may be the subject table for exactly six triggers let $message= Testcase 3.5.7.17 (see Testcase 3.5.1.1); --source include/show_msg.inc diff --git a/mysql-test/suite/funcs_1/triggers/triggers_08.inc b/mysql-test/suite/funcs_1/triggers/triggers_08.inc index 300080e455d..48db2cbf566 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_08.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_08.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== # General setup for Trigger tests @@ -29,22 +29,20 @@ let $message= Testcase: 3.5:; ################################# #Section 3.5.8.1 -# Testcase: Ensure that the triggered action of every trigger always executes +# Testcase: Ensure that the triggered action of every trigger always executes # correctly and the results in all expected changes made to the database let $message= Testcase 3.5.8.1: (implied in previous tests); --source include/show_msg.inc -# OBN - FIXME - Missing 3.5.8.1 need to add - #Section 3.5.8.2 -# Testcase: Ensure that the triggered actions of every trigger never results +# Testcase: Ensure that the triggered actions of every trigger never results # in an unexpected change made to the database. let $message= Testcase 3.5.8.2: (implied in previous tests); --source include/show_msg.inc #Section 3.5.8.3 / 3.5.8.4 -#Test case: Ensure that the triggered action can any valid SQL statement / set +#Test case: Ensure that the triggered action can any valid SQL statement / set # of valid SQL statements, provided the statements are written within # a BEGIN/END compound statement construct # OBN - At this point the tests focuses on the the INSERT/UPDATE/DELETE SQL statements @@ -58,17 +56,17 @@ let $message= Testcase 3.5.8.3/4:; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; - eval create table t1_i ( + eval create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=$engine_type; - eval create table t1_u ( + eval create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=$engine_type; - eval create table t1_d ( + eval create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -93,26 +91,29 @@ let $message= 3.5.8.4 - multiple SQL; delimiter //; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN - insert into db_test.t1_i + insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); - update db_test.t1_u + update db_test.t1_u set u144=new.f144, u163=new.f163 - where u136=new.f136; + where u136=new.f136; delete from db_test.t1_d where d136= new.f136; - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; - END// + select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u + where u136= new.f136; + END// delimiter ;// # Test trigger execution - multiple SQL connection con2_general; Use test; set @test_var=0; - Insert into tb3 (f120, f122, f136, f144, f163) + Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; + --sorted_result select * from db_test.t1_i; + --sorted_result select * from db_test.t1_u; + --sorted_result select * from db_test.t1_d; select @test_var; @@ -121,16 +122,22 @@ let $message= 3.5.8.4 - single SQL - insert; --source include/show_msg.inc # Trigger definition - single SQL Insert connection con2_super; + delimiter //; Create trigger trg2 BEFORE UPDATE on tb3 for each row - insert into db_test.t1_i + BEGIN + insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); + END// + delimiter ;// # Trigger exeution - single SQL Insert connection con2_general; + Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; + select * from db_test.t1_i order by i120; update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_i; + select * from db_test.t1_i order by i120; let $message= 3.5.8.4 - single SQL - update; @@ -139,16 +146,16 @@ let $message= 3.5.8.4 - single SQL - update; connection con2_super; drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row - update db_test.t1_u + update db_test.t1_u set u120=new.f120 - where u136=new.f136; + where u136=new.f136; # Trigger exeution - single SQL - update; connection con2_general; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' where f122='Test 3.5.8.4-Single Insert'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_u; + select * from db_test.t1_u order by u120; let $message= 3.5.8.3/4 - single SQL - delete; @@ -162,12 +169,12 @@ let $message= 3.5.8.3/4 - single SQL - delete; # Trigger exeution - single SQL delete connection con2_general; #lock tables tb3 write, db_test.t1_i write, db_test.t1_u write, db_test.t1_d write; - update tb3 set f120='D', f136=444, + update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; #unlock tables; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_d; + select * from db_test.t1_d order by d120; let $message= 3.5.8.3/4 - single SQL - select; @@ -176,13 +183,13 @@ let $message= 3.5.8.3/4 - single SQL - select; connection con2_super; drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; + select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u + where u136= new.f136; # Trigger exeution - single SQL select connection con2_general; set @test_var=0; - update tb3 set f120='S', f136=111, + update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -190,7 +197,7 @@ let $message= 3.5.8.3/4 - single SQL - select; #Cleanup connection default; - --disable_warnings + --disable_warnings drop trigger trg1; drop trigger trg5; drop database if exists db_test; @@ -200,8 +207,8 @@ let $message= 3.5.8.3/4 - single SQL - select; #Section 3.5.8.5 (IF) -# Test case: Ensure that the stored procedure-specific flow control statement like IF -# works correctly when it is a part of the triggered action portion of a +# Test case: Ensure that the stored procedure-specific flow control statement like IF +# works correctly when it is a part of the triggered action portion of a # trigger definition. let $message= Testcase 3.5.8.5 (IF):; --source include/show_msg.inc @@ -219,7 +226,7 @@ let $message= Testcase 3.5.8.5 (IF):; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; - ELSE + ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// @@ -227,50 +234,50 @@ let $message= Testcase 3.5.8.5 (IF):; set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; delimiter //; - --error 1064 + --error ER_PARSE_ERROR create trigger trg3 before update on tb3 for each row BEGIN ELSEIF new.f120='2' then END IF; END// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3// - --error 1064 + --error ER_PARSE_ERROR create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; - ELSE + ELSE set @test_var2='2nd else', new.f120='D'; END// delimiter ;// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg2; delete from tb3 where f121='Test 3.5.8.5-if'; --enable_warnings #Section 3.5.8.5 (CASE) -# Test case: Ensure that the stored procedure-specific flow control statement -# like CASE works correctly when it is a part of the triggered action +# Test case: Ensure that the stored procedure-specific flow control statement +# like CASE works correctly when it is a part of the triggered action # portion of a trigger definition. let $message= Testcase 3.5.8.5-case:; --source include/show_msg.inc @@ -310,34 +317,34 @@ let $message= Testcase 3.5.8.5-case:; delimiter ;// set @test_var='Empty'; - Insert into tb3 (f120, f122, f136, f144) + Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - --error 0, 1339 - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + --error 0, ER_SP_CASE_NOT_FOUND + Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; delimiter //; - --error 1064 + --error ER_PARSE_ERROR create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -345,11 +352,11 @@ let $message= Testcase 3.5.8.5-case:; END// delimiter ;// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3a; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg3; delete from tb3 where f121='Test 3.5.8.5-case'; --enable_warnings @@ -363,53 +370,53 @@ let $message= Testcase 3.5.8.5-loop/leave:; delimiter //; Create trigger trg4 after insert on tb3 for each row - BEGIN + BEGIN set @counter=0, @flag='Initial'; - Label1: loop + Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// delimiter ;// set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) + Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; delimiter //; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg6_2 after update on tb3 for each row BEGIN - REPEAT - SET @counter2 = @counter2 + 1; + REPEAT + SET @counter2 = @counter2 + 1; END// delimiter ;// #Cleanup - --disable_warnings + --disable_warnings drop trigger trg6; delete from tb3 where f122='Test 3.5.8.5-repeat'; --enable_warnings #Section 3.5.8.5 (WHILE) -# Test case: Ensure that the stored procedure-specific flow control -# statements WHILE, work correctly when they are part of +# Test case: Ensure that the stored procedure-specific flow control +# statements WHILE, work correctly when they are part of # the triggered action portion of a trigger definition. let $message= Testcase 3.5.8.5-while:; --source include/show_msg.inc delimiter //; Create trigger trg7 after insert on tb3 for each row - wl_label: WHILE @counter1 < new.f136 DO - SET @counter1 = @counter1 + 1; + wl_label: WHILE @counter1 < new.f136 DO + SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; - SET @counter2 = @counter2 + 1; + SET @counter2 = @counter2 + 1; END WHILE wl_label// delimiter ;// set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) + Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; delimiter //; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg7_2 after update on tb3 for each row BEGIN - WHILE @counter1 < new.f136 - SET @counter1 = @counter1 + 1; + WHILE @counter1 < new.f136 + SET @counter1 = @counter1 + 1; END// delimiter ;// #Cleanup - --disable_warnings + --disable_warnings delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; --enable_warnings #Section 3.5.8.6 -# Test case: Ensure that a trigger definition that includes a CALL to a stored -# procedure fails, at CREATE TRIGGER time, with an appropriate error -# message -# OBN - requirement void since allowed -# Fails due to Bug 9909 the bug allows the trigger to be created -# and fails in execution time +# Test case: Ensure that a trigger definition that includes a CALL to a stored +# procedure fails, at CREATE TRIGGER time, with an appropriate error +# message. Not more valid requirement. let $message= Testcase 3.5.8.6: (requirement void); --source include/show_msg.inc + delimiter //; + CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// + + CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW + BEGIN + CALL sp_01 (); + END// + delimiter ;// + Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); + update tb3 set f120='S', f136=111, + f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; + select f120, f122 + from tb3 where f122 like 'Test 3.5.8.6%' order by f120; + DROP TRIGGER trg8_1; + DROP PROCEDURE sp_01; #Section 3.5.8.7 -# Test case: Ensure that a trigger definition that includes a -# transaction-delimiting statement (e.g. COMMIT, -# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER +# Test case: Ensure that a trigger definition that includes a +# transaction-delimiting statement (e.g. COMMIT, +# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER # time, with an appropriate error message. -# OBN - Fails due to Bug ____ -let $message= Testcase 3.5.8.7: (Disabled as a result of bug _____); +let $message= Testcase 3.5.8.7; --source include/show_msg.inc + + delimiter //; + --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + Create trigger trg9_1 before update on tb3 for each row + BEGIN + Start transaction; + Set new.f120='U'; + Commit; + END// -# --error 1314 -# Create trigger trg9_1 before update on tb3 for each row -# BEGIN -# Start transaction; -# Set new.f120='U'; -# Commit; -# END; - -# --error 1314 -# Create trigger trg9_2 before delete on tb3 for each row -# BEGIN -# Start transaction; -# Set @var2=old.f120; -# Rollback; -# END; + --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + Create trigger trg9_2 before delete on tb3 for each row + BEGIN + Start transaction; + Set @var2=old.f120; + Rollback; + END// + delimiter ;// # Cleanup section 3.5 diff --git a/mysql-test/suite/funcs_1/triggers/triggers_09.inc b/mysql-test/suite/funcs_1/triggers/triggers_09.inc index 4eaaf3e35e2..c84b89fa457 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_09.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_09.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== @@ -11,15 +11,15 @@ ################################# #Section 3.5.9.1 -#Test case: Ensure that every trigger executes its triggered action on each row +#Test case: Ensure that every trigger executes its triggered action on each row # that meets the conditions stated in the trigger definition. #Section 3.5.9.2 -#Testcase: Ensure that a trigger never executes its triggered action on any row +#Testcase: Ensure that a trigger never executes its triggered action on any row # that doesn't meet the conditions stated in the trigger definition. let $message= Testcase 3.5.9.1/2:; --source include/show_msg.inc - Create trigger trg1 BEFORE UPDATE on tb3 for each row + Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; --disable_query_log select count(*) as TotalRows from tb3; @@ -29,22 +29,22 @@ let $message= Testcase 3.5.9.1/2:; --enable_query_log set @counter=0; Update tb3 Set f142='1' where f130<100; - select count(*) as ExpectedChanged, @counter as TrigCounter + select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; - select count(*) as ExpectedNotChange from tb3 + select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; - select count(*) as NonExpectedChanged from tb3 + select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg1; --enable_warnings #Section 3.5.9.3 -#Test case: Ensure that a reference to OLD. always correctly refers -# to the values of the specified column of the subject table before a +#Test case: Ensure that a reference to OLD. always correctly refers +# to the values of the specified column of the subject table before a # data row is updated or deleted. let $message= Testcase 3.5.9.3:; --source include/show_msg.inc @@ -71,46 +71,46 @@ let $message= Testcase 3.5.9.3:; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --enable_query_log - Insert into tb3 (f122, f136, f163) + Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; - select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --enable_query_log delete from tb3 where f122='Test 3.5.9.3'; - select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg2_a; drop trigger trg2_b; drop trigger trg2_c; @@ -118,8 +118,8 @@ let $message= Testcase 3.5.9.3:; --enable_warnings #Section 3.5.9.4 -#Test case: Ensure that a reference to NEW. always correctly refers -# to the values of the specified column of the subject table after an +#Test case: Ensure that a reference to NEW. always correctly refers +# to the values of the specified column of the subject table after an # existing data row has been updated or a new data row has been inserted. let $message= Testcase 3.5.9.4:; --source include/show_msg.inc @@ -145,48 +145,48 @@ let $message= Testcase 3.5.9.4:; @tr_var_af_151=new.f151, @tr_var_af_163=new.f163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --enable_query_log - Insert into tb3 (f122, f136, f151, f163) + Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); - select f118, f121, f122, f136, f151, f163 from tb3 - where f122 like 'Test 3.5.9.4%'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f151, f163 from tb3 + where f122 like 'Test 3.5.9.4%' order by f163; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --enable_query_log Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; - select f118, f121, f122, f136, f151, f163 from tb3 - where f122 like 'Test 3.5.9.4-trig'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f151, f163 from tb3 + where f122 like 'Test 3.5.9.4-trig' order by f163; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg3_a; drop trigger trg3_b; drop trigger trg3_c; @@ -196,121 +196,119 @@ let $message= Testcase 3.5.9.4:; #Section 3.5.9.5 -# Test case: Ensure that the definition of an INSERT trigger can include a +# Test case: Ensure that the definition of an INSERT trigger can include a # reference to NEW. . let $message= Testcase 3.5.9.5: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.6 -# Test case: Ensure that the definition of an INSERT trigger cannot include +# Test case: Ensure that the definition of an INSERT trigger cannot include # a reference to OLD. . let $message= Testcase 3.5.9.6:; --source include/show_msg.inc - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg4a before insert on tb3 for each row set @temp1= old.f120; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg4b after insert on tb3 for each row set old.f120= 'test'; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4b; --enable_warnings #Section 3.5.9.7 -# Test case: Ensure that the definition of an UPDATE trigger can include a +# Test case: Ensure that the definition of an UPDATE trigger can include a # reference to NEW. . let $message= Testcase 3.5.9.7: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.8 -# Test case: Ensure that the definition of an UPDATE trigger cannot include a +# Test case: Ensure that the definition of an UPDATE trigger cannot include a # reference to OLD. . let $message= Testcase 3.5.9.8: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.9 -# Test case: Ensure that the definition of a DELETE trigger cannot include a +# Test case: Ensure that the definition of a DELETE trigger cannot include a # reference to NEW.. let $message= Testcase 3.5.9.9:; --source include/show_msg.inc - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg5a before DELETE on tb3 for each row set @temp1=new.f122; - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; -let $message= The above returns the wrong error, should be error 1362 (Bug 11648) ---source include/show_msg.inc #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5b; --enable_warnings #Section 3.5.9.10 -# Test case: Ensure that the definition of a DELETE trigger can include a reference +# Test case: Ensure that the definition of a DELETE trigger can include a reference # to OLD.. let $message= Testcase 3.5.9.10: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.11 -# Testcase: Ensure that trigger definition that includes a referance to -# NEW. fails with an appropriate error message, +# Testcase: Ensure that trigger definition that includes a referance to +# NEW. fails with an appropriate error message, # at CREATE TRIGGER time, if the trigger event in not INSERT or UPDATE let $message= Testcase 3.5.9.11: covered by 3.5.9.9; --source include/show_msg.inc #Section 3.5.9.12 -# Testcase: Ensure that trigger definition that includes a referance to -# OLD. fails with an appropriate error message, at +# Testcase: Ensure that trigger definition that includes a referance to +# OLD. fails with an appropriate error message, at # CREATE TRIGGER time, if the trigger event is not DELETE or UPDATE let $message= Testcase 3.5.9.12: covered by 3.5.9.6; --source include/show_msg.inc #Section 3.5.9.13 -# Test case: Ensure that all references to OLD. are read-only, +# Test case: Ensure that all references to OLD. are read-only, # that is, that they cannot be used to modify a data row. let $message= Testcase 3.5.9.13:; --source include/show_msg.inc - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6a before UPDATE on tb3 for each row set old.f118='C', new.f118='U'; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6b after INSERT on tb3 for each row set old.f136=163, new.f118='U'; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6c after UPDATE on tb3 for each row set old.f136=NULL; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6b; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6c; --enable_warnings #Section 3.5.9.14 -# Test case: Ensure that all references to NEW. may be used both to +# Test case: Ensure that all references to NEW. may be used both to # read a data row and to modify a data row let $message= Testcase 3.5.9.14: (implied in previous tests); --source include/show_msg.inc diff --git a/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc b/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc index 534c4efaa86..b568fc422e4 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc @@ -48,7 +48,7 @@ let $message= Testcase 3.5.10.1/2/3:; Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 - from tb3 where f122 like 'Test 3.5.10.1/2/3%'; + from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; select f121, f122, f151, f163 from vw11; select f121, f122, f151, f163 from tb3 where f122 like 'Not in View'; @@ -56,7 +56,7 @@ let $message= Testcase 3.5.10.1/2/3:; #Section 3.5.10.2 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; + where f122 like 'Test 3.5.10.1/2/3%' order by f151; select f121, f122, f151, f163 from vw11; #Section 3.5.10.3 @@ -64,7 +64,7 @@ let $message= Testcase 3.5.10.1/2/3:; Select @test_var as 'before delete'; delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; + where f122 like 'Test 3.5.10.1/2/3%' order by f151; select f121, f122, f151, f163 from vw11; Select @test_var as 'after delete'; @@ -94,11 +94,11 @@ let $message= Testcase 3.5.10.4:; set @counter= 0; select @counter as 'Rows Loaded Before'; - --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR - eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; + --replace_result $MYSQLTEST_VARDIR + eval load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; - Select * from tb_load limit 10; + Select * from tb_load order by f1 limit 10; #Cleanup --disable_warnings @@ -157,7 +157,7 @@ let $message= Testcase 3.5.10.extra:; set @counter=0; select @counter; - --error 1329 + --error ER_SP_FETCH_NO_DATA call trig_sp(); select @counter; select count(*) from tb3; @@ -233,7 +233,7 @@ let $message= Testcase y.y.y.2: Check for triggers starting triggers; #lock tables t1 write, t2_1 write, t2_2 write, t2_3 write, t2_4 write, t3 write; insert into t1 values (1); #unlock tables; - select * from t3; + select * from t3 order by f1; #Cleanup --disable_warnings @@ -271,13 +271,13 @@ let $message= Testcase y.y.y.3: Circular trigger reference; create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); - # OBN See bug 11896 - --error 1442 + # Bug#11896 Partial locking in case of recursive trigger definittions + --error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG insert into t1 values (1); - select * from t1; - select * from t2; - select * from t3; - select * from t4; + select * from t1 order by f1; + select * from t2 order by f2; + select * from t3 order by f3; + select * from t4 order by f4; #Cleanup --disable_warnings @@ -294,7 +294,7 @@ let $message= Testcase y.y.y.3: Circular trigger reference; #Section y.y.y.4 # Testcase: create recursive trigger/storedprocedures conditions -let $message= Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889); +let $message= Testcase y.y.y.4: Recursive trigger/SP references; --source include/show_msg.inc set @sql_mode='traditional'; @@ -327,7 +327,7 @@ set @sql_mode='traditional'; set @counter=0; select @counter; - --error 1456 + --error ER_SP_RECURSION_LIMIT call trig_sp(); select @counter; select count(*) from tb3; @@ -337,7 +337,7 @@ set @sql_mode='traditional'; set @@max_sp_recursion_depth= 10; set @counter=0; select @counter; - --error 1442 + --error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG call trig_sp(); select @counter; select count(*) from tb3; @@ -381,12 +381,12 @@ let $message= Testcase y.y.y.5: Roleback of nested trigger references; set autocommit=0; start transaction; - --error 1264 + --error ER_WARN_DATA_OUT_OF_RANGE insert into t1 values (1); commit; - select * from t1; - select * from t2; - select * from t3; + select * from t1 order by f1; + select * from t2 order by f2; + select * from t3 order by f3; #unlock tables; #Cleanup --disable_warnings diff --git a/mysql-test/suite/funcs_1/triggers/triggers_master.test b/mysql-test/suite/funcs_1/triggers/triggers_master.test deleted file mode 100644 index 0f6d4ff555f..00000000000 --- a/mysql-test/suite/funcs_1/triggers/triggers_master.test +++ /dev/null @@ -1,2818 +0,0 @@ -#====================================================================== -# -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) -#====================================================================== - -# OBM - ToDo -############ -# 1. Information Schema Trigger Table -# 2. Performace -############################################### - -# General setup for Trigger tests -let $message= Testcase: 3.5:; ---source include/show_msg.inc - ---disable_abort_on_error - - create User test_general@localhost; - set password for test_general@localhost = password('PWD'); - revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost; - - create User test_super@localhost; - set password for test_super@localhost = password('PWD'); - grant ALL on *.* to test_super@localhost with grant OPTION; - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (con_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (con_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - -##################################################### -################# Section 3.5.1 ##################### -# Syntax checks for CREATE TRIGGER and DROP TRIGGER # -##################################################### - -#Section 3.5.1.1 -# Testcase: Ensure that all clauses that should be supported are supported. -let $message= Testcase: 3.5.1.1:; ---source include/show_msg.inc -# OBN - This test case tests basic trigger definition and execution -# of INSERT/UPDATE/DELETE actions and BEFORE/AFTER timings. -# As such it covers the equirements in sections 3.5.6.1, 3.5.6.2, -# 3.5.6.4, 3.5.6.5, 3.5.7.1, 3.5.7.2, 3.5.7.3, 3.5.7.17 below. -# - Note currently as a result of limitations with locking tables in -# triggers, a specifc lockingof the tables is done. -# Once fixed, the locking and alias referances should be removed - -use test; -# Trigger Definition - Create trigger trg1_1 BEFORE INSERT - on tb3 for each row set @test_before = 2, new.f142 = @test_before; - Create trigger trg1_2 AFTER INSERT - on tb3 for each row set @test_after = 6; - Create trigger trg1_4 BEFORE UPDATE - on tb3 for each row set @test_before = 27, - new.f142 = @test_before, - new.f122 = 'Before Update Trigger'; - Create trigger trg1_3 AFTER UPDATE - on tb3 for each row set @test_after = '15'; - Create trigger trg1_5 BEFORE DELETE on tb3 for each row - select count(*) into @test_before from tb3 as tr_tb3 - where f121 = 'Test 3.5.1.1'; - Create trigger trg1_6 AFTER DELETE on tb3 for each row - select count(*) into @test_after from tb3 as tr_tb3 - where f121 = 'Test 3.5.1.1'; -# Trigger Execution Insert (before and after) - set @test_before = 1; - set @test_after = 5; - select @test_before, @test_after; - Insert into tb3 (f121, f122, f142, f144, f134) - values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); - select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; - select @test_before, @test_after; - -# Trigger Execution Update (before and after) - set @test_before = 18; - set @test_after = 8; - select @test_before, @test_after; - Update tb3 set tb3.f122 = 'Update', - tb3.f142 = @test_before, - tb3.f144 = @test_after - where tb3.f121 = 'Test 3.5.1.1'; - select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; - select @test_before, @test_after; - -# Trigger Execution Delete (before and after) - Insert into tb3 (f121, f122, f142, f144, f134) - values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); - set @test_before = 0; - set @test_after = 0; - select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; - select @test_before, @test_after; - Delete from tb3 where f121 = 'Test 3.5.1.1' and f134 = 2; - select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; - select @test_before, @test_after; - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg1_1; - --error 0, 1360 - drop trigger trg1_2; - --error 0, 1360 - drop trigger trg1_3; - --error 0, 1360 - drop trigger trg1_4; - --error 0, 1360 - drop trigger trg1_5; - --error 0, 1360 - drop trigger trg1_6; - --enable_warnings - delete from tb3 where f121='Test 3.5.1.1'; - --enable_warnings - -#Section 3.5.1.2 -# Testcase: Ensure that all clauses that should not be supported are disallowed -# with an appropriate error message. -let $message= Testcase: 3.5.1.2:; ---source include/show_msg.inc - - --error 1064 - Create trigger trg_1 after insert - on tb3 for each statement set @x= 1; - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg_1; - --enable_warnings - - -#Section 3.5.1.3 -# Testcase: Ensure that all supported clauses are supported only in the correct order. -let $message= Testcase 3.5.1.3:; ---source include/show_msg.inc - --error 1064 - CREATE TRIGGER trg3_1 on tb3 BEFORE INSERT for each row set new.f120 = 't'; - - --error 1064 - CREATE trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's'; - - --error 1064 - CREATE TRIGGER trg3_3 Before DELETE on tb3 set @ret1 = 'test' for each row; - - --error 1064 - CREATE TRIGGER trg3_4 DELETE AFTER on tb3 set @ret1 = 'test' for each row; - - --error 1064 - CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'; - -#Cleanup -# OBN - Although none of the above should have been created we should do a cleanup -# since if they have been created, not dropping them will affect following -# tests. - --disable_warnings - --error 0, 1360 - drop trigger trg3_1; - --error 0, 1360 - drop trigger trg3_2; - --error 0, 1360 - drop trigger trg3_3; - --error 0, 1360 - drop trigger trg3_4; - --error 0, 1360 - drop trigger trg3_5; - --enable_warnings - - -#Section 3.5.1.4 -# Testcase: Ensure that an appropriate error message is returned if a clause -# is out-of-order in an SQL statement. -# OBN - FIXME - Missing 3.5.1.4 need to add - -#Section 3.5.1.5 -# Testcase: Ensure that all clauses that are defined to be mandatory are indeed -# required to be mandatory by the MySQL server and tools -let $message= Testcase: 3.5.1.5:; ---source include/show_msg.inc - - --error 1064 - CREATE TRIGGER trg4_1 AFTER on tb3 for each row set new.f120 = 'e'; - - --error 1064 - CREATE TRIGGER trg4_2 INSERT on tb3 for each set row new.f120 = 'f'; - - --error 1064 - CREATE TRIGGER trg4_3 BEFORE INSERT tb3 for each row set new.f120 = 'g'; - - --error 1064 - CREATE TRIGGER trg4_4 AFTER UPDATE on tb3 for each set new.f120 = 'g'; - - --error 1064 - CREATE trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g'; - - --error 1064 - CREATE TRIGGER trg4_6 BEFORE DELETE for each row set new.f120 = 'g'; - -#Cleanup -# OBN - Although none of the above should have been created we should do a cleanup -# since if they have been created, not dropping them will affect following -# tests. - --disable_warnings - --error 0, 1360 - drop trigger trg4_1; - --error 0, 1360 - drop trigger trg4_2; - --error 0, 1360 - drop trigger trg4_3; - --error 0, 1360 - drop trigger trg4_4; - --error 0, 1360 - drop trigger trg4_5; - --error 0, 1360 - drop trigger trg4_6; - --enable_warnings - -#Section 3.5.1.6 -# Testcase: Ensure that any clauses that are defined to be optional are indeed -# trated as optional by MySQL server and tools -let $message= Testcase 3.5.1.6: - Need to fix; ---source include/show_msg.inc -# OBN - FIXME - Missing 3.5.1.6 need to add - -#Section 3.5.1.7 -# Testcase: Ensure that all valid, fully-qualified, and non-qualified, -# trigger names are accepted, at creation time. -let $message= Testcase 3.5.1.7: - need to fix; ---source include/show_msg.inc - - drop table if exists t1; - eval create table t1 (f1 int, f2 char(25),f3 int) engine=$engine_type; - CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 - for each row set new.f3 = '14'; - CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ - BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; - - insert into t1 (f2) values ('insert 3.5.1.7'); - select * from t1; - update t1 set f2='update 3.5.1.7'; - select * from t1; - select trigger_name from information_schema.triggers; - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg5_1; - # The above trigger should be dropped since the name was trimmed. - drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ; - drop table t1; - -#Section 3.5.1.8 -# Testcase: Ensure that any invalid trigger name is never accepted, and that an -# appropriate error message is returned when the name is rejected. -let $message= Testcase 3.5.1.8:; ---source include/show_msg.inc - - --error 1064 - CREATE TRIGGER trg12* before insert on tb3 for each row set new.f120 = 't'; - - --error 1064 - CREATE TRIGGER trigger before insert on tb3 for each row set new.f120 = 't'; - - --error 1064 - CREATE TRIGGER 100 before insert on tb3 for each row set new.f120 = 't'; - - --error 1064 - CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; - - --error 1064 - CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; - - --error 1435 - CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 - for each row set new.f120 ='X'; - - --disable_warnings - drop database if exists trig_db; - --enable_warnings - create database trig_db; - use trig_db; - eval create table t1 (f1 integer) engine = $engine_type; - - # Can't create a trigger in a different database - use test; - --error 1435 - CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 - for each row set @ret_trg6_2 = 5; - - # Can't create a trigger refrencing a table in a different db - use trig_db; - --error 1435 - CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 - for each row set @ret_trg6_3 = 18; - - use test; - -#Cleanup - --disable_warnings - drop database trig_db; -# OBN - Although none of the above should have been created we should do a cleanup -# since if they have been created, not dropping them will affect following -# tests. - --error 0, 1360 - drop trigger trg6_1; - --error 0, 1360 - drop trigger trg6_3; - --enable_warnings - -#Section 3.5.1.9 -#Testcase: Ensure that a reference to a non-existent trigger is rejected with -# an appropriate error message. -let $message= Testcase 3.5.1.9:(cannot be inplemented at this point); ---source include/show_msg.inc - - -#Section 3.5.1.10 -#Testcase: Ensure that it is not possible to create two triggers with the same name on -# the same table -let $message= Testcase 3.5.1.10:; ---source include/show_msg.inc - - CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X'; - - --error 1359 - CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y'; - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg7_1; - --enable_warnings - - -#Section 3.5.1.? -# Testcase: Ensure that it is not possible to create two or more triggers with -# the same name, provided each is associated with a different table. -let $message= Testcase 3.5.1.?:; ---source include/show_msg.inc - - --disable_warnings - drop table if exists t1; - drop table if exists t2; - --enable_warnings - eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - eval create table t2 (f1 char(50), f2 integer) engine = $engine_type; - - create trigger trig before insert on t1 - for each row set new.f1 ='trig t1'; - - --error 1359 - create trigger trig before update on t2 - for each row set new.f1 ='trig t2'; - - insert into t1 value ('insert to t1',1); - select * from t1; - update t1 set f1='update to t1'; - select * from t1; - insert into t2 value ('insert to t2',2); - update t2 set f1='update to t1'; - select * from t2; - -#Cleanup - --disable_warnings - drop table t1; - drop table t2; - --error 0, 1360 - drop trigger trig; - --enable_warnings - - -#Section 3.5.1.11 -# Testcase: Ensure that it is possible to create two or more triggers with -# the same name, provided each resides in a different database -let $message= Testcase 3.5.1.11:; ---source include/show_msg.inc - - --disable_warnings - drop database if exists trig_db1; - drop database if exists trig_db2; - drop database if exists trig_db3; - --enable_warnings - create database trig_db1; - create database trig_db2; - create database trig_db3; - use trig_db1; - eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 - for each row set new.f1 ='trig1', @test_var1='trig1'; - use trig_db2; - eval create table t2 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t2 - for each row set new.f1 ='trig2', @test_var2='trig2'; - use trig_db3; - eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 - for each row set new.f1 ='trig3', @test_var3='trig3'; - - set @test_var1= '', @test_var2= '', @test_var3= ''; - use trig_db1; - insert into t1 (f1,f2) values ('insert to db1 t1',1); - insert into trig_db1.t1 (f1,f2) values ('insert to db1 t1 from db1',2); - insert into trig_db2.t2 (f1,f2) values ('insert to db2 t2 from db1',3); - insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); - select @test_var1, @test_var2, @test_var3; - select * from t1; - select * from trig_db2.t2; - select * from trig_db3.t1; - select * from t1; - use test; - -#Cleanup - --disable_warnings - drop database trig_db1; - drop database trig_db2; - drop database trig_db3; - --enable_warnings - -########################################### -################ Section 3.5.2 ############ -# Check for the global nature of Triggers # -########################################### - -#Section 3.5.2.1 -# Test case: Ensure that if a trigger created without a qualifying database -# name belongs to the database in use at creation time. -#Section 3.5.2.2 -# Test case: Ensure that if a trigger created with a qualifying database name -# belongs to the database specified. -#Section 3.5.2.3 -# Test case: Ensure that if a trigger created with a qualifying database name -# does not belong to the database in use at creation time unless -# the qualifying database name identifies the database that is -# also in use at creation time. -let $message= Testcase 3.5.2.1/2/3:; ---source include/show_msg.inc - - - --disable_warnings - drop database if exists trig_db1; - drop database if exists trig_db2; - --enable_warnings - create database trig_db1; - create database trig_db2; - use trig_db1; - eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - eval create table trig_db2.t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig1_b before insert on t1 - for each row set @test_var1='trig1_b'; - create trigger trig_db1.trig1_a after insert on t1 - for each row set @test_var2='trig1_a'; - create trigger trig_db2.trig2 before insert on trig_db2.t1 - for each row set @test_var3='trig2'; - select trigger_schema, trigger_name, event_object_table - from information_schema.triggers; - - set @test_var1= '', @test_var2= '', @test_var3= ''; - insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); - insert into trig_db2.t1 (f1,f2) values ('insert to db2 t1 from db1',352); - select @test_var1, @test_var2, @test_var3; - -#Cleanup - --disable_warnings - drop database trig_db1; - drop database trig_db2; - -########################################### -################ Section 3.5.3 ############ -# Check for the global nature of Triggers # -########################################### - -# General setup to be used in all testcases of 3.5.3 -let $message= Testcase 3.5.3:; ---source include/show_msg.inc - - --disable_warnings - drop database if exists priv_db; - --enable_warnings - create database priv_db; - use priv_db; - create table t1 (f1 char(20)); - - create User test_noprivs@localhost; - set password for test_noprivs@localhost = password('PWD'); - - create User test_yesprivs@localhost; - set password for test_yesprivs@localhost = password('PWD'); - -#Section 3.5.3.1 / 3.5.3.2 -# Test case: Ensure SUPER privilege is required to create a trigger -#Section 3.5.3.3 / 3.5.3.4 -# Test case: Ensure that root always has the SUPER privilege. -# OMR - No need to test this since SUPER priv is an existing one and not related -# or added for triggers (TP 2005-06-06) -#Section 3.5.3.5 / 3.5.3.6 -# Test case: Ensure that the SUPER privilege is required to drop a trigger. -let $message= Testcase 3.5.3.2/6:; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant ALL on *.* to test_noprivs@localhost; - revoke SUPER on *.* from test_noprivs@localhost; - show grants for test_noprivs@localhost; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; -# Adding the minimal priv to be able to set to the db - grant SELECT on priv_db.t1 to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - -let $message= Testcase 3.5.3.2:; ---source include/show_msg.inc - - connection no_privs; - select current_user; - use priv_db; - - --error 1227 - create trigger trg1_1 before INSERT on t1 for each row - set new.f1 = 'trig 3.5.3.2_1-no'; - - connection default; - use priv_db; - insert into t1 (f1) values ('insert 3.5.3.2-no'); - select f1 from t1; - - connection yes_privs; - select current_user; - use priv_db; - - create trigger trg1_2 before INSERT on t1 for each row - set new.f1 = 'trig 3.5.3.2_2-yes'; - - connection default; - use priv_db; - insert into t1 (f1) values ('insert 3.5.3.2-yes'); - select f1 from t1; - -let $message= Testcase 3.5.3.6:; ---source include/show_msg.inc - - connection no_privs; - use priv_db; - - --error 1227 - drop trigger trg1_2; - - connection default; - use priv_db; - insert into t1 (f1) values ('insert 3.5.3.6-yes'); - select f1 from t1; - - connection yes_privs; - use priv_db; - - drop trigger trg1_2; - - connection default; - use priv_db; - insert into t1 (f1) values ('insert 3.5.3.6-no'); - select f1 from t1; - -# Cleanup - --disable_warnings - connection default; - --error 0, 1360 - drop trigger trg1_2; - disconnect no_privs; - disconnect yes_privs; - --enable_warnings - - -#Section 3.5.3.7 -# Test case: Ensure that use of the construct "SET NEW. = " -# fails at CREATE TRIGGER time, if the current user does not have the -# UPDATE privilege on the column specified -# Note: As a result of bug 8884 the triggers are actually created. -# Disabled because of bug 8884 - -# --- 3.5.3.7a - Privs set on a global level -let $message=Testcase 3.5.3.7a:; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant ALL on *.* to test_noprivs@localhost; - revoke UPDATE on *.* from test_noprivs@localhost; - show grants for test_noprivs@localhost; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER, UPDATE on *.* to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_424a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_424a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - - connection no_privs_424a; - select current_user; - use priv_db; - show grants; - select f1 from t1; - -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4a_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1a'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-1a'); - select f1 from t1; - --error 0, 1360 - drop trigger trg4a_1; - - connection yes_privs_424a; - use priv_db; - select current_user; - show grants; - create trigger trg4a_2 before INSERT on t1 for each row - set new.f1 = 'trig 3.5.3.7-2a'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-2b'); - select f1 from t1; - -# Cleanup - --disable_warnings - drop trigger trg4a_2; - disconnect no_privs_424a; - disconnect yes_privs_424a; - --enable_warnings - -# --- 3.5.3.7b - Privs set on a database level -let $message= Testcase 3.5.3.7b:; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant SUPER on *.* to test_noprivs; - grant ALL on priv_db.* to test_noprivs@localhost; - revoke UPDATE on priv_db.* from test_noprivs@localhost; - show grants for test_noprivs; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; - grant UPDATE on priv_db.* to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_424b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_424b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_424b; - show grants; - use priv_db; - -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4b_1 before UPDATE on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1b'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-1b'); - select f1 from t1; - update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; - select f1 from t1; - --error 0, 1360 - drop trigger trg4b_1; - - connection yes_privs_424b; - show grants; - use priv_db; - create trigger trg4b_2 before UPDATE on t1 for each row - set new.f1 = 'trig 3.5.3.7-2b'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-2b'); - select f1 from t1; - update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; - select f1 from t1; -# Cleanup - --disable_warnings - drop trigger trg4b_2; - disconnect no_privs_424b; - disconnect yes_privs_424b; - --enable_warnings - -# --- 3.5.3.7c - Privs set on a table level -let $message= Testcase 3.5.3.7c; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant SUPER on *.* to test_noprivs@localhost; - grant ALL on priv_db.t1 to test_noprivs@localhost; - revoke UPDATE on priv_db.t1 from test_noprivs@localhost; - show grants for test_noprivs; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; - grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_424c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_424c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_424c; - show grants; - use priv_db; - -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4c_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1c'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-1c'); - select f1 from t1; - --error 0, 1360 - drop trigger trg4c_1; - - connection yes_privs_424c; - show grants; - use priv_db; - create trigger trg4c_2 before INSERT on t1 for each row - set new.f1 = 'trig 3.5.3.7-2c'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-2c'); - select f1 from t1; - -# Cleanup - --disable_warnings - drop trigger trg4c_2; - disconnect no_privs_424c; - disconnect yes_privs_424c; - --enable_warnings - -# --- 3.5.3.7d - Privs set on a column level ---disable_query_log -let $message= Testcase 3.5.3.7d:; ---enable_query_log ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant SUPER on *.* to test_noprivs@localhost; -# There is no ALL privs on the column level - grant SELECT (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost; - show grants for test_noprivs; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; - grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; - show grants for test_noprivs; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_424d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_424d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_424d; - show grants; - use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4d_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1d'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-1d'); - select f1 from t1; - --error 0, 1360 - drop trigger trg4d_1; - - connection yes_privs_424d; - show grants; - use priv_db; - create trigger trg4d_2 before INSERT on t1 for each row - set new.f1 = 'trig 3.5.3.7-2d'; - - connection default; - insert into t1 (f1) values ('insert 3.5.3.7-2d'); - select f1 from t1; - -# Cleanup - --disable_warnings - drop trigger trg4d_2; - disconnect no_privs_424d; - disconnect yes_privs_424d; - --enable_warnings - -#Section 3.5.3.8 -# Test case: Ensure that use of the construct "SET = NEW. " fails -# at CREATE TRIGGER time, if the current user does not have the SELECT privilege -# on the column specified. - -# --- 3.5.3.8a - Privs set on a global level -let $message= Testcase 3.5.3.8a:; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant ALL on *.* to test_noprivs@localhost; - revoke SELECT on *.* from test_noprivs@localhost; - show grants for test_noprivs@localhost; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER, SELECT on *.* to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_425a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_425a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_425a; - select current_user; - use priv_db; - show grants; - -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5a_1 before INSERT on t1 for each row -# set @test_var = new.f1; - - connection default; - set @test_var = 'before trig 3.5.3.8-1a'; - select @test_var; - insert into t1 (f1) values ('insert 3.5.3.8-1a'); - select @test_var; - --error 0, 1360 - drop trigger trg5a_1; - - connection yes_privs_425a; - use priv_db; - select current_user; - show grants; - create trigger trg5a_2 before INSERT on t1 for each row - set @test_var= new.f1; - - connection default; - set @test_var= 'before trig 3.5.3.8-2a'; - select @test_var; - insert into t1 (f1) values ('insert 3.5.3.8-2a'); - select @test_var; - -# Cleanup - --disable_warnings - drop trigger trg5a_2; - disconnect no_privs_425a; - disconnect yes_privs_425a; - --enable_warnings - -# --- 3.5.3.8b - Privs set on a database level -let $message= Testcase: 3.5.3.8b; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant SUPER on *.* to test_noprivs@localhost; - grant ALL on priv_db.* to test_noprivs@localhost; - revoke SELECT on priv_db.* from test_noprivs@localhost; - show grants for test_noprivs@localhost; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; - grant SELECT on priv_db.* to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_425b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_425b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_425b; - show grants; - use priv_db; - -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5b_1 before UPDATE on t1 for each row -# set @test_var= new.f1; - - connection default; - set @test_var= 'before trig 3.5.3.8-1b'; - insert into t1 (f1) values ('insert 3.5.3.8-1b'); - select @test_var; - update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; - select @test_var; - --error 0, 1360 - drop trigger trg5b_1; - - connection yes_privs_425b; - show grants; - use priv_db; - create trigger trg5b_2 before UPDATE on t1 for each row - set @test_var= new.f1; - - connection default; - set @test_var= 'before trig 3.5.3.8-2b'; - insert into t1 (f1) values ('insert 3.5.3.8-2b'); - select @test_var; - update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; - select @test_var; -# Cleanup - --disable_warnings - drop trigger trg5b_2; - disconnect no_privs_425b; - disconnect yes_privs_425b; - --enable_warnings - -# --- 3.5.3.8c - Privs set on a table level -let $message= Testcase 3.5.3.8c:; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant SUPER on *.* to test_noprivs@localhost; - grant ALL on priv_db.t1 to test_noprivs@localhost; - revoke SELECT on priv_db.t1 from test_noprivs@localhost; - show grants for test_noprivs@localhost; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; - grant SELECT on priv_db.t1 to test_yesprivs@localhost; - show grants for test_yesprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_425c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_425c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_425c; - show grants; - use priv_db; - -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5c_1 before INSERT on t1 for each row -# set @test_var= new.f1; - - connection default; - set @test_var= 'before trig 3.5.3.8-1c'; - insert into t1 (f1) values ('insert 3.5.3.8-1c'); - select @test_var; - --error 0, 1360 - drop trigger trg5c_1; - - connection yes_privs_425c; - show grants; - use priv_db; - create trigger trg5c_2 before INSERT on t1 for each row - set @test_var= new.f1; - - connection default; - set @test_var='before trig 3.5.3.8-2c'; - insert into t1 (f1) values ('insert 3.5.3.8-2c'); - select @test_var; -# Cleanup - --disable_warnings - drop trigger trg5c_2; - disconnect no_privs_425c; - disconnect yes_privs_425c; - --enable_warnings - -# --- 3.5.3.8d - Privs set on a column level -let $message=Testcase: 3.5.3.8d:; ---source include/show_msg.inc - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost; - grant SUPER on *.* to test_noprivs@localhost; -# There is no ALL prov on the column level - grant UPDATE (f1), INSERT (f1) on priv_db.t1 to test_noprivs@localhost; - show grants for test_noprivs@localhost; - - revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost; - grant SUPER on *.* to test_yesprivs@localhost; - grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; - show grants for test_noprivs@localhost; - - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (no_privs_425d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - --replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK - connect (yes_privs_425d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK); - connection default; - - connection no_privs_425d; - show grants; - use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5d_1 before INSERT on t1 for each row -# set @test_var= new.f1; - - connection default; - set @test_var='before trig 3.5.3.8-1d'; - insert into t1 (f1) values ('insert 3.5.3.8-1d'); - select @test_var; - --error 0, 1360 - drop trigger trg5d_1; - - connection yes_privs_425d; - show grants; - use priv_db; - create trigger trg5d_2 before INSERT on t1 for each row - set @test_var= new.f1; - - connection default; - set @test_var='before trig 3.5.3.8-2d'; - insert into t1 (f1) values ('insert 3.5.3.8-2d'); - select @test_var; - -# Cleanup 3.5.3.8 - --disable_warnings - drop trigger trg5d_2; - --enable_warnings - -# Cleanup 3.5.3 - --disable_warnings - drop database if exists priv_db; - drop user test_yesprivs@localhost; - drop user test_noprivs@localhost; - drop user test_noprivs; - --enable_warnings - -#################################### -############ Section 3.5.4 ######### -# Drop Trigger Checkes: # -#################################### -let $message= Testcase 3.5.4:; ---source include/show_msg.inc - - connection default; - use test; - -#Section 3.5.4.1 -# Testcase: Ensure that the DROP TRIGGER statement cleanly drops its target trigger. -let $message= Testcase 3.5.4.1:; ---source include/show_msg.inc - - connection con_super; - create database db_drop; - Use db_drop; - eval create table t1 (f1 char(30)) engine=$engine_type; - grant INSERT, SELECT on db_drop.t1 to test_general; - Use db_drop; - Create trigger trg1 BEFORE INSERT on t1 - for each row set new.f1='Trigger 3.5.4.1'; - connection con_general; - Use db_drop; - Insert into t1 values ('Insert error 3.5.4.1'); - Select * from t1; - connection con_super; - drop trigger trg1; - select trigger_schema, trigger_name, event_object_table - from information_schema.triggers; - connection con_general; - Insert into t1 values ('Insert no trigger 3.5.4.1'); - Select * from t1; - -#Cleanup - --disable_warnings - connection con_super; - --disable_warnings - --error 0,1360 - drop trigger trg1; - drop database if exists db_drop; - revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; - --enable_warnings - -#Section 3.5.4.2 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate error -# message, if the trigger name does not exist. -let $message= Testcase 3.5.4.2:; ---source include/show_msg.inc - - connection con_super; - create database db_drop2; - Use db_drop2; - --disable_warnings - drop table if exists t1_432 ; - --enable_warnings - eval create table t1_432 (f1 char (30)) engine=$engine_type; - --error 1360 - Drop trigger tr_does_not_exit; -#cleanup - --disable_warnings - drop table if exists t1_432 ; - drop database if exists db_drop2; - --enable_warnings - -#Section 3.5.4.3 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate -# error message, if is not a qualified name. -let $message= Testcase 3.5.4.3:; ---source include/show_msg.inc - - connection con_super; - create database db_drop3; - Use db_drop3; - --disable_warnings - drop table if exists t1_433 ; - drop table if exists t1_433a ; - --enable_warnings - eval create table t1_433 (f1 char (30)) engine=$engine_type; - eval create table t1_433a (f1a char (5)) engine=$engine_type; - - CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row - set new.f1 = 'Trigger 3.5.4.3'; - -# Using table - --error 1064 - Drop trigger t1.433.trg3; - -# Using database.table - --error 1064 - Drop trigger db_drop3.t1.433.trg3; - -# wrong database - --error 1360 - Drop trigger mysql.trg3; - -# database does not exist - --error 1360 - Drop trigger tbx.trg3; - -#cleanup - Drop trigger db_drop3.trg3; - drop table if exists t1_433; - drop table if exists t1_433a; - drop database if exists db_drop3; - -#Section 3.5.4.4 -# Test case: Ensure that when a database is dropped, all triggers created within -# that database are also cleanly dropped. -let $message= Testcase 3.5.4.4:; ---source include/show_msg.inc - - connection con_super; - create database db_drop4; - Use db_drop4; - eval create table t1 (f1 char(30)) engine=$engine_type; - grant INSERT, SELECT on db_drop4.t1 to test_general; - Create trigger trg4 BEFORE INSERT on t1 - for each row set new.f1='Trigger 3.5.4.4'; - connection con_general; - Use db_drop4; - Insert into t1 values ('Insert 3.5.4.4'); - Select * from t1; - connection con_super; - Drop database db_drop4; - Show databases; - select trigger_schema, trigger_name, event_object_table - from information_schema.triggers - where information_schema.triggers.trigger_name='trg4'; - create database db_drop4; - Use db_drop4; - eval create table t1 (f1 char(30)) engine=$engine_type; - grant INSERT, SELECT on db_drop4.t1 to test_general; - connection con_general; - Insert into t1 values ('2nd Insert 3.5.4.4'); - Select * from t1; - -#Cleanup - connection con_super; - --disable_warnings - --error 1360 - drop trigger trg4; - drop database if exists db_drop4; - --enable_warnings - revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; - -#Section 3.5.4.5 -# Test case: Ensure that when a table is dropped, all triggers for which it is the -# subject table are also cleanly dropped. -let $message= Testcase 3.5.4.5:; ---source include/show_msg.inc - - connection con_super; - create database db_drop5; - Use db_drop5; - eval create table t1 (f1 char(50)) engine=$engine_type; - grant INSERT, SELECT on t1 to test_general; - Create trigger trg5 BEFORE INSERT on t1 - for each row set new.f1='Trigger 3.5.4.5'; - connection con_general; - Use db_drop5; - Insert into t1 values ('Insert 3.5.4.5'); - Select * from t1; - connection con_super; - Drop table t1; - Show tables; - select trigger_schema, trigger_name, event_object_table - from information_schema.triggers - where information_schema.triggers.trigger_name='trg5'; - eval create table t1 (f1 char(50)) engine=$engine_type; - grant INSERT, SELECT on t1 to test_general; - connection con_general; - Insert into t1 values ('2nd Insert 3.5.4.5'); - Select * from t1; - -#Cleanup - connection con_super; - --disable_warnings - --error 1360 - drop trigger trg5; - drop database if exists db_drop5; - --enable_warnings - revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; - - -################################## -######### Section 3.5.5 ########## -# Checks on the Subject Table # -################################## - -let $message= Testcase 3.5.5:; ---source include/show_msg.inc - - connection default; - use test; - -#Section 3.5.5.1 -# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent -# subject table, the statement fails with an appropriate error message. -let $message= Testcase 3.5.5.1:; ---source include/show_msg.inc - - --error 1146 - Create trigger trg1 before INSERT on t100 for each row set new.f2=1000; - - -#Section 3.5.5.2 -# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table -# as the subject table, the statement fails with an appropriate error message. -let $message= Testcase 3.5.5.2:; ---source include/show_msg.inc - - Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); - - --error 1361 - Create trigger trg2 before INSERT - on t1_temp for each row set new.f2=9999; - -#Cleanup - --disable_warnings - drop table t1_temp; - --enable_warnings - - -#Section 3.5.5.3 -# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject -# table, the statement fails with an appropriate error message. -let $message= Testcase 3.5.5.3:; ---source include/show_msg.inc - - Create view vw3 as select f118 from tb3; - -# OBN Not sure why the server is returning error 1347 - --error 1347 - Create trigger trg3 before INSERT - on vw3 for each row set new.f118='s'; - -#Cleanup - --disable_warnings - drop view vw3; - --enable_warnings - - -#Section 3.5.5.4 -# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides -# in a different database than in which the trigger will reside, the -# statement fails with an appropriate error message; that is, ensure that -# the trigger and its subject table must reside in the same database. -let $message= Testcase 3.5.5.4:; ---source include/show_msg.inc - - connection con_super; - create database dbtest_one; - create database dbtest_two; - use dbtest_two; - create table t2 (f1 char(15)); - use dbtest_one; - --error 1435 - create trigger trg4 before INSERT - on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4'; - grant INSERT, SELECT on dbtest_two.t2 to test_general; - grant SELECT on dbtest_one.* to test_general; - connection con_general; - use dbtest_two; - Insert into t2 values ('1st Insert 3.5.5.4'); - Select * from t2; - use dbtest_one; - Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); - Select * from dbtest_two.t2; - -#Cleanup - connection con_super; - --disable_warnings - revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; - DROP DATABASE if exists dbtest_one; - drop database if EXISTS dbtest_two; - --enable_warnings - -##################################### -########### Section 3.5.6 ########### -# Check on the Trigger Action Time # -##################################### - -let $message= Testcase 3.5.6:; ---source include/show_msg.inc - - connection default; - use test; - -#Section 3.5.6.1 -# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. -# See section 3.5.1.1 -let $message= Testcase 3.5.6.1 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -#Section 3.5.6.2 -# Test case: Ensure that a trigger definition can specify a trigger action time of AFTER. -# See section 3.5.1.1 -let $message= Testcase 3.5.6.2 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -#Section 3.5.6.3 -# Test case: Ensure that a trigger definition that specifies a trigger action -# time that is not either BEFORE or AFTER fails, with an appropriate -# error message, at CREATE TRIGGER time. -let $message= Testcase 3.5.6.3:; ---source include/show_msg.inc - - --error 1064 - Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25; - --error 1064 - Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15; - -#Cleanup -# OBN - Although none of the above should have been created we should do a cleanup -# since if they have been created, not dropping them will affect following -# tests. - --disable_warnings - --error 0, 1360 - drop trigger tb3.trg3_1; - --error 0, 1360 - drop trigger tb3.trg3_2; - --enable_warnings - -#Section 3.5.6.4 -# Test case: Ensure that a trigger defined with a trigger action time of BEFORE -# always executes its triggered action immediately before the trigger event. -# See section 3.5.1.1 -let $message= Testcase 3.5.6.4 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -#Section 3.5.6.5 -# Test case: Ensure that a trigger defined with a trigger action time of AFTER -# always executes its triggered action immediately after the trigger event. -let $message= Testcase 3.5.6.5 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -############################# -####### Section 3.5.7 ####### -# Check on Trigger Event # -############################# - -#Section 3.5.7.1 -#Test case: Ensure that a trigger definition can specify a trigger event of INSERT. -let $message= Testcase 3.5.7.1 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -#Section 3.5.7.2 -# Test case: Ensure that a trigger definition can specify a trigger event of UPDATE. -let $message= Testcase 3.5.7.2 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -#Section 3.5.7.3 -# Test case: Ensure that a trigger definition can specify a trigger event of DELETE. -let $message= Testcase 3.5.7.3 (see Testcase 3.5.1.1); ---source include/show_msg.inc - -#Section 3.5.7.4 -# Test case: Ensure that a trigger definition that specifies a trigger event that -# is not either INSERT, UPDATE or DELETE fails, with an appropriate error -# message, at CREATE TRIGGER time. -let $message= Testcase 3.5.7.4:; ---source include/show_msg.inc - - --error 1064 - Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5; - --error 1064 - Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1; - -#Cleanup -# OBN - Although none of the above should have been created we should do a cleanup -# since if they have been created, not dropping them will affect following -# tests. - --disable_warnings - --error 0, 1360 - drop trigger tb3.trg4_1; - --error 0, 1360 - drop trigger tb3.trg4_2; - --enable_warnings - -#Section 3.5.7.5 / 3.5.7.6 -# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers -# on the same table, even if the triggers have different names / different -# triggered actions. -let $message= Testcase 3.5.7.5 / 3.5.7.6:; ---source include/show_msg.inc - - Create trigger trg5_1 BEFORE INSERT - on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; - - --error 1359 - Create trigger trg5_2 BEFORE INSERT - on tb3 for each row set new.f122='Trigger2 3.5.7.5'; - - Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); - Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; - update tb3 set f122='Update 3.5.7.6' where f121= 'Test 3.5.7.5/6'; - Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; - -#Cleanup - --disable_warnings - drop trigger trg5_1; - --error 0, 1360 - drop trigger trg5_2; - delete from tb3 where f121='Test 3.5.7.5/6'; - --enable_warnings - - -#Section 3.5.7.7 / 3.5.7.8 -# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers -# on the same table, even if the triggers have different names / different -# triggered actions. -let $message= Testcase 3.5.7.7 / 3.5.7.8:; ---source include/show_msg.inc - - set @test_var='Before trig 3.5.7.7'; - Create trigger trg6_1 AFTER INSERT - on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; - - --error 1359 - Create trigger trg6_2 AFTER INSERT - on tb3 for each row set @test_var='Trigger2 3.5.7.7'; - - select @test_var; - Insert into tb3 (f121,f122) values ('Test 3.5.7.7/8','Insert 3.5.7.7'); - Select f121,f122 from tb3 where f121='Test 3.5.7.7/8'; - select @test_var; - update tb3 set f122='Update 3.5.7.8' where f121= 'Test 3.5.7.7/8'; - Select f121,f122 from tb3 where f121='Test 3.5.7.7/8'; - select @test_var; - -#Cleanup - --disable_warnings - drop trigger trg6_1; - --error 0, 1360 - drop trigger trg6_2; - delete from tb3 where f121='Test 3.5.7.7/8'; - --enable_warnings - - -#Section 3.5.7.9 / 3.5.7.10 -# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers -# on the same table, even if the triggers have different names / different -# triggered actions. -let $message= Testcase 3.5.7.9/10:; ---source include/show_msg.inc - - Create trigger trg7_1 BEFORE UPDATE - on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; - - --error 1359 - Create trigger trg7_2 BEFORE UPDATE - on tb3 for each row set new.f122='Trigger2 3.5.7.9'; - - Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); - Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; - update tb3 set f122='update 3.5.7.10' where f121='Test 3.5.7.9/10'; - Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; - -#Cleanup - --disable_warnings - drop trigger trg7_1; - --error 0, 1360 - drop trigger trg7_2; - delete from tb3 where f121='Test 3.5.7.9/10'; - -#Section 3.5.7.11 / 3.5.7.12 -# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers -# on the same table, even if the triggers have different names / different -# triggered actions. -let $message= Testcase 3.5.7.11/12:; ---source include/show_msg.inc - - set @test_var='Before trig 3.5.7.11'; - Create trigger trg8_1 AFTER UPDATE - on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; - - --error 1359 - Create trigger trg8_2 AFTER UPDATE - on tb3 for each row set @test_var='Trigger2 3.5.7.11'; - - - select @test_var; - Insert into tb3 (f121,f122) values ('Test 3.5.7.11/12','Insert 3.5.7.11/12'); - select @test_var; - Select f121,f122 from tb3 where f121='Test 3.5.7.11/12'; - update tb3 set f122='update 3.5.7.12' where f121='Test 3.5.7.11/12'; - Select f121,f122 from tb3 where f121='Test 3.5.7.11/12'; - select @test_var; - delete from tb3 where f121='Test 3.5.7.11/12'; - -#Cleanup - --disable_warnings - drop trigger trg8_1; - --error 0, 1360 - drop trigger trg8_2; - delete from tb3 where f121='Test 3.5.7.11/12'; - -#Section 3.5.7.13 / 3.5.7.14 -# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers -# on the same table, even if the triggers have different names / different -# triggered actions. -let $message= Testcase 3.5.7.13/14:; ---source include/show_msg.inc - - set @test_var=1; - Create trigger trg9_1 BEFORE DELETE - on tb3 for each row set @test_var=@test_var+1; - - --error 1359 - Create trigger trg9_2 BEFORE DELETE - on tb3 for each row set @test_var=@test_var+10; - - select @test_var; - Insert into tb3 (f121,f122) values ('Test 3.5.7.13/14','Insert 3.5.7.13'); - Select f121,f122 from tb3 where f121='Test 3.5.7.13/14'; - select @test_var; - delete from tb3 where f121='Test 3.5.7.13/14'; - Select f121,f122 from tb3 where f121='Test 3.5.7.13/14'; - select @test_var; - delete from tb3 where f121='Test 3.5.7.13/14'; - select @test_var; - -#Cleanup - --disable_warnings - drop trigger trg9_1; - --error 0, 1360 - drop trigger trg9_2; - delete from tb3 where f121='Test 3.5.7.13/14'; - -#Section 3.5.7.15 / 3.5.7.16 -# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers -# on the same table, even if the triggers have different names / different -# triggered actions. -let $message= Testcase 3.5.7.15/16:; ---source include/show_msg.inc - - set @test_var=1; - Create trigger trg_3_406010_1 AFTER DELETE - on tb3 for each row set @test_var=@test_var+5; - - --error 1359 - Create trigger trg_3_406010_2 AFTER DELETE - on tb3 for each row set @test_var=@test_var+50; - - --error 1359 - Create trigger trg_3_406010_1 AFTER INSERT - on tb3 for each row set @test_var=@test_var+1; - - select @test_var; - Insert into tb3 (f121,f122) values ('Test 3.5.7.15/16','Insert 3.5.7.15/16'); - Select f121,f122 from tb3 where f121='Test 3.5.7.15/16'; - select @test_var; - delete from tb3 where f121='Test 3.5.7.15/16'; - Select f121,f122 from tb3 where f121='Test 3.5.7.15/16'; - select @test_var; - delete from tb3 where f121='Test 3.5.7.15/16'; - select @test_var; - -#Cleanup - --disable_warnings - drop trigger trg_3_406010_1; - --error 0, 1360 - drop trigger trg_3_406010_2; - delete from tb3 where f121='Test 3.5.7.15/16'; - --enable_warnings - - -#Section 3.5.7.17 -# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, -# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE -# trigger on the same table; that is, ensure that every persistent base -# table may be the subject table for exactly six triggers -let $message= Testcase 3.5.7.17 (see Testcase 3.5.1.1); ---source include/show_msg.inc - - -################################# -####### Section 3.5.8 ########### -# Checks on Triggered Actions # -################################# - -#Section 3.5.8.1 -# Testcase: Ensure that the triggered action of every trigger always executes -# correctly and the results in all expected changes made to the database -let $message= Testcase 3.5.8.1: (implied in previous tests); ---source include/show_msg.inc -# OBN - FIXME - Missing 3.5.8.1 need to add - -#Section 3.5.8.2 -# Testcase: Ensure that the triggered actions of every trigger never results -# in an unexpected change made to the database. -let $message= Testcase 3.5.8.2: (implied in previous tests); ---source include/show_msg.inc - - -#Section 3.5.8.3 / 3.5.8.4 -#Test case: Ensure that the triggered action can any valid SQL statement / set -# of valid SQL statements, provided the statements are written within -# a BEGIN/END compound statement construct -# OBN - At this point the tests focuses on the the INSERT/UPDATE/DELETE SQL statements -# as there are the most likely to be used in triggers -let $message= Testcase 3.5.8.3/4:; ---source include/show_msg.inc - -# creating test tables to perform the trigger SQL on - connection con_super; - create database db_test; - grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; - grant LOCK TABLES on db_test.* to test_general; - Use db_test; - eval create table t1_i ( - i120 char ascii not null DEFAULT b'101', - i136 smallint zerofill not null DEFAULT 999, - i144 int zerofill not null DEFAULT 99999, - i163 decimal (63,30)) engine=$engine_type; - eval create table t1_u ( - u120 char ascii not null DEFAULT b'101', - u136 smallint zerofill not null DEFAULT 999, - u144 int zerofill not null DEFAULT 99999, - u163 decimal (63,30)) engine=$engine_type; - eval create table t1_d ( - d120 char ascii not null DEFAULT b'101', - d136 smallint zerofill not null DEFAULT 999, - d144 int zerofill not null DEFAULT 99999, - d163 decimal (63,30)) engine=$engine_type; - Insert into t1_u values ('a',111,99999,999.99); - Insert into t1_u values ('b',222,99999,999.99); - Insert into t1_u values ('c',333,99999,999.99); - Insert into t1_u values ('d',222,99999,999.99); - Insert into t1_u values ('e',222,99999,999.99); - Insert into t1_u values ('f',333,99999,999.99); - Insert into t1_d values ('a',111,99999,999.99); - Insert into t1_d values ('b',222,99999,999.99); - Insert into t1_d values ('c',333,99999,999.99); - Insert into t1_d values ('d',444,99999,999.99); - Insert into t1_d values ('e',222,99999,999.99); - Insert into t1_d values ('f',222,99999,999.99); - -let $message= 3.5.8.4 - multiple SQL; ---source include/show_msg.inc -# Trigger definition - multiple SQL - use test; - delimiter //; - Create trigger trg1 AFTER INSERT on tb3 for each row - BEGIN - insert into db_test.t1_i - values (new.f120, new.f136, new.f144, new.f163); - update db_test.t1_u - set u144=new.f144, u163=new.f163 - where u136=new.f136; - delete from db_test.t1_d where d136= new.f136; - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; - END// - delimiter ;// - -# Test trigger execution - multiple SQL - connection con_general; - Use test; - set @test_var=0; - Insert into tb3 (f120, f122, f136, f144, f163) - values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); - Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; - select * from db_test.t1_i; - select * from db_test.t1_u; - select * from db_test.t1_d; - select @test_var; - - -let $message= 3.5.8.4 - single SQL - insert; ---source include/show_msg.inc -# Trigger definition - single SQL Insert - connection con_super; - Create trigger trg2 BEFORE UPDATE on tb3 for each row - insert into db_test.t1_i - values (new.f120, new.f136, new.f144, new.f163); - -# Trigger exeution - single SQL Insert - connection con_general; - update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' - where f122='Test 3.5.8.4'; - Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_i; - - -let $message= 3.5.8.4 - single SQL - update; ---source include/show_msg.inc -# Trigger definition - single SQL update - connection con_super; - drop trigger trg2; - Create trigger trg3 BEFORE UPDATE on tb3 for each row - update db_test.t1_u - set u120=new.f120 - where u136=new.f136; - -# Trigger exeution - single SQL - update; - connection con_general; - update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' - where f122='Test 3.5.8.4-Single Insert'; - Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_u; - - -let $message= 3.5.8.3/4 - single SQL - delete; ---source include/show_msg.inc -# Trigger definition - single SQL delete - connection con_super; - drop trigger trg3; - Create trigger trg4 AFTER UPDATE on tb3 for each row - delete from db_test.t1_d where d136= new.f136; - -# Trigger exeution - single SQL delete - connection con_general; -#lock tables tb3 write, db_test.t1_i write, db_test.t1_u write, db_test.t1_d write; - update tb3 set f120='D', f136=444, - f122='Test 3.5.8.4-Single Delete' - where f122='Test 3.5.8.4-Single Update'; -#unlock tables; - Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_d; - - -let $message= 3.5.8.3/4 - single SQL - select; ---source include/show_msg.inc -# Trigger definition - single SQL select - connection con_super; - drop trigger trg4; - Create trigger trg5 AFTER UPDATE on tb3 for each row - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; - -# Trigger exeution - single SQL select - connection con_general; - set @test_var=0; - update tb3 set f120='S', f136=111, - f122='Test 3.5.8.4-Single Select' - where f122='Test 3.5.8.4-Single Delete'; - Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select @test_var; - -#Cleanup - connection default; - --disable_warnings - drop trigger trg1; - drop trigger trg5; - drop database if exists db_test; - delete from tb3 where f122 like 'Test 3.5.8.4%'; - revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; - --enable_warnings - - -#Section 3.5.8.5 (IF) -# Test case: Ensure that the stored procedure-specific flow control statement like IF -# works correctly when it is a part of the triggered action portion of a -# trigger definition. -let $message= Testcase 3.5.8.5 (IF):; ---source include/show_msg.inc - - delimiter //; - create trigger trg2 before insert on tb3 for each row - BEGIN - IF new.f120='1' then - set @test_var='one', new.f120='2'; - ELSEIF new.f120='2' then - set @test_var='two', new.f120='3'; - ELSEIF new.f120='3' then - set @test_var='three', new.f120='4'; - END IF; - - IF (new.f120='4') and (new.f136=10) then - set @test_var2='2nd if', new.f120='d'; - ELSE - set @test_var2='2nd else', new.f120='D'; - END IF; - END// - delimiter ;// - - set @test_var='Empty', @test_var2=0; - Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; - Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; - Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; - Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; - - delimiter //; - --error 1064 - create trigger trg3 before update on tb3 for each row - BEGIN - ELSEIF new.f120='2' then - END IF; - END// - --error 0, 1360 - drop trigger trg3// - - --error 1064 - create trigger trg4 before update on tb3 for each row - BEGIN - IF (new.f120='4') and (new.f136=10) then - set @test_var2='2nd if', new.f120='d'; - ELSE - set @test_var2='2nd else', new.f120='D'; - END// - delimiter ;// - --error 0, 1360 - drop trigger trg4; - -#Cleanup - --disable_warnings - drop trigger trg2; - delete from tb3 where f121='Test 3.5.8.5-if'; - --enable_warnings - - -#Section 3.5.8.5 (CASE) -# Test case: Ensure that the stored procedure-specific flow control statement -# like CASE works correctly when it is a part of the triggered action -# portion of a trigger definition. -let $message= Testcase 3.5.8.5-case:; ---source include/show_msg.inc - - delimiter //; - create trigger trg3 before insert on tb3 for each row - BEGIN - SET new.f120=char(ascii(new.f120)-32); - CASE - when new.f136<100 then set new.f136=new.f136+120; - when new.f136<10 then set new.f144=777; - when new.f136>100 then set new.f120=new.f136-1; - END case; - CASE - when new.f136=200 then set @test_var=CONCAT(new.f120, '='); - ELSE set @test_var=concat(new.f120, '*'); - END case; - CASE new.f144 - when 1 then set @test_var=concat(@test_var, 'one'); - when 2 then set @test_var=concat(@test_var, 'two'); - when 3 then set @test_var=concat(@test_var, 'three'); - when 4 then set @test_var=concat(@test_var, 'four'); - when 5 then set @test_var=concat(@test_var, 'five'); - when 6 then set @test_var=concat(@test_var, 'six'); - when 7 then set @test_var=concat(@test_var, 'seven'); - when 8 then set @test_var=concat(@test_var, 'eight'); - when 9 then set @test_var=concat(@test_var, 'nine'); - when 10 then set @test_var=concat(@test_var, 'ten'); - when 11 then set @test_var=concat(@test_var, 'eleven'); - when 12 then set @test_var=concat(@test_var, 'twelve'); - when 13 then set @test_var=concat(@test_var, 'thirteen'); - when 14 then set @test_var=concat(@test_var, 'fourteen'); - when 15 then set @test_var=concat(@test_var, 'fifteen'); - ELSE set @test_var=CONCAT(new.f120, '*', new.f144); - END case; - END// - delimiter ;// - - set @test_var='Empty'; - Insert into tb3 (f120, f122, f136, f144) - values ('a', 'Test 3.5.8.5-case', 5, 7); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) - values ('b', 'Test 3.5.8.5-case', 71,16); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) - values ('c', 'Test 3.5.8.5-case', 80,1); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136) - values ('d', 'Test 3.5.8.5-case', 152); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) - values ('e', 'Test 3.5.8.5-case', 200, 8); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - --error 0, 1339 - Insert into tb3 (f120, f122, f136, f144) - values ('f', 'Test 3.5.8.5-case', 100, 8); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - - delimiter //; - --error 1064 - create trigger trg3a before update on tb3 for each row - BEGIN - CASE - when new.f136<100 then set new.f120='p'; - END// - delimiter ;// - - --error 0, 1360 - drop trigger trg3a; - -#Cleanup - --disable_warnings - drop trigger trg3; - delete from tb3 where f121='Test 3.5.8.5-case'; - --enable_warnings - -#Section 3.5.8.5 (LOOP) -# Test case: Ensure that the stored procedure-specific flow control -# statement like LOOP / LEAVE work correctly when they are -# part of the triggered action portion of a trigger definition. -let $message= Testcase 3.5.8.5-loop/leave:; ---source include/show_msg.inc - - delimiter //; - Create trigger trg4 after insert on tb3 for each row - BEGIN - set @counter=0, @flag='Initial'; - Label1: loop - if new.f136 new.f136 END REPEAT rp_label; - END// - delimiter ;// - - set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) - values ('Test 3.5.8.5-repeat', 13); - select @counter1, @counter2; - - - delimiter //; - --error 1064 - Create trigger trg6_2 after update on tb3 for each row - BEGIN - REPEAT - SET @counter2 = @counter2 + 1; - END// - delimiter ;// - -#Cleanup - --disable_warnings - drop trigger trg6; - delete from tb3 where f122='Test 3.5.8.5-repeat'; - --enable_warnings - - -#Section 3.5.8.5 (WHILE) -# Test case: Ensure that the stored procedure-specific flow control -# statements WHILE, work correctly when they are part of -# the triggered action portion of a trigger definition. -let $message= Testcase 3.5.8.5-while:; ---source include/show_msg.inc - - delimiter //; - Create trigger trg7 after insert on tb3 for each row - wl_label: WHILE @counter1 < new.f136 DO - SET @counter1 = @counter1 + 1; - IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; - END IF; - SET @counter2 = @counter2 + 1; - END WHILE wl_label// - delimiter ;// - - set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) - values ('Test 3.5.8.5-while', 7); - select @counter1, @counter2; - delimiter //; - --error 1064 - Create trigger trg7_2 after update on tb3 for each row - BEGIN - WHILE @counter1 < new.f136 - SET @counter1 = @counter1 + 1; - END// - delimiter ;// - -#Cleanup - --disable_warnings - delete from tb3 where f122='Test 3.5.8.5-while'; - drop trigger trg7; - --enable_warnings - -#Section 3.5.8.6 -# Test case: Ensure that a trigger definition that includes a CALL to a stored -# procedure fails, at CREATE TRIGGER time, with an appropriate error -# message -# OBN - requirement void since allowed -# Fails due to Bug 9909 the bug allows the trigger to be created -# and fails in execution time -let $message= Testcase 3.5.8.6: (requirement void); ---source include/show_msg.inc - - -#Section 3.5.8.7 -# Test case: Ensure that a trigger definition that includes a -# transaction-delimiting statement (e.g. COMMIT, -# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER -# time, with an appropriate error message. -# OBN - Fails due to Bug ____ -let $message= Testcase 3.5.8.7: (Disabled as a result of bug _____); ---source include/show_msg.inc - -# --error 1314 -# Create trigger trg9_1 before update on tb3 for each row -# BEGIN -# Start transaction; -# Set new.f120='U'; -# Commit; -# END; - -# --error 1314 -# Create trigger trg9_2 before delete on tb3 for each row -# BEGIN -# Start transaction; -# Set @var2=old.f120; -# Rollback; -# END; - -################################# -####### Section 3.5.9 ########### -# Checks on old and new rows # -################################# - -#Section 3.5.9.1 -#Test case: Ensure that every trigger executes its triggered action on each row -# that meets the conditions stated in the trigger definition. -#Section 3.5.9.2 -#Testcase: Ensure that a trigger never executes its triggered action on any row -# that doesn't meet the conditions stated in the trigger definition. -let $message= Testcase 3.5.9.1/2:; ---source include/show_msg.inc - - Create trigger trg1 BEFORE UPDATE on tb3 for each row - set new.f142 = 94087, @counter=@counter+1; ---disable_query_log - select count(*) as TotalRows from tb3; - select count(*) as Affected from tb3 where f130<100; - select count(*) as NotAffected from tb3 where f130>=100; - select count(*) as NewValuew from tb3 where f142=94087; ---enable_query_log - set @counter=0; - Update tb3 Set f142='1' where f130<100; - select count(*) as ExpectedChanged, @counter as TrigCounter - from tb3 where f142=94087; - select count(*) as ExpectedNotChange from tb3 - where f130<100 and f142<>94087; - select count(*) as NonExpectedChanged from tb3 - where f130>=130 and f142=94087; - -#Cleanup - --disable_warnings - drop trigger trg1; - --enable_warnings - - -#Section 3.5.9.3 -#Test case: Ensure that a reference to OLD. always correctly refers -# to the values of the specified column of the subject table before a -# data row is updated or deleted. -let $message= Testcase 3.5.9.3:; ---source include/show_msg.inc - - Create trigger trg2_a before update on tb3 for each row - set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121, - @tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136, - @tr_var_b4_163=old.f163; - - Create trigger trg2_b after update on tb3 for each row - set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, - @tr_var_af_122=old.f122, @tr_var_af_136=old.f136, - @tr_var_af_163=old.f163; - - Create trigger trg2_c before delete on tb3 for each row - set @tr_var_b4_118=old.f118, @tr_var_b4_121=old.f121, - @tr_var_b4_122=old.f122, @tr_var_b4_136=old.f136, - @tr_var_b4_163=old.f163; - - Create trigger trg2_d after delete on tb3 for each row - set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, - @tr_var_af_122=old.f122, @tr_var_af_136=old.f136, - @tr_var_af_163=old.f163; - - ---disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, - @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, - @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_163; ---enable_query_log - - Insert into tb3 (f122, f136, f163) - values ('Test 3.5.9.3', 7, 123.17); - Update tb3 Set f136=8 where f122='Test 3.5.9.3'; - - select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_163; - ---disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, - @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, - @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_163; ---enable_query_log - - delete from tb3 where f122='Test 3.5.9.3'; - - select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_163; -#Cleanup - --disable_warnings - drop trigger trg2_a; - drop trigger trg2_b; - drop trigger trg2_c; - drop trigger trg2_d; - --enable_warnings - -#Section 3.5.9.4 -#Test case: Ensure that a reference to NEW. always correctly refers -# to the values of the specified column of the subject table after an -# existing data row has been updated or a new data row has been inserted. -let $message= Testcase 3.5.9.4:; ---source include/show_msg.inc - - Create trigger trg3_a before insert on tb3 for each row - set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121, - @tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136, - @tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163; - - Create trigger trg3_b after insert on tb3 for each row - set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, - @tr_var_af_122=new.f122, @tr_var_af_136=new.f136, - @tr_var_af_151=new.f151, @tr_var_af_163=new.f163; - - Create trigger trg3_c before update on tb3 for each row - set @tr_var_b4_118=new.f118, @tr_var_b4_121=new.f121, - @tr_var_b4_122=new.f122, @tr_var_b4_136=new.f136, - @tr_var_b4_151=new.f151, @tr_var_b4_163=new.f163; - - Create trigger trg3_d after update on tb3 for each row - set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, - @tr_var_af_122=new.f122, @tr_var_af_136=new.f136, - @tr_var_af_151=new.f151, @tr_var_af_163=new.f163; - ---disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, - @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, - @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; ---enable_query_log - - Insert into tb3 (f122, f136, f151, f163) - values ('Test 3.5.9.4', 7, DEFAULT, 995.24); - - select f118, f121, f122, f136, f151, f163 from tb3 - where f122 like 'Test 3.5.9.4%'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; - ---disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, - @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, - @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; ---enable_query_log - - Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL - where f122='Test 3.5.9.4'; - - select f118, f121, f122, f136, f151, f163 from tb3 - where f122 like 'Test 3.5.9.4-trig'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, - @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, - @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; -#Cleanup - --disable_warnings - drop trigger trg3_a; - drop trigger trg3_b; - drop trigger trg3_c; - drop trigger trg3_d; - delete from tb3 where f122='Test 3.5.9.4-trig'; - --enable_warnings - - -#Section 3.5.9.5 -# Test case: Ensure that the definition of an INSERT trigger can include a -# reference to NEW. . -let $message= Testcase 3.5.9.5: (implied in previous tests); ---source include/show_msg.inc - -#Section 3.5.9.6 -# Test case: Ensure that the definition of an INSERT trigger cannot include -# a reference to OLD. . -let $message= Testcase 3.5.9.6:; ---source include/show_msg.inc - - --error 1363 - create trigger trg4a before insert on tb3 for each row - set @temp1= old.f120; - --error 1362 - create trigger trg4b after insert on tb3 for each row - set old.f120= 'test'; - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg4a; - --error 0, 1360 - drop trigger trg4b; - --enable_warnings - - -#Section 3.5.9.7 -# Test case: Ensure that the definition of an UPDATE trigger can include a -# reference to NEW. . -let $message= Testcase 3.5.9.7: (implied in previous tests); ---source include/show_msg.inc - -#Section 3.5.9.8 -# Test case: Ensure that the definition of an UPDATE trigger cannot include a -# reference to OLD. . -let $message= Testcase 3.5.9.8: (implied in previous tests); ---source include/show_msg.inc - -#Section 3.5.9.9 -# Test case: Ensure that the definition of a DELETE trigger cannot include a -# reference to NEW.. -let $message= Testcase 3.5.9.9:; ---source include/show_msg.inc - - --error 1363 - create trigger trg5a before DELETE on tb3 for each row - set @temp1=new.f122; - --error 1363 - create trigger trg5b after DELETE on tb3 for each row - set new.f122='test'; -let $message= The above returns the wrong error, should be error 1362 (Bug 11648) ---source include/show_msg.inc - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg5a; - --error 0, 1360 - drop trigger trg5b; - --enable_warnings - - -#Section 3.5.9.10 -# Test case: Ensure that the definition of a DELETE trigger can include a reference -# to OLD.. -let $message= Testcase 3.5.9.10: (implied in previous tests); ---source include/show_msg.inc - - -#Section 3.5.9.11 -# Testcase: Ensure that trigger definition that includes a referance to -# NEW. fails with an appropriate error message, -# at CREATE TRIGGER time, if the trigger event in not INSERT or UPDATE -let $message= Testcase 3.5.9.11: covered by 3.5.9.9; ---source include/show_msg.inc - - -#Section 3.5.9.12 -# Testcase: Ensure that trigger definition that includes a referance to -# OLD. fails with an appropriate error message, at -# CREATE TRIGGER time, if the trigger event is not DELETE or UPDATE -let $message= Testcase 3.5.9.12: covered by 3.5.9.6; ---source include/show_msg.inc - - -#Section 3.5.9.13 -# Test case: Ensure that all references to OLD. are read-only, -# that is, that they cannot be used to modify a data row. -let $message= Testcase 3.5.9.13:; ---source include/show_msg.inc - - --error 1362 - create trigger trg6a before UPDATE on tb3 for each row - set old.f118='C', new.f118='U'; - --error 1362 - create trigger trg6b after INSERT on tb3 for each row - set old.f136=163, new.f118='U'; - --error 1362 - create trigger trg6c after UPDATE on tb3 for each row - set old.f136=NULL; - -#Cleanup - --disable_warnings - --error 0, 1360 - drop trigger trg6a; - --error 0, 1360 - drop trigger trg6b; - --error 0, 1360 - drop trigger trg6c; - --enable_warnings - - -#Section 3.5.9.14 -# Test case: Ensure that all references to NEW. may be used both to -# read a data row and to modify a data row -let $message= Testcase 3.5.9.14: (implied in previous tests); ---source include/show_msg.inc - - -############################################## -################ Section 3.5.10 ################# -# Check on Trigger Activation -############################################## -#Section 3.5.10.1 -# Test case: Ensure that every trigger that should be activated by -# every possible type of implicit insertion into its subject -# table (INSERT into a view based on the subject table) is -# indeed activated correctly -#Section 3.5.10.2 -# Test case: Ensure that every trigger that should be activated by every -# possible type of implicit insertion into its subject table -# (UPDATE into a view based on the subject table) is indeed -# activated correctly -#Section 3.5.10.3 -# Test case: Ensure that every trigger that should be activated by every -# possible type of implicit insertion into its subject table -# (DELETE from a view based on the subject table) is indeed -# activated correctly -let $message= Testcase 3.5.10.1/2/3:; ---source include/show_msg.inc - - Create view vw11 as select * from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; - Create trigger trg1a before insert on tb3 - for each row set new.f163=111.11; - Create trigger trg1b after insert on tb3 - for each row set @test_var='After Insert'; - Create trigger trg1c before update on tb3 - for each row set new.f121='Y', new.f122='Test 3.5.10.1/2/3-Update'; - Create trigger trg1d after update on tb3 - for each row set @test_var='After Update'; - Create trigger trg1e before delete on tb3 - for each row set @test_var=5; - Create trigger trg1f after delete on tb3 - for each row set @test_var= 2* @test_var+7; - -#Section 3.5.10.1 - Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); - Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); - Insert into vw11 (f122, f151) values ('Not in View', 3); - select f121, f122, f151, f163 - from tb3 where f122 like 'Test 3.5.10.1/2/3%'; - select f121, f122, f151, f163 from vw11; - select f121, f122, f151, f163 - from tb3 where f122 like 'Not in View'; - -#Section 3.5.10.2 - Update vw11 set f163=1; - select f121, f122, f151, f163 from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; - select f121, f122, f151, f163 from vw11; - -#Section 3.5.10.3 - set @test_var=0; - Select @test_var as 'before delete'; - delete from vw11 where f151=1; - select f121, f122, f151, f163 from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; - select f121, f122, f151, f163 from vw11; - Select @test_var as 'after delete'; - -#Cleanup - --disable_warnings - drop view vw11; - drop trigger trg1a; - drop trigger trg1b; - drop trigger trg1c; - drop trigger trg1d; - drop trigger trg1e; - drop trigger trg1f; - delete from tb3 where f122 like 'Test 3.5.10.1/2/3%'; - --enable_warnings - - -#Section 3.5.10.4 -# Test case: Ensure that every trigger that should be activated by every -# possible type of implicit insertion into its subject table -# (LOAD into the subject table) is indeed activated correctly -let $message= Testcase 3.5.10.4:; ---source include/show_msg.inc - - eval create table tb_load (f1 int, f2 char(25),f3 int) engine=$engine_type; - Create trigger trg4 before insert on tb_load - for each row set new.f3=-(new.f1 div 5), @counter= @counter+1; - - set @counter= 0; - select @counter as 'Rows Loaded Before'; - --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR - eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; - - select @counter as 'Rows Loaded After'; - Select * from tb_load limit 10; - -#Cleanup - --disable_warnings - drop trigger trg4; - drop table tb_load; - --enable_warnings - - -#Section 3.5.10.5 -# Testcase: Ensure that every trigger that should be activated by every possible -# type of implicit update of its subject table (e.g.a FOREIGN KEY SET -# DEFAULT action or an UPDATE of a view based on the subject table) is -# indeed activated correctly -let $message= Testcase 3.5.10.5: (implemented in trig_frkey.test); ---source include/show_msg.inc - - -#Section 3.5.10.6 -# Testcase: Ensure that every trigger that should be activated by every possible -# type of implicit deletion from its subject table (e.g.a FOREIGN KEY -# CASCADE action or a DELETE from a view based on the subject table) is -# indeed activated correctly -let $message= Testcase 3.5.10.6: (implemented in trig_frkey.test); ---source include/show_msg.inc - -#Section 3.5.10.extra -# Testcase: Ensure that every trigger that should be activated by every possible -# type of implicit deletion from its subject table (e.g. an action performed -# on the subject table from a stored procedure is indeed activated correctly -let $message= Testcase 3.5.10.extra:; ---source include/show_msg.inc - - eval create table t1_sp (var136 tinyint, var151 decimal) engine=$engine_type; - - create trigger trg before insert on t1_sp - for each row set @counter=@counter+1; - # declare continue handler for sqlstate '01000' set done = 1; - - delimiter //; - create procedure trig_sp() - begin - declare done int default 0; - declare var151 decimal; - declare var136 tinyint; - declare cur1 cursor for select f136, f151 from tb3; - declare continue handler for sqlstate '01000' set done = 1; - open cur1; - fetch cur1 into var136, var151; - wl_loop: WHILE NOT done DO - insert into t1_sp values (var136, var151); - fetch cur1 into var136, var151; - END WHILE wl_loop; - close cur1; - end// - delimiter ;// - - set @counter=0; - select @counter; - --error 1329 - call trig_sp(); - select @counter; - select count(*) from tb3; - select count(*) from t1_sp; - -#Cleanup - --disable_warnings - drop procedure trig_sp; - drop trigger trg; - drop table t1_sp; - --enable_warnings - -################################## -########## Section 3.5.11 ######## -# Check on Trigger Performance # -################################## -#Section 3.5.11.1 -# Testcase: Ensure that a set of complicated, interlocking triggers that are activated -# by multiple trigger events on no fewer than 50 different tables with at least -# 500,000 rows each, all work correctly, return the correct results, and have -# the correct effects on the database. It is expected that the Services Provider -# will use its own skills and experience in database testing to devise tables and -# triggers that fulfill this requirement. -let $message= Testcase 3.5.11.1 (implemented in trig_perf.test); ---source include/show_msg.inc - -# Cleanup section 3.5 - connection default; - drop user test_general@localhost; - drop user test_general; - drop user test_super@localhost; - -########################################## -# Other Scenasrios (not in requirements) # -########################################## -# Testcase: y.y.y.2: -# Checking for triggers starting triggers (no direct requirement) -let $message= Testcase y.y.y.2: Check for triggers starting triggers; ---source include/show_msg.inc - - use test; - --disable_warnings - drop table if exists t1; - drop table if exists t2_1; - drop table if exists t2_2; - drop table if exists t2_3; - drop table if exists t2_4; - drop table if exists t3; - --enable_warnings - - create table t1 (f1 integer); - create table t2_1 (f1 integer); - create table t2_2 (f1 integer); - create table t2_3 (f1 integer); - create table t2_4 (f1 integer); - create table t3 (f1 integer); - - insert into t1 values (1); - delimiter //; - create trigger tr1 after insert on t1 for each row - BEGIN - insert into t2_1 (f1) values (new.f1+1); - insert into t2_2 (f1) values (new.f1+1); - insert into t2_3 (f1) values (new.f1+1); - insert into t2_4 (f1) values (new.f1+1); - END// - delimiter ;// - - create trigger tr2_1 after insert on t2_1 for each row - insert into t3 (f1) values (new.f1+10); - create trigger tr2_2 after insert on t2_2 for each row - insert into t3 (f1) values (new.f1+100); - create trigger tr2_3 after insert on t2_3 for each row - insert into t3 (f1) values (new.f1+1000); - create trigger tr2_4 after insert on t2_4 for each row - insert into t3 (f1) values (new.f1+10000); - -#lock tables t1 write, t2_1 write, t2_2 write, t2_3 write, t2_4 write, t3 write; - insert into t1 values (1); -#unlock tables; - select * from t3; - -#Cleanup - --disable_warnings - drop trigger tr1; - drop trigger tr2_1; - drop trigger tr2_2; - drop trigger tr2_3; - drop trigger tr2_4; - drop table t1, t2_1, t2_2, t2_3, t2_4, t3; - --enable_warnings - -# Testcase: y.y.y.3: -# Checking for circular trigger definitions -let $message= Testcase y.y.y.3: Circular trigger reference; ---source include/show_msg.inc - use test; - --disable_warnings - drop table if exists t1; - drop table if exists t2; - drop table if exists t3; - drop table if exists t4; - --enable_warnings - eval create table t1 (f1 integer) engine = $engine_type; - eval create table t2 (f2 integer) engine = $engine_type; - eval create table t3 (f3 integer) engine = $engine_type; - eval create table t4 (f4 integer) engine = $engine_type; - - insert into t1 values (0); - create trigger tr1 after insert on t1 - for each row insert into t2 (f2) values (new.f1+1); - create trigger tr2 after insert on t2 - for each row insert into t3 (f3) values (new.f2+1); - create trigger tr3 after insert on t3 - for each row insert into t4 (f4) values (new.f3+1); - create trigger tr4 after insert on t4 - for each row insert into t1 (f1) values (new.f4+1); - - # OBN See bug 11896 - --error 1442 - insert into t1 values (1); - select * from t1; - select * from t2; - select * from t3; - select * from t4; - -#Cleanup - --disable_warnings - drop trigger tr1; - drop trigger tr2; - drop trigger tr3; - drop trigger tr4; - drop table t1; - drop table t2; - drop table t3; - drop table t4; - --enable_warnings - - -#Section y.y.y.4 -# Testcase: create recursive trigger/storedprocedures conditions -let $message= Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889); ---source include/show_msg.inc - -set @sql_mode='traditional'; - eval create table t1_sp ( - count integer, - var136 tinyint, - var151 decimal) engine=$engine_type; - - delimiter //; - create procedure trig_sp() - begin - declare done int default 0; - declare var151 decimal; - declare var136 tinyint; - declare cur1 cursor for select f136, f151 from tb3; - declare continue handler for sqlstate '01000' set done = 1; - set @counter= @counter+1; - open cur1; - fetch cur1 into var136, var151; - wl_loop: WHILE NOT done DO - insert into t1_sp values (@counter, var136, var151); - fetch cur1 into var136, var151; - END WHILE wl_loop; - close cur1; - end// - delimiter ;// - - create trigger trg before insert on t1_sp - for each row call trig_sp(); - - set @counter=0; - select @counter; - --error 1424 - call trig_sp(); - select @counter; - select count(*) from tb3; - select count(*) from t1_sp; - -#Cleanup - --disable_warnings - drop procedure trig_sp; - drop trigger trg; - drop table t1_sp; - --enable_warnings - - -# Testcase: y.y.y.5: -# Checking rollback of nested trigger definitions -let $message= Testcase y.y.y.5: Roleback of nested trigger references; ---source include/show_msg.inc - - set @@sql_mode='traditional'; - use test; - --disable_warnings - drop table if exists t1; - drop table if exists t2; - drop table if exists t3; - drop table if exists t4; - --enable_warnings - eval create table t1 (f1 integer) engine = $engine_type; - eval create table t2 (f2 integer) engine = $engine_type; - eval create table t3 (f3 integer) engine = $engine_type; - eval create table t4 (f4 tinyint) engine = $engine_type; - show create table t1; - insert into t1 values (1); - create trigger tr1 after insert on t1 - for each row insert into t2 (f2) values (new.f1+1); - create trigger tr2 after insert on t2 - for each row insert into t3 (f3) values (new.f2+1); - create trigger tr3 after insert on t3 - for each row insert into t4 (f4) values (new.f3+1000); - -#lock tables t1 write, t2 write, t3 write, t4 write; - - set autocommit=0; - start transaction; - --error 1264 - insert into t1 values (1); - commit; - select * from t1; - select * from t2; - select * from t3; -#unlock tables; -#Cleanup - --disable_warnings - drop trigger tr1; - drop trigger tr2; - drop trigger tr3; - drop table t1; - drop table t2; - drop table t3; - drop table t4; - --enable_warnings - diff --git a/mysql-test/suite/funcs_1/views/func_view.inc b/mysql-test/suite/funcs_1/views/func_view.inc index c477eafc610..fee9fe190b2 100644 --- a/mysql-test/suite/funcs_1/views/func_view.inc +++ b/mysql-test/suite/funcs_1/views/func_view.inc @@ -3,11 +3,8 @@ # Functions within VIEWs # # # ################################################### -# 14.09.2005 ML +# Created 2005-09-14 mleich -let $message= ! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables; ---source include/show_msg80.inc # # 0. Some notes about this test: # ################################################################# @@ -15,9 +12,9 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # 0.1 This test is unfinished and incomplete, but already useful. # ----------------------------------------------------------------- # 0.1.1 There will be architectural changes in future. -# The long sequences with +# The long sequences with # let $col_type= ; -# --source suite/funcs_1/views/ # per every column type do not look very smart. # @@ -42,20 +39,13 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # which was valid during VIEW creation time. This means some variations # of the SQL mode are needed. # 0.1.3 There are much more functions to be tested. -# 0.1.4 There are problems with the option "--ps-protocol". -# Double values with 15 digit mantissa are printed with 14 digit -# mantissa (Bug#11589). -# I altered the Minimum/Maximum double values to 14 digit mantissa -# to avoid these problems. But there are some other unsolved problems -# with "--ps-protocol". ---disable_ps_protocol -# 0.1.5 The result sets of some CAST sub testcases with ugly function parameter +# 0.1.4 The result sets of some CAST sub testcases with ugly function parameter # column data type combinations must be discussed. # # # 0.2 How to valuate the test results: # --------------------------------------------------------------------------- -# Due to the extreme "greedy bug hunting" architecture (combinatorics +# Due to the extreme "greedy bug hunting" architecture (combinatorics # + heavy use of sourced scripts) of the following tests, there will be # - no abort of the test execution, when one statements gets an return # code != 0 (The sub testcases are independend.) @@ -68,13 +58,13 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # But there will be a special messages within the protocol files. # Example: # "Attention: CAST --> SIGNED INTEGER -# The file with expected results suffers from Bug 5083 5913 9809"; +# The file with expected results suffers from Bug 5913"; # means, the file with expected results contains result sets which # are known to be wrong. -# "Attention: The last failed" +# "Attention: The last failed" # means, a statement which should be successful (bugfree MySQL) # failed. -# +# # "Passed" : The behaviour of your MySQL version does not differ from the # version used to generate the files with expected results. # Known bugs affecting these tests could be retrieved by @@ -96,7 +86,7 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # with the suspicious result set or server response. # Now all t1_values records are preloaded. # 2. Start the server without the initial cleanup of databases etc. -# This preserves the content of the table t1_values, which +# This preserves the content of the table t1_values, which # might be needed for replaying the situation. # Example: # ./mysql-test-run.pl --socket=var/tmp/master.sock --start-dirty @@ -157,7 +147,7 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # The script will work with the VIEWs, but omit the simple selects. # The "reject" file contains the view select result sets. # 3. Compare the "reject" files of 1. and 2. within a graphical diff tool. -# +# # --disable_warnings @@ -187,6 +177,7 @@ CREATE TABLE t1_modes --enable_query_log # The table to be used in the FROM parts of the SELECTs +--replace_result $type eval CREATE TABLE t1_values ( id BIGINT AUTO_INCREMENT, @@ -197,7 +188,7 @@ eval CREATE TABLE t1_values ##### BEGIN Basic preparations ####################################### # # 1. Extend t1_values with the columns you need -# - the column name must show the data type +# - the column name must show the data type # - do not add NOT NULL columns # - do not worry if the intended column data type is not # available for some storage engines @@ -229,7 +220,7 @@ ALTER TABLE t1_values ADD my_decimal DECIMAL(64,30); # we do not want to start with "illegal/unexpected/..." values. # Such experiments should be done in other testcases. # Please be careful -# - modifying column values of predefined rows they might change many +# - modifying column values of predefined rows they might change many # result sets # - additional predefined rows should be really useful for the majority of # all sub testcases, since they blow up all result sets. @@ -255,20 +246,18 @@ INSERT INTO t1_values SET my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; -# Note(ML): Values like -# - my_timestamp = '19700101030000' do not work -# - my_double = -1.7976931348623157E+308 cause problems with -# --ps-protocol (Bug#11589) +# shortened due to bug#32285 +# my_double = -1.7976931348623157E+308; # # 2.3 record -- everything to "maximum" # numbers, date/time types -> maximum of range # strings, blobs, binaries -> '<- full length of used data type>' # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = '<--------30 characters------->', + my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), - my_binary_30 = '<--------30 characters------->', + my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -279,10 +268,8 @@ INSERT INTO t1_values SET my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; -# Note(ML): Values like -# - my_timestamp = '20380101030000' do not work -# - my_double = 1.7976931348623157E+308 cause problems with -# --ps-protocol (Bug#11589) +# shortened due to bug#32285 +# my_double = -1.7976931348623157E+308; # # 2.4 record -- everything to "magic" value if available or # other interesting value @@ -291,28 +278,28 @@ INSERT INTO t1_values SET # characters and preceeding and trailing spaces # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = ' ---äÖüß@µ*$-- ', - my_varchar_1000 = ' ---äÖüß@µ*$-- ', - my_binary_30 = ' ---äÖüß@µ*$-- ', - my_varbinary_1000 = ' ---äÖüß@µ*$-- ', + my_char_30 = ' ---äÖüß@µ*$-- ', + my_varchar_1000 = ' ---äÖüß@µ*$-- ', + my_binary_30 = ' ---äÖüß@µ*$-- ', + my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, - my_bigint = 0, + my_bigint = 0, my_decimal = 0.0, my_double = 0; # # 2.5 record -- everything to "harmless" value if available # numbers -> -1 (logical) -# strings, blobs, binaries -> '-1' useful for numeric functions +# strings, blobs, binaries -> '-1' useful for numeric functions # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = '-1', - my_varchar_1000 = '-1', - my_binary_30 = '-1', - my_varbinary_1000 = '-1', + my_char_30 = '-1', + my_varchar_1000 = '-1', + my_binary_30 = '-1', + my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -330,11 +317,11 @@ INSERT INTO t1_values SET # records which should be used dedicated to the SELECT above # - Please avoid WHERE clauses # - Include the PRIMARY KEY ("id") of the base table t1_values into the -# select column list -# - Include the base table column used as function parameter into the -# select column list, because it is much easier to check the results +# select column list +# - Include the base table column used as function parameter into the +# select column list, because it is much easier to check the results # - Do not forget to escape single quotes -# Example: +# Example: # SET @my_select = 'SELECT sqrt(my_bigint), my_bigint, id FROM t1_values' # SET @my_select = 'SELECT CONCAT(\'A\',my_char_30), id FROM t1_values'; # - Statements, which reveal open crashing bugs MUST be disabled. @@ -347,10 +334,10 @@ INSERT INTO t1_values SET # most preferred function. # This method avoids that we forget a function and gives a better # overview. -# +# # If you have the time to check the result sets do the insert of the # SELECT with function via: -# eval SET @my_select = +# eval SET @my_select = # ''; # --source suite/funcs_1/views/fv1.inc # fv1.inc sets t1_selects.disable_result to 'No' and the effect will be, @@ -358,7 +345,7 @@ INSERT INTO t1_values SET # # If you do have the time to check the result sets do the insert of the # SELECT with function via: -# eval SET @my_select = +# eval SET @my_select = # ''; # --source suite/funcs_1/views/fv2.inc # fv2.inc sets t1_selects.disable_result to 'Yes' and the effect will be, @@ -384,7 +371,7 @@ INSERT INTO t1_values SET # # Example: # The function to be tested is "sqrt". -# The minimum, maximum, default and NULL value are covered by the +# The minimum, maximum, default and NULL value are covered by the # predefined rows. # A value where sqrt() = in strict mathematics # would be of interest. @@ -416,11 +403,11 @@ eval INSERT INTO t1_values SET select_id = @select_id, $col_type = -25; # SELECT * FROM t1_values; -# 1. Cast Functions and Operators -# 1.1. CAST +# 1. Cast Functions and Operators +# 1.1 CAST # # Note(ML): I guess the CAST routines are used in many other functions. -# Therefore check also nearly all "ugly" variants like +# Therefore check also nearly all "ugly" variants like # CAST( AS DECIMAL) here. # # suite/funcs_1/views/fv_cast.inc contains @@ -428,6 +415,7 @@ eval INSERT INTO t1_values SET select_id = @select_id, # # # 1.1.1. CAST --> BINARY +--echo ##### 1.1.1. CAST --> BINARY let $target_type= BINARY; # let $col_type= my_char_30; @@ -457,6 +445,7 @@ let $col_type= my_year; # 1.1.2. CAST --> CHAR +--echo ##### 1.1.2. CAST --> CHAR let $target_type= CHAR; # let $col_type= my_char_30; @@ -486,6 +475,7 @@ let $col_type= my_year; # 1.1.3. CAST --> DATE +--echo ##### 1.1.3. CAST --> DATE let $target_type= DATE; # let $col_type= my_char_30; @@ -525,6 +515,7 @@ let $col_type= my_year; # 1.1.4. CAST --> DATETIME +--echo ##### 1.1.4. CAST --> DATETIME let $target_type= DATETIME; # let $col_type= my_char_30; @@ -564,6 +555,7 @@ let $col_type= my_year; # 1.1.5. CAST --> TIME +--echo ##### 1.1.5. CAST --> TIME let $target_type= TIME; # let $col_type= my_char_30; @@ -587,15 +579,10 @@ let $col_type= my_bigint; eval INSERT INTO t1_values SET select_id = @select_id, $col_type = 1758; let $col_type= my_double; -let $message= some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results; ---source include/show_msg80.inc -if (0) -{ +# Bug#12440: CAST(data type DOUBLE AS TIME) strange results; --source suite/funcs_1/views/fv_cast.inc eval INSERT INTO t1_values SET select_id = @select_id, $col_type = +1.758E+3; -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -609,6 +596,7 @@ let $col_type= my_year; # 1.1.6. CAST --> DECIMAL +--echo ##### 1.1.6. CAST --> DECIMAL # Set the following to (37,2) since the default was changed to (10,0) - OBN let $target_type= DECIMAL(37,2); # @@ -632,16 +620,11 @@ let $col_type= my_bigint; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_decimal; --source suite/funcs_1/views/fv_cast.inc -let $message= some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian; ---source include/show_msg80.inc -if (0) -{ +# Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian; let $col_type= my_double; --source suite/funcs_1/views/fv_cast.inc eval INSERT INTO t1_values SET select_id = @select_id, $col_type = -0.33333333E+4; -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -655,15 +638,13 @@ let $col_type= my_year; # 1.1.7. CAST --> SIGNED INTEGER +--echo ##### 1.1.7. CAST --> SIGNED INTEGER let $target_type= SIGNED INTEGER; # -let $message= +let $message= "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later"; + Status: To be fixed later"; --source include/show_msg80.inc let $col_type= my_char_30; --source suite/funcs_1/views/fv_cast.inc @@ -677,14 +658,9 @@ let $col_type= my_bigint; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_decimal; --source suite/funcs_1/views/fv_cast.inc -let $message= some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result; ---source include/show_msg80.inc -if (0) -{ +# Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result; let $col_type= my_double; --source suite/funcs_1/views/fv_cast.inc -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -698,11 +674,12 @@ let $col_type= my_year; # 1.1.8. CAST --> UNSIGNED INTEGER +--echo ##### 1.1.8. CAST --> UNSIGNED INTEGER let $target_type= UNSIGNED INTEGER; # -let $message= +let $message= "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809"; + The file with expected results suffers from Bug 5913"; --source include/show_msg80.inc let $col_type= my_char_30; --source suite/funcs_1/views/fv_cast.inc @@ -717,13 +694,11 @@ let $col_type= my_bigint; let $col_type= my_decimal; --source suite/funcs_1/views/fv_cast.inc let $message= some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast; +Bug#5913 Traditional mode: BIGINT range not correctly delimited; --source include/show_msg80.inc -if (0) -{ +# Bug#8663 cant use bgint unsigned as input to cast let $col_type= my_double; --source suite/funcs_1/views/fv_cast.inc -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -748,38 +723,38 @@ let $col_type= my_year; let $target_charset= utf8; # let $col_type= my_char_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc # # 1.3.2 CONVERT(expr USING koi8r) let $target_charset= koi8r; let $col_type= my_char_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc @@ -787,7 +762,7 @@ $col_type, id FROM t1_values'; # 2. Control Flow Functions # 2.1. CASE value WHEN [compare-value] THEN result [WHEN ...] [ELSE result] # END or -# CASE WHEN [condition] THEN result [WHEN ...] [ELSE result] END +# CASE WHEN [condition] THEN result [WHEN ...] [ELSE result] END # # FIXME: to be implemented # @@ -848,11 +823,6 @@ let $col_type= my_year; # select if(isnull(`test`.`t1`.`f1`),_latin1'IS NULL', # _latin1'IS NOT NULL'),... # -let $message= -"Attention: IF($col_type IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails."; ---source include/show_msg80.inc # Bug#11689 success on Create view .. IF(col1 IS NULL,...), col2 ; but SELECT fails let $col_type= my_char_30; --source suite/funcs_1/views/fv_if2.inc @@ -891,7 +861,7 @@ let $col_type= my_year; --source suite/funcs_1/views/fv_if2.inc -# 2.3. IFNULL(expr1,expr2) +# 2.3. IFNULL(expr1,expr2) # If expr1 is not NULL, IFNULL() returns expr1, else it returns expr2. # # suite/funcs_1/views/fv_ifnull.inc contains @@ -942,7 +912,7 @@ let $col_type= my_year; # 2.4. NULLIF(expr1,expr2) # Returns NULL if expr1 = expr2 is true, else returns expr1. -# This is the same as +# This is the same as # CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END. # # FIXME: to be implemented @@ -979,11 +949,11 @@ $col_type, id FROM t1_values'; # 3.5. CHAR_LENGTH(str) # 3.6 CHARACTER_LENGTH(str) # CHARACTER_LENGTH() is a synonym for CHAR_LENGTH(). -# 3.7. COMPRESS(string_to_compress) +# 3.7. COMPRESS(string_to_compress) # 3.8. CONCAT(str1,str2,...) # 3.9. CONCAT_WS(separator,str1,str2,...) # 3.10. CONV(N,from_base,to_base) -# 3.11. ELT(N,str1,str2,str3,...) +# 3.11. ELT(N,str1,str2,str3,...) # 3.12. EXPORT_SET(bits,on,off[,separator[,number_of_bits]]) # 3.13. FIELD(str,str1,str2,str3,...) # 3.14. FIND_IN_SET(str,strlist) @@ -1011,55 +981,38 @@ $col_type, id FROM t1_values'; # 3.19. LEFT(str,len) -# Returns the leftmost len characters from the string str. +# Returns the leftmost len characters from the string str. let $col_type= my_char_30; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -# -let $message= -"Attention: LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, - because there are 32/64 Bit differences; ---source include/show_msg80.inc # Bug#11728 string function LEFT, strange undocumented behaviour, strict mode # Bug#10963 LEFT string function returns wrong result with large length let $col_type= my_bigint; -if (0) -{ -# Bug#10963 LEFT string function returns wrong result with large length -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -} -# let $col_type= my_decimal; eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -# -if (0) -{ # Bug#10963 LEFT string function returns wrong result with large length let $col_type= my_double; eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -} - # 3.20. LENGTH(str) let $col_type= my_char_30; @@ -1085,8 +1038,11 @@ $col_type, id FROM t1_values'; # If the file doesn't exist or cannot be read ... , # the function returns NULL. # SELECT LOADFILE -eval SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +--replace_result $MYSQLTEST_VARDIR +eval SET @my_select = +'SELECT LOAD_FILE(''$MYSQLTEST_VARDIR/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; --source suite/funcs_1/views/fv1.inc @@ -1253,8 +1209,8 @@ $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv2.inc -# 3.26. MAKE_SET(bits,str1,str2,...) -# ..... +# 3.26. MAKE_SET(bits,str1,str2,...) +# ..... # FIXME: to be implemented ################################################################################ @@ -1278,6 +1234,7 @@ SET sql_mode = ''; # let $message= "# The basic preparations end and the main test starts here"; --source include/show_msg80.inc +--disable_ps_protocol ##### The tests start here ##################################################### @@ -1306,18 +1263,18 @@ while ($select_id) if ($view_select_result) { # Create the VIEW + --replace_result $MYSQLTEST_VARDIR eval CREATE VIEW v1 AS $my_select; --disable_query_log eval set @got_errno= $mysql_errno ; let $run0= `SELECT @got_errno = 0`; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) - { - SELECT 'Attention: The last CREATE VIEW failed ' AS "" - UNION - SELECT '' ; - } --enable_query_log + if (!$run0) + { + --echo + --echo Attention: The last CREATE VIEW failed + --echo + } } # FIXME The loop over the modes will start here. @@ -1325,27 +1282,24 @@ while ($select_id) if ($simple_select_result) { # Simple SELECT on the base table of the VIEW for comparison - + if ($run_no_result) { --disable_result_log } + --replace_result $MYSQLTEST_VARDIR eval $my_select - WHERE select_id = $select_id OR select_id IS NULL; + WHERE select_id = $select_id OR select_id IS NULL order by id; if ($run_no_result) { --enable_result_log } - --disable_query_log - eval set @got_errno= $mysql_errno ; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) + if ($mysql_errno) { - SELECT 'Attention: The last SELECT on the base table failed' AS "" - UNION - SELECT '' ; + --echo + --echo Attention: The last SELECT on the base table failed + --echo } - --enable_query_log } # $run0 is 1, if CREATE VIEW was successful. @@ -1353,17 +1307,14 @@ while ($select_id) if ($run0) { # Check the CREATE VIEW statement + --replace_result $MYSQLTEST_VARDIR SHOW CREATE VIEW v1; - --disable_query_log - eval set @got_errno= $mysql_errno ; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) + if ($mysql_errno) { - SELECT 'Attention: The last SHOW CREATE VIEW failed' AS "" - UNION - SELECT '' ; + --echo + --echo Attention: The last SHOW CREATE VIEW failed + --echo } - --enable_query_log # Maybe a Join is faster if ($run_no_result) @@ -1372,21 +1323,17 @@ while ($select_id) } eval SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values - WHERE select_id = $select_id OR select_id IS NULL); + WHERE select_id = $select_id OR select_id IS NULL) order by id; if ($run_no_result) { --enable_result_log } - --disable_query_log - eval set @got_errno= $mysql_errno ; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) + if ($mysql_errno) { - SELECT 'Attention: The last SELECT from VIEW failed' AS "" - UNION - SELECT '' ; + --echo + --echo Attention: The last SELECT from VIEW failed + --echo } - --enable_query_log DROP VIEW v1; } @@ -1395,11 +1342,12 @@ while ($select_id) # Produce two empty lines as separator between different SELECTS # to be tested. - --disable_query_log - SELECT '' AS ""; - --enable_query_log + --echo + --echo dec $select_id ; } +--enable_ps_protocol + DROP TABLE t1_selects, t1_modes, t1_values; diff --git a/mysql-test/suite/funcs_1/views/views_master.inc b/mysql-test/suite/funcs_1/views/views_master.inc index f08082676ed..b6628070705 100644 --- a/mysql-test/suite/funcs_1/views/views_master.inc +++ b/mysql-test/suite/funcs_1/views/views_master.inc @@ -4,7 +4,7 @@ # 2007-10-05 mleich # 1. Fix for Bug#31237 Test "ndb_views" fails because of differing order ... # 2. Cleanup of test -# 2007-11-15 hhunger WL#4084: Review and fix all disabled tests ... +# 2007-11-15 hhunger WL#4084: Review and fix all disabled tests ... let $message= ! Attention: The file with the expected results is not | thoroughly checked. @@ -19,7 +19,7 @@ let $message= ! Attention: The file with the expected results is not # If this bug is fixed, please # 1. set the following variable to 0 # 2. check, if the test passes -# 3. remove the workarounds +# 3. remove the workarounds let $have_bug_32285= 1; if ($have_bug_32285) { @@ -2004,7 +2004,7 @@ let $message= Testcase 3.3.1.49A ; # The annoying redundant # eval INSERT INTO t1_results VALUES (@v3_to_v1_options,@statement, # @v3_to_v1_violation,$mysql_errno); -# could not be put into a file to be sourced because of the closed +# could not be put into a file to be sourced because of the closed # Bug#10267 mysqltest, wrong number of loops when a script is sourced # within a loop # To be implemented later. From f3069591530c936ce0961e2db696d5836a880d64 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Mar 2008 19:48:54 +0200 Subject: [PATCH 014/435] mysql.spec.sh: Made Federated and Cluster optional support-files/mysql.spec.sh: Made Federated and Cluster optional --- support-files/mysql.spec.sh | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 9a417d5f02d..f26a922dbc3 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -27,6 +27,16 @@ %{?_with_yassl:%define YASSL_BUILD 1} %{!?_with_yassl:%define YASSL_BUILD 0} +# use "rpmbuild --with cluster" or "rpm --define '_with_cluster 1'" (for RPM 3.x) +# to build with cluster support (off by default) +%{?_with_cluster:%define CLUSTER_BUILD 1} +%{!?_with_cluster:%define CLUSTER_BUILD 0} + +# use "rpmbuild --with federated" or "rpm --define '_with_federated 1'" (for RPM 3.x) +# to build with federated support (off by default) +%{?_with_federated:%define FEDERATED_BUILD 1} +%{!?_with_federated:%define FEDERATED_BUILD 0} + %if %{STATIC_BUILD} %define release 0 %else @@ -134,6 +144,7 @@ This package contains the standard MySQL clients and administration tools. %{see_base} +%if %{CLUSTER_BUILD} %package ndb-storage Summary: MySQL - ndbcluster storage engine Group: Applications/Databases @@ -174,6 +185,7 @@ This package contains some extra ndbcluster storage engine tools for the advance They should be used with caution. %{see_base} +%endif %package test Requires: %{name}-client perl-DBI perl @@ -322,12 +334,16 @@ CXXFLAGS=`echo "${MYSQL_BUILD_CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno BuildMySQL "--enable-shared \ --with-debug \ --with-innodb \ +%if %{CLUSTER_BUILD} --with-ndbcluster \ +%endif --with-archive-storage-engine \ --with-csv-storage-engine \ --with-example-storage-engine \ --with-blackhole-storage-engine \ +%if %{FEDERATED_BUILD} --with-federated-storage-engine \ +%endif --with-partition \ --with-big-tables \ --with-comment=\"MySQL Community Server - Debug (GPL)\"") @@ -351,12 +367,16 @@ CFLAGS="${MYSQL_BUILD_CFLAGS:-$RPM_OPT_FLAGS} -g" \ CXXFLAGS="${MYSQL_BUILD_CXXFLAGS:-$RPM_OPT_FLAGS -felide-constructors -fno-exceptions -fno-rtti} -g" \ BuildMySQL "--enable-shared \ --with-innodb \ +%if %{CLUSTER_BUILD} --with-ndbcluster \ +%endif --with-archive-storage-engine \ --with-csv-storage-engine \ --with-example-storage-engine \ --with-blackhole-storage-engine \ +%if %{FEDERATED_BUILD} --with-federated-storage-engine \ +%endif --with-partition \ --with-embedded-server \ --with-big-tables \ @@ -563,12 +583,13 @@ sleep 2 #scheduled service packs and more. Visit www.mysql.com/enterprise for more #information." +%if %{CLUSTER_BUILD} %post ndb-storage mysql_clusterdir=/var/lib/mysql-cluster # Create cluster directory if needed if test ! -d $mysql_clusterdir; then mkdir -m 755 $mysql_clusterdir; fi - +%endif %preun server if test $1 = 0 @@ -603,7 +624,9 @@ fi %doc mysql-release-%{mysql_version}/COPYING mysql-release-%{mysql_version}/README %doc mysql-release-%{mysql_version}/support-files/my-*.cnf +%if %{CLUSTER_BUILD} %doc mysql-release-%{mysql_version}/support-files/ndb-*.ini +%endif %doc %attr(644, root, root) %{_infodir}/mysql.info* @@ -698,6 +721,7 @@ fi %postun shared /sbin/ldconfig +%if %{CLUSTER_BUILD} %files ndb-storage %defattr(-,root,root,0755) %attr(755, root, root) %{_sbindir}/ndbd @@ -745,6 +769,7 @@ fi %doc %attr(644, root, man) %{_mandir}/man1/ndb_delete_all.1* %doc %attr(644, root, man) %{_mandir}/man1/ndb_drop_index.1* %doc %attr(644, root, man) %{_mandir}/man1/ndb_drop_table.1* +%endif %files devel %defattr(-, root, root, 0755) @@ -767,8 +792,10 @@ fi %{_libdir}/mysql/libmysqlclient_r.la %{_libdir}/mysql/libmystrings.a %{_libdir}/mysql/libmysys.a +%if %{CLUSTER_BUILD} %{_libdir}/mysql/libndbclient.a %{_libdir}/mysql/libndbclient.la +%endif %{_libdir}/mysql/libvio.a %{_libdir}/mysql/libz.a %{_libdir}/mysql/libz.la @@ -777,7 +804,9 @@ fi %defattr(-, root, root, 0755) # Shared libraries (omit for architectures that don't support them) %{_libdir}/libmysql*.so* +%if %{CLUSTER_BUILD} %{_libdir}/libndb*.so* +%endif %files test %defattr(-, root, root, 0755) @@ -799,6 +828,11 @@ fi # itself - note that they must be ordered by date (important when # merging BK trees) %changelog +* Mon Mar 31 2008 Kent Boortz + +- Made the "Federated" storage engine an option +- Made the "Cluster" storage engine and sub packages an option + * Wed Mar 19 2008 Joerg Bruehe - Add the man pages for "ndbd" and "ndb_mgmd". From 24ff5760e0cf77c21cf5769090b54eab0b72a1ac Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 11:03:12 +0200 Subject: [PATCH 015/435] Portability fix sql/set_var.cc: Unbreak REPORT_PORT on big endian machines where sizeof long != sizeof int. --- sql/set_var.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/set_var.cc b/sql/set_var.cc index 99931d7bafc..b4b81ba2fbe 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -713,7 +713,7 @@ static uchar *slave_get_report_port(THD *thd) return (uchar*) &thd->sys_var_tmp.long_value; } -static sys_var_readonly sys_repl_report_port(&vars, "report_port", OPT_GLOBAL, SHOW_INT, slave_get_report_port); +static sys_var_readonly sys_repl_report_port(&vars, "report_port", OPT_GLOBAL, SHOW_LONG, slave_get_report_port); #endif From 93f2e39529c000fb3dd1d81277f48f4b28814153 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 13:18:31 +0200 Subject: [PATCH 016/435] Post merge fix for ChangeSet@1.2583, 2008-03-31 Merge five.local.lan:/work/merge/mysql-5.0-Bug into five.local.lan:/work/merge/mysql-5.1-Bug Addditional manual fixes will be needed. MERGE: 1.1810.3667.16 Which contains ChangeSet@1.1810.3667.16, 2008-03-31 Fix for Bug #35335 funcs_1: Some tests fail within load_file during pushbuild runs ... mysql-test/std_data/funcs_1/ndb_tb1.txt: Rename: mysql-test/suite/funcs_1/data/ndb_tb1.txt -> mysql-test/std_data/funcs_1/ndb_tb1.txt mysql-test/std_data/funcs_1/ndb_tb2.txt: Rename: mysql-test/suite/funcs_1/data/ndb_tb2.txt -> mysql-test/std_data/funcs_1/ndb_tb2.txt mysql-test/std_data/funcs_1/ndb_tb3.txt: Rename: mysql-test/suite/funcs_1/data/ndb_tb3.txt -> mysql-test/std_data/funcs_1/ndb_tb3.txt mysql-test/std_data/funcs_1/ndb_tb4.txt: Rename: mysql-test/suite/funcs_1/data/ndb_tb4.txt -> mysql-test/std_data/funcs_1/ndb_tb4.txt --- mysql-test/Makefile.am | 4 + .../data => std_data/funcs_1}/ndb_tb1.txt | 0 .../data => std_data/funcs_1}/ndb_tb2.txt | 0 .../data => std_data/funcs_1}/ndb_tb3.txt | 0 .../data => std_data/funcs_1}/ndb_tb4.txt | 0 .../suite/funcs_1/datadict/datadict_load.inc | 16 +- .../funcs_1/datadict/processlist_val.inc | 2 +- mysql-test/suite/funcs_1/include/ndb_tb1.inc | 119 ++++----- mysql-test/suite/funcs_1/include/ndb_tb2.inc | 106 ++++---- mysql-test/suite/funcs_1/include/ndb_tb3.inc | 122 ++++----- mysql-test/suite/funcs_1/include/ndb_tb4.inc | 106 ++++---- .../suite/funcs_1/r/innodb_func_view.result | 219 ++++++++-------- .../suite/funcs_1/r/innodb_storedproc.result | 121 ++++----- .../funcs_1/r/innodb_storedproc_02.result | 8 +- .../suite/funcs_1/r/innodb_trig_03.result | 123 ++++----- .../suite/funcs_1/r/innodb_trig_03e.result | 10 +- .../suite/funcs_1/r/innodb_trig_08.result | 235 ++++++++--------- .../suite/funcs_1/r/innodb_trig_09.result | 152 +++++------ .../suite/funcs_1/r/memory_func_view.result | 219 ++++++++-------- .../suite/funcs_1/r/memory_storedproc.result | 163 +++++++----- .../funcs_1/r/memory_storedproc_02.result | 8 +- .../suite/funcs_1/r/memory_trig_03.result | 111 ++++---- .../suite/funcs_1/r/memory_trig_03e.result | 8 +- .../suite/funcs_1/r/memory_trig_08.result | 223 ++++++++-------- .../suite/funcs_1/r/memory_trig_09.result | 140 ++++++----- .../suite/funcs_1/r/myisam_func_view.result | 219 ++++++++-------- .../suite/funcs_1/r/myisam_storedproc.result | 121 ++++----- .../funcs_1/r/myisam_storedproc_02.result | 8 +- .../suite/funcs_1/r/myisam_trig_03.result | 123 ++++----- .../suite/funcs_1/r/myisam_trig_03e.result | 8 +- .../suite/funcs_1/r/myisam_trig_08.result | 235 ++++++++--------- .../suite/funcs_1/r/myisam_trig_09.result | 152 +++++------ .../suite/funcs_1/r/myisam_views.result | 238 +++++++++--------- .../suite/funcs_1/r/ndb_func_view.result | 219 ++++++++-------- .../suite/funcs_1/r/ndb_storedproc.result | 123 ++++----- .../suite/funcs_1/r/ndb_storedproc_02.result | 62 +++-- .../suite/funcs_1/r/ndb_storedproc_03.result | 48 ++-- .../suite/funcs_1/r/ndb_storedproc_06.result | 50 ++-- .../suite/funcs_1/r/ndb_storedproc_07.result | 48 ++-- .../suite/funcs_1/r/ndb_storedproc_08.result | 48 ++-- .../suite/funcs_1/r/ndb_storedproc_10.result | 50 ++-- .../suite/funcs_1/r/ndb_trig_0102.result | 175 ++++++------- mysql-test/suite/funcs_1/r/ndb_trig_03.result | 123 ++++----- .../suite/funcs_1/r/ndb_trig_03e.result | 10 +- .../suite/funcs_1/r/ndb_trig_0407.result | 157 ++++++------ mysql-test/suite/funcs_1/r/ndb_trig_08.result | 235 ++++++++--------- mysql-test/suite/funcs_1/r/ndb_trig_09.result | 152 +++++------ .../suite/funcs_1/r/ndb_trig_1011ext.result | 121 ++++----- mysql-test/suite/funcs_1/r/ndb_views.result | 206 +++++++-------- .../funcs_1/storedproc/storedproc_02.inc | 8 +- .../funcs_1/storedproc/storedproc_master.inc | 83 +++--- mysql-test/suite/funcs_1/t/is_engines.test | 2 +- mysql-test/suite/funcs_1/t/ndb_trig_03.test | 2 +- mysql-test/suite/funcs_1/t/ndb_trig_08.test | 2 +- mysql-test/suite/funcs_1/t/ndb_views.test | 2 +- mysql-test/suite/funcs_1/t/suite.opt | 2 +- .../suite/funcs_1/triggers/trig_frkey.inc | 2 +- .../suite/funcs_1/triggers/triggers_0102.inc | 6 +- .../suite/funcs_1/triggers/triggers_03.inc | 11 +- .../funcs_1/triggers/triggers_03e_columns.inc | 22 +- .../triggers/triggers_03e_db_level.inc | 18 +- .../triggers/triggers_03e_db_table_mix.inc | 16 +- .../funcs_1/triggers/triggers_03e_definer.inc | 18 +- .../triggers/triggers_03e_global_db_mix.inc | 16 +- .../funcs_1/triggers/triggers_03e_prepare.inc | 12 +- .../triggers/triggers_03e_table_level.inc | 18 +- .../triggers/triggers_03e_transaction.inc | 6 +- .../suite/funcs_1/triggers/triggers_0407.inc | 208 +++++++-------- .../suite/funcs_1/triggers/triggers_08.inc | 190 +++++++------- .../suite/funcs_1/triggers/triggers_09.inc | 146 ++++++----- mysql-test/suite/funcs_1/views/func_view.inc | 132 +++++----- 71 files changed, 3112 insertions(+), 2956 deletions(-) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/ndb_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/ndb_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/ndb_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/ndb_tb4.txt (100%) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index a77dccdebf2..600023b877e 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -46,6 +46,7 @@ dist-hook: $(distdir)/std_data/ndb_backup51_data_le \ $(distdir)/std_data/parts \ $(distdir)/lib \ + $(distdir)/funcs_1 \ $(distdir)/lib/My -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t @@ -75,6 +76,7 @@ dist-hook: $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(distdir)/std_data/ndb_backup51_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_le/BACKUP* $(distdir)/std_data/ndb_backup51_data_le $(INSTALL_DATA) $(srcdir)/std_data/parts/part_* $(distdir)/std_data/parts + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib $(INSTALL_DATA) $(srcdir)/lib/My/*.pm $(distdir)/lib/My -rm -rf `find $(distdir)/suite -type d -name SCCS` $(distdir)/suite/row_lock @@ -93,6 +95,7 @@ install-data-local: $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_le \ $(DESTDIR)$(testdir)/std_data/parts \ $(DESTDIR)$(testdir)/lib \ + $(DESTDIR)$(testdir)/funcs_1 \ $(DESTDIR)$(testdir)/lib/My $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t @@ -127,6 +130,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_le/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_le $(INSTALL_DATA) $(srcdir)/std_data/parts/part_* $(DESTDIR)$(testdir)/std_data/parts + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib $(INSTALL_DATA) $(srcdir)/lib/My/*.pm $(DESTDIR)$(testdir)/lib/My for f in `(cd $(srcdir); find suite -type f | egrep -v 'SCCS|row_lock')`; \ diff --git a/mysql-test/suite/funcs_1/data/ndb_tb1.txt b/mysql-test/std_data/funcs_1/ndb_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/ndb_tb1.txt rename to mysql-test/std_data/funcs_1/ndb_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/ndb_tb2.txt b/mysql-test/std_data/funcs_1/ndb_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/ndb_tb2.txt rename to mysql-test/std_data/funcs_1/ndb_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/ndb_tb3.txt b/mysql-test/std_data/funcs_1/ndb_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/ndb_tb3.txt rename to mysql-test/std_data/funcs_1/ndb_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/ndb_tb4.txt b/mysql-test/std_data/funcs_1/ndb_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/ndb_tb4.txt rename to mysql-test/std_data/funcs_1/ndb_tb4.txt diff --git a/mysql-test/suite/funcs_1/datadict/datadict_load.inc b/mysql-test/suite/funcs_1/datadict/datadict_load.inc index ab1211e9c9f..e3013249faf 100644 --- a/mysql-test/suite/funcs_1/datadict/datadict_load.inc +++ b/mysql-test/suite/funcs_1/datadict/datadict_load.inc @@ -12,14 +12,14 @@ --disable_query_log # ------------------------------------------------------------------------------ -# Get the size of ONE known colum and check the size against some values to -# be able to use the correct --replace_result statement. Using this only the -# one pair of 'wrong' values is replaced and not all occurrencies of all +# Get the size of ONE known colum and check the size against some values to +# be able to use the correct --replace_result statement. Using this only the +# one pair of 'wrong' values is replaced and not all occurrencies of all # possible pairs of values. See bug #12777 for details. -SELECT character_maximum_length INTO @CML - FROM information_schema.columns - WHERE table_schema = 'information_schema' - AND table_name = 'columns' +SELECT character_maximum_length INTO @CML + FROM information_schema.columns + WHERE table_schema = 'information_schema' + AND table_name = 'columns' AND column_name = 'table_catalog'; let $bug_12777_0512= `SELECT @CML = 512`; @@ -53,7 +53,7 @@ let $SERVER_NAME= `SELECT DISTINCT host FROM mysql.user WHERE host NOT In ("loca # load tables # ----------- # -# this was part of the 4 files $_datadict.test, but it has been moved +# this was part of the 4 files $_datadict.test, but it has been moved # here to have only one place where all preparation for the test is done. # ################################################################################ diff --git a/mysql-test/suite/funcs_1/datadict/processlist_val.inc b/mysql-test/suite/funcs_1/datadict/processlist_val.inc index 69a32553f65..9923190edac 100644 --- a/mysql-test/suite/funcs_1/datadict/processlist_val.inc +++ b/mysql-test/suite/funcs_1/datadict/processlist_val.inc @@ -123,7 +123,7 @@ let $wait_timeout= 4; let $wait_condition= SELECT id,user,host,db,command,@time2:=time,state,info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE TIME > @time; --source include/wait_condition.inc -# +# # Expect to hit TIME > @time SELECT @time < @time2; # diff --git a/mysql-test/suite/funcs_1/include/ndb_tb1.inc b/mysql-test/suite/funcs_1/include/ndb_tb1.inc index a93574d0be0..223a323b006 100644 --- a/mysql-test/suite/funcs_1/include/ndb_tb1.inc +++ b/mysql-test/suite/funcs_1/include/ndb_tb1.inc @@ -4,66 +4,67 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = ndb; - ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/ndb_tb1.txt' +into table tb1 ; diff --git a/mysql-test/suite/funcs_1/include/ndb_tb2.inc b/mysql-test/suite/funcs_1/include/ndb_tb2.inc index 3e6efe47e18..c1f56b9ece6 100644 --- a/mysql-test/suite/funcs_1/include/ndb_tb2.inc +++ b/mysql-test/suite/funcs_1/include/ndb_tb2.inc @@ -4,58 +4,60 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = ndb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/ndb_tb2.txt' +into table tb2 ; diff --git a/mysql-test/suite/funcs_1/include/ndb_tb3.inc b/mysql-test/suite/funcs_1/include/ndb_tb3.inc index f77a0807963..77856a7f0be 100644 --- a/mysql-test/suite/funcs_1/include/ndb_tb3.inc +++ b/mysql-test/suite/funcs_1/include/ndb_tb3.inc @@ -4,65 +4,67 @@ drop table if exists tb3 ; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/ndb_tb4.inc b/mysql-test/suite/funcs_1/include/ndb_tb4.inc index 5639ed8fe00..2a9349e6755 100644 --- a/mysql-test/suite/funcs_1/include/ndb_tb4.inc +++ b/mysql-test/suite/funcs_1/include/ndb_tb4.inc @@ -4,56 +4,56 @@ drop table if exists tb4; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -64,5 +64,7 @@ f240 varchar(2000) unicode, f241 char(100) unicode ) engine = ndb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/ndb_tb4.txt' +into table tb4 ; diff --git a/mysql-test/suite/funcs_1/r/innodb_func_view.result b/mysql-test/suite/funcs_1/r/innodb_func_view.result index 69295414f07..96e4f23976b 100644 --- a/mysql-test/suite/funcs_1/r/innodb_func_view.result +++ b/mysql-test/suite/funcs_1/r/innodb_func_view.result @@ -35,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -50,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -152,21 +152,21 @@ my_double = -0.33333333E+4; some statements disabled because of Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; @@ -180,15 +180,15 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; @@ -202,9 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SELECT 'äÄ@' INTO OUTFILE '../tmp/func_view.dat'; -SET @my_select = -'SELECT LOAD_FILE(''../tmp/func_view.dat''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -810,36 +811,40 @@ WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values; -SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values WHERE select_id = 156 OR select_id IS NULL order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('../tmp/func_view.dat') AS `LOAD_FILE('../tmp/func_view.dat')`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values WHERE select_id = 156 OR select_id IS NULL) order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 DROP VIEW v1; @@ -1013,10 +1018,10 @@ SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1141,10 +1146,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1453,10 +1458,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1793,10 +1798,10 @@ WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),'IS NULL','IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', @@ -2113,10 +2118,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2200,9 +2205,9 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id @@ -2226,17 +2231,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2252,9 +2257,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id @@ -2278,9 +2283,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id @@ -2304,9 +2309,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id @@ -2330,17 +2335,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2356,9 +2361,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id @@ -2382,9 +2387,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id @@ -2673,10 +2678,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3037,10 +3042,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3397,11 +3402,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 28 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3755,11 +3760,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -4131,11 +4136,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4501,11 +4506,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4851,10 +4856,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -5163,10 +5168,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc.result b/mysql-test/suite/funcs_1/r/innodb_storedproc.result index c20276b1937..1d75cf49bb7 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.1 - Syntax checks for the CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE, ALTER FUNCTION, DROP PROCEDURE, DROP FUNCTION, SHOW @@ -14949,46 +14957,47 @@ USE db_storedproc; Testcase 4.3.1: -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp1; -drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; +DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( -middleinitial CHAR, -lastname VARCHAR(50), -age_averylongfieldname_averylongname_1234569 int, -COMMENT TEXT) ENGINE=innodb; +middleinitial CHAR, lastname VARCHAR(50), +age_averylongfieldname_averylongname_1234569 INT, COMMENT VARCHAR(100)) +ENGINE=; INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 VALUES('a', 'aaaaaaaaaabbbbbbbbc', 0, 'default'); -CREATE PROCEDURE sp1(a int) +CREATE PROCEDURE sp1(a INT) BEGIN -declare itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx char; -declare itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx varchar(100); -declare itisjustamediumsizeintintegervariablename integer; -set itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; -set itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx = 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; -set itisjustamediumsizeintintegervariablename = 5; -set @comment='a'; -label1: loop -if a>100 then -set @comment='value of a is greater than 100'; -elseif a<100 then -if a<50 then -set @comment='value of a is less than 50'; -elseif a<25 then -set @comment='value of a is less than 25'; -else -set @comment='value of a is greater than 50 and less than 100'; -END if; -else -set @comment='value of a is 100'; -END if; -if itisjustamediumsizeintintegervariablename = 0 then leave label1; -END if; -insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 -values( itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, -concat(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, ' ', a), -a, @comment ); -set itisjustamediumsizeintintegervariablename = itisjustamediumsizeintintegervariablename - 1; -iterate label1; -END loop label1; +DECLARE itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx CHAR; +DECLARE itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx VARCHAR(100); +DECLARE itisjustamediumsizeintintegervariablename INTEGER; +SET itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; +SET itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx += 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; +SET itisjustamediumsizeintintegervariablename = 5; +SET @comment='a'; +label1: LOOP +IF a > 100 THEN +SET @comment = 'value of a is greater than 100'; +ELSEIF a < 100 THEN +IF a < 50 THEN +SET @comment = 'value of a is less than 50'; +ELSEIF a < 25 THEN +SET @comment = 'value of a is less than 25'; +ELSE +SET @comment = 'value of a is greater than 50 and less than 100'; +END IF; +ELSE +SET @comment = 'value of a is 100'; +END IF; +IF itisjustamediumsizeintintegervariablename = 0 THEN LEAVE label1; +END IF; +INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 +VALUES(itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, +CONCAT(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, +' ', a), a, @comment); +SET itisjustamediumsizeintintegervariablename += itisjustamediumsizeintintegervariablename - 1; +ITERATE label1; +END LOOP label1; END// CALL sp1(101); CALL sp1(100); diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result index 0d7b7b64da4..7458e55007d 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result @@ -1202,16 +1202,16 @@ declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by open cur1; open cur2; BEGIN -declare continue handler for sqlstate '02000' set count=1; +declare continue handler for sqlstate '02000' set count = 1; fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-1-', count, newf1, newf2, newf4, newf5; insert into temp1 values ('cur1_out', newf1, newf2, newf4, newf5); -set count= 4; +set count = 4; BEGIN -while count> 0 do +while count > 0 do fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-2-', count, newf1, newf2, newf4, newf5; -set count = count- 1; +set count = count - 1; END while; SELECT '-3-', count, newf1, newf2, newf4, newf4; END; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03.result b/mysql-test/suite/funcs_1/r/innodb_trig_03.result index b20e249f51f..58fbdc053b7 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_03.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_03.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -103,7 +104,7 @@ test_noprivs@localhost use priv_db; create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); select f1 from t1 order by f1; @@ -135,7 +136,7 @@ Testcase 3.5.3.6: ----------------- use priv_db; drop trigger trg1_2; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); select f1 from t1 order by f1; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result index 048c070ea96..476ccc6ebd8 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result @@ -989,7 +989,7 @@ root@localhost show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation grant select, insert, update ,trigger -on priv_db.t1 to test_yesprivs@localhost +on priv_db.t1 to test_yesprivs@localhost with grant option; grant select on priv_db.t1 to test_useprivs@localhost; @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row @@ -1252,7 +1252,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; ERROR 42000: Access denied; you need the SUPER privilege for this operation -create definer=current_user trigger trg1_1 +create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; insert into t1 (f1) values ('insert-no'); @@ -1318,7 +1318,7 @@ current_user test_yesprivs@localhost use priv_db; set autocommit=0; -create definer=current_user trigger trg1_1 +create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; rollback work; @@ -1564,7 +1564,7 @@ select current_user; current_user root@localhost revoke UPDATE(f1) on priv_db.t1 from test_yesprivs@localhost; -grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 +grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 to test_yesprivs@localhost; show grants for test_yesprivs@localhost; Grants for test_yesprivs@localhost diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_08.result b/mysql-test/suite/funcs_1/r/innodb_trig_08.result index 825cf8bc78f..19e42143a5d 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_08.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_08.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,17 +90,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=innodb; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=innodb; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -122,18 +123,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -162,7 +163,7 @@ select @test_var; ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); END// Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -185,7 +186,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -207,7 +208,7 @@ U 00222 0000023456 1.050000000000000000000000000000 drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -222,10 +223,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -253,31 +254,31 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd else @@ -297,7 +298,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -339,43 +340,43 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -383,9 +384,9 @@ f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -406,40 +407,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -474,24 +475,24 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_09.result b/mysql-test/suite/funcs_1/r/innodb_trig_09.result index 76592da5200..490afb21d94 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_09.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_09.result @@ -1,74 +1,75 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -80,15 +81,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -116,17 +117,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -137,11 +138,11 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 delete from tb3 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -172,17 +173,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -195,15 +196,15 @@ where f122='Test 3.5.9.4'; ERROR 23000: Column 'f136' cannot be null Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -241,6 +242,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/memory_func_view.result b/mysql-test/suite/funcs_1/r/memory_func_view.result index 69295414f07..96e4f23976b 100644 --- a/mysql-test/suite/funcs_1/r/memory_func_view.result +++ b/mysql-test/suite/funcs_1/r/memory_func_view.result @@ -35,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -50,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -152,21 +152,21 @@ my_double = -0.33333333E+4; some statements disabled because of Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; @@ -180,15 +180,15 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; @@ -202,9 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SELECT 'äÄ@' INTO OUTFILE '../tmp/func_view.dat'; -SET @my_select = -'SELECT LOAD_FILE(''../tmp/func_view.dat''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -810,36 +811,40 @@ WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values; -SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values WHERE select_id = 156 OR select_id IS NULL order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('../tmp/func_view.dat') AS `LOAD_FILE('../tmp/func_view.dat')`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values WHERE select_id = 156 OR select_id IS NULL) order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 DROP VIEW v1; @@ -1013,10 +1018,10 @@ SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1141,10 +1146,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1453,10 +1458,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1793,10 +1798,10 @@ WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),'IS NULL','IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', @@ -2113,10 +2118,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2200,9 +2205,9 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id @@ -2226,17 +2231,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2252,9 +2257,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id @@ -2278,9 +2283,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id @@ -2304,9 +2309,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id @@ -2330,17 +2335,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2356,9 +2361,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id @@ -2382,9 +2387,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id @@ -2673,10 +2678,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3037,10 +3042,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3397,11 +3402,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 28 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3755,11 +3760,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -4131,11 +4136,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4501,11 +4506,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4851,10 +4856,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -5163,10 +5168,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc.result b/mysql-test/suite/funcs_1/r/memory_storedproc.result index a8294aa3e27..1d75cf49bb7 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.1 - Syntax checks for the CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE, ALTER FUNCTION, DROP PROCEDURE, DROP FUNCTION, SHOW @@ -14949,66 +14957,89 @@ USE db_storedproc; Testcase 4.3.1: -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp1; -drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; +DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( -middleinitial CHAR, -lastname VARCHAR(50), -age_averylongfieldname_averylongname_1234569 int, -COMMENT TEXT) ENGINE=memory; -ERROR 42000: The used table type doesn't support BLOB/TEXT columns +middleinitial CHAR, lastname VARCHAR(50), +age_averylongfieldname_averylongname_1234569 INT, COMMENT VARCHAR(100)) +ENGINE=; INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 VALUES('a', 'aaaaaaaaaabbbbbbbbc', 0, 'default'); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist -CREATE PROCEDURE sp1(a int) +CREATE PROCEDURE sp1(a INT) BEGIN -declare itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx char; -declare itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx varchar(100); -declare itisjustamediumsizeintintegervariablename integer; -set itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; -set itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx = 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; -set itisjustamediumsizeintintegervariablename = 5; -set @comment='a'; -label1: loop -if a>100 then -set @comment='value of a is greater than 100'; -elseif a<100 then -if a<50 then -set @comment='value of a is less than 50'; -elseif a<25 then -set @comment='value of a is less than 25'; -else -set @comment='value of a is greater than 50 and less than 100'; -END if; -else -set @comment='value of a is 100'; -END if; -if itisjustamediumsizeintintegervariablename = 0 then leave label1; -END if; -insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 -values( itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, -concat(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, ' ', a), -a, @comment ); -set itisjustamediumsizeintintegervariablename = itisjustamediumsizeintintegervariablename - 1; -iterate label1; -END loop label1; +DECLARE itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx CHAR; +DECLARE itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx VARCHAR(100); +DECLARE itisjustamediumsizeintintegervariablename INTEGER; +SET itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; +SET itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx += 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; +SET itisjustamediumsizeintintegervariablename = 5; +SET @comment='a'; +label1: LOOP +IF a > 100 THEN +SET @comment = 'value of a is greater than 100'; +ELSEIF a < 100 THEN +IF a < 50 THEN +SET @comment = 'value of a is less than 50'; +ELSEIF a < 25 THEN +SET @comment = 'value of a is less than 25'; +ELSE +SET @comment = 'value of a is greater than 50 and less than 100'; +END IF; +ELSE +SET @comment = 'value of a is 100'; +END IF; +IF itisjustamediumsizeintintegervariablename = 0 THEN LEAVE label1; +END IF; +INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 +VALUES(itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, +CONCAT(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, +' ', a), a, @comment); +SET itisjustamediumsizeintintegervariablename += itisjustamediumsizeintintegervariablename - 1; +ITERATE label1; +END LOOP label1; END// CALL sp1(101); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist CALL sp1(100); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist CALL sp1(75); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist CALL sp1(40); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist CALL sp1(20); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist CALL sp1(-1); -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist SELECT * from res_t3_itisalongname_1381742_itsaverylongname_1381742 ORDER BY middleinitial, lastname, age_averylongfieldname_averylongname_1234569; -ERROR 42S02: Table 'db_storedproc.res_t3_itisalongname_1381742_itsaverylongname_1381742' doesn't exist +middleinitial lastname age_averylongfieldname_averylongname_1234569 COMMENT +a aaaaaaaaaabbbbbbbbc 0 default +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% -1 -1 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% -1 -1 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% -1 -1 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% -1 -1 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% -1 -1 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 100 100 value of a is 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 100 100 value of a is 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 100 100 value of a is 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 100 100 value of a is 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 100 100 value of a is 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 101 101 value of a is greater than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 101 101 value of a is greater than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 101 101 value of a is greater than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 101 101 value of a is greater than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 101 101 value of a is greater than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 20 20 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 20 20 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 20 20 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 20 20 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 20 20 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 40 40 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 40 40 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 40 40 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 40 40 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 40 40 value of a is less than 50 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 75 75 value of a is greater than 50 and less than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 75 75 value of a is greater than 50 and less than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 75 75 value of a is greater than 50 and less than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 75 75 value of a is greater than 50 and less than 100 +b oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@% 75 75 value of a is greater than 50 and less than 100 drop table res_t3_itisalongname_1381742_itsaverylongname_1381742; -ERROR 42S02: Unknown table 'res_t3_itisalongname_1381742_itsaverylongname_1381742' DROP PROCEDURE sp1; Testcase 4.3.2: diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result index 0d7b7b64da4..7458e55007d 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result @@ -1202,16 +1202,16 @@ declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by open cur1; open cur2; BEGIN -declare continue handler for sqlstate '02000' set count=1; +declare continue handler for sqlstate '02000' set count = 1; fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-1-', count, newf1, newf2, newf4, newf5; insert into temp1 values ('cur1_out', newf1, newf2, newf4, newf5); -set count= 4; +set count = 4; BEGIN -while count> 0 do +while count > 0 do fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-2-', count, newf1, newf2, newf4, newf5; -set count = count- 1; +set count = count - 1; END while; SELECT '-3-', count, newf1, newf2, newf4, newf4; END; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03.result b/mysql-test/suite/funcs_1/r/memory_trig_03.result index f46cae19419..c6b6e1bc216 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_03.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_03.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -97,7 +98,7 @@ test_noprivs@localhost use priv_db; create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); select f1 from t1 order by f1; @@ -129,7 +130,7 @@ Testcase 3.5.3.6: ----------------- use priv_db; drop trigger trg1_2; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); select f1 from t1 order by f1; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03e.result b/mysql-test/suite/funcs_1/r/memory_trig_03e.result index fad778ce7c0..0dae491e319 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_03e.result @@ -989,7 +989,7 @@ root@localhost show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation grant select, insert, update ,trigger -on priv_db.t1 to test_yesprivs@localhost +on priv_db.t1 to test_yesprivs@localhost with grant option; grant select on priv_db.t1 to test_useprivs@localhost; @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row @@ -1252,7 +1252,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; ERROR 42000: Access denied; you need the SUPER privilege for this operation -create definer=current_user trigger trg1_1 +create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; insert into t1 (f1) values ('insert-no'); @@ -1507,7 +1507,7 @@ select current_user; current_user root@localhost revoke UPDATE(f1) on priv_db.t1 from test_yesprivs@localhost; -grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 +grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 to test_yesprivs@localhost; show grants for test_yesprivs@localhost; Grants for test_yesprivs@localhost diff --git a/mysql-test/suite/funcs_1/r/memory_trig_08.result b/mysql-test/suite/funcs_1/r/memory_trig_08.result index 7ab06f9e083..3224df54f4d 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_08.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_08.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -83,17 +84,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=memory; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=memory; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -116,18 +117,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -156,7 +157,7 @@ select @test_var; ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); END// Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -179,7 +180,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -201,7 +202,7 @@ U 00222 0000023456 1.050000000000000000000000000000 drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -216,10 +217,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -247,31 +248,31 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd else @@ -291,7 +292,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -333,43 +334,43 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -377,9 +378,9 @@ f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -400,40 +401,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -468,24 +469,24 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_09.result b/mysql-test/suite/funcs_1/r/memory_trig_09.result index 0d8e9acc1f7..6c7346e9692 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_09.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_09.result @@ -1,68 +1,69 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -74,15 +75,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 9 9 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -110,17 +111,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -131,11 +132,11 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 delete from tb3 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -166,17 +167,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -189,15 +190,15 @@ where f122='Test 3.5.9.4'; ERROR 23000: Column 'f136' cannot be null Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -235,6 +236,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/myisam_func_view.result b/mysql-test/suite/funcs_1/r/myisam_func_view.result index 69295414f07..96e4f23976b 100644 --- a/mysql-test/suite/funcs_1/r/myisam_func_view.result +++ b/mysql-test/suite/funcs_1/r/myisam_func_view.result @@ -35,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -50,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -152,21 +152,21 @@ my_double = -0.33333333E+4; some statements disabled because of Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; @@ -180,15 +180,15 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; @@ -202,9 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SELECT 'äÄ@' INTO OUTFILE '../tmp/func_view.dat'; -SET @my_select = -'SELECT LOAD_FILE(''../tmp/func_view.dat''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -810,36 +811,40 @@ WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values; -SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values WHERE select_id = 156 OR select_id IS NULL order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('../tmp/func_view.dat') AS `LOAD_FILE('../tmp/func_view.dat')`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values WHERE select_id = 156 OR select_id IS NULL) order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 DROP VIEW v1; @@ -1013,10 +1018,10 @@ SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1141,10 +1146,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1453,10 +1458,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1793,10 +1798,10 @@ WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),'IS NULL','IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', @@ -2113,10 +2118,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2200,9 +2205,9 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id @@ -2226,17 +2231,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2252,9 +2257,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id @@ -2278,9 +2283,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id @@ -2304,9 +2309,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id @@ -2330,17 +2335,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2356,9 +2361,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id @@ -2382,9 +2387,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id @@ -2673,10 +2678,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3037,10 +3042,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3397,11 +3402,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 28 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3755,11 +3760,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -4131,11 +4136,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4501,11 +4506,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4851,10 +4856,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -5163,10 +5168,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc.result b/mysql-test/suite/funcs_1/r/myisam_storedproc.result index 2584807bcc6..1d75cf49bb7 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.1 - Syntax checks for the CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE, ALTER FUNCTION, DROP PROCEDURE, DROP FUNCTION, SHOW @@ -14949,46 +14957,47 @@ USE db_storedproc; Testcase 4.3.1: -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp1; -drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; +DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( -middleinitial CHAR, -lastname VARCHAR(50), -age_averylongfieldname_averylongname_1234569 int, -COMMENT TEXT) ENGINE=myisam; +middleinitial CHAR, lastname VARCHAR(50), +age_averylongfieldname_averylongname_1234569 INT, COMMENT VARCHAR(100)) +ENGINE=; INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 VALUES('a', 'aaaaaaaaaabbbbbbbbc', 0, 'default'); -CREATE PROCEDURE sp1(a int) +CREATE PROCEDURE sp1(a INT) BEGIN -declare itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx char; -declare itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx varchar(100); -declare itisjustamediumsizeintintegervariablename integer; -set itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; -set itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx = 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; -set itisjustamediumsizeintintegervariablename = 5; -set @comment='a'; -label1: loop -if a>100 then -set @comment='value of a is greater than 100'; -elseif a<100 then -if a<50 then -set @comment='value of a is less than 50'; -elseif a<25 then -set @comment='value of a is less than 25'; -else -set @comment='value of a is greater than 50 and less than 100'; -END if; -else -set @comment='value of a is 100'; -END if; -if itisjustamediumsizeintintegervariablename = 0 then leave label1; -END if; -insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 -values( itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, -concat(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, ' ', a), -a, @comment ); -set itisjustamediumsizeintintegervariablename = itisjustamediumsizeintintegervariablename - 1; -iterate label1; -END loop label1; +DECLARE itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx CHAR; +DECLARE itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx VARCHAR(100); +DECLARE itisjustamediumsizeintintegervariablename INTEGER; +SET itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; +SET itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx += 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; +SET itisjustamediumsizeintintegervariablename = 5; +SET @comment='a'; +label1: LOOP +IF a > 100 THEN +SET @comment = 'value of a is greater than 100'; +ELSEIF a < 100 THEN +IF a < 50 THEN +SET @comment = 'value of a is less than 50'; +ELSEIF a < 25 THEN +SET @comment = 'value of a is less than 25'; +ELSE +SET @comment = 'value of a is greater than 50 and less than 100'; +END IF; +ELSE +SET @comment = 'value of a is 100'; +END IF; +IF itisjustamediumsizeintintegervariablename = 0 THEN LEAVE label1; +END IF; +INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 +VALUES(itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, +CONCAT(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, +' ', a), a, @comment); +SET itisjustamediumsizeintintegervariablename += itisjustamediumsizeintintegervariablename - 1; +ITERATE label1; +END LOOP label1; END// CALL sp1(101); CALL sp1(100); diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result index 0d7b7b64da4..7458e55007d 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result @@ -1202,16 +1202,16 @@ declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by open cur1; open cur2; BEGIN -declare continue handler for sqlstate '02000' set count=1; +declare continue handler for sqlstate '02000' set count = 1; fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-1-', count, newf1, newf2, newf4, newf5; insert into temp1 values ('cur1_out', newf1, newf2, newf4, newf5); -set count= 4; +set count = 4; BEGIN -while count> 0 do +while count > 0 do fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-2-', count, newf1, newf2, newf4, newf5; -set count = count- 1; +set count = count - 1; END while; SELECT '-3-', count, newf1, newf2, newf4, newf4; END; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03.result b/mysql-test/suite/funcs_1/r/myisam_trig_03.result index c7a2382e2dd..211bb4dec70 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_03.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_03.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -103,7 +104,7 @@ test_noprivs@localhost use priv_db; create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); select f1 from t1 order by f1; @@ -135,7 +136,7 @@ Testcase 3.5.3.6: ----------------- use priv_db; drop trigger trg1_2; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); select f1 from t1 order by f1; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result index bcd50198fca..ebeb487cdb6 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result @@ -989,7 +989,7 @@ root@localhost show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation grant select, insert, update ,trigger -on priv_db.t1 to test_yesprivs@localhost +on priv_db.t1 to test_yesprivs@localhost with grant option; grant select on priv_db.t1 to test_useprivs@localhost; @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row @@ -1252,7 +1252,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; ERROR 42000: Access denied; you need the SUPER privilege for this operation -create definer=current_user trigger trg1_1 +create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; insert into t1 (f1) values ('insert-no'); @@ -1507,7 +1507,7 @@ select current_user; current_user root@localhost revoke UPDATE(f1) on priv_db.t1 from test_yesprivs@localhost; -grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 +grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 to test_yesprivs@localhost; show grants for test_yesprivs@localhost; Grants for test_yesprivs@localhost diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_08.result b/mysql-test/suite/funcs_1/r/myisam_trig_08.result index f8c4b0799b7..dcfa0aa7ddf 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_08.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_08.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,17 +90,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=myisam; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=myisam; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -122,18 +123,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -162,7 +163,7 @@ select @test_var; ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); END// Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -185,7 +186,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -207,7 +208,7 @@ U 00222 0000023456 1.050000000000000000000000000000 drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -222,10 +223,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -253,31 +254,31 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd else @@ -297,7 +298,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -339,43 +340,43 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -383,9 +384,9 @@ f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -406,40 +407,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -474,24 +475,24 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_09.result b/mysql-test/suite/funcs_1/r/myisam_trig_09.result index 52e8df305ab..d1af3c562e2 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_09.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_09.result @@ -1,74 +1,75 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -80,15 +81,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -116,17 +117,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -137,11 +138,11 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 delete from tb3 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -172,17 +173,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -195,15 +196,15 @@ where f122='Test 3.5.9.4'; ERROR 23000: Column 'f136' cannot be null Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -241,6 +242,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/myisam_views.result b/mysql-test/suite/funcs_1/r/myisam_views.result index 6fab3bea8eb..3915cb47068 100644 --- a/mysql-test/suite/funcs_1/r/myisam_views.result +++ b/mysql-test/suite/funcs_1/r/myisam_views.result @@ -1,133 +1,135 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; Attention: The nesting level @max_level in Testcase 3.3.1.A6 diff --git a/mysql-test/suite/funcs_1/r/ndb_func_view.result b/mysql-test/suite/funcs_1/r/ndb_func_view.result index 69295414f07..96e4f23976b 100644 --- a/mysql-test/suite/funcs_1/r/ndb_func_view.result +++ b/mysql-test/suite/funcs_1/r/ndb_func_view.result @@ -35,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -50,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -152,21 +152,21 @@ my_double = -0.33333333E+4; some statements disabled because of Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; @@ -180,15 +180,15 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; @@ -202,9 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SELECT 'äÄ@' INTO OUTFILE '../tmp/func_view.dat'; -SET @my_select = -'SELECT LOAD_FILE(''../tmp/func_view.dat''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -810,36 +811,40 @@ WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values; -SELECT LOAD_FILE('../tmp/func_view.dat'), id FROM t1_values +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values WHERE select_id = 156 OR select_id IS NULL order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('../tmp/func_view.dat') AS `LOAD_FILE('../tmp/func_view.dat')`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file('/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values WHERE select_id = 156 OR select_id IS NULL) order by id; -LOAD_FILE('../tmp/func_view.dat') id -äÄ@ +my_col id +Here is content from load_file 1 -äÄ@ +Here is content from load_file 2 -äÄ@ +Here is content from load_file 3 -äÄ@ +Here is content from load_file 4 -äÄ@ +Here is content from load_file 5 DROP VIEW v1; @@ -1013,10 +1018,10 @@ SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1141,10 +1146,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1453,10 +1458,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -1793,10 +1798,10 @@ WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),'IS NULL','IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', @@ -2113,10 +2118,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2200,9 +2205,9 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id @@ -2226,17 +2231,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2252,9 +2257,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id @@ -2278,9 +2283,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id @@ -2304,9 +2309,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id @@ -2330,17 +2335,17 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -2356,9 +2361,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id @@ -2382,9 +2387,9 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id @@ -2673,10 +2678,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3037,10 +3042,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -3397,11 +3402,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 28 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3755,11 +3760,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -4131,11 +4136,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4501,11 +4506,11 @@ my_binary_30, id FROM t1_values WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Incorrect datetime value: '' Warning 1292 Incorrect datetime value: '<--------30 characters------->' @@ -4851,10 +4856,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci @@ -5163,10 +5168,10 @@ my_binary_30, id FROM t1_values WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View character_set_client collation_connection v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` latin1 latin1_swedish_ci diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc.result b/mysql-test/suite/funcs_1/r/ndb_storedproc.result index 92cc86120d5..1d75cf49bb7 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.1 - Syntax checks for the CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE, ALTER FUNCTION, DROP PROCEDURE, DROP FUNCTION, SHOW @@ -14949,48 +14957,47 @@ USE db_storedproc; Testcase 4.3.1: -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp1; -drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; +DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( -middleinitial CHAR, -lastname VARCHAR(50), -age_averylongfieldname_averylongname_1234569 int, -COMMENT TEXT) ENGINE=ndb; -Warnings: -Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' +middleinitial CHAR, lastname VARCHAR(50), +age_averylongfieldname_averylongname_1234569 INT, COMMENT VARCHAR(100)) +ENGINE=; INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 VALUES('a', 'aaaaaaaaaabbbbbbbbc', 0, 'default'); -CREATE PROCEDURE sp1(a int) +CREATE PROCEDURE sp1(a INT) BEGIN -declare itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx char; -declare itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx varchar(100); -declare itisjustamediumsizeintintegervariablename integer; -set itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; -set itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx = 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; -set itisjustamediumsizeintintegervariablename = 5; -set @comment='a'; -label1: loop -if a>100 then -set @comment='value of a is greater than 100'; -elseif a<100 then -if a<50 then -set @comment='value of a is less than 50'; -elseif a<25 then -set @comment='value of a is less than 25'; -else -set @comment='value of a is greater than 50 and less than 100'; -END if; -else -set @comment='value of a is 100'; -END if; -if itisjustamediumsizeintintegervariablename = 0 then leave label1; -END if; -insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 -values( itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, -concat(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, ' ', a), -a, @comment ); -set itisjustamediumsizeintintegervariablename = itisjustamediumsizeintintegervariablename - 1; -iterate label1; -END loop label1; +DECLARE itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx CHAR; +DECLARE itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx VARCHAR(100); +DECLARE itisjustamediumsizeintintegervariablename INTEGER; +SET itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; +SET itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx += 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; +SET itisjustamediumsizeintintegervariablename = 5; +SET @comment='a'; +label1: LOOP +IF a > 100 THEN +SET @comment = 'value of a is greater than 100'; +ELSEIF a < 100 THEN +IF a < 50 THEN +SET @comment = 'value of a is less than 50'; +ELSEIF a < 25 THEN +SET @comment = 'value of a is less than 25'; +ELSE +SET @comment = 'value of a is greater than 50 and less than 100'; +END IF; +ELSE +SET @comment = 'value of a is 100'; +END IF; +IF itisjustamediumsizeintintegervariablename = 0 THEN LEAVE label1; +END IF; +INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 +VALUES(itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, +CONCAT(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, +' ', a), a, @comment); +SET itisjustamediumsizeintintegervariablename += itisjustamediumsizeintintegervariablename - 1; +ITERATE label1; +END LOOP label1; END// CALL sp1(101); CALL sp1(100); diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result index 419ade39c4f..7458e55007d 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -698,7 +706,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -797,7 +805,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -905,7 +913,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1194,16 +1202,16 @@ declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by open cur1; open cur2; BEGIN -declare continue handler for sqlstate '02000' set count=1; +declare continue handler for sqlstate '02000' set count = 1; fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-1-', count, newf1, newf2, newf4, newf5; insert into temp1 values ('cur1_out', newf1, newf2, newf4, newf5); -set count= 4; +set count = 4; BEGIN -while count> 0 do +while count > 0 do fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-2-', count, newf1, newf2, newf4, newf5; -set count = count- 1; +set count = count - 1; END while; SELECT '-3-', count, newf1, newf2, newf4, newf4; END; diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_03.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_03.result index 8baee610a82..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_06.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_06.result index 7fced87fc3d..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_06.result @@ -1,8 +1,6 @@ --source suite/funcs_1/storedproc/load_sp_tb.inc -------------------------------------------------------------------------------- -SET @@global.max_heap_table_size=4294967295; -SET @@session.max_heap_table_size=4294967295; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc -------------------------------------------------------------------------------- @@ -11,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -36,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -49,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result index da5e3775a52..c4e8082fd7d 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result index 84eedbd1454..0bed3989f13 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_10.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_10.result index b2e85042eb5..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -383,7 +391,7 @@ DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_0102.result b/mysql-test/suite/funcs_1/r/ndb_trig_0102.result index 7b144631252..07e219ab738 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_0102.result @@ -1,97 +1,98 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -104,9 +105,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -114,7 +115,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -142,7 +143,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -195,7 +196,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=ndb; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -232,7 +233,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -240,11 +241,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = ndb; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -268,9 +269,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = ndb; create table t2 (f1 char(50), f2 integer) engine = ndb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -300,15 +301,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = ndb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = ndb; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = ndb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -347,11 +348,11 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = ndb; create table trig_db2.t1 (f1 char(50), f2 integer) engine = ndb; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table from information_schema.triggers order by trigger_name; diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_03.result b/mysql-test/suite/funcs_1/r/ndb_trig_03.result index 6363bce5e41..8f935113997 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_03.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_03.result @@ -1,71 +1,72 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -104,7 +105,7 @@ test_noprivs@localhost use priv_db; create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); select f1 from t1 order by f1; @@ -136,7 +137,7 @@ Testcase 3.5.3.6: ----------------- use priv_db; drop trigger trg1_2; -Got one of the listed errors +ERROR 42000: TRIGGER command denied to user 'test_noprivs'@'localhost' for table 't1' use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); select f1 from t1 order by f1; diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_03e.result b/mysql-test/suite/funcs_1/r/ndb_trig_03e.result index 0d097d6cd7c..84260822edf 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_03e.result @@ -989,7 +989,7 @@ root@localhost show triggers; Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation grant select, insert, update ,trigger -on priv_db.t1 to test_yesprivs@localhost +on priv_db.t1 to test_yesprivs@localhost with grant option; grant select on priv_db.t1 to test_useprivs@localhost; @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row @@ -1252,7 +1252,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; ERROR 42000: Access denied; you need the SUPER privilege for this operation -create definer=current_user trigger trg1_1 +create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; insert into t1 (f1) values ('insert-no'); @@ -1318,7 +1318,7 @@ current_user test_yesprivs@localhost use priv_db; set autocommit=0; -create definer=current_user trigger trg1_1 +create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; rollback work; @@ -1564,7 +1564,7 @@ select current_user; current_user root@localhost revoke UPDATE(f1) on priv_db.t1 from test_yesprivs@localhost; -grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 +grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 to test_yesprivs@localhost; show grants for test_yesprivs@localhost; Grants for test_yesprivs@localhost diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_0407.result b/mysql-test/suite/funcs_1/r/ndb_trig_0407.result index 526b5cc80cb..9c278ee09b2 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_0407.result @@ -1,71 +1,72 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,7 +90,7 @@ Use db_drop; create table t1 (f1 char(30)) engine=ndb; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); @@ -128,7 +129,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=ndb; create table t1_433a (f1a char (5)) engine=ndb; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -149,7 +150,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=ndb; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -185,7 +186,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=ndb; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -222,7 +223,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -230,7 +231,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -311,9 +312,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -331,9 +332,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -359,9 +360,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -379,9 +380,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -409,9 +410,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -441,12 +442,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_08.result b/mysql-test/suite/funcs_1/r/ndb_trig_08.result index 8648bf8f630..52a0407a940 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_08.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_08.result @@ -1,71 +1,72 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -90,17 +91,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=ndb; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=ndb; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -123,18 +124,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -163,7 +164,7 @@ select @test_var; ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); END// Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -186,7 +187,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -208,7 +209,7 @@ U 00222 0000023456 1.050000000000000000000000000000 drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -223,10 +224,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -254,31 +255,31 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 +select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 d Test 3.5.8.5-if 00010 three 2nd else @@ -298,7 +299,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -340,43 +341,43 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -384,9 +385,9 @@ f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var +select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var 1 Test 3.5.8.5-case 00152 0000099999 1=eight @@ -407,40 +408,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -475,24 +476,24 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_09.result b/mysql-test/suite/funcs_1/r/ndb_trig_09.result index a274484e72c..d9bc16c20d3 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_09.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_09.result @@ -1,75 +1,76 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -81,15 +82,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -117,17 +118,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -138,11 +139,11 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 delete from tb3 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -173,17 +174,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -196,15 +197,15 @@ where f122='Test 3.5.9.4'; ERROR 23000: Column 'f136' cannot be null Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; -select f118, f121, f122, f136, f151, f163 from tb3 +select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -242,6 +243,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result b/mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result index 6ee30ab036b..611e3460af4 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result @@ -1,71 +1,72 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = ndb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 Error 1478 Table storage engine 'ndbcluster' does not support the create option 'Binlog of table with BLOB attribute and no PK' -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/ndb_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -142,7 +143,7 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 diff --git a/mysql-test/suite/funcs_1/r/ndb_views.result b/mysql-test/suite/funcs_1/r/ndb_views.result index a58cb440595..ed61dca3fa1 100644 --- a/mysql-test/suite/funcs_1/r/ndb_views.result +++ b/mysql-test/suite/funcs_1/r/ndb_views.result @@ -1,117 +1,119 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/ndb_tb2.txt' +into table tb2 ; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = ndb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/ndb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/ndb_tb2.txt' +into table tb2 ; USE test; ! Attention: The file with the expected results is not diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc index 99b76c1d9a2..0f62a559985 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc @@ -1503,16 +1503,16 @@ BEGIN open cur1; open cur2; BEGIN - declare continue handler for sqlstate '02000' set count=1; + declare continue handler for sqlstate '02000' set count = 1; fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-1-', count, newf1, newf2, newf4, newf5; insert into temp1 values ('cur1_out', newf1, newf2, newf4, newf5); - set count= 4; + set count = 4; BEGIN - while count> 0 do + while count > 0 do fetch cur1 into newf1, newf2, newf4, newf5; SELECT '-2-', count, newf1, newf2, newf4, newf5; - set count = count- 1; + set count = count - 1; END while; SELECT '-3-', count, newf1, newf2, newf4, newf4; END; diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc index 972e6e207a5..07e2743306f 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc @@ -6,10 +6,6 @@ ############################################################################ --enable_query_log -# prepare a variable to be able to suppress machine dependant diffs -#let $SERVER_NAME= `SELECT DISTINCT host FROM mysql.user WHERE host LIKE "%\%" AND host NOT In ("localhost", "127.0.0.1", "%")`; -# can be used in: --replace_result $SERVER_NAME - # ============================================================================== let $message= Section 3.1.1 - Syntax checks for the CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE, ALTER FUNCTION, DROP PROCEDURE, DROP FUNCTION, SHOW @@ -18116,53 +18112,56 @@ let $message= Testcase 4.3.1:; --disable_warnings DROP PROCEDURE IF EXISTS sp1; -drop table IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; +DROP TABLE IF EXISTS res_t3_itisalongname_1381742_itsaverylongname_1381742; --enable_warnings #FIXME: change back to $engine_type for INNODB and MYISAM, but MEMORY doesn't support this -eval CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( - middleinitial CHAR, - lastname VARCHAR(50), - age_averylongfieldname_averylongname_1234569 int, - COMMENT TEXT) ENGINE=$engine_type; +--replace_result $engine_type +eval +CREATE TABLE res_t3_itisalongname_1381742_itsaverylongname_1381742( + middleinitial CHAR, lastname VARCHAR(50), + age_averylongfieldname_averylongname_1234569 INT, COMMENT VARCHAR(100)) +ENGINE=$engine_type; INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 - VALUES('a', 'aaaaaaaaaabbbbbbbbc', 0, 'default'); +VALUES('a', 'aaaaaaaaaabbbbbbbbc', 0, 'default'); delimiter //; -CREATE PROCEDURE sp1(a int) +CREATE PROCEDURE sp1(a INT) BEGIN - declare itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx char; - declare itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx varchar(100); - declare itisjustamediumsizeintintegervariablename integer; - set itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; - set itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx = 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; - set itisjustamediumsizeintintegervariablename = 5; - set @comment='a'; - label1: loop - if a>100 then - set @comment='value of a is greater than 100'; - elseif a<100 then - if a<50 then - set @comment='value of a is less than 50'; - elseif a<25 then - set @comment='value of a is less than 25'; - else - set @comment='value of a is greater than 50 and less than 100'; - END if; - else - set @comment='value of a is 100'; - END if; + DECLARE itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx CHAR; + DECLARE itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx VARCHAR(100); + DECLARE itisjustamediumsizeintintegervariablename INTEGER; + SET itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx = 'b'; + SET itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx + = 'oldmacdonalds)(*&(^^%$&^%$&^%*^)(*^#@$@%'; + SET itisjustamediumsizeintintegervariablename = 5; + SET @comment='a'; + label1: LOOP + IF a > 100 THEN + SET @comment = 'value of a is greater than 100'; + ELSEIF a < 100 THEN + IF a < 50 THEN + SET @comment = 'value of a is less than 50'; + ELSEIF a < 25 THEN + SET @comment = 'value of a is less than 25'; + ELSE + SET @comment = 'value of a is greater than 50 and less than 100'; + END IF; + ELSE + SET @comment = 'value of a is 100'; + END IF; - if itisjustamediumsizeintintegervariablename = 0 then leave label1; - END if; - insert into res_t3_itisalongname_1381742_itsaverylongname_1381742 - values( itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, - concat(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, ' ', a), - a, @comment ); - set itisjustamediumsizeintintegervariablename = itisjustamediumsizeintintegervariablename - 1; - iterate label1; - END loop label1; + IF itisjustamediumsizeintintegervariablename = 0 THEN LEAVE label1; + END IF; + INSERT INTO res_t3_itisalongname_1381742_itsaverylongname_1381742 + VALUES(itisjustaverylargevariablename_xxxxxxxxxxxxxxxxxxxxx, + CONCAT(itisjustaverylargevarcharvariablename_xxxxxxxxxxxxxxxxxxxxx, + ' ', a), a, @comment); + SET itisjustamediumsizeintintegervariablename + = itisjustamediumsizeintintegervariablename - 1; + ITERATE label1; + END LOOP label1; END// delimiter ;// diff --git a/mysql-test/suite/funcs_1/t/is_engines.test b/mysql-test/suite/funcs_1/t/is_engines.test index fd6617a0daa..4c6283595f5 100644 --- a/mysql-test/suite/funcs_1/t/is_engines.test +++ b/mysql-test/suite/funcs_1/t/is_engines.test @@ -40,7 +40,7 @@ eval SHOW TABLES FROM information_schema LIKE '$is_table'; # Ensure that the INFORMATION_SCHEMA.ENGINES table has the following columns, # in the following order: # -# ENGINE +# ENGINE # SUPPORT # COMMENT # TRANSACTIONS diff --git a/mysql-test/suite/funcs_1/t/ndb_trig_03.test b/mysql-test/suite/funcs_1/t/ndb_trig_03.test index a7ab95460f4..4e9df0282c6 100644 --- a/mysql-test/suite/funcs_1/t/ndb_trig_03.test +++ b/mysql-test/suite/funcs_1/t/ndb_trig_03.test @@ -10,7 +10,7 @@ let $engine_type= ndb; # Create some objects needed in many testcases USE test; --source suite/funcs_1/include/ndb_tb3.inc - + --source suite/funcs_1/triggers/triggers_03.inc DROP TABLE test.tb3; diff --git a/mysql-test/suite/funcs_1/t/ndb_trig_08.test b/mysql-test/suite/funcs_1/t/ndb_trig_08.test index 4b79a2c3a19..197989137d7 100644 --- a/mysql-test/suite/funcs_1/t/ndb_trig_08.test +++ b/mysql-test/suite/funcs_1/t/ndb_trig_08.test @@ -10,7 +10,7 @@ let $engine_type= ndb; # Create some objects needed in many testcases USE test; --source suite/funcs_1/include/ndb_tb3.inc - + --source suite/funcs_1/triggers/triggers_08.inc DROP TABLE test.tb3; diff --git a/mysql-test/suite/funcs_1/t/ndb_views.test b/mysql-test/suite/funcs_1/t/ndb_views.test index 43d3415de60..910b8adb189 100644 --- a/mysql-test/suite/funcs_1/t/ndb_views.test +++ b/mysql-test/suite/funcs_1/t/ndb_views.test @@ -17,7 +17,7 @@ CREATE DATABASE test1; USE test1; --source suite/funcs_1/include/ndb_tb2.inc USE test; - + --source suite/funcs_1/views/views_master.inc DROP DATABASE test1; DROP TABLE test.tb2; diff --git a/mysql-test/suite/funcs_1/t/suite.opt b/mysql-test/suite/funcs_1/t/suite.opt index 9b22c677b83..20780bf0619 100644 --- a/mysql-test/suite/funcs_1/t/suite.opt +++ b/mysql-test/suite/funcs_1/t/suite.opt @@ -1,2 +1,2 @@ ---secure-file-priv=$MYSQL_TEST_DIR +--secure-file-priv=$MYSQLTEST_VARDIR diff --git a/mysql-test/suite/funcs_1/triggers/trig_frkey.inc b/mysql-test/suite/funcs_1/triggers/trig_frkey.inc index 5d6b6a72b1e..5e58b922f15 100644 --- a/mysql-test/suite/funcs_1/triggers/trig_frkey.inc +++ b/mysql-test/suite/funcs_1/triggers/trig_frkey.inc @@ -70,7 +70,7 @@ let $message= Testcase x.x.x.2:; insert into t2 values (1,2,'Emp 1'); insert into t2 values (2,3,'Emp 2'); - --error 1452 + --error ER_NO_REFERENCED_ROW_2 insert into t2 values (3,4,'Emp 3'); create trigger tr_t2 before insert on t2 for each row diff --git a/mysql-test/suite/funcs_1/triggers/triggers_0102.inc b/mysql-test/suite/funcs_1/triggers/triggers_0102.inc index 59a9b9eca75..aa322f6a7ef 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_0102.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_0102.inc @@ -215,9 +215,9 @@ let $message= Testcase 3.5.1.7: - need to fix; CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; # In 5.0 names to long (more than 64 chars) were trimed without an error -# In 5.1 an error is returned. So adding a call with the expected error +# In 5.1 an error is returned. So adding a call with the expected error # and one with a shorter name to validate proper execution - --error 1059 + --error ER_TOO_LONG_IDENT CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -234,7 +234,7 @@ let $message= Testcase 3.5.1.7: - need to fix; --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5_1; # In 5.1 the long name should generate an error that is to long - --error 1059 + --error ER_TOO_LONG_IDENT drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ; drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX; drop table t1; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03.inc b/mysql-test/suite/funcs_1/triggers/triggers_03.inc index 4039699c754..cf1c445aaee 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03.inc @@ -64,8 +64,7 @@ let $message= Testcase 3.5.3.2:; select current_user; use priv_db; -# error 1227 is better, as it says, that not the privilege - --error 1142,1227 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; @@ -85,7 +84,7 @@ let $message= Testcase 3.5.3.2:; select current_user; use priv_db; - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR insert into t1 (f1) values ('insert 3.5.3.2-yes'); select f1 from t1 order by f1; @@ -99,7 +98,7 @@ let $message= Testcase 3.5.3.6:; connection no_privs; use priv_db; - --error 1142,1227 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger trg1_2; connection default; @@ -120,7 +119,7 @@ let $message= Testcase 3.5.3.6:; # Cleanup --disable_warnings connection default; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_2; disconnect no_privs; disconnect yes_privs; @@ -131,8 +130,6 @@ let $message= Testcase 3.5.3.6:; # Test case: Ensure that use of the construct "SET NEW. = " # fails at CREATE TRIGGER time, if the current user does not have the # UPDATE privilege on the column specified -# Note: As a result of bug 8884 the triggers are actually created. -# Disabled because of bug 8884 # --- 3.5.3.7a - Privs set on a global level let $message=Testcase 3.5.3.7a:; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_columns.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_columns.inc index c67291f605b..475063587d4 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_columns.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_columns.inc @@ -95,12 +95,12 @@ let $message= update only on column:; use priv_db; update t1 set f1 = 'update2_no' where f1 like '%insert%'; - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR update t2 set f1 = 'update2_no' where f1 like '%insert%'; update t1 set f1 = 'update3_no' where f1 like '%insert%'; - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR update t2 set f1 = 'update3_no' where f1 like '%insert%'; select f1 from t1 order by f1; @@ -148,12 +148,12 @@ let $message= check if access only on one of three columns; update t1 set f1 = 'update6_no' where f1 like '%insert%'; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR update t2 set f1 = 'update6_no' where f1 like '%insert%'; update t1 set f1 = 'update7_no' where f1 like '%insert%'; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR update t2 set f1 = 'update7_no' where f1 like '%insert%'; select f1 from t1 order by f1; @@ -173,7 +173,7 @@ let $message= check if rejected without trigger privilege:; connection no_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR update t1 set f1 = 'update8-no', f2 = 'update8-no' where f2 like '%yes'; @@ -188,7 +188,7 @@ let $message= check trigger, but not update privilege on column:; connection default; select current_user; revoke UPDATE(f1) on priv_db.t1 from test_yesprivs@localhost; - grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 + grant TRIGGER,UPDATE(f2),UPDATE(f3) on priv_db.t1 to test_yesprivs@localhost; show grants for test_yesprivs@localhost; @@ -202,14 +202,14 @@ let $message= check trigger, but not update privilege on column:; connection no_privs; select current_user; use priv_db; - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR update t1 set f1 = 'update9-no', f2 = 'update9-no' where f2 like '%yes'; select * from t1 order by f1,f2,f3; # trigger is involved (table privilege) ->fail - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR update t1 set f3= f3+1; select f3 from t1 order by f3; @@ -224,13 +224,13 @@ let $message= check trigger, but not update privilege on column:; connection no_privs; select current_user; use priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR update t1 set f3= f3+1; select f3 from t1 order by f3; let $message= ##### trigger privilege on column level? #######; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR grant TRIGGER(f1) on priv_db.t1 to test_yesprivs@localhost; # Cleanup table level @@ -242,7 +242,7 @@ let $message= ##### trigger privilege on column level? #######; select current_user; -# general Cleanup +# general Cleanup drop database if exists priv_db; drop user test_yesprivs@localhost; drop user test_noprivs@localhost; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc index c2679a55ef7..e3012ed0ca0 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc @@ -42,7 +42,7 @@ let $message= Testcase for db level:; let $message= no trigger privilege on db level for create:; --source include/show_msg.inc use priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-no'; @@ -101,7 +101,7 @@ let $message= no trigger privilege on db level for drop:; connection yes_privs; select current_user; use priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger trg1_2; connection no_privs; @@ -110,7 +110,7 @@ let $message= no trigger privilege on db level for drop:; # no trigger privilege at activation time: let $message= no trigger privilege at activation time:; --source include/show_msg.inc - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR insert into t1 (f1) values ('insert-yes'); select f1 from t1 order by f1; @@ -132,7 +132,7 @@ let $message= trigger privilege on db level for drop:; connection yes_privs; select current_user; show grants for test_yesprivs@localhost; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger trg1_2; # succeed @@ -161,14 +161,14 @@ let $message= use db with trigger privilege on db level and without...:; connection yes_privs; select current_user; use no_priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_3 before INSERT on t1 for each row set new.f1 = 'trig 1_3-no'; use priv_db; create trigger trg1_3 before INSERT on t1 for each row set new.f1 = 'trig 1_3-yes'; use no_priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_4 before UPDATE on t1 for each row set new.f1 = 'trig 1_4-no'; use priv_db; @@ -190,12 +190,12 @@ let $message= use db with trigger privilege on db level and without...:; connection yes_privs; select current_user; use no_priv_db; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST drop trigger trg1_3; use priv_db; drop trigger trg1_3; use no_priv_db; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST drop trigger trg1_4; use priv_db; drop trigger trg1_4; @@ -211,7 +211,7 @@ let $message= use db with trigger privilege on db level and without...:; drop table no_priv_db.t1; --enable_warnings -# general Cleanup +# general Cleanup --disable_warnings drop database if exists priv_db; drop database if exists no_priv_db; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc index 653af075478..82f4a28f664 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc @@ -60,7 +60,7 @@ let $message= trigger privilege on one db1 db level, not on db2; create trigger trg2_1 before INSERT on t2 for each row set new.f1 = 'trig 2_1-yes'; use priv2_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig1_1-yes'; @@ -80,7 +80,7 @@ let $message= trigger privilege on one db1 db level, not on db2; select f1 from priv1_db.t1 order by f1; insert into priv1_db.t2 (f1) values ('insert22-no'); select f1 from priv1_db.t2 order by f1; - + # revoke trigger priv on table level, that doesn't exists->fail let $message= revoke trigger privilege on table level (not existing); @@ -88,7 +88,7 @@ let $message= revoke trigger privilege on table level (not existing); connection default; select current_user; use priv1_db; - --error 1147 + --error ER_NONEXISTING_TABLE_GRANT revoke TRIGGER on priv1_db.t1 from test_yesprivs@localhost; show grants for test_yesprivs@localhost; @@ -100,7 +100,7 @@ let $message= revoke trigger privilege on table level (not existing); drop trigger trg1_1; drop trigger trg2_1; -# revoke the db level->create/drop/use trigger fail +# revoke the db level->create/drop/use trigger fail connection default; select current_user; @@ -116,7 +116,7 @@ let $message= no trigger privilege on table level for create:; connection yes_privs; select current_user; use priv1_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-no'; @@ -133,7 +133,7 @@ let $message= trigger privilege on table level for create:; show triggers; create trigger trg1_2 before INSERT on t1 for each row set new.f1 = 'trig 1_2-yes'; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg2_1 before INSERT on t2 for each row set new.f1 = 'trig 2_1-no'; @@ -157,7 +157,7 @@ let $message= trigger privilege on table level for create:; connection yes_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg2_1 before INSERT on t2 for each row set new.f1 = 'trig 2_1-yes'; @@ -196,7 +196,7 @@ let $message= trigger privilege on table level for create:; select current_user; -# general Cleanup +# general Cleanup drop database if exists priv1_db; drop database if exists priv2_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_definer.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_definer.inc index 59ba321c2e2..f1efff990f1 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_definer.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_definer.inc @@ -38,7 +38,7 @@ let $message= ######### Testcase for definer: ########; before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; drop trigger trg1_0; -# create trigger with definer test_yesprivs@localhost->succeed: +# create trigger with definer test_yesprivs@localhost->succeed: create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; @@ -49,13 +49,15 @@ let $message= ######### Testcase for definer: ########; select current_user; use priv_db; # user hasn't trigger privilege->fail: - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR insert into t1 (f1) values ('insert-no'); select f1 from t1 order by f1; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger trg1_0; - connection default; select current_user; grant select, insert, update ,trigger + connection default; + select current_user; + grant select, insert, update ,trigger on priv_db.t1 to test_yesprivs@localhost; show grants for test_yesprivs@localhost; @@ -66,12 +68,12 @@ let $message= ######### Testcase for definer: ########; select f1 from t1 order by f1; drop trigger trg1_0; # user has not super privilege->fail: - --error 1227 + --error ER_SPECIFIC_ACCESS_DENIED_ERROR create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; # shall always succeed: - create definer=current_user trigger trg1_1 + create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; insert into t1 (f1) values ('insert-no'); @@ -92,7 +94,7 @@ let $message= ######### Testcase for definer: ########; connection yes_privs; select current_user; show grants; - --error 1227 + --error ER_SPECIFIC_ACCESS_DENIED_ERROR create definer=not_ex_user@localhost trigger trg1_3 after UPDATE on t1 for each row set @var1 = 'trig 1_3-yes'; @@ -109,7 +111,7 @@ let $message= ######### Testcase for definer: ########; --enable_warnings -# general Cleanup +# general Cleanup --disable_warnings drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_global_db_mix.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_global_db_mix.inc index a1e1f0e494c..b6f4af7e0a7 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_global_db_mix.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_global_db_mix.inc @@ -89,7 +89,7 @@ let $message= trigger privilege on user level for create:; use priv_db; show triggers; select * from information_schema.triggers; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger trg1_1; connection default; @@ -106,7 +106,7 @@ let $message= no trigger privilege on db level for create:; connection yes_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-no'; @@ -131,12 +131,12 @@ let $message= trigger privilege on db level for create:; use priv_db; create trigger trg1_2 before INSERT on t1 for each row set new.f1 = 'trig 1_2-yes'; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger no_priv_db.trg1_9 before insert on no_priv_db.t1 for each row set new.f1 = 'trig 1_9-yes'; use no_priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_2 before INSERT on t1 for each row set new.f1 = 'trig 1_2-no'; create trigger priv_db.trg1_9 before UPDATE on priv_db.t1 @@ -151,7 +151,7 @@ let $message= trigger privilege on db level for create:; use no_priv_db; insert into t1 (f1) values ('insert-yes'); select f1 from t1 order by f1; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger priv_db.trg1_9; connection default; @@ -159,7 +159,7 @@ let $message= trigger privilege on db level for create:; drop trigger priv_db.trg1_9; revoke TRIGGER on priv_db.* from test_yesprivs@localhost; use priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR insert into t1 (f1) values ('insert-yes'); select f1 from t1 order by f1; grant TRIGGER on *.* to test_yesprivs@localhost; @@ -168,7 +168,7 @@ let $message= trigger privilege on db level for create:; connection yes_privs; select current_user; use no_priv_db; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_2 before INSERT on t1 for each row set new.f1 = 'trig 1_2-no'; @@ -209,7 +209,7 @@ let $message= trigger privilege on db level for create:; connection default; select current_user; -# general Cleanup +# general Cleanup drop database if exists priv_db; drop database if exists no_priv_db; drop database if exists h1; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_prepare.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_prepare.inc index dbb58194bb0..ea7c385768c 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_prepare.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_prepare.inc @@ -39,7 +39,7 @@ let $message= #### Testcase for trigger privilege on execution time ########; select current_user; show triggers; grant select, insert, update ,trigger - on priv_db.t1 to test_yesprivs@localhost + on priv_db.t1 to test_yesprivs@localhost with grant option; grant select on priv_db.t1 to test_useprivs@localhost; @@ -71,7 +71,7 @@ let $message= #### Testcase for trigger privilege on execution time ########; connection yes_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR execute ins1; select f1 from t1 order by f1; prepare ins1 from 'insert into t1 (f1) values (''insert4-no'')'; @@ -79,7 +79,7 @@ let $message= #### Testcase for trigger privilege on execution time ########; connection use_privs; select current_user; prepare ins1 from 'insert into t1 (f1) values (''insert5-no'')'; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR execute ins1; select f1 from t1 order by f1; @@ -107,13 +107,13 @@ let $message= #### Testcase for trigger privilege on execution time ########; connection yes_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR execute ins1; select f1 from t1 order by f1; connection use_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR execute ins1; select f1 from t1 order by f1; @@ -170,7 +170,7 @@ let $message= #### Testcase for trigger privilege on execution time ########; --enable_warnings -# general Cleanup +# general Cleanup --disable_warnings drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.inc index 456e51a2ae0..1019579a3fb 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.inc @@ -57,7 +57,7 @@ let $message= no trigger privilege on table level for create:; select current_user; use priv_db; show tables; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-no'; @@ -109,7 +109,7 @@ let $message= no trigger privilege on table level for drop:; connection yes_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR drop trigger trg1_2; # no trigger priv at activation time->insert fails @@ -118,7 +118,7 @@ let $message= no trigger privilege at activation time:; --source include/show_msg.inc connection no_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR insert into t1 (f1) values ('insert5-no'); select f1 from t1 order by f1; @@ -155,7 +155,7 @@ let $message= trigger privilege on table level for drop:; insert into t1 (f1) values ('insert8-yes'); select f1 from t1 order by f1; -# trigger privilege must be keep when mixinf tables with and without +# trigger privilege must be keep when mixinf tables with and without # trigger privilege let $message= switch to table without having trigger priv for it:; @@ -172,12 +172,12 @@ let $message= use table with trigger privilege and without...:; --source include/show_msg.inc connection yes_privs; select current_user; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg2_1 before INSERT on t2 for each row set new.f1 = 'trig 2_1-no'; create trigger trg1_3 before INSERT on t1 for each row set new.f1 = 'trig 1_3-yes'; - --error 1142 + --error ER_TABLEACCESS_DENIED_ERROR create trigger trg2_2 before UPDATE on t2 for each row set new.f1 = 'trig 2_2-no'; create trigger trg1_4 before UPDATE on t1 for each row @@ -193,10 +193,10 @@ let $message= use table with trigger privilege and without...:; connection yes_privs; select current_user; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST drop trigger trg2_1; drop trigger trg1_3; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST drop trigger trg2_2; drop trigger trg1_4; @@ -210,7 +210,7 @@ let $message= use table with trigger privilege and without...:; --enable_warnings -# general Cleanup +# general Cleanup --disable_warnings drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_transaction.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_transaction.inc index a3f3a753774..e43f4ce97a3 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_transaction.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_transaction.inc @@ -40,7 +40,7 @@ let $message= ######### Testcase for transactions: ########; select current_user; use priv_db; set autocommit=0; - create definer=current_user trigger trg1_1 + create definer=current_user trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 1_1-yes'; rollback work; @@ -56,7 +56,7 @@ let $message= ######### Testcase for transactions: ########; commit work; drop trigger trg1_1; rollback work; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST drop trigger trg1_1; drop trigger trg1_2; commit work; @@ -74,7 +74,7 @@ let $message= ######### Testcase for transactions: ########; --enable_warnings -# general Cleanup +# general Cleanup --disable_warnings drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_0407.inc b/mysql-test/suite/funcs_1/triggers/triggers_0407.inc index ccfeb1aec99..a05bdb45bac 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_0407.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_0407.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== --disable_abort_on_error @@ -46,7 +46,7 @@ let $message= Testcase 3.5.4.1:; eval create table t1 (f1 char(30)) engine=$engine_type; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; - Create trigger trg1 BEFORE INSERT on t1 + Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; connection con1_general; Use db_drop; @@ -61,17 +61,17 @@ let $message= Testcase 3.5.4.1:; Select * from t1 order by f1; #Cleanup - --disable_warnings + --disable_warnings connection con1_super; --disable_warnings - --error 0,1360 - drop trigger trg1; + --error 0,ER_TRG_DOES_NOT_EXIST + drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; --enable_warnings #Section 3.5.4.2 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate error +# Test case: Ensure that DROP TRIGGER fails, with an appropriate error # message, if the trigger name does not exist. let $message= Testcase 3.5.4.2:; --source include/show_msg.inc @@ -83,16 +83,16 @@ let $message= Testcase 3.5.4.2:; drop table if exists t1_432 ; --enable_warnings eval create table t1_432 (f1 char (30)) engine=$engine_type; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger tr_does_not_exit; -#cleanup +#cleanup --disable_warnings drop table if exists t1_432 ; drop database if exists db_drop2; --enable_warnings #Section 3.5.4.3 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate +# Test case: Ensure that DROP TRIGGER fails, with an appropriate # error message, if is not a qualified name. let $message= Testcase 3.5.4.3:; --source include/show_msg.inc @@ -107,33 +107,33 @@ let $message= Testcase 3.5.4.3:; eval create table t1_433 (f1 char (30)) engine=$engine_type; eval create table t1_433a (f1a char (5)) engine=$engine_type; - CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row + CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; -# Using table - --error 1064 +# Using table + --error ER_PARSE_ERROR Drop trigger t1.433.trg3; -# Using database.table - --error 1064 +# Using database.table + --error ER_PARSE_ERROR Drop trigger db_drop3.t1.433.trg3; # wrong database - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger mysql.trg3; # database does not exist - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger tbx.trg3; -#cleanup +#cleanup Drop trigger db_drop3.trg3; drop table if exists t1_433; drop table if exists t1_433a; drop database if exists db_drop3; #Section 3.5.4.4 -# Test case: Ensure that when a database is dropped, all triggers created within +# Test case: Ensure that when a database is dropped, all triggers created within # that database are also cleanly dropped. let $message= Testcase 3.5.4.4:; --source include/show_msg.inc @@ -143,7 +143,7 @@ let $message= Testcase 3.5.4.4:; Use db_drop4; eval create table t1 (f1 char(30)) engine=$engine_type; grant INSERT, SELECT on db_drop4.t1 to test_general; - Create trigger trg4 BEFORE INSERT on t1 + Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; connection con1_general; Use db_drop4; @@ -166,14 +166,14 @@ let $message= Testcase 3.5.4.4:; #Cleanup connection con1_super; --disable_warnings - --error 1360 - drop trigger trg4; + --error ER_TRG_DOES_NOT_EXIST + drop trigger trg4; drop database if exists db_drop4; --enable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; #Section 3.5.4.5 -# Test case: Ensure that when a table is dropped, all triggers for which it is the +# Test case: Ensure that when a table is dropped, all triggers for which it is the # subject table are also cleanly dropped. let $message= Testcase 3.5.4.5:; --source include/show_msg.inc @@ -183,7 +183,7 @@ let $message= Testcase 3.5.4.5:; Use db_drop5; eval create table t1 (f1 char(50)) engine=$engine_type; grant INSERT, SELECT on t1 to test_general; - Create trigger trg5 BEFORE INSERT on t1 + Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; connection con1_general; Use db_drop5; @@ -204,8 +204,8 @@ let $message= Testcase 3.5.4.5:; #Cleanup connection con1_super; --disable_warnings - --error 1360 - drop trigger trg5; + --error ER_TRG_DOES_NOT_EXIST + drop trigger trg5; drop database if exists db_drop5; --enable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -223,55 +223,55 @@ let $message= Testcase 3.5.5:; use test; #Section 3.5.5.1 -# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent +# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent # subject table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.1:; --source include/show_msg.inc - --error 1146 + --error ER_NO_SUCH_TABLE Create trigger trg1 before INSERT on t100 for each row set new.f2=1000; #Section 3.5.5.2 -# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table +# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table # as the subject table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.2:; --source include/show_msg.inc Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); - --error 1361 - Create trigger trg2 before INSERT + --error ER_TRG_ON_VIEW_OR_TEMP_TABLE + Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; #Cleanup - --disable_warnings + --disable_warnings drop table t1_temp; --enable_warnings #Section 3.5.5.3 -# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject +# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject # table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.3:; --source include/show_msg.inc Create view vw3 as select f118 from tb3; -# OBN Not sure why the server is returning error 1347 - --error 1347 - Create trigger trg3 before INSERT +# OBN Not sure why the server is returning error ER_WRONG_OBJECT + --error ER_WRONG_OBJECT + Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; #Cleanup - --disable_warnings + --disable_warnings drop view vw3; --enable_warnings #Section 3.5.5.4 -# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides -# in a different database than in which the trigger will reside, the +# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides +# in a different database than in which the trigger will reside, the # statement fails with an appropriate error message; that is, ensure that # the trigger and its subject table must reside in the same database. let $message= Testcase 3.5.5.4:; @@ -283,7 +283,7 @@ let $message= Testcase 3.5.5.4:; use dbtest_two; eval create table t2 (f1 char(15)) engine=$engine_type; use dbtest_one; - --error 1435 + --error ER_TRG_IN_WRONG_SCHEMA create trigger trg4 before INSERT on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4'; grant INSERT, SELECT on dbtest_two.t2 to test_general; @@ -298,7 +298,7 @@ let $message= Testcase 3.5.5.4:; #Cleanup connection con1_super; - --disable_warnings + --disable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; DROP DATABASE if exists dbtest_one; drop database if EXISTS dbtest_two; @@ -316,7 +316,7 @@ let $message= Testcase 3.5.6:; use test; #Section 3.5.6.1 -# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. +# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. # See section 3.5.1.1 let $message= Testcase 3.5.6.1 (see Testcase 3.5.1.1); --source include/show_msg.inc @@ -328,37 +328,37 @@ let $message= Testcase 3.5.6.2 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.6.3 -# Test case: Ensure that a trigger definition that specifies a trigger action -# time that is not either BEFORE or AFTER fails, with an appropriate +# Test case: Ensure that a trigger definition that specifies a trigger action +# time that is not either BEFORE or AFTER fails, with an appropriate # error message, at CREATE TRIGGER time. let $message= Testcase 3.5.6.3:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15; -#Cleanup +#Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg3_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg3_2; --enable_warnings #Section 3.5.6.4 -# Test case: Ensure that a trigger defined with a trigger action time of BEFORE -# always executes its triggered action immediately before the trigger event. +# Test case: Ensure that a trigger defined with a trigger action time of BEFORE +# always executes its triggered action immediately before the trigger event. # See section 3.5.1.1 let $message= Testcase 3.5.6.4 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.6.5 -# Test case: Ensure that a trigger defined with a trigger action time of AFTER +# Test case: Ensure that a trigger defined with a trigger action time of AFTER # always executes its triggered action immediately after the trigger event. let $message= Testcase 3.5.6.5 (see Testcase 3.5.1.1); --source include/show_msg.inc @@ -384,40 +384,40 @@ let $message= Testcase 3.5.7.3 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.7.4 -# Test case: Ensure that a trigger definition that specifies a trigger event that -# is not either INSERT, UPDATE or DELETE fails, with an appropriate error +# Test case: Ensure that a trigger definition that specifies a trigger event that +# is not either INSERT, UPDATE or DELETE fails, with an appropriate error # message, at CREATE TRIGGER time. let $message= Testcase 3.5.7.4:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1; -#Cleanup +#Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg4_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg4_2; --enable_warnings -#Section 3.5.7.5 / 3.5.7.6 -# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers +#Section 3.5.7.5 / 3.5.7.6 +# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.5 / 3.5.7.6:; --source include/show_msg.inc - Create trigger trg5_1 BEFORE INSERT + Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg5_2 BEFORE INSERT + --error ER_NOT_SUPPORTED_YET + Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -426,27 +426,27 @@ let $message= Testcase 3.5.7.5 / 3.5.7.6:; Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg5_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5_2; delete from tb3 where f121='Test 3.5.7.5/6'; --enable_warnings -#Section 3.5.7.7 / 3.5.7.8 -# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers +#Section 3.5.7.7 / 3.5.7.8 +# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.7 / 3.5.7.8:; --source include/show_msg.inc set @test_var='Before trig 3.5.7.7'; - Create trigger trg6_1 AFTER INSERT + Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg6_2 AFTER INSERT + --error ER_NOT_SUPPORTED_YET + Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; select @test_var; @@ -458,26 +458,26 @@ let $message= Testcase 3.5.7.7 / 3.5.7.8:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg6_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_2; delete from tb3 where f121='Test 3.5.7.7/8'; --enable_warnings #Section 3.5.7.9 / 3.5.7.10 -# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers -# on the same table, even if the triggers have different names / different +# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers +# on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.9/10:; --source include/show_msg.inc - Create trigger trg7_1 BEFORE UPDATE + Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg7_2 BEFORE UPDATE + --error ER_NOT_SUPPORTED_YET + Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -486,25 +486,25 @@ let $message= Testcase 3.5.7.9/10:; Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg7_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg7_2; delete from tb3 where f121='Test 3.5.7.9/10'; #Section 3.5.7.11 / 3.5.7.12 -# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers +# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers # on the same table, even if the triggers have different names / different -# triggered actions. +# triggered actions. let $message= Testcase 3.5.7.11/12:; --source include/show_msg.inc set @test_var='Before trig 3.5.7.11'; - Create trigger trg8_1 AFTER UPDATE + Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg8_2 AFTER UPDATE + --error ER_NOT_SUPPORTED_YET + Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; @@ -518,25 +518,25 @@ let $message= Testcase 3.5.7.11/12:; delete from tb3 where f121='Test 3.5.7.11/12'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg8_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg8_2; delete from tb3 where f121='Test 3.5.7.11/12'; #Section 3.5.7.13 / 3.5.7.14 -# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers +# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.13/14:; --source include/show_msg.inc set @test_var=1; - Create trigger trg9_1 BEFORE DELETE + Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; --error ER_NOT_SUPPORTED_YET - Create trigger trg9_2 BEFORE DELETE + Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; select @test_var; @@ -550,29 +550,29 @@ let $message= Testcase 3.5.7.13/14:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg9_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg9_2; delete from tb3 where f121='Test 3.5.7.13/14'; #Section 3.5.7.15 / 3.5.7.16 -# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers -# on the same table, even if the triggers have different names / different +# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers +# on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.15/16:; --source include/show_msg.inc set @test_var=1; - Create trigger trg_3_406010_1 AFTER DELETE + Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; - --error ER_NOT_SUPPORTED_YET - Create trigger trg_3_406010_2 AFTER DELETE + --error ER_NOT_SUPPORTED_YET + Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; - --error 1359 - Create trigger trg_3_406010_1 AFTER INSERT + --error ER_TRG_ALREADY_EXISTS + Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; select @test_var; @@ -586,18 +586,18 @@ let $message= Testcase 3.5.7.15/16:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg_3_406010_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg_3_406010_2; delete from tb3 where f121='Test 3.5.7.15/16'; --enable_warnings #Section 3.5.7.17 -# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, -# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE -# trigger on the same table; that is, ensure that every persistent base +# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, +# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE +# trigger on the same table; that is, ensure that every persistent base # table may be the subject table for exactly six triggers let $message= Testcase 3.5.7.17 (see Testcase 3.5.1.1); --source include/show_msg.inc diff --git a/mysql-test/suite/funcs_1/triggers/triggers_08.inc b/mysql-test/suite/funcs_1/triggers/triggers_08.inc index d63c15b33b5..d7ef12c58a8 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_08.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_08.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== # WL#4084: enable disabled parts, 2007-11-15 hhunger @@ -30,20 +30,20 @@ let $message= Testcase: 3.5:; ################################# #Section 3.5.8.1 -# Testcase: Ensure that the triggered action of every trigger always executes +# Testcase: Ensure that the triggered action of every trigger always executes # correctly and the results in all expected changes made to the database let $message= Testcase 3.5.8.1: (implied in previous tests); --source include/show_msg.inc #Section 3.5.8.2 -# Testcase: Ensure that the triggered actions of every trigger never results +# Testcase: Ensure that the triggered actions of every trigger never results # in an unexpected change made to the database. let $message= Testcase 3.5.8.2: (implied in previous tests); --source include/show_msg.inc #Section 3.5.8.3 / 3.5.8.4 -#Test case: Ensure that the triggered action can any valid SQL statement / set +#Test case: Ensure that the triggered action can any valid SQL statement / set # of valid SQL statements, provided the statements are written within # a BEGIN/END compound statement construct # OBN - At this point the tests focuses on the the INSERT/UPDATE/DELETE SQL statements @@ -57,17 +57,17 @@ let $message= Testcase 3.5.8.3/4:; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; - eval create table t1_i ( + eval create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=$engine_type; - eval create table t1_u ( + eval create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=$engine_type; - eval create table t1_d ( + eval create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -92,22 +92,22 @@ let $message= 3.5.8.4 - multiple SQL; delimiter //; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN - insert into db_test.t1_i + insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); - update db_test.t1_u + update db_test.t1_u set u144=new.f144, u163=new.f163 - where u136=new.f136; + where u136=new.f136; delete from db_test.t1_d where d136= new.f136; - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; - END// + select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u + where u136= new.f136; + END// delimiter ;// # Test trigger execution - multiple SQL connection con2_general; Use test; set @test_var=0; - Insert into tb3 (f120, f122, f136, f144, f163) + Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; --sorted_result @@ -126,7 +126,7 @@ let $message= 3.5.8.4 - single SQL - insert; delimiter //; Create trigger trg2 BEFORE UPDATE on tb3 for each row BEGIN - insert into db_test.t1_i + insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); END// delimiter ;// @@ -147,9 +147,9 @@ let $message= 3.5.8.4 - single SQL - update; connection con2_super; drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row - update db_test.t1_u + update db_test.t1_u set u120=new.f120 - where u136=new.f136; + where u136=new.f136; # Trigger exeution - single SQL - update; connection con2_general; @@ -170,7 +170,7 @@ let $message= 3.5.8.3/4 - single SQL - delete; # Trigger exeution - single SQL delete connection con2_general; #lock tables tb3 write, db_test.t1_i write, db_test.t1_u write, db_test.t1_d write; - update tb3 set f120='D', f136=444, + update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; #unlock tables; @@ -184,13 +184,13 @@ let $message= 3.5.8.3/4 - single SQL - select; connection con2_super; drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; + select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u + where u136= new.f136; # Trigger exeution - single SQL select connection con2_general; set @test_var=0; - update tb3 set f120='S', f136=111, + update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -198,7 +198,7 @@ let $message= 3.5.8.3/4 - single SQL - select; #Cleanup connection default; - --disable_warnings + --disable_warnings drop trigger trg1; drop trigger trg5; drop database if exists db_test; @@ -208,8 +208,8 @@ let $message= 3.5.8.3/4 - single SQL - select; #Section 3.5.8.5 (IF) -# Test case: Ensure that the stored procedure-specific flow control statement like IF -# works correctly when it is a part of the triggered action portion of a +# Test case: Ensure that the stored procedure-specific flow control statement like IF +# works correctly when it is a part of the triggered action portion of a # trigger definition. let $message= Testcase 3.5.8.5 (IF):; --source include/show_msg.inc @@ -227,7 +227,7 @@ let $message= Testcase 3.5.8.5 (IF):; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; - ELSE + ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// @@ -235,50 +235,50 @@ let $message= Testcase 3.5.8.5 (IF):; set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); - select f120, f122, f136, @test_var, @test_var2 + select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); - select f120, f122, f136, @test_var, @test_var2 + select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); - select f120, f122, f136, @test_var, @test_var2 + select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); - select f120, f122, f136, @test_var, @test_var2 + select f120, f122, f136, @test_var, @test_var2 from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; delimiter //; - --error 1064 + --error ER_PARSE_ERROR create trigger trg3 before update on tb3 for each row BEGIN ELSEIF new.f120='2' then END IF; END// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3// - --error 1064 + --error ER_PARSE_ERROR create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; - ELSE + ELSE set @test_var2='2nd else', new.f120='D'; END// delimiter ;// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg2; delete from tb3 where f121='Test 3.5.8.5-if'; --enable_warnings #Section 3.5.8.5 (CASE) -# Test case: Ensure that the stored procedure-specific flow control statement -# like CASE works correctly when it is a part of the triggered action +# Test case: Ensure that the stored procedure-specific flow control statement +# like CASE works correctly when it is a part of the triggered action # portion of a trigger definition. let $message= Testcase 3.5.8.5-case:; --source include/show_msg.inc @@ -318,34 +318,34 @@ let $message= Testcase 3.5.8.5-case:; delimiter ;// set @test_var='Empty'; - Insert into tb3 (f120, f122, f136, f144) + Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); - select f120, f122, f136, f144, @test_var + select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; - Insert into tb3 (f120, f122, f136, f144) + Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); - select f120, f122, f136, f144, @test_var + select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; - Insert into tb3 (f120, f122, f136, f144) + Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); - select f120, f122, f136, f144, @test_var + select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; - Insert into tb3 (f120, f122, f136) + Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); - select f120, f122, f136, f144, @test_var + select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; - Insert into tb3 (f120, f122, f136, f144) + Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); - select f120, f122, f136, f144, @test_var + select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; - --error 0, 1339 - Insert into tb3 (f120, f122, f136, f144) + --error 0, ER_SP_CASE_NOT_FOUND + Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); - select f120, f122, f136, f144, @test_var + select f120, f122, f136, f144, @test_var from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; delimiter //; - --error 1064 + --error ER_PARSE_ERROR create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -353,11 +353,11 @@ let $message= Testcase 3.5.8.5-case:; END// delimiter ;// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3a; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg3; delete from tb3 where f121='Test 3.5.8.5-case'; --enable_warnings @@ -371,53 +371,53 @@ let $message= Testcase 3.5.8.5-loop/leave:; delimiter //; Create trigger trg4 after insert on tb3 for each row - BEGIN + BEGIN set @counter=0, @flag='Initial'; - Label1: loop + Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// delimiter ;// set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) + Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; delimiter //; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg6_2 after update on tb3 for each row BEGIN - REPEAT - SET @counter2 = @counter2 + 1; + REPEAT + SET @counter2 = @counter2 + 1; END// delimiter ;// #Cleanup - --disable_warnings + --disable_warnings drop trigger trg6; delete from tb3 where f122='Test 3.5.8.5-repeat'; --enable_warnings #Section 3.5.8.5 (WHILE) -# Test case: Ensure that the stored procedure-specific flow control -# statements WHILE, work correctly when they are part of +# Test case: Ensure that the stored procedure-specific flow control +# statements WHILE, work correctly when they are part of # the triggered action portion of a trigger definition. let $message= Testcase 3.5.8.5-while:; --source include/show_msg.inc delimiter //; Create trigger trg7 after insert on tb3 for each row - wl_label: WHILE @counter1 < new.f136 DO - SET @counter1 = @counter1 + 1; + wl_label: WHILE @counter1 < new.f136 DO + SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; - SET @counter2 = @counter2 + 1; + SET @counter2 = @counter2 + 1; END WHILE wl_label// delimiter ;// set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) + Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; delimiter //; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg7_2 after update on tb3 for each row BEGIN - WHILE @counter1 < new.f136 - SET @counter1 = @counter1 + 1; + WHILE @counter1 < new.f136 + SET @counter1 = @counter1 + 1; END// delimiter ;// #Cleanup - --disable_warnings + --disable_warnings delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; --enable_warnings #Section 3.5.8.6 -# Test case: Ensure that a trigger definition that includes a CALL to a stored -# procedure fails, at CREATE TRIGGER time, with an appropriate error +# Test case: Ensure that a trigger definition that includes a CALL to a stored +# procedure fails, at CREATE TRIGGER time, with an appropriate error # message. Not more valid requirement. let $message= Testcase 3.5.8.6: (requirement void); --source include/show_msg.inc @@ -518,15 +518,15 @@ let $message= Testcase 3.5.8.6: (requirement void); #Section 3.5.8.7 -# Test case: Ensure that a trigger definition that includes a -# transaction-delimiting statement (e.g. COMMIT, -# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER +# Test case: Ensure that a trigger definition that includes a +# transaction-delimiting statement (e.g. COMMIT, +# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER # time, with an appropriate error message. let $message= Testcase 3.5.8.7; --source include/show_msg.inc delimiter //; - --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG Create trigger trg9_1 before update on tb3 for each row BEGIN Start transaction; @@ -534,7 +534,7 @@ let $message= Testcase 3.5.8.7; Commit; END// - --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG Create trigger trg9_2 before delete on tb3 for each row BEGIN Start transaction; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_09.inc b/mysql-test/suite/funcs_1/triggers/triggers_09.inc index 89153322f80..406f37e6ff5 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_09.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_09.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== @@ -11,15 +11,15 @@ ################################# #Section 3.5.9.1 -#Test case: Ensure that every trigger executes its triggered action on each row +#Test case: Ensure that every trigger executes its triggered action on each row # that meets the conditions stated in the trigger definition. #Section 3.5.9.2 -#Testcase: Ensure that a trigger never executes its triggered action on any row +#Testcase: Ensure that a trigger never executes its triggered action on any row # that doesn't meet the conditions stated in the trigger definition. let $message= Testcase 3.5.9.1/2:; --source include/show_msg.inc - Create trigger trg1 BEFORE UPDATE on tb3 for each row + Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; --disable_query_log select count(*) as TotalRows from tb3; @@ -29,22 +29,22 @@ let $message= Testcase 3.5.9.1/2:; --enable_query_log set @counter=0; Update tb3 Set f142='1' where f130<100; - select count(*) as ExpectedChanged, @counter as TrigCounter + select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; - select count(*) as ExpectedNotChange from tb3 + select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; - select count(*) as NonExpectedChanged from tb3 + select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg1; --enable_warnings #Section 3.5.9.3 -#Test case: Ensure that a reference to OLD. always correctly refers -# to the values of the specified column of the subject table before a +#Test case: Ensure that a reference to OLD. always correctly refers +# to the values of the specified column of the subject table before a # data row is updated or deleted. let $message= Testcase 3.5.9.3:; --source include/show_msg.inc @@ -71,46 +71,46 @@ let $message= Testcase 3.5.9.3:; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --enable_query_log - Insert into tb3 (f122, f136, f163) + Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --enable_query_log delete from tb3 where f122='Test 3.5.9.3'; select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg2_a; drop trigger trg2_b; drop trigger trg2_c; @@ -118,8 +118,8 @@ let $message= Testcase 3.5.9.3:; --enable_warnings #Section 3.5.9.4 -#Test case: Ensure that a reference to NEW. always correctly refers -# to the values of the specified column of the subject table after an +#Test case: Ensure that a reference to NEW. always correctly refers +# to the values of the specified column of the subject table after an # existing data row has been updated or a new data row has been inserted. let $message= Testcase 3.5.9.4:; --source include/show_msg.inc @@ -145,34 +145,34 @@ let $message= Testcase 3.5.9.4:; @tr_var_af_151=new.f151, @tr_var_af_163=new.f163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --enable_query_log - Insert into tb3 (f122, f136, f151, f163) + Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); - select f118, f121, f122, f136, f151, f163 from tb3 + select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4%' order by f163; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --enable_query_log @@ -183,14 +183,14 @@ let $message= Testcase 3.5.9.4:; Update tb3 Set f122='Test 3.5.9.4-trig', f136=0, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; - select f118, f121, f122, f136, f151, f163 from tb3 + select f118, f121, f122, f136, f151, f163 from tb3 where f122 like 'Test 3.5.9.4-trig' order by f163; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg3_a; drop trigger trg3_b; drop trigger trg3_c; @@ -200,121 +200,119 @@ let $message= Testcase 3.5.9.4:; #Section 3.5.9.5 -# Test case: Ensure that the definition of an INSERT trigger can include a +# Test case: Ensure that the definition of an INSERT trigger can include a # reference to NEW. . let $message= Testcase 3.5.9.5: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.6 -# Test case: Ensure that the definition of an INSERT trigger cannot include +# Test case: Ensure that the definition of an INSERT trigger cannot include # a reference to OLD. . let $message= Testcase 3.5.9.6:; --source include/show_msg.inc - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg4a before insert on tb3 for each row set @temp1= old.f120; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg4b after insert on tb3 for each row set old.f120= 'test'; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4b; --enable_warnings #Section 3.5.9.7 -# Test case: Ensure that the definition of an UPDATE trigger can include a +# Test case: Ensure that the definition of an UPDATE trigger can include a # reference to NEW. . let $message= Testcase 3.5.9.7: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.8 -# Test case: Ensure that the definition of an UPDATE trigger cannot include a +# Test case: Ensure that the definition of an UPDATE trigger cannot include a # reference to OLD. . let $message= Testcase 3.5.9.8: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.9 -# Test case: Ensure that the definition of a DELETE trigger cannot include a +# Test case: Ensure that the definition of a DELETE trigger cannot include a # reference to NEW.. let $message= Testcase 3.5.9.9:; --source include/show_msg.inc - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg5a before DELETE on tb3 for each row set @temp1=new.f122; - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; -let $message= The above returns the wrong error, should be error 1362 (Bug 11648) ---source include/show_msg.inc #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5b; --enable_warnings #Section 3.5.9.10 -# Test case: Ensure that the definition of a DELETE trigger can include a reference +# Test case: Ensure that the definition of a DELETE trigger can include a reference # to OLD.. let $message= Testcase 3.5.9.10: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.11 -# Testcase: Ensure that trigger definition that includes a referance to -# NEW. fails with an appropriate error message, +# Testcase: Ensure that trigger definition that includes a referance to +# NEW. fails with an appropriate error message, # at CREATE TRIGGER time, if the trigger event in not INSERT or UPDATE let $message= Testcase 3.5.9.11: covered by 3.5.9.9; --source include/show_msg.inc #Section 3.5.9.12 -# Testcase: Ensure that trigger definition that includes a referance to -# OLD. fails with an appropriate error message, at +# Testcase: Ensure that trigger definition that includes a referance to +# OLD. fails with an appropriate error message, at # CREATE TRIGGER time, if the trigger event is not DELETE or UPDATE let $message= Testcase 3.5.9.12: covered by 3.5.9.6; --source include/show_msg.inc #Section 3.5.9.13 -# Test case: Ensure that all references to OLD. are read-only, +# Test case: Ensure that all references to OLD. are read-only, # that is, that they cannot be used to modify a data row. let $message= Testcase 3.5.9.13:; --source include/show_msg.inc - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6a before UPDATE on tb3 for each row set old.f118='C', new.f118='U'; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6b after INSERT on tb3 for each row set old.f136=163, new.f118='U'; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6c after UPDATE on tb3 for each row set old.f136=NULL; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6b; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6c; --enable_warnings #Section 3.5.9.14 -# Test case: Ensure that all references to NEW. may be used both to +# Test case: Ensure that all references to NEW. may be used both to # read a data row and to modify a data row let $message= Testcase 3.5.9.14: (implied in previous tests); --source include/show_msg.inc diff --git a/mysql-test/suite/funcs_1/views/func_view.inc b/mysql-test/suite/funcs_1/views/func_view.inc index 93fdb382039..5637a7f4f84 100644 --- a/mysql-test/suite/funcs_1/views/func_view.inc +++ b/mysql-test/suite/funcs_1/views/func_view.inc @@ -3,9 +3,9 @@ # Functions within VIEWs # # # ################################################### -# 2006-12-08 ML Maintenance + refinements -# 2005-09-14 ML Create this test # 2007-11-09 HHunger enabled all disabled parts belonging to fixed bugs. +# 2006-12-08 mleich Maintenance + refinements +# 2005-09-14 mleich Create this test # # 0. Some notes about this test: # ################################################################# @@ -13,9 +13,9 @@ # 0.1 This test is unfinished and incomplete, but already useful. # ----------------------------------------------------------------- # 0.1.1 There will be architectural changes in future. -# The long sequences with +# The long sequences with # let $col_type= ; -# --source suite/funcs_1/views/ # per every column type do not look very smart. # @@ -46,7 +46,7 @@ # # 0.2 How to valuate the test results: # --------------------------------------------------------------------------- -# Due to the extreme "greedy bug hunting" architecture (combinatorics +# Due to the extreme "greedy bug hunting" architecture (combinatorics # + heavy use of sourced scripts) of the following tests, there will be # - no abort of the test execution, when one statements gets an return # code != 0 (The sub testcases are independend.) @@ -62,10 +62,10 @@ # The file with expected results suffers from Bug 5913"; # means, the file with expected results contains result sets which # are known to be wrong. -# "Attention: The last failed" +# "Attention: The last failed" # means, a statement which should be successful (bugfree MySQL) # failed. -# +# # "Passed" : The behaviour of your MySQL version does not differ from the # version used to generate the files with expected results. # Known bugs affecting these tests could be retrieved by @@ -87,7 +87,7 @@ # with the suspicious result set or server response. # Now all t1_values records are preloaded. # 2. Start the server without the initial cleanup of databases etc. -# This preserves the content of the table t1_values, which +# This preserves the content of the table t1_values, which # might be needed for replaying the situation. # Example: # ./mysql-test-run.pl --socket=var/tmp/master.sock --start-dirty @@ -148,7 +148,7 @@ # The script will work with the VIEWs, but omit the simple selects. # The "reject" file contains the view select result sets. # 3. Compare the "reject" files of 1. and 2. within a graphical diff tool. -# +# # --disable_warnings @@ -189,7 +189,7 @@ eval CREATE TABLE t1_values ##### BEGIN Basic preparations ####################################### # # 1. Extend t1_values with the columns you need -# - the column name must show the data type +# - the column name must show the data type # - do not add NOT NULL columns # - do not worry if the intended column data type is not # available for some storage engines @@ -221,7 +221,7 @@ ALTER TABLE t1_values ADD my_decimal DECIMAL(64,30); # we do not want to start with "illegal/unexpected/..." values. # Such experiments should be done in other testcases. # Please be careful -# - modifying column values of predefined rows they might change many +# - modifying column values of predefined rows they might change many # result sets # - additional predefined rows should be really useful for the majority of # all sub testcases, since they blow up all result sets. @@ -246,19 +246,19 @@ INSERT INTO t1_values SET my_year = '1901', my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , - my_double = -1.7976931348623E+308; + my_double = -1.7976931348623E+308; # shortened due to bug#32285 -# my_double = -1.7976931348623157E+308; +# my_double = -1.7976931348623157E+308; # # 2.3 record -- everything to "maximum" # numbers, date/time types -> maximum of range # strings, blobs, binaries -> '<- full length of used data type>' # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = '<--------30 characters------->', + my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), - my_binary_30 = '<--------30 characters------->', + my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -270,7 +270,7 @@ INSERT INTO t1_values SET my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; # shortened due to bug#32285 -# my_double = -1.7976931348623157E+308; +# my_double = -1.7976931348623157E+308; # # 2.4 record -- everything to "magic" value if available or # other interesting value @@ -279,28 +279,28 @@ INSERT INTO t1_values SET # characters and preceeding and trailing spaces # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = ' ---äÖüß@µ*$-- ', - my_varchar_1000 = ' ---äÖüß@µ*$-- ', - my_binary_30 = ' ---äÖüß@µ*$-- ', - my_varbinary_1000 = ' ---äÖüß@µ*$-- ', + my_char_30 = ' ---äÖüß@µ*$-- ', + my_varchar_1000 = ' ---äÖüß@µ*$-- ', + my_binary_30 = ' ---äÖüß@µ*$-- ', + my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, - my_bigint = 0, + my_bigint = 0, my_decimal = 0.0, my_double = 0; # # 2.5 record -- everything to "harmless" value if available # numbers -> -1 (logical) -# strings, blobs, binaries -> '-1' useful for numeric functions +# strings, blobs, binaries -> '-1' useful for numeric functions # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = '-1', - my_varchar_1000 = '-1', - my_binary_30 = '-1', - my_varbinary_1000 = '-1', + my_char_30 = '-1', + my_varchar_1000 = '-1', + my_binary_30 = '-1', + my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -318,11 +318,11 @@ INSERT INTO t1_values SET # records which should be used dedicated to the SELECT above # - Please avoid WHERE clauses # - Include the PRIMARY KEY ("id") of the base table t1_values into the -# select column list -# - Include the base table column used as function parameter into the -# select column list, because it is much easier to check the results +# select column list +# - Include the base table column used as function parameter into the +# select column list, because it is much easier to check the results # - Do not forget to escape single quotes -# Example: +# Example: # SET @my_select = 'SELECT sqrt(my_bigint), my_bigint, id FROM t1_values' # SET @my_select = 'SELECT CONCAT(\'A\',my_char_30), id FROM t1_values'; # - Statements, which reveal open crashing bugs MUST be disabled. @@ -335,10 +335,10 @@ INSERT INTO t1_values SET # most preferred function. # This method avoids that we forget a function and gives a better # overview. -# +# # If you have the time to check the result sets do the insert of the # SELECT with function via: -# eval SET @my_select = +# eval SET @my_select = # ''; # --source suite/funcs_1/views/fv1.inc # fv1.inc sets t1_selects.disable_result to 'No' and the effect will be, @@ -346,7 +346,7 @@ INSERT INTO t1_values SET # # If you do have the time to check the result sets do the insert of the # SELECT with function via: -# eval SET @my_select = +# eval SET @my_select = # ''; # --source suite/funcs_1/views/fv2.inc # fv2.inc sets t1_selects.disable_result to 'Yes' and the effect will be, @@ -372,7 +372,7 @@ INSERT INTO t1_values SET # # Example: # The function to be tested is "sqrt". -# The minimum, maximum, default and NULL value are covered by the +# The minimum, maximum, default and NULL value are covered by the # predefined rows. # A value where sqrt() = in strict mathematics # would be of interest. @@ -408,7 +408,7 @@ eval INSERT INTO t1_values SET select_id = @select_id, # 1.1 CAST # # Note(ML): I guess the CAST routines are used in many other functions. -# Therefore check also nearly all "ugly" variants like +# Therefore check also nearly all "ugly" variants like # CAST( AS DECIMAL) here. # # suite/funcs_1/views/fv_cast.inc contains @@ -595,6 +595,7 @@ let $col_type= my_time; let $col_type= my_year; --source suite/funcs_1/views/fv_cast.inc + # 1.1.6. CAST --> DECIMAL --echo ##### 1.1.6. CAST --> DECIMAL # Set the following to (37,2) since the default was changed to (10,0) - OBN @@ -641,7 +642,7 @@ let $col_type= my_year; --echo ##### 1.1.7. CAST --> SIGNED INTEGER let $target_type= SIGNED INTEGER; # -let $message= +let $message= "Attention: CAST --> SIGNED INTEGER Bug#5913 Traditional mode: BIGINT range not correctly delimited Status: To be fixed later"; @@ -677,7 +678,7 @@ let $col_type= my_year; --echo ##### 1.1.8. CAST --> UNSIGNED INTEGER let $target_type= UNSIGNED INTEGER; # -let $message= +let $message= "Attention: CAST --> UNSIGNED INTEGER The file with expected results suffers from Bug 5913"; --source include/show_msg80.inc @@ -723,38 +724,38 @@ let $col_type= my_year; let $target_charset= utf8; # let $col_type= my_char_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc # # 1.3.2 CONVERT(expr USING koi8r) let $target_charset= koi8r; let $col_type= my_char_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc @@ -762,7 +763,7 @@ $col_type, id FROM t1_values'; # 2. Control Flow Functions # 2.1. CASE value WHEN [compare-value] THEN result [WHEN ...] [ELSE result] # END or -# CASE WHEN [condition] THEN result [WHEN ...] [ELSE result] END +# CASE WHEN [condition] THEN result [WHEN ...] [ELSE result] END # # FIXME: to be implemented # @@ -861,7 +862,7 @@ let $col_type= my_year; --source suite/funcs_1/views/fv_if2.inc -# 2.3. IFNULL(expr1,expr2) +# 2.3. IFNULL(expr1,expr2) # If expr1 is not NULL, IFNULL() returns expr1, else it returns expr2. # # suite/funcs_1/views/fv_ifnull.inc contains @@ -912,7 +913,7 @@ let $col_type= my_year; # 2.4. NULLIF(expr1,expr2) # Returns NULL if expr1 = expr2 is true, else returns expr1. -# This is the same as +# This is the same as # CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END. # # FIXME: to be implemented @@ -949,11 +950,11 @@ $col_type, id FROM t1_values'; # 3.5. CHAR_LENGTH(str) # 3.6 CHARACTER_LENGTH(str) # CHARACTER_LENGTH() is a synonym for CHAR_LENGTH(). -# 3.7. COMPRESS(string_to_compress) +# 3.7. COMPRESS(string_to_compress) # 3.8. CONCAT(str1,str2,...) # 3.9. CONCAT_WS(separator,str1,str2,...) # 3.10. CONV(N,from_base,to_base) -# 3.11. ELT(N,str1,str2,str3,...) +# 3.11. ELT(N,str1,str2,str3,...) # 3.12. EXPORT_SET(bits,on,off[,separator[,number_of_bits]]) # 3.13. FIELD(str,str1,str2,str3,...) # 3.14. FIND_IN_SET(str,strlist) @@ -981,27 +982,27 @@ $col_type, id FROM t1_values'; # 3.19. LEFT(str,len) -# Returns the leftmost len characters from the string str. +# Returns the leftmost len characters from the string str. let $col_type= my_char_30; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc # Bug#11728 string function LEFT, strange undocumented behaviour, strict mode # Bug#10963 LEFT string function returns wrong result with large length let $col_type= my_bigint; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_decimal; @@ -1038,10 +1039,11 @@ $col_type, id FROM t1_values'; # If the file doesn't exist or cannot be read ... , # the function returns NULL. # SELECT LOADFILE -# Prepare a file: -SELECT 'äÄ@' INTO OUTFILE '../tmp/func_view.dat'; -eval SET @my_select = -'SELECT LOAD_FILE(''../tmp/func_view.dat''), id FROM t1_values'; +--replace_result $MYSQLTEST_VARDIR +eval SET @my_select = +'SELECT LOAD_FILE(''$MYSQLTEST_VARDIR/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; --source suite/funcs_1/views/fv1.inc @@ -1208,8 +1210,8 @@ $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv2.inc -# 3.26. MAKE_SET(bits,str1,str2,...) -# ..... +# 3.26. MAKE_SET(bits,str1,str2,...) +# ..... # FIXME: to be implemented ################################################################################ @@ -1262,6 +1264,7 @@ while ($select_id) if ($view_select_result) { # Create the VIEW + --replace_result $MYSQLTEST_VARDIR eval CREATE VIEW v1 AS $my_select; --disable_query_log eval set @got_errno= $mysql_errno ; @@ -1280,11 +1283,12 @@ while ($select_id) if ($simple_select_result) { # Simple SELECT on the base table of the VIEW for comparison - + if ($run_no_result) { --disable_result_log } + --replace_result $MYSQLTEST_VARDIR eval $my_select WHERE select_id = $select_id OR select_id IS NULL order by id; if ($run_no_result) @@ -1304,6 +1308,7 @@ while ($select_id) if ($run0) { # Check the CREATE VIEW statement + --replace_result $MYSQLTEST_VARDIR SHOW CREATE VIEW v1; if ($mysql_errno) { @@ -1347,4 +1352,3 @@ while ($select_id) --enable_ps_protocol DROP TABLE t1_selects, t1_modes, t1_values; ---exec rm $MYSQLTEST_VARDIR/tmp/func_view.dat From f6f23981851a2bbee28dac547194e641e58a8120 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 14:40:23 +0200 Subject: [PATCH 017/435] Fixes to eliminate some race conditions in tests. mysql-test/include/master-slave-reset.inc: Adding missing waits for slave to start and stop causing test failures. mysql-test/suite/rpl/t/rpl_insert.test: Waiting for the rows to be inserted instead of relying on the binlog position to be updated correctly. --- mysql-test/include/master-slave-reset.inc | 3 ++- mysql-test/suite/rpl/t/rpl_insert.test | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mysql-test/include/master-slave-reset.inc b/mysql-test/include/master-slave-reset.inc index 204c6c5f5f6..1363fab236a 100644 --- a/mysql-test/include/master-slave-reset.inc +++ b/mysql-test/include/master-slave-reset.inc @@ -3,7 +3,7 @@ connection slave; #(the server was started with skip-slave-start) --disable_warnings stop slave; ---wait_for_slave_to_stop +source include/wait_for_slave_to_stop.inc; --enable_warnings connection master; --disable_warnings @@ -20,3 +20,4 @@ reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; --enable_warnings start slave; +source include/wait_for_slave_to_start.inc; diff --git a/mysql-test/suite/rpl/t/rpl_insert.test b/mysql-test/suite/rpl/t/rpl_insert.test index 504ca1809ad..00e814951d5 100644 --- a/mysql-test/suite/rpl/t/rpl_insert.test +++ b/mysql-test/suite/rpl/t/rpl_insert.test @@ -18,10 +18,13 @@ let $query = "INSERT DELAYED INTO t1 VALUES (1, 'Dr. No'), (2, 'From Russia With # Wait until all the 5000 inserts has been inserted into the table let $wait_condition= SELECT COUNT(*) = 5000 FROM mysqlslap.t1; ---source include/wait_condition.inc - +source include/wait_condition.inc; SELECT COUNT(*) FROM mysqlslap.t1; -sync_slave_with_master; + +connection slave; +# Wait until all the 5000 inserts has been inserted into the table +let $wait_condition= SELECT COUNT(*) = 5000 FROM mysqlslap.t1; +source include/wait_condition.inc; SELECT COUNT(*) FROM mysqlslap.t1; --echo # From f2d504aa648dece6fc4b08ed72e3639b749b8424 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 14:41:13 +0200 Subject: [PATCH 018/435] Bug#26208 a typo (wrong variable name) in mysql_prepare_update function's source code? This is a code clean up. Removed redundant (and unused) TABLE_LIST variable intended as an IN- parameter for setup_order. sql/sql_update.cc: Removed redundant (and unused) TABLE_LIST variable intended as an IN- parameter for setup_order. --- sql/sql_update.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 23ad5ce9385..fe34301cda0 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -854,7 +854,6 @@ bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list, { Item *fake_conds= 0; TABLE *table= table_list->table; - TABLE_LIST tables; List all_fields; SELECT_LEX *select_lex= &thd->lex->select_lex; DBUG_ENTER("mysql_prepare_update"); @@ -878,9 +877,6 @@ bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list, table_list->register_want_access(SELECT_ACL); #endif - bzero((char*) &tables,sizeof(tables)); // For ORDER BY - tables.table= table; - tables.alias= table_list->alias; thd->lex->allow_sum_func= 0; if (setup_tables_and_check_access(thd, &select_lex->context, From 9efddcf6e2facc7ed21e755785c3cec9f76f71b2 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 12:19:20 -0400 Subject: [PATCH 019/435] Bug#15776: 32-bit signed int used for length of blob Based on contributed patch from Martin Friebe, CLA from 2007-02-24. The parser lacked support for field sizes after signed long, when it should extend to 2**32-1. Now, we correct that limitation, and also make the error handling consistent for casts. --- Fix minor complaints of Marc Alff, for patch against B-g#15776. --- Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my50-bug15776 into zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776 --- Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug15776/my51-bug15776 into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.1-build --- testing mysql-test/r/type_blob.result: Verify that blobs may be created with the size that is already documented. Additionally, test the limits of several other types. mysql-test/t/type_blob.test: Verify that blobs may be created with the size that is already documented. Additionally, test the limits of several other types. --- Drop table in case we start from a bad state. sql/field.cc: atoi() insufficient to gauge the length of some fields. Change it to strtoul(). sql/item_create.cc: atoi() insufficient to gauge the length of some fields. Change it to strtoul(). If a casted length is too long, raise an error. sql/share/errmsg.txt: Change ER_TOO_BIG_FIELDLENGTH so that it can accept sizes larger than 2**15 -- instead, 2**32. --- Manual merge. sql/sql_yacc.yy: Make lengths take, in addition to NUM, LONG_NUM, ULONGLONG_NUM, and DECIMAL_NUM. --- yacc/bison is left-recursive, so FIXME statement is wrong. --- Manual merge and reformatting. sql/unireg.h: Define new constant. --- mysql-test/r/type_blob.result | 148 +++++++++++++++++++++++++++++++ mysql-test/t/type_blob.test | 162 ++++++++++++++++++++++++++++++++++ sql/field.cc | 16 +++- sql/item_create.cc | 54 +++++++++++- sql/share/errmsg.txt | 60 ++++++------- sql/sql_yacc.yy | 56 ++++++------ sql/unireg.h | 1 + 7 files changed, 434 insertions(+), 63 deletions(-) diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result index 7cf85b9b315..b5ad1fd31ea 100644 --- a/mysql-test/r/type_blob.result +++ b/mysql-test/r/type_blob.result @@ -821,4 +821,152 @@ LENGTH(c) CHAR_LENGTH(c) 65535 65535 65535 65535 DROP TABLE t; +drop table if exists b15776; +create table b15776 (data blob(2147483647)); +drop table b15776; +create table b15776 (data blob(-1)); +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 '-1))' at line 1 +create table b15776 (data blob(2147483648)); +drop table b15776; +create table b15776 (data blob(4294967294)); +drop table b15776; +create table b15776 (data blob(4294967295)); +drop table b15776; +create table b15776 (data blob(4294967296)); +ERROR 42000: Display width out of range for column 'data' (max = 4294967295) +CREATE TABLE b15776 (a blob(2147483647), b blob(2147483648), c blob(4294967295), a1 text(2147483647), b1 text(2147483648), c1 text(4294967295) ); +show columns from b15776; +Field Type Null Key Default Extra +a longblob YES NULL +b longblob YES NULL +c longblob YES NULL +a1 longtext YES NULL +b1 longtext YES NULL +c1 longtext YES NULL +drop table b15776; +CREATE TABLE b15776 (a blob(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a text(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a blob(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a text(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a int(0)); +INSERT INTO b15776 values (NULL), (1), (42), (654); +SELECT * from b15776 ORDER BY a; +a +NULL +1 +42 +654 +DROP TABLE b15776; +CREATE TABLE b15776 (a int(-1)); +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 '-1))' at line 1 +CREATE TABLE b15776 (a int(255)); +DROP TABLE b15776; +CREATE TABLE b15776 (a int(256)); +ERROR 42000: Display width out of range for column 'a' (max = 255) +CREATE TABLE b15776 (data blob(-1)); +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 '-1))' at line 1 +CREATE TABLE b15776 (a char(2147483647)); +ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead +CREATE TABLE b15776 (a char(2147483648)); +ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead +CREATE TABLE b15776 (a char(4294967295)); +ERROR 42000: Column length too big for column 'a' (max = 255); use BLOB or TEXT instead +CREATE TABLE b15776 (a char(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a year(4294967295)); +INSERT INTO b15776 VALUES (42); +SELECT * FROM b15776; +a +2042 +DROP TABLE b15776; +CREATE TABLE b15776 (a year(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a year(0)); +DROP TABLE b15776; +CREATE TABLE b15776 (a year(-2)); +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 '-2))' at line 1 +CREATE TABLE b15776 (a timestamp(4294967294)); +Warnings: +Warning 1287 The syntax 'TIMESTAMP(4294967294)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead +DROP TABLE b15776; +CREATE TABLE b15776 (a timestamp(4294967295)); +ERROR 42000: Display width out of range for column 'a' (max = 255) +CREATE TABLE b15776 (a timestamp(4294967296)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a timestamp(-2)); +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 '-2))' at line 1 +CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 select cast(null as char(4294967295)); +show columns from b15776; +Field Type Null Key Default Extra +cast(null as char(4294967295)) char(0) YES NULL +drop table b15776; +CREATE TABLE b15776 select cast(null as nchar(4294967295)); +show columns from b15776; +Field Type Null Key Default Extra +cast(null as nchar(4294967295)) char(0) YES NULL +drop table b15776; +CREATE TABLE b15776 select cast(null as binary(4294967295)); +show columns from b15776; +Field Type Null Key Default Extra +cast(null as binary(4294967295)) binary(0) YES NULL +drop table b15776; +explain select cast(1 as char(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as nchar(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as binary(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as char(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select cast(1 as nchar(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select cast(1 as binary(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select cast(1 as decimal(-1)); +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 '-1))' at line 1 +explain select cast(1 as decimal(64, 30)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select cast(1 as decimal(64, 999999999999999999999999999999)); +Got one of the listed errors +explain select cast(1 as decimal(4294967296)); +Got one of the listed errors +explain select cast(1 as decimal(999999999999999999999999999999999999)); +Got one of the listed errors +explain select convert(1, char(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select convert(1, char(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, nchar(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select convert(1, nchar(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, nchar(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, binary(4294967295)); +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used +explain select convert(1, binary(4294967296)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) +explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +ERROR 42000: Display width out of range for column 'cast as char' (max = 4294967295) End of 5.0 tests diff --git a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test index afb70b0bd0c..fdcd85c1b4b 100644 --- a/mysql-test/t/type_blob.test +++ b/mysql-test/t/type_blob.test @@ -446,5 +446,167 @@ INSERT INTO t (c) VALUES (REPEAT('2',65536)); INSERT INTO t (c) VALUES (REPEAT('3',65535)); SELECT LENGTH(c), CHAR_LENGTH(c) FROM t; DROP TABLE t; +# Bug#15776: 32-bit signed int used for length of blob +# """LONGBLOB: A BLOB column with a maximum length of 4,294,967,295 or 4GB.""" +# +# Conditions should be in this order: +# A size is not in the allowed bounds. +# If the type is char-ish AND size is within the max blob size: +# raise ER_TOO_BIG_FIELDLENGTH (suggest using BLOB) +# If size is too small: +# raise ER_PARSE_ERROR +# raise ER_TOO_BIG_DISPLAYWIDTH + +# BLOB and TEXT types +--disable_warnings +drop table if exists b15776; +--enable_warnings +create table b15776 (data blob(2147483647)); +drop table b15776; +--error ER_PARSE_ERROR +create table b15776 (data blob(-1)); +create table b15776 (data blob(2147483648)); +drop table b15776; +create table b15776 (data blob(4294967294)); +drop table b15776; +create table b15776 (data blob(4294967295)); +drop table b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +create table b15776 (data blob(4294967296)); + +CREATE TABLE b15776 (a blob(2147483647), b blob(2147483648), c blob(4294967295), a1 text(2147483647), b1 text(2147483648), c1 text(4294967295) ); +show columns from b15776; +drop table b15776; + +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a blob(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a text(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a blob(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a text(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); + +# Int types +# "Another extension is supported by MySQL for optionally specifying the +# display width of integer data types in parentheses following the base keyword +# for the type (for example, INT(4)). This optional display width is used to +# display integer values having a width less than the width specified for the +# column by left-padding them with spaces." § Numeric Types +CREATE TABLE b15776 (a int(0)); # 0 is special case, means default size +INSERT INTO b15776 values (NULL), (1), (42), (654); +SELECT * from b15776 ORDER BY a; +DROP TABLE b15776; +--error ER_PARSE_ERROR +CREATE TABLE b15776 (a int(-1)); +CREATE TABLE b15776 (a int(255)); +DROP TABLE b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a int(256)); +--error ER_PARSE_ERROR +CREATE TABLE b15776 (data blob(-1)); + +# Char types +# Recommend BLOB +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE b15776 (a char(2147483647)); +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE b15776 (a char(2147483648)); +--error ER_TOO_BIG_FIELDLENGTH +CREATE TABLE b15776 (a char(4294967295)); +# Even BLOB won't hold +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a char(4294967296)); + + +# Other numeric-ish types +## For year, widths not "2" or "4" are silently rewritten to "4". But +## When we complain about it, we say that the max is 255. We may be +## talking about different things. It's confusing. +CREATE TABLE b15776 (a year(4294967295)); +INSERT INTO b15776 VALUES (42); +SELECT * FROM b15776; +DROP TABLE b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a year(4294967296)); +CREATE TABLE b15776 (a year(0)); # 0 is special case, means default size +DROP TABLE b15776; +--error ER_PARSE_ERROR +CREATE TABLE b15776 (a year(-2)); + +## For timestamp, we silently rewrite widths to 14 or 19. +CREATE TABLE b15776 (a timestamp(4294967294)); +DROP TABLE b15776; +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a timestamp(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a timestamp(4294967296)); +--error ER_PARSE_ERROR +CREATE TABLE b15776 (a timestamp(-2)); + + +# We've already tested the case, but this should visually show that +# widths that are too large to be interpreted cause DISPLAYWIDTH errors. +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a year(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +--error ER_TOO_BIG_DISPLAYWIDTH +CREATE TABLE b15776 (a timestamp(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); + +## Do not select, too much memory needed. +CREATE TABLE b15776 select cast(null as char(4294967295)); +show columns from b15776; +drop table b15776; +CREATE TABLE b15776 select cast(null as nchar(4294967295)); +show columns from b15776; +drop table b15776; +CREATE TABLE b15776 select cast(null as binary(4294967295)); +show columns from b15776; +drop table b15776; + +explain select cast(1 as char(4294967295)); +explain select cast(1 as nchar(4294967295)); +explain select cast(1 as binary(4294967295)); + +--error ER_TOO_BIG_DISPLAYWIDTH +explain select cast(1 as char(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select cast(1 as nchar(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select cast(1 as binary(4294967296)); + +--error ER_PARSE_ERROR +explain select cast(1 as decimal(-1)); +explain select cast(1 as decimal(64, 30)); +# It's not as important which errors are raised for these, since the +# limit is nowhere near 2**32. We may fix these eventually to take +# 4294967295 and still reject it because it's greater than 64 or 30, +# but that's not a high priority and the parser needn't worry about +# such a weird case. +--error ER_TOO_BIG_SCALE,ER_PARSE_ERROR +explain select cast(1 as decimal(64, 999999999999999999999999999999)); +--error ER_TOO_BIG_PRECISION,ER_PARSE_ERROR +explain select cast(1 as decimal(4294967296)); +--error ER_TOO_BIG_PRECISION,ER_PARSE_ERROR +explain select cast(1 as decimal(999999999999999999999999999999999999)); + +explain select convert(1, char(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, char(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, char(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +explain select convert(1, nchar(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, nchar(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, nchar(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); +explain select convert(1, binary(4294967295)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, binary(4294967296)); +--error ER_TOO_BIG_DISPLAYWIDTH +explain select convert(1, binary(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); --echo End of 5.0 tests diff --git a/sql/field.cc b/sql/field.cc index 32bf5855d8b..c8645aa5a4f 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -9449,8 +9449,20 @@ bool Create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, (fld_type_modifier & NOT_NULL_FLAG) && fld_type != MYSQL_TYPE_TIMESTAMP) flags|= NO_DEFAULT_VALUE_FLAG; - if (fld_length && !(length= (uint) atoi(fld_length))) - fld_length= 0; /* purecov: inspected */ + if (fld_length != 0) + { + errno= 0; + length= strtoul(fld_length, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), fld_name, MAX_FIELD_BLOBLENGTH); + DBUG_RETURN(TRUE); + } + + if (length == 0) + fld_length= 0; /* purecov: inspected */ + } + sign_len= fld_type_modifier & UNSIGNED_FLAG ? 0 : 1; switch (fld_type) { diff --git a/sql/item_create.cc b/sql/item_create.cc index 49cc33b95a7..427857c58ad 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -5057,8 +5057,41 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, break; case ITEM_CAST_DECIMAL: { - len= c_len ? atoi(c_len) : 0; - dec= c_dec ? atoi(c_dec) : 0; + if (c_len == NULL) + { + len= 0; + } + else + { + ulong decoded_size; + errno= 0; + decoded_size= strtoul(c_len, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_PRECISION, MYF(0), c_len, a->name, + DECIMAL_MAX_PRECISION); + return NULL; + } + len= decoded_size; + } + + if (c_dec == NULL) + { + dec= 0; + } + else + { + ulong decoded_size; + errno= 0; + decoded_size= strtoul(c_dec, NULL, 10); + if ((errno != 0) || (decoded_size > UINT_MAX)) + { + my_error(ER_TOO_BIG_SCALE, MYF(0), c_dec, a->name, + DECIMAL_MAX_SCALE); + return NULL; + } + dec= decoded_size; + } my_decimal_trim(&len, &dec); if (len < dec) { @@ -5083,7 +5116,22 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, case ITEM_CAST_CHAR: { CHARSET_INFO *real_cs= (cs ? cs : thd->variables.collation_connection); - len= c_len ? atoi(c_len) : -1; + if (c_len == NULL) + { + len= LL(-1); + } + else + { + ulong decoded_size; + errno= 0; + decoded_size= strtoul(c_len, NULL, 10); + if (errno != 0) + { + my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH); + return NULL; + } + len= decoded_size; + } res= new (thd->mem_root) Item_char_typecast(a, len, real_cs); break; } diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 7990baa6bb7..dcc3220e425 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -1773,30 +1773,30 @@ ER_BLOB_USED_AS_KEY 42000 S1009 swe "En BLOB '%-.192s' kan inte vara nyckel med den anvnda tabelltypen" ukr "BLOB '%-.192s' Φ Ц æ" ER_TOO_BIG_FIELDLENGTH 42000 S1009 - cze "P-Bli velk dlka sloupce '%-.192s' (nejvce %d). Pouijte BLOB" - dan "For stor feltlngde for kolonne '%-.192s' (maks = %d). Brug BLOB i stedet" - nla "Te grote kolomlengte voor '%-.192s' (max = %d). Maak hiervoor gebruik van het type BLOB" - eng "Column length too big for column '%-.192s' (max = %d); use BLOB or TEXT instead" - jps "column '%-.192s' ,mۂ column ̑傫܂. (ő %d ܂). BLOB ɎgpĂ.", - est "Tulba '%-.192s' pikkus on liiga pikk (maksimaalne pikkus: %d). Kasuta BLOB vljatpi" - fre "Champ '%-.192s' trop long (max = %d). Utilisez un BLOB" - ger "Feldlnge fr Feld '%-.192s' zu gro (maximal %d). BLOB- oder TEXT-Spaltentyp verwenden!" - greek " '%-.192s' (max = %d). BLOB" - hun "A(z) '%-.192s' oszlop tul hosszu. (maximum = %d). Hasznaljon BLOB tipust inkabb." - ita "La colonna '%-.192s' e` troppo grande (max=%d). Utilizza un BLOB." - jpn "column '%-.192s' ,ݤ column 礭¿ޤ. ( %d ޤ). BLOB 򤫤˻ѤƤ." - kor "Į '%-.192s' Į ̰ ʹ ϴ (ִ = %d). ſ BLOB ϼ." - nor "For stor nkkellengde for kolonne '%-.192s' (maks = %d). Bruk BLOB istedenfor" - norwegian-ny "For stor nykkellengde for felt '%-.192s' (maks = %d). Bruk BLOB istadenfor" - pol "Zbyt dua dugo? kolumny '%-.192s' (maks. = %d). W zamian uyj typu BLOB" - por "Comprimento da coluna '%-.192s' grande demais (max = %d); use BLOB em seu lugar" - rum "Lungimea coloanei '%-.192s' este prea lunga (maximum = %d). Foloseste BLOB mai bine" - rus " '%-.192s' ( = %d). BLOB TEXT " - serbian "Previe podataka za kolonu '%-.192s' (maksimum je %d). Upotrebite BLOB polje" - slo "Prli vek dka pre pole '%-.192s' (maximum = %d). Pouite BLOB" - spa "Longitud de columna demasiado grande para la columna '%-.192s' (maximo = %d).Usar BLOB en su lugar" - swe "Fr stor kolumnlngd angiven fr '%-.192s' (max= %d). Anvnd en BLOB instllet" - ukr " '%-.192s' (max = %d). BLOB" + cze "P-Bli velk dlka sloupce '%-.192s' (nejvce %lu). Pouijte BLOB" + dan "For stor feltlngde for kolonne '%-.192s' (maks = %lu). Brug BLOB i stedet" + nla "Te grote kolomlengte voor '%-.192s' (max = %lu). Maak hiervoor gebruik van het type BLOB" + eng "Column length too big for column '%-.192s' (max = %lu); use BLOB or TEXT instead" + jps "column '%-.192s' ,mۂ column ̑傫܂. (ő %lu ܂). BLOB ɎgpĂ.", + est "Tulba '%-.192s' pikkus on liiga pikk (maksimaalne pikkus: %lu). Kasuta BLOB vljatpi" + fre "Champ '%-.192s' trop long (max = %lu). Utilisez un BLOB" + ger "Feldlnge fr Feld '%-.192s' zu gro (maximal %lu). BLOB- oder TEXT-Spaltentyp verwenden!" + greek " '%-.192s' (max = %lu). BLOB" + hun "A(z) '%-.192s' oszlop tul hosszu. (maximum = %lu). Hasznaljon BLOB tipust inkabb." + ita "La colonna '%-.192s' e` troppo grande (max=%lu). Utilizza un BLOB." + jpn "column '%-.192s' ,ݤ column 礭¿ޤ. ( %lu ޤ). BLOB 򤫤˻ѤƤ." + kor "Į '%-.192s' Į ̰ ʹ ϴ (ִ = %lu). ſ BLOB ϼ." + nor "For stor nkkellengde for kolonne '%-.192s' (maks = %lu). Bruk BLOB istedenfor" + norwegian-ny "For stor nykkellengde for felt '%-.192s' (maks = %lu). Bruk BLOB istadenfor" + pol "Zbyt dua dugo? kolumny '%-.192s' (maks. = %lu). W zamian uyj typu BLOB" + por "Comprimento da coluna '%-.192s' grande demais (max = %lu); use BLOB em seu lugar" + rum "Lungimea coloanei '%-.192s' este prea lunga (maximum = %lu). Foloseste BLOB mai bine" + rus " '%-.192s' ( = %lu). BLOB TEXT " + serbian "Previe podataka za kolonu '%-.192s' (maksimum je %lu). Upotrebite BLOB polje" + slo "Prli vek dka pre pole '%-.192s' (maximum = %lu). Pouite BLOB" + spa "Longitud de columna demasiado grande para la columna '%-.192s' (maximo = %lu).Usar BLOB en su lugar" + swe "Fr stor kolumnlngd angiven fr '%-.192s' (max= %lu). Anvnd en BLOB instllet" + ukr " '%-.192s' (max = %lu). BLOB" ER_WRONG_AUTO_KEY 42000 S1009 cze "M-Bete mt pouze jedno AUTO pole a to mus bt definovno jako kl" dan "Der kan kun specificeres eet AUTO_INCREMENT-felt, og det skal vre indekseret" @@ -5513,11 +5513,11 @@ ER_SP_NO_RECURSION eng "Recursive stored functions and triggers are not allowed." ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt" ER_TOO_BIG_SCALE 42000 S1009 - eng "Too big scale %d specified for column '%-.192s'. Maximum is %d." - ger "Zu groer Skalierungsfaktor %d fr Feld '%-.192s' angegeben. Maximum ist %d" + eng "Too big scale %d specified for column '%-.192s'. Maximum is %lu" + ger "Zu groer Skalierungsfaktor %d fr Feld '%-.192s' angegeben. Maximum ist %lu" ER_TOO_BIG_PRECISION 42000 S1009 - eng "Too big precision %d specified for column '%-.192s'. Maximum is %d." - ger "Zu groe Genauigkeit %d fr Feld '%-.192s' angegeben. Maximum ist %d" + eng "Too big precision %d specified for column '%-.192s'. Maximum is %lu" + ger "Zu groe Genauigkeit %d fr Feld '%-.192s' angegeben. Maximum ist %lu" ER_M_BIGGER_THAN_D 42000 S1009 eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.192s')." ger "Fr FLOAT(M,D), DOUBLE(M,D) oder DECIMAL(M,D) muss M >= D sein (Feld '%-.192s')" @@ -5554,8 +5554,8 @@ ER_WARN_CANT_DROP_DEFAULT_KEYCACHE eng "Cannot drop default keycache" ger "Der vorgabemige Schlssel-Cache kann nicht gelscht werden" ER_TOO_BIG_DISPLAYWIDTH 42000 S1009 - eng "Display width out of range for column '%-.192s' (max = %d)" - ger "Anzeigebreite auerhalb des zulssigen Bereichs fr Spalte '%-.192s' (Maximum: %d)" + eng "Display width out of range for column '%-.192s' (max = %lu)" + ger "Anzeigebreite auerhalb des zulssigen Bereichs fr Spalte '%-.192s' (Maximum: %lu)" ER_XAER_DUPID XAE08 eng "XAER_DUPID: The XID already exists" ger "XAER_DUPID: Die XID existiert bereits" diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 5e28bdb45e8..983356a47b1 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1277,7 +1277,8 @@ bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); single_multi table_wild_list table_wild_one opt_wild union_clause union_list precision subselect_start opt_and charset - subselect_end select_var_list select_var_list_init help opt_len + subselect_end select_var_list select_var_list_init help + field_length opt_field_length opt_extended_describe prepare prepare_src execute deallocate statement sp_suid @@ -4628,7 +4629,7 @@ field_spec: ; type: - int_type opt_len field_options { $$=$1; } + int_type opt_field_length field_options { $$=$1; } | real_type opt_precision field_options { $$=$1; } | FLOAT_SYM float_options field_options { $$=MYSQL_TYPE_FLOAT; } | BIT_SYM @@ -4636,9 +4637,8 @@ type: Lex->length= (char*) "1"; $$=MYSQL_TYPE_BIT; } - | BIT_SYM '(' NUM ')' + | BIT_SYM field_length { - Lex->length= $3.str; $$=MYSQL_TYPE_BIT; } | BOOL_SYM @@ -4651,9 +4651,8 @@ type: Lex->length=(char*) "1"; $$=MYSQL_TYPE_TINY; } - | char '(' NUM ')' opt_binary + | char field_length opt_binary { - Lex->length=$3.str; $$=MYSQL_TYPE_STRING; } | char opt_binary @@ -4661,9 +4660,8 @@ type: Lex->length=(char*) "1"; $$=MYSQL_TYPE_STRING; } - | nchar '(' NUM ')' opt_bin_mod + | nchar field_length opt_bin_mod { - Lex->length=$3.str; $$=MYSQL_TYPE_STRING; Lex->charset=national_charset_info; } @@ -4673,9 +4671,8 @@ type: $$=MYSQL_TYPE_STRING; Lex->charset=national_charset_info; } - | BINARY '(' NUM ')' + | BINARY field_length { - Lex->length=$3.str; Lex->charset=&my_charset_bin; $$=MYSQL_TYPE_STRING; } @@ -4685,30 +4682,27 @@ type: Lex->charset=&my_charset_bin; $$=MYSQL_TYPE_STRING; } - | varchar '(' NUM ')' opt_binary + | varchar field_length opt_binary { - Lex->length=$3.str; $$= MYSQL_TYPE_VARCHAR; } - | nvarchar '(' NUM ')' opt_bin_mod + | nvarchar field_length opt_bin_mod { - Lex->length=$3.str; $$= MYSQL_TYPE_VARCHAR; Lex->charset=national_charset_info; } - | VARBINARY '(' NUM ')' + | VARBINARY field_length { - Lex->length=$3.str; Lex->charset=&my_charset_bin; $$= MYSQL_TYPE_VARCHAR; } - | YEAR_SYM opt_len field_options + | YEAR_SYM opt_field_length field_options { $$=MYSQL_TYPE_YEAR; } | DATE_SYM { $$=MYSQL_TYPE_DATE; } | TIME_SYM { $$=MYSQL_TYPE_TIME; } - | TIMESTAMP opt_len + | TIMESTAMP opt_field_length { if (YYTHD->variables.sql_mode & MODE_MAXDB) $$=MYSQL_TYPE_DATETIME; @@ -4728,7 +4722,7 @@ type: Lex->charset=&my_charset_bin; $$=MYSQL_TYPE_TINY_BLOB; } - | BLOB_SYM opt_len + | BLOB_SYM opt_field_length { Lex->charset=&my_charset_bin; $$=MYSQL_TYPE_BLOB; @@ -4764,7 +4758,7 @@ type: { $$=MYSQL_TYPE_MEDIUM_BLOB; } | TINYTEXT opt_binary { $$=MYSQL_TYPE_TINY_BLOB; } - | TEXT_SYM opt_len opt_binary + | TEXT_SYM opt_field_length opt_binary { $$=MYSQL_TYPE_BLOB; } | MEDIUMTEXT opt_binary { $$=MYSQL_TYPE_MEDIUM_BLOB; } @@ -4854,8 +4848,8 @@ real_type: float_options: /* empty */ { Lex->dec=Lex->length= (char*)0; } - | '(' NUM ')' - { Lex->length=$2.str; Lex->dec= (char*)0; } + | field_length + { Lex->dec= (char*)0; } | precision {} ; @@ -4885,9 +4879,15 @@ field_option: | ZEROFILL { Lex->type|= UNSIGNED_FLAG | ZEROFILL_FLAG; } ; -opt_len: - /* empty */ { Lex->length=(char*) 0; /* use default length */ } - | '(' NUM ')' { Lex->length= $2.str; } +field_length: + '(' LONG_NUM ')' { Lex->length= $2.str; } + | '(' ULONGLONG_NUM ')' { Lex->length= $2.str; } + | '(' DECIMAL_NUM ')' { Lex->length= $2.str; } + | '(' NUM ')' { Lex->length= $2.str; }; + +opt_field_length: + /* empty */ { Lex->length=(char*) 0; /* use default length */ } + | field_length { } ; opt_precision: @@ -7450,11 +7450,11 @@ in_sum_expr: ; cast_type: - BINARY opt_len + BINARY opt_field_length { $$=ITEM_CAST_CHAR; Lex->charset= &my_charset_bin; Lex->dec= 0; } - | CHAR_SYM opt_len opt_binary + | CHAR_SYM opt_field_length opt_binary { $$=ITEM_CAST_CHAR; Lex->dec= 0; } - | NCHAR_SYM opt_len + | NCHAR_SYM opt_field_length { $$=ITEM_CAST_CHAR; Lex->charset= national_charset_info; Lex->dec=0; } | SIGNED_SYM { $$=ITEM_CAST_SIGNED_INT; Lex->charset= NULL; Lex->dec=Lex->length= (char*)0; } diff --git a/sql/unireg.h b/sql/unireg.h index 18c3ab16f6a..c1c0e11e113 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -63,6 +63,7 @@ #define MAX_MBWIDTH 3 /* Max multibyte sequence */ #define MAX_FIELD_CHARLENGTH 255 #define MAX_FIELD_VARCHARLENGTH 65535 +#define MAX_FIELD_BLOBLENGTH UINT_MAX #define CONVERT_IF_BIGGER_TO_BLOB 512 /* Used for CREATE ... SELECT */ /* Max column width +1 */ From a9e658408fd40ed9485654539b334b92272361c0 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 12:26:12 -0400 Subject: [PATCH 020/435] Test updated. --- mysql-test/r/type_blob.result | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result index 599a2224472..84f2d815bdd 100644 --- a/mysql-test/r/type_blob.result +++ b/mysql-test/r/type_blob.result @@ -807,6 +807,7 @@ set @@sql_mode='TRADITIONAL'; create table t1 (a text default ''); ERROR 42000: BLOB/TEXT column 'a' can't have a default value set @@sql_mode=''; +drop table if exists b15776; create table b15776 (data blob(2147483647)); drop table b15776; create table b15776 (data blob(-1)); From 0a4ec61e41a69f3723a5acb2de3b9321708e9f77 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 1 Apr 2008 19:22:37 +0200 Subject: [PATCH 021/435] Fixes for failing funcs_1 tests in mysql-5.1.24-rc Problems were caused by modifications of - the server - HANDLER FOR SQLSTATE '00000' is now rejected (bug fix) affects several ..._storedproc* tests - improved error message affects the ..._trig_03e - improved content of information_schema.COLUMNS about information_schema.REFERENTIAL_CONSTRAINTS affects is_columns_is - the content of the community build (collations) affects charset_collation_3 mysql-test/suite/funcs_1/r/charset_collation_3.result: Updated result mysql-test/suite/funcs_1/r/innodb_storedproc.result: Updated result mysql-test/suite/funcs_1/r/innodb_storedproc_02.result: Updated result mysql-test/suite/funcs_1/r/innodb_trig_03e.result: Updated result mysql-test/suite/funcs_1/r/is_columns_is.result: Updated result mysql-test/suite/funcs_1/r/memory_storedproc.result: Updated result mysql-test/suite/funcs_1/r/memory_storedproc_02.result: Updated result mysql-test/suite/funcs_1/r/memory_trig_03e.result: Updated result mysql-test/suite/funcs_1/r/myisam_storedproc.result: Updated result mysql-test/suite/funcs_1/r/myisam_storedproc_02.result: Updated result mysql-test/suite/funcs_1/r/myisam_trig_03e.result: Updated result mysql-test/suite/funcs_1/r/ndb_storedproc.result: Updated result mysql-test/suite/funcs_1/r/ndb_storedproc_02.result: Updated result mysql-test/suite/funcs_1/r/ndb_trig_03e.result: Updated result mysql-test/suite/funcs_1/storedproc/storedproc_02.inc: Corrected script mysql-test/suite/funcs_1/storedproc/storedproc_master.inc: Corrected script --- .../funcs_1/r/charset_collation_3.result | 99 ++++++++++--------- .../suite/funcs_1/r/innodb_storedproc.result | 15 +-- .../funcs_1/r/innodb_storedproc_02.result | 7 +- .../suite/funcs_1/r/innodb_trig_03e.result | 2 +- .../suite/funcs_1/r/is_columns_is.result | 2 +- .../suite/funcs_1/r/memory_storedproc.result | 15 +-- .../funcs_1/r/memory_storedproc_02.result | 7 +- .../suite/funcs_1/r/memory_trig_03e.result | 2 +- .../suite/funcs_1/r/myisam_storedproc.result | 15 +-- .../funcs_1/r/myisam_storedproc_02.result | 7 +- .../suite/funcs_1/r/myisam_trig_03e.result | 2 +- .../suite/funcs_1/r/ndb_storedproc.result | 15 +-- .../suite/funcs_1/r/ndb_storedproc_02.result | 7 +- .../suite/funcs_1/r/ndb_trig_03e.result | 2 +- .../funcs_1/storedproc/storedproc_02.inc | 4 +- .../funcs_1/storedproc/storedproc_master.inc | 15 +-- 16 files changed, 85 insertions(+), 131 deletions(-) diff --git a/mysql-test/suite/funcs_1/r/charset_collation_3.result b/mysql-test/suite/funcs_1/r/charset_collation_3.result index b9a2dbe8a98..55ed4b4704c 100644 --- a/mysql-test/suite/funcs_1/r/charset_collation_3.result +++ b/mysql-test/suite/funcs_1/r/charset_collation_3.result @@ -47,10 +47,10 @@ SELECT * FROM information_schema.collations ORDER BY collation_name; COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN -armscii8_bin armscii8 64 Yes 1 -armscii8_general_ci armscii8 32 Yes Yes 1 -ascii_bin ascii 65 Yes 1 -ascii_general_ci ascii 11 Yes Yes 1 +armscii8_bin armscii8 64 0 +armscii8_general_ci armscii8 32 Yes 0 +ascii_bin ascii 65 0 +ascii_general_ci ascii 11 Yes 0 big5_bin big5 84 Yes 1 big5_chinese_ci big5 1 Yes Yes 1 binary binary 63 Yes Yes 1 @@ -58,26 +58,27 @@ cp1250_bin cp1250 66 Yes 1 cp1250_croatian_ci cp1250 44 Yes 1 cp1250_czech_cs cp1250 34 Yes 2 cp1250_general_ci cp1250 26 Yes Yes 1 -cp1251_bin cp1251 50 Yes 1 -cp1251_bulgarian_ci cp1251 14 Yes 1 -cp1251_general_ci cp1251 51 Yes Yes 1 -cp1251_general_cs cp1251 52 Yes 1 -cp1251_ukrainian_ci cp1251 23 Yes 1 -cp1256_bin cp1256 67 Yes 1 -cp1256_general_ci cp1256 57 Yes Yes 1 -cp1257_bin cp1257 58 Yes 1 -cp1257_general_ci cp1257 59 Yes Yes 1 -cp1257_lithuanian_ci cp1257 29 Yes 1 -cp850_bin cp850 80 Yes 1 -cp850_general_ci cp850 4 Yes Yes 1 -cp852_bin cp852 81 Yes 1 -cp852_general_ci cp852 40 Yes Yes 1 -cp866_bin cp866 68 Yes 1 -cp866_general_ci cp866 36 Yes Yes 1 +cp1250_polish_ci cp1250 99 Yes 1 +cp1251_bin cp1251 50 0 +cp1251_bulgarian_ci cp1251 14 0 +cp1251_general_ci cp1251 51 Yes 0 +cp1251_general_cs cp1251 52 0 +cp1251_ukrainian_ci cp1251 23 0 +cp1256_bin cp1256 67 0 +cp1256_general_ci cp1256 57 Yes 0 +cp1257_bin cp1257 58 0 +cp1257_general_ci cp1257 59 Yes 0 +cp1257_lithuanian_ci cp1257 29 0 +cp850_bin cp850 80 0 +cp850_general_ci cp850 4 Yes 0 +cp852_bin cp852 81 0 +cp852_general_ci cp852 40 Yes 0 +cp866_bin cp866 68 0 +cp866_general_ci cp866 36 Yes 0 cp932_bin cp932 96 Yes 1 cp932_japanese_ci cp932 95 Yes Yes 1 -dec8_bin dec8 69 Yes 1 -dec8_swedish_ci dec8 3 Yes Yes 1 +dec8_bin dec8 69 0 +dec8_swedish_ci dec8 3 Yes 0 eucjpms_bin eucjpms 98 Yes 1 eucjpms_japanese_ci eucjpms 97 Yes Yes 1 euckr_bin euckr 85 Yes 1 @@ -86,20 +87,20 @@ gb2312_bin gb2312 86 Yes 1 gb2312_chinese_ci gb2312 24 Yes Yes 1 gbk_bin gbk 87 Yes 1 gbk_chinese_ci gbk 28 Yes Yes 1 -geostd8_bin geostd8 93 Yes 1 -geostd8_general_ci geostd8 92 Yes Yes 1 -greek_bin greek 70 Yes 1 -greek_general_ci greek 25 Yes Yes 1 -hebrew_bin hebrew 71 Yes 1 -hebrew_general_ci hebrew 16 Yes Yes 1 -hp8_bin hp8 72 Yes 1 -hp8_english_ci hp8 6 Yes Yes 1 -keybcs2_bin keybcs2 73 Yes 1 -keybcs2_general_ci keybcs2 37 Yes Yes 1 -koi8r_bin koi8r 74 Yes 1 -koi8r_general_ci koi8r 7 Yes Yes 1 -koi8u_bin koi8u 75 Yes 1 -koi8u_general_ci koi8u 22 Yes Yes 1 +geostd8_bin geostd8 93 0 +geostd8_general_ci geostd8 92 Yes 0 +greek_bin greek 70 0 +greek_general_ci greek 25 Yes 0 +hebrew_bin hebrew 71 0 +hebrew_general_ci hebrew 16 Yes 0 +hp8_bin hp8 72 0 +hp8_english_ci hp8 6 Yes 0 +keybcs2_bin keybcs2 73 0 +keybcs2_general_ci keybcs2 37 Yes 0 +koi8r_bin koi8r 74 0 +koi8r_general_ci koi8r 7 Yes 0 +koi8u_bin koi8u 75 0 +koi8u_general_ci koi8u 22 Yes 0 latin1_bin latin1 47 Yes 1 latin1_danish_ci latin1 15 Yes 1 latin1_general_ci latin1 48 Yes 1 @@ -113,20 +114,20 @@ latin2_croatian_ci latin2 27 Yes 1 latin2_czech_cs latin2 2 Yes 4 latin2_general_ci latin2 9 Yes Yes 1 latin2_hungarian_ci latin2 21 Yes 1 -latin5_bin latin5 78 Yes 1 -latin5_turkish_ci latin5 30 Yes Yes 1 -latin7_bin latin7 79 Yes 1 -latin7_estonian_cs latin7 20 Yes 1 -latin7_general_ci latin7 41 Yes Yes 1 -latin7_general_cs latin7 42 Yes 1 -macce_bin macce 43 Yes 1 -macce_general_ci macce 38 Yes Yes 1 -macroman_bin macroman 53 Yes 1 -macroman_general_ci macroman 39 Yes Yes 1 +latin5_bin latin5 78 0 +latin5_turkish_ci latin5 30 Yes 0 +latin7_bin latin7 79 0 +latin7_estonian_cs latin7 20 0 +latin7_general_ci latin7 41 Yes 0 +latin7_general_cs latin7 42 0 +macce_bin macce 43 0 +macce_general_ci macce 38 Yes 0 +macroman_bin macroman 53 0 +macroman_general_ci macroman 39 Yes 0 sjis_bin sjis 88 Yes 1 sjis_japanese_ci sjis 13 Yes Yes 1 -swe7_bin swe7 82 Yes 1 -swe7_swedish_ci swe7 10 Yes Yes 1 +swe7_bin swe7 82 0 +swe7_swedish_ci swe7 10 Yes 0 tis620_bin tis620 89 Yes 1 tis620_thai_ci tis620 18 Yes Yes 4 ucs2_bin ucs2 90 Yes 1 @@ -190,6 +191,7 @@ cp1250_bin cp1250 cp1250_croatian_ci cp1250 cp1250_czech_cs cp1250 cp1250_general_ci cp1250 +cp1250_polish_ci cp1250 cp1251_bin cp1251 cp1251_bulgarian_ci cp1251 cp1251_general_ci cp1251 @@ -214,6 +216,7 @@ eucjpms_bin eucjpms eucjpms_japanese_ci eucjpms euckr_bin euckr euckr_korean_ci euckr +filename filename gb2312_bin gb2312 gb2312_chinese_ci gb2312 gbk_bin gbk diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc.result b/mysql-test/suite/funcs_1/r/innodb_storedproc.result index c20276b1937..18579f3c275 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc.result @@ -14309,10 +14309,7 @@ declare continue handler for cond1 set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.45: -------------------------------------------------------------------------------- @@ -14387,10 +14384,7 @@ declare continue handler for sqlstate '00000' set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.52: -------------------------------------------------------------------------------- @@ -23493,6 +23487,7 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE IF EXISTS h1; Testcase 4.11.40: @@ -23530,9 +23525,9 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' CALL h1(); -@x x1 -0 2 +ERROR 42000: PROCEDURE db_storedproc.h1 does not exist DROP PROCEDURE IF EXISTS h1; * Testcase 3.1.2.53 (4.11.42): diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result index 49f70d55676..50fa295e94f 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result @@ -586,14 +586,9 @@ SELECT @var3, @var4; END begin2_label; SELECT @var1, @var2; END begin1_label// -CALL sp1(); -@var3 @var4 -NULL 8 -@var1 @var2 -NULL 6 +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE p1; DROP PROCEDURE h1; -DROP PROCEDURE sp1; DROP TABLE res_t1; Testcase 3.1.2.50: diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result index 048c070ea96..26546138ea2 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_03e.result @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result index e2081af7e00..c1813a1add2 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_is.result +++ b/mysql-test/suite/funcs_1/r/is_columns_is.result @@ -176,7 +176,7 @@ NULL information_schema REFERENTIAL_CONSTRAINTS MATCH_OPTION 7 NO varchar 64 19 NULL information_schema REFERENTIAL_CONSTRAINTS REFERENCED_TABLE_NAME 11 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema REFERENTIAL_CONSTRAINTS TABLE_NAME 10 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_CATALOG 4 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select -NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select +NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_NAME 6 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema REFERENTIAL_CONSTRAINTS UNIQUE_CONSTRAINT_SCHEMA 5 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema REFERENTIAL_CONSTRAINTS UPDATE_RULE 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select NULL information_schema ROUTINES CHARACTER_SET_CLIENT 21 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc.result b/mysql-test/suite/funcs_1/r/memory_storedproc.result index a8294aa3e27..3e22ef2593f 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc.result @@ -14309,10 +14309,7 @@ declare continue handler for cond1 set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.45: -------------------------------------------------------------------------------- @@ -14387,10 +14384,7 @@ declare continue handler for sqlstate '00000' set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.52: -------------------------------------------------------------------------------- @@ -23471,6 +23465,7 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE IF EXISTS h1; Testcase 4.11.40: @@ -23508,9 +23503,9 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' CALL h1(); -@x x1 -0 2 +ERROR 42000: PROCEDURE db_storedproc.h1 does not exist DROP PROCEDURE IF EXISTS h1; * Testcase 3.1.2.53 (4.11.42): diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result index a76301ffa18..3476719c530 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result @@ -586,14 +586,9 @@ SELECT @var3, @var4; END begin2_label; SELECT @var1, @var2; END begin1_label// -CALL sp1(); -@var3 @var4 -NULL 8 -@var1 @var2 -NULL 6 +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE p1; DROP PROCEDURE h1; -DROP PROCEDURE sp1; DROP TABLE res_t1; Testcase 3.1.2.50: diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03e.result b/mysql-test/suite/funcs_1/r/memory_trig_03e.result index fad778ce7c0..251079f8638 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_03e.result @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc.result b/mysql-test/suite/funcs_1/r/myisam_storedproc.result index 2584807bcc6..8391a36e62e 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc.result @@ -14309,10 +14309,7 @@ declare continue handler for cond1 set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.45: -------------------------------------------------------------------------------- @@ -14387,10 +14384,7 @@ declare continue handler for sqlstate '00000' set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.52: -------------------------------------------------------------------------------- @@ -23493,6 +23487,7 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE IF EXISTS h1; Testcase 4.11.40: @@ -23530,9 +23525,9 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' CALL h1(); -@x x1 -0 2 +ERROR 42000: PROCEDURE db_storedproc.h1 does not exist DROP PROCEDURE IF EXISTS h1; * Testcase 3.1.2.53 (4.11.42): diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result index e20b3ed22ba..5d7549b8b5a 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result @@ -586,14 +586,9 @@ SELECT @var3, @var4; END begin2_label; SELECT @var1, @var2; END begin1_label// -CALL sp1(); -@var3 @var4 -NULL 8 -@var1 @var2 -NULL 6 +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE p1; DROP PROCEDURE h1; -DROP PROCEDURE sp1; DROP TABLE res_t1; Testcase 3.1.2.50: diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result index bcd50198fca..68f8b2a0ef6 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_03e.result @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc.result b/mysql-test/suite/funcs_1/r/ndb_storedproc.result index 92cc86120d5..42886c69412 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc.result @@ -14309,10 +14309,7 @@ declare continue handler for cond1 set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.45: -------------------------------------------------------------------------------- @@ -14387,10 +14384,7 @@ declare continue handler for sqlstate '00000' set @var2 = 1; set @x=1; SELECT @var2; END// -CALL sp1(); -@var2 -NULL -DROP PROCEDURE sp1; +ERROR 42000: Bad SQLSTATE: '00000' Testcase 4.2.52: -------------------------------------------------------------------------------- @@ -23495,6 +23489,7 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE IF EXISTS h1; Testcase 4.11.40: @@ -23532,9 +23527,9 @@ set x1 = 2; END; SELECT @x, x1; END// +ERROR 42000: Bad SQLSTATE: '00000' CALL h1(); -@x x1 -0 2 +ERROR 42000: PROCEDURE db_storedproc.h1 does not exist DROP PROCEDURE IF EXISTS h1; * Testcase 3.1.2.53 (4.11.42): diff --git a/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result b/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result index 419ade39c4f..032aef1d7e0 100644 --- a/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/ndb_storedproc_02.result @@ -586,14 +586,9 @@ SELECT @var3, @var4; END begin2_label; SELECT @var1, @var2; END begin1_label// -CALL sp1(); -@var3 @var4 -NULL 8 -@var1 @var2 -NULL 6 +ERROR 42000: Bad SQLSTATE: '00000' DROP PROCEDURE p1; DROP PROCEDURE h1; -DROP PROCEDURE sp1; DROP TABLE res_t1; Testcase 3.1.2.50: diff --git a/mysql-test/suite/funcs_1/r/ndb_trig_03e.result b/mysql-test/suite/funcs_1/r/ndb_trig_03e.result index 0d097d6cd7c..2416732a129 100644 --- a/mysql-test/suite/funcs_1/r/ndb_trig_03e.result +++ b/mysql-test/suite/funcs_1/r/ndb_trig_03e.result @@ -1214,7 +1214,7 @@ create definer=not_ex_user@localhost trigger trg1_0 before INSERT on t1 for each row set new.f1 = 'trig 1_0-yes'; Warnings: -Note 1449 There is no 'not_ex_user'@'localhost' registered +Note 1449 The user specified as a definer ('not_ex_user'@'localhost') does not exist drop trigger trg1_0; create definer=test_yesprivs@localhost trigger trg1_0 before INSERT on t1 for each row diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc index 2efc5a83663..756732b0e80 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc @@ -696,6 +696,7 @@ delimiter ;// CALL h1(); +--error ER_SP_BAD_SQLSTATE delimiter //; CREATE PROCEDURE sp1() begin1_label:BEGIN @@ -710,12 +711,9 @@ CREATE PROCEDURE sp1() END begin1_label// delimiter ;// -CALL sp1(); - # cleanup 3.1.2.45+50 DROP PROCEDURE p1; DROP PROCEDURE h1; -DROP PROCEDURE sp1; DROP TABLE res_t1; diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc index 972e6e207a5..e48008316c1 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_master.inc @@ -17235,6 +17235,7 @@ DROP PROCEDURE IF EXISTS sp1; --enable_warnings delimiter //; +--error ER_SP_BAD_SQLSTATE CREATE PROCEDURE sp1() BEGIN declare cond1 condition for sqlstate '00000'; @@ -17244,11 +17245,6 @@ BEGIN END// delimiter ;// -CALL sp1(); - -# cleanup -DROP PROCEDURE sp1; - # ------------------------------------------------------------------------------ let $message= Testcase 4.2.45:; @@ -17388,6 +17384,7 @@ DROP PROCEDURE IF EXISTS sp1; --enable_warnings delimiter //; +--error ER_SP_BAD_SQLSTATE CREATE PROCEDURE sp1() BEGIN declare continue handler for sqlstate '00000' set @var2 = 1; @@ -17396,12 +17393,6 @@ BEGIN END// delimiter ;// -CALL sp1(); - -# cleanup -DROP PROCEDURE sp1; - - # ------------------------------------------------------------------------------ let $message= Testcase 4.2.52:; @@ -29245,6 +29236,7 @@ DROP PROCEDURE IF EXISTS h1; --enable_warnings delimiter //; +--error ER_SP_BAD_SQLSTATE CREATE PROCEDURE h1 () BEGIN declare x1 int default 0; @@ -29320,6 +29312,7 @@ DROP PROCEDURE IF EXISTS h1; --enable_warnings delimiter //; +--error ER_SP_BAD_SQLSTATE CREATE PROCEDURE h1 () BEGIN declare x1 int default 0; From 60e5661361070701b374b7e48229b7b3f07492b2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 2 Apr 2008 00:43:17 +0200 Subject: [PATCH 022/435] mysqld.cc: Corrects build problems embedded on Windows Makefile.am: Install .sym or mysqld-debug if exists query_cache_debug.test, query_cache_debug.result: Set more resonable query cache size (bug#35749) CMakeLists.txt: Added missing stacktrace.c mysql-test/r/query_cache_debug.result: Set more resonable query cache size (bug#35749) mysql-test/t/query_cache_debug.test: Set more resonable query cache size (bug#35749) libmysqld/CMakeLists.txt: Added missing stacktrace.c sql/Makefile.am: Install .sym or mysqld-debug if exists sql/mysqld.cc: Corrects build problems embedded on Windows --- libmysqld/CMakeLists.txt | 2 +- mysql-test/r/query_cache_debug.result | 2 +- mysql-test/t/query_cache_debug.test | 2 +- sql/Makefile.am | 8 +++++++- sql/mysqld.cc | 2 ++ 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index b1895e98014..fb7b214bf60 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -187,7 +187,7 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc ../sql/strfunc.cc ../sql/table.cc ../sql/thr_malloc.cc ../sql/time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc ../sql/partition_info.cc ../sql/sql_connect.cc - ../sql/scheduler.cc + ../sql/scheduler.cc ../sql/stacktrace.c ${GEN_SOURCES} ${LIB_SOURCES}) diff --git a/mysql-test/r/query_cache_debug.result b/mysql-test/r/query_cache_debug.result index f177bfac836..c90165368e3 100644 --- a/mysql-test/r/query_cache_debug.result +++ b/mysql-test/r/query_cache_debug.result @@ -1,6 +1,6 @@ flush status; set query_cache_type=DEMAND; -set global query_cache_size= 1024*1024*512; +set global query_cache_size= 1024*768; drop table if exists t1; create table t1 (a varchar(100)); insert into t1 values ('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'),('bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'); diff --git a/mysql-test/t/query_cache_debug.test b/mysql-test/t/query_cache_debug.test index b741eea0b29..18dfe487ac3 100644 --- a/mysql-test/t/query_cache_debug.test +++ b/mysql-test/t/query_cache_debug.test @@ -7,7 +7,7 @@ # flush status; set query_cache_type=DEMAND; -set global query_cache_size= 1024*1024*512; +set global query_cache_size= 1024*768; --disable_warnings drop table if exists t1; --enable_warnings diff --git a/sql/Makefile.am b/sql/Makefile.am index 3a6f4bcb7a2..33664b77957 100644 --- a/sql/Makefile.am +++ b/sql/Makefile.am @@ -54,7 +54,7 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \ procedure.h sql_class.h sql_lex.h sql_list.h \ sql_map.h sql_string.h unireg.h \ sql_error.h field.h handler.h mysqld_suffix.h \ - sql_profile.h \ + sql_profile.h \ ha_ndbcluster.h ha_ndbcluster_cond.h \ ha_ndbcluster_binlog.h ha_ndbcluster_tables.h \ ha_partition.h rpl_constants.h \ @@ -178,6 +178,12 @@ lex_hash.h: gen_lex_hash.cc lex.h udf_example_la_SOURCES= udf_example.c udf_example_la_LDFLAGS= -module -rpath $(pkglibdir) +# We might have some stuff not built in this build, but that we want to install +install-exec-hook: + $(mkinstalldirs) $(DESTDIR)$(libexecdir) $(DESTDIR)$(pkglibdir) + test ! -x mysqld-debug$(EXEEXT) || $(INSTALL_PROGRAM) mysqld-debug$(EXEEXT) $(DESTDIR)$(libexecdir) + test ! -f mysqld-debug.sym.gz || $(INSTALL_DATA) mysqld-debug.sym.gz $(DESTDIR)$(pkglibdir) + test ! -f mysqld.sym.gz || $(INSTALL_DATA) mysqld.sym.gz $(DESTDIR)$(pkglibdir) # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 8bafb15eeaa..f619899f3b1 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1948,6 +1948,7 @@ extern "C" sig_handler abort_thread(int sig __attribute__((unused))) static BOOL WINAPI console_event_handler( DWORD type ) { DBUG_ENTER("console_event_handler"); +#ifndef EMBEDDED_LIBRARY if(type == CTRL_C_EVENT) { /* @@ -1962,6 +1963,7 @@ static BOOL WINAPI console_event_handler( DWORD type ) sql_print_warning("CTRL-C ignored during startup"); DBUG_RETURN(TRUE); } +#endif DBUG_RETURN(FALSE); } From 7f7d6d9ecc5ce32f835b2543564c7aa69f42710c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 2 Apr 2008 12:18:21 -0400 Subject: [PATCH 023/435] Replaced full-stop character in error message. --- sql/share/errmsg.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index dcc3220e425..2098e5eb2fd 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -5513,10 +5513,10 @@ ER_SP_NO_RECURSION eng "Recursive stored functions and triggers are not allowed." ger "Rekursive gespeicherte Routinen und Triggers sind nicht erlaubt" ER_TOO_BIG_SCALE 42000 S1009 - eng "Too big scale %d specified for column '%-.192s'. Maximum is %lu" + eng "Too big scale %d specified for column '%-.192s'. Maximum is %lu." ger "Zu groer Skalierungsfaktor %d fr Feld '%-.192s' angegeben. Maximum ist %lu" ER_TOO_BIG_PRECISION 42000 S1009 - eng "Too big precision %d specified for column '%-.192s'. Maximum is %lu" + eng "Too big precision %d specified for column '%-.192s'. Maximum is %lu." ger "Zu groe Genauigkeit %d fr Feld '%-.192s' angegeben. Maximum ist %lu" ER_M_BIGGER_THAN_D 42000 S1009 eng "For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '%-.192s')." From 1a07ecbab5b67729b6466cf68d6f526e1cef3a44 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 2 Apr 2008 19:47:20 +0200 Subject: [PATCH 024/435] Correct the location of the directory for "funcs_1" data load --- mysql-test/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index c11b8e0d5fe..a53075ef81c 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -46,7 +46,7 @@ dist-hook: $(distdir)/std_data \ $(distdir)/std_data/ndb_backup50_data_be $(distdir)/std_data/ndb_backup50_data_le \ $(distdir)/lib \ - $(distdir)/funcs_1 + $(distdir)/std_data/funcs_1 -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t @@ -80,7 +80,7 @@ install-data-local: $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be \ $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le \ $(DESTDIR)$(testdir)/lib \ - $(DESTDIR)$(testdir)/funcs_1 + $(DESTDIR)$(testdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t From e12312d82122cdd3743d05a12015385dd79348b6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 2 Apr 2008 22:24:53 +0200 Subject: [PATCH 025/435] mysql.spec.sh: If excluding Federated, make sure dynamic plugin is not built Makefile.am: Only run cluster test when compiled with cluster lib_sql.cc: Work around for Visual Studio 2003, that lacks vsnprintf() but has _vsnprintf() Makefile.am: Only run cluster test when compiled with cluster libmysqld/lib_sql.cc: Work around for Visual Studio 2003, that lacks vsnprintf() but has _vsnprintf() support-files/mysql.spec.sh: If excluding Federated, make sure dynamic plugin is not built --- Makefile.am | 17 +++++++++++------ libmysqld/lib_sql.cc | 3 +++ support-files/mysql.spec.sh | 4 ++++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Makefile.am b/Makefile.am index ad94c9ea325..f999df86acf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -135,12 +135,17 @@ test-bt: -cd mysql-test ; MTR_BUILD_THREAD=auto \ @PERL@ ./mysql-test-run.pl --comment=normal+rowrepl --force --timer \ --skip-ndbcluster --mysqld=--binlog-format=row - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=ps+rowrepl+NDB --force --timer \ - --ps-protocol --mysqld=--binlog-format=row - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=NDB --force --timer \ - --with-ndbcluster-only + -if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \ + cd mysql-test ; \ + MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --comment=ps+rowrepl+NDB --force --timer \ + --ps-protocol --mysqld=--binlog-format=row ; \ + MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --comment=NDB --force --timer \ + --with-ndbcluster-only ; \ + else \ + echo "no program found for 'ndbcluster' tests - skipped testing" ; \ + fi -if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \ cd mysql-test ; MTR_BUILD_THREAD=auto \ @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \ diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index ec9356ce98d..0f0fb2c1bda 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -1124,6 +1124,9 @@ bool Protocol::net_store_data(const uchar *from, size_t length) return FALSE; } +#if defined(_MSC_VER) && _MSC_VER < 1400 +#define vsnprintf _vsnprintf +#endif int vprint_msg_to_log(enum loglevel level __attribute__((unused)), const char *format, va_list argsi) diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index f26a922dbc3..7f7674eefc9 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -336,6 +336,8 @@ BuildMySQL "--enable-shared \ --with-innodb \ %if %{CLUSTER_BUILD} --with-ndbcluster \ +%else + --without-ndbcluster \ %endif --with-archive-storage-engine \ --with-csv-storage-engine \ @@ -343,6 +345,8 @@ BuildMySQL "--enable-shared \ --with-blackhole-storage-engine \ %if %{FEDERATED_BUILD} --with-federated-storage-engine \ +%else + --without-federated-storage-engine \ %endif --with-partition \ --with-big-tables \ From 90112d1175b1043850f50cfae2088dc143e4c62e Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 3 Apr 2008 11:32:00 -0400 Subject: [PATCH 026/435] Bug#26294: library name conflict between MySQL 4.x, 5.0 and Qt 3.3 When linking with some external programs, "multiple definition of `init_time'" Rename init_time() to my_init_time() to avoid collision with other libraries (particularly libmng). client/mysqlbinlog.cc: Rename init_time() to my_init_time(). include/my_time.h: Rename init_time() to my_init_time(). sql-common/my_time.c: Rename init_time() to my_init_time(). sql/init.cc: Rename init_time() to my_init_time(). sql/tztime.cc: Rename init_time() to my_init_time(). --- client/mysqlbinlog.cc | 2 +- include/my_time.h | 2 +- sql-common/my_time.c | 6 +++--- sql/init.cc | 2 +- sql/tztime.cc | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/client/mysqlbinlog.cc b/client/mysqlbinlog.cc index b4086b59c01..f0a4c8d2abf 100644 --- a/client/mysqlbinlog.cc +++ b/client/mysqlbinlog.cc @@ -1474,7 +1474,7 @@ int main(int argc, char** argv) DBUG_ENTER("main"); DBUG_PROCESS(argv[0]); - init_time(); // for time functions + my_init_time(); // for time functions parse_args(&argc, (char***)&argv); defaults_argv=argv; diff --git a/include/my_time.h b/include/my_time.h index 99eb5c36c6b..014327d6fd8 100644 --- a/include/my_time.h +++ b/include/my_time.h @@ -94,7 +94,7 @@ long calc_daynr(uint year,uint month,uint day); uint calc_days_in_year(uint year); uint year_2000_handling(uint year); -void init_time(void); +void my_init_time(void); /* diff --git a/sql-common/my_time.c b/sql-common/my_time.c index ecc5aaf8af2..1781251fca1 100644 --- a/sql-common/my_time.c +++ b/sql-common/my_time.c @@ -704,9 +704,9 @@ int check_time_range(struct st_mysql_time *my_time, int *warning) Prepare offset of system time zone from UTC for my_system_gmt_sec() func. SYNOPSIS - init_time() + my_init_time() */ -void init_time(void) +void my_init_time(void) { time_t seconds; struct tm *l_time,tm_tmp; @@ -795,7 +795,7 @@ long calc_daynr(uint year,uint month,uint day) NOTES The idea is to cache the time zone offset from UTC (including daylight saving time) for the next call to make things faster. But currently we - just calculate this offset during startup (by calling init_time() + just calculate this offset during startup (by calling my_init_time() function) and use it all the time. Time value provided should be legal time value (e.g. '2003-01-01 25:00:00' is not allowed). diff --git a/sql/init.cc b/sql/init.cc index b3b68926683..2dd2031cdaa 100644 --- a/sql/init.cc +++ b/sql/init.cc @@ -30,7 +30,7 @@ void unireg_init(ulong options) wild_many='%'; wild_one='_'; wild_prefix='\\'; /* Change to sql syntax */ current_pid=(ulong) getpid(); /* Save for later ref */ - init_time(); /* Init time-functions (read zone) */ + my_init_time(); /* Init time-functions (read zone) */ #ifndef EMBEDDED_LIBRARY my_abort_hook=unireg_abort; /* Abort with close of databases */ #endif diff --git a/sql/tztime.cc b/sql/tztime.cc index bedbf921cae..2b951c4b061 100644 --- a/sql/tztime.cc +++ b/sql/tztime.cc @@ -1035,7 +1035,7 @@ public: return lowest possible my_time_t in case of ambiguity or if we provide time corresponding to the time-gap. - You should call init_time() function before using this function. + You should call my_init_time() function before using this function. RETURN VALUE Corresponding my_time_t value or 0 in case of error @@ -2757,7 +2757,7 @@ main(int argc, char **argv) } printf("gmt_sec_to_TIME = localtime for time_t in [1000000000,1100000000) range\n"); - init_time(); + my_init_time(); /* Be careful here! my_system_gmt_sec doesn't fully handle unnormalized From b2799ebf5ae537375e1a60aae55fb1fe88c65b9b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 4 Apr 2008 01:16:55 +0400 Subject: [PATCH 027/435] Bug#32653. Added --log-slave-updates because test requires it. The events based on LOAD DATA INFILE masked by --replace_regex instead restarting of slave. Added waiting start and stop of slave after START|STOP SLAVE statements. mysql-test/r/rpl_log.result: updated result file mysql-test/t/disabled.def: updated disabled.def mysql-test/t/rpl_log-slave.opt: updated option for slave mysql-test/t/rpl_log.test: updated test --- mysql-test/r/rpl_log.result | 15 +++++++-------- mysql-test/t/disabled.def | 1 - mysql-test/t/rpl_log-slave.opt | 2 +- mysql-test/t/rpl_log.test | 19 ++++++++----------- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/mysql-test/r/rpl_log.result b/mysql-test/r/rpl_log.result index 6ee0eb283b5..ae3fe107038 100644 --- a/mysql-test/r/rpl_log.result +++ b/mysql-test/r/rpl_log.result @@ -7,7 +7,7 @@ start slave; stop slave; reset master; reset slave; -reset master; +start slave; create table t1(n int not null auto_increment primary key); insert into t1 values (NULL); drop table t1; @@ -25,8 +25,8 @@ master-bin.000001 219 Intvar 1 247 INSERT_ID=1 master-bin.000001 247 Query 1 338 use `test`; insert into t1 values (NULL) master-bin.000001 338 Query 1 414 use `test`; drop table t1 master-bin.000001 414 Query 1 517 use `test`; create table t1 (word char(20) not null) -master-bin.000001 517 Begin_load_query 1 1121 ;file_id=1;block_len=581 -master-bin.000001 1121 Execute_load_query 1 1269 use `test`; load data infile '../std_data_ln/words.dat' into table t1 ignore 1 lines ;file_id=1 +master-bin.000001 517 Begin_load_query 1 1121 ;file_id=#;block_len=# +master-bin.000001 1121 Execute_load_query 1 1269 use `test`; load data infile 'words.dat' into table t1 ignore 1 lines ;file_id=# master-bin.000001 1269 Query 1 1345 use `test`; drop table t1 show binlog events from 98 limit 1; Log_name Pos Event_type Server_id End_log_pos Info @@ -41,7 +41,6 @@ master-bin.000001 247 Query 1 338 use `test`; insert into t1 values (NULL) flush logs; create table t5 (a int); drop table t5; -start slave; flush logs; stop slave; create table t1 (n int); @@ -55,8 +54,8 @@ master-bin.000001 219 Intvar 1 247 INSERT_ID=1 master-bin.000001 247 Query 1 338 use `test`; insert into t1 values (NULL) master-bin.000001 338 Query 1 414 use `test`; drop table t1 master-bin.000001 414 Query 1 517 use `test`; create table t1 (word char(20) not null) -master-bin.000001 517 Begin_load_query 1 1121 ;file_id=1;block_len=581 -master-bin.000001 1121 Execute_load_query 1 1269 use `test`; load data infile '../std_data_ln/words.dat' into table t1 ignore 1 lines ;file_id=1 +master-bin.000001 517 Begin_load_query 1 1121 ;file_id=#;block_len=# +master-bin.000001 1121 Execute_load_query 1 1269 use `test`; load data infile 'words.dat' into table t1 ignore 1 lines ;file_id=# master-bin.000001 1269 Query 1 1345 use `test`; drop table t1 master-bin.000001 1345 Rotate 1 1389 master-bin.000002;pos=4 show binlog events in 'master-bin.000002'; @@ -84,8 +83,8 @@ slave-bin.000001 219 Intvar 1 247 INSERT_ID=1 slave-bin.000001 247 Query 1 338 use `test`; insert into t1 values (NULL) slave-bin.000001 338 Query 1 414 use `test`; drop table t1 slave-bin.000001 414 Query 1 517 use `test`; create table t1 (word char(20) not null) -slave-bin.000001 517 Begin_load_query 1 1121 ;file_id=1;block_len=581 -slave-bin.000001 1121 Execute_load_query 1 1271 use `test`; load data INFILE '../tmp/SQL_LOAD-2-1-1.data' INTO table t1 ignore 1 lines ;file_id=1 +slave-bin.000001 517 Begin_load_query 1 1121 ;file_id=#;block_len=# +slave-bin.000001 1121 Execute_load_query 1 1271 use `test`; load data INFILE 'words.dat' INTO table t1 ignore 1 lines ;file_id=# slave-bin.000001 1271 Query 1 1347 use `test`; drop table t1 slave-bin.000001 1347 Query 1 1433 use `test`; create table t5 (a int) slave-bin.000001 1433 Query 1 1509 use `test`; drop table t5 diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 297b6e70f39..591e9d71721 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -17,7 +17,6 @@ im_options_set : Bug#20294: Instance manager tests fail randomly im_options_unset : Bug#20294: Instance manager tests fail randomly im_utils : Bug#20294: Instance manager tests fail randomly grant_cache : Bug#32651: grant_cache.test fails -rpl_log : Bug#32653: rpl_log.test fails randomly rpl_view : Bug#32654: rpl_view.test fails randomly ndb_backup_print : Bug#32357: ndb_backup_print test fails sometimes in pushbuild rpl_log_pos : Bug#8693 Test 'rpl_log_pos' fails sometimes diff --git a/mysql-test/t/rpl_log-slave.opt b/mysql-test/t/rpl_log-slave.opt index 8b137891791..203fc2287ec 100644 --- a/mysql-test/t/rpl_log-slave.opt +++ b/mysql-test/t/rpl_log-slave.opt @@ -1 +1 @@ - +--log-slave-updates diff --git a/mysql-test/t/rpl_log.test b/mysql-test/t/rpl_log.test index 578a39efd6e..52c4a3e0606 100644 --- a/mysql-test/t/rpl_log.test +++ b/mysql-test/t/rpl_log.test @@ -13,22 +13,15 @@ save_master_pos; connection slave; sync_with_master; stop slave; +--source include/wait_for_slave_to_stop.inc reset master; reset slave; -# We are going to read the slave's binlog which contains file_id (for some LOAD -# DATA INFILE); to make it repeatable (not influenced by other tests), we need -# to stop and start the slave, to be sure file_id will start from 1. -# This can be done with 'server_stop slave', but -# this would require the manager, so most of the time the test will be skipped -# :( -# To workaround this, I (Guilhem) add a (empty) rpl_log-slave.opt (because when -# mysql-test-run finds such a file it restarts the slave before doing the -# test). That's not very elegant but I could find no better way, sorry. +start slave; +--source include/wait_for_slave_to_start.inc let $VERSION=`select version()`; connection master; -reset master; create table t1(n int not null auto_increment primary key); insert into t1 values (NULL); drop table t1; @@ -37,6 +30,7 @@ load data infile '../std_data_ln/words.dat' into table t1 ignore 1 lines; select count(*) from t1; drop table t1; --replace_result $VERSION VERSION +--replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /infile '.+'/infile 'words.dat'/ show binlog events; show binlog events from 98 limit 1; show binlog events from 98 limit 2; @@ -69,10 +63,10 @@ connection slave; # Note that the above 'slave start' will cause a 3rd rotate event (a fake one) # to go into the relay log (the master always sends a fake one when replication # starts). -start slave; sync_with_master; flush logs; stop slave; +--source include/wait_for_slave_to_stop.inc connection master; # Create some entries for second log @@ -81,6 +75,7 @@ create table t1 (n int); insert into t1 values (1); drop table t1; --replace_result $VERSION VERSION +--replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /infile '.+'/infile 'words.dat'/ show binlog events; --replace_result $VERSION VERSION show binlog events in 'master-bin.000002'; @@ -88,9 +83,11 @@ show binary logs; save_master_pos; connection slave; start slave; +--source include/wait_for_slave_to_start.inc sync_with_master; show binary logs; --replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION +--replace_regex /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ /INFILE '.+'/INFILE 'words.dat'/ show binlog events in 'slave-bin.000001' from 4; --replace_result $MASTER_MYPORT MASTER_PORT $VERSION VERSION show binlog events in 'slave-bin.000002' from 4; From d75f5765a94295302dfef14dc82d8eafe401b0fd Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 4 Apr 2008 13:21:40 +0200 Subject: [PATCH 028/435] mysql-test/Makefile.am : Fix a copy-paste error ... mysql-test/Makefile.am: Fix a copy-paste error ... In this place, "$(distdir)" expands to empty, resulting in absolute "/std_data/funcs_1" --- mysql-test/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 339c7574895..1db416d9e17 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -130,7 +130,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_le/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_le $(INSTALL_DATA) $(srcdir)/std_data/parts/part_* $(DESTDIR)$(testdir)/std_data/parts - $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(DESTDIR)$(testdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib $(INSTALL_DATA) $(srcdir)/lib/My/*.pm $(DESTDIR)$(testdir)/lib/My for f in `(cd $(srcdir); find suite -type f | egrep -v 'SCCS|row_lock')`; \ From 1daeb66563d19b141cddf6b49ef23cf4efe3f5be Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 4 Apr 2008 17:41:14 +0200 Subject: [PATCH 029/435] Backport of fix made in 5.1 to 5.0 mysql-test/Makefile.am : Fix a copy-paste error ... mysql-test/Makefile.am: Correct the variables used for target directory of copy action. --- mysql-test/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index a53075ef81c..0dee970cd58 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -106,7 +106,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le - $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(DESTDIR)$(testdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib for f in `(cd $(srcdir); find suite -type f | grep -v SCCS)`; \ do \ From ccd31e9dd4ef9ac3266690231626237d13d53e17 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 4 Apr 2008 13:46:05 -0300 Subject: [PATCH 030/435] Bug#35824: mysql_upgrade does not fix scheduler tables when upgrading from 5.1.23 to 5.1.24 The problem is that when upgrading the event table, the sql_mode column was always being added instead of being updated to list new sql_mode values, causing upgrades of the event which already have a sql_mode column to not be updated to the new sql_mode values. The solution is to always add first a stub sql_mode column and subsequently update the column to the new sql_mode values. scripts/mysql_system_tables_fix.sql: Always add and update the sql_mode column of the event table. --- scripts/mysql_system_tables_fix.sql | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql index e2bdd668c0f..a33c4fcb9fa 100644 --- a/scripts/mysql_system_tables_fix.sql +++ b/scripts/mysql_system_tables_fix.sql @@ -433,7 +433,10 @@ ALTER TABLE db MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NO # ALTER TABLE event DROP PRIMARY KEY; ALTER TABLE event ADD PRIMARY KEY(db, name); -ALTER TABLE event ADD sql_mode +# Add sql_mode column just in case. +ALTER TABLE event ADD sql_mode set ('NOT_USED') AFTER on_completion; +# Update list of sql_mode values. +ALTER TABLE event MODIFY sql_mode set('REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', From 409163524784e69e73222038137e579afadfee79 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 6 Apr 2008 22:24:29 +0400 Subject: [PATCH 031/435] Bug#32654. The reason of bug is incorrect clean up during restarting of mysqld under Windows platform (seems some files were in-use). Mtr restarts servers because an option file exist for slave. The option file for slave forces to skip test.foo table for replication. But really test case does not invlved test.foo table at all. So option file can be removed and mtr will not restart servers for test case. BitKeeper/deleted/.del-rpl_view-slave.opt: Rename: mysql-test/t/rpl_view-slave.opt -> BitKeeper/deleted/.del-rpl_view-slave.opt mysql-test/t/disabled.def: updated --- mysql-test/t/disabled.def | 1 - mysql-test/t/rpl_view-slave.opt | 1 - 2 files changed, 2 deletions(-) delete mode 100644 mysql-test/t/rpl_view-slave.opt diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 297b6e70f39..2285f966a6d 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -18,7 +18,6 @@ im_options_unset : Bug#20294: Instance manager tests fail randomly im_utils : Bug#20294: Instance manager tests fail randomly grant_cache : Bug#32651: grant_cache.test fails rpl_log : Bug#32653: rpl_log.test fails randomly -rpl_view : Bug#32654: rpl_view.test fails randomly ndb_backup_print : Bug#32357: ndb_backup_print test fails sometimes in pushbuild rpl_log_pos : Bug#8693 Test 'rpl_log_pos' fails sometimes kill : Bug#29149 Test "kill" fails on Windows diff --git a/mysql-test/t/rpl_view-slave.opt b/mysql-test/t/rpl_view-slave.opt deleted file mode 100644 index 79b3bf6174b..00000000000 --- a/mysql-test/t/rpl_view-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---replicate-ignore-table=test.foo From 25e57ca9c4d7e5d703906b0272b6554b8ed1679b Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 01:32:59 -0400 Subject: [PATCH 032/435] Changes for Visual Studio 9 --- CMakeLists.txt | 14 ++++++-------- zlib/zutil.h | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 37956204faa..d4697efef93 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,18 +82,18 @@ SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805") -IF(CMAKE_GENERATOR MATCHES "Visual Studio 8") +# Disable warnings in Visual Studio 8 and above +IF(MSVC AND MSVC_VERSION GREATER 1399) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996") SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996") SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996") SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996") SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996") -ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 8") - -IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR - CMAKE_GENERATOR MATCHES "Visual Studio 8") +ENDIF(MSVC AND MSVC_VERSION GREATER 1399) +# Settings for Visual Studio 7 and above. +IF(MSVC AND MSVC_VERSION GREATER 1299) # replace /MDd with /MTd STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO}) @@ -123,9 +123,7 @@ IF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR IF(NOT tmp_manifest) SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") ENDIF(NOT tmp_manifest) - -ENDIF(CMAKE_GENERATOR MATCHES "Visual Studio 7" OR - CMAKE_GENERATOR MATCHES "Visual Studio 8") +ENDIF(MSVC AND MSVC_VERSION GREATER 1299) ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE") diff --git a/zlib/zutil.h b/zlib/zutil.h index b7d5eff81b6..4482957d6ac 100644 --- a/zlib/zutil.h +++ b/zlib/zutil.h @@ -194,7 +194,7 @@ extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # ifdef __TURBOC__ # define NO_vsnprintf # endif -# ifdef WIN32 +# if defined(WIN32) && (!defined(_MSC_VER) || _MSC_VER < 1500) /* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */ # if !defined(vsnprintf) && !defined(NO_vsnprintf) # define vsnprintf _vsnprintf From d5990c28184d35cc534271aecfd0fe3c19f64b9c Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 12:59:57 +0400 Subject: [PATCH 033/435] Fix for bug #35733 "main.symlink.test fails". The problem was that symlink.test failed due to debug assertions or due to errors emitted for wrong statements (in non-debug builds) if 6.0 version of server was run with --thread-handling=pool-of-threads option. The above problems were caused by that on the one hand code mi_create() which handles case when error is returned relies on my_errno being set to appropriate non-0 value, but on the other it has not done this in case when error was emitted due to discovery that share for table which we are going to create is already present in the list of open shares. Running server with pool-of-threads option just exposed this bug since in this scheduler mode my_errno is reset to 0 when connection (THD) is reattached to the "real" thread. This fix ensures that code in mi_create() properly sets my_errno in the case described above. Since original reason that caused this bug to be exposed in 6.0 tree might also under very special conditions lead to incorrect behavior of earlier versions of server (i.e. to errors emitted for wrong statements) this patch is also being pushed into 5.1 tree. No test case is present as this code is already covered by a test case + pushbuild options combination in 6.0. storage/myisam/mi_create.c: Code in mi_create() which handles case when error is returned relies on my_errno being set to appropriate non-0 value. Adjusted code which emits error when we discover that share for table which we are going to create is already present in the list of open shares to do this. --- storage/myisam/mi_create.c | 1 + 1 file changed, 1 insertion(+) diff --git a/storage/myisam/mi_create.c b/storage/myisam/mi_create.c index 0cac5f08b3b..8bd93faba3a 100644 --- a/storage/myisam/mi_create.c +++ b/storage/myisam/mi_create.c @@ -633,6 +633,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, my_printf_error(0, "MyISAM table '%s' is in use " "(most likely by a MERGE table). Try FLUSH TABLES.", MYF(0), name + dirname_length(name)); + my_errno= HA_ERR_TABLE_EXIST; goto err; } From 3f63ba7f8cebbbf0b19ecccc6e3aa07bc09a4598 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 11:29:45 +0200 Subject: [PATCH 034/435] Bug#34183 Missing DBUG_RETURN in alloc_root DBUG_RETURN was missing form an exit path in 5.1 branch of alloc_root mysys/my_alloc.c: Fixed missing DBUG_RETURN --- mysys/my_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 9203ce9c34e..2607ea57d08 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -202,7 +202,7 @@ void *alloc_root(MEM_ROOT *mem_root, size_t length) { if (mem_root->error_handler) (*mem_root->error_handler)(); - return((void*) 0); /* purecov: inspected */ + DBUG_RETURN((void*) 0); /* purecov: inspected */ } mem_root->block_num++; next->next= *prev; From d017aceed00c91d1d0df33170925a611e33ac3f3 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 13:35:42 +0400 Subject: [PATCH 035/435] Review and update WL#4165 and WL#4166 test coverage. --- mysql-test/r/ps_ddl.result | 4196 +++++++++--------------------------- mysql-test/t/ps_ddl.test | 2204 ++++++++----------- 2 files changed, 1910 insertions(+), 4490 deletions(-) diff --git a/mysql-test/r/ps_ddl.result b/mysql-test/r/ps_ddl.result index 531d29d219e..fe7062716ea 100644 --- a/mysql-test/r/ps_ddl.result +++ b/mysql-test/r/ps_ddl.result @@ -1,543 +1,224 @@ -SELECT VARIABLE_VALUE from -INFORMATION_SCHEMA.SESSION_STATUS where variable_name='COM_STMT_REPREPARE' -into @base_count ; -set @expected = 0; +drop temporary table if exists t1, t2, t3; +drop table if exists t1, t2, t3; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists v1, v2; +create procedure p_verify_reprepare_count(expected int) +begin +declare old_reprepare_count int default @reprepare_count; +select variable_value from +information_schema.session_status where +variable_name='com_stmt_reprepare' + into @reprepare_count; +if old_reprepare_count + expected <> @reprepare_count then +select concat("Expected: ", expected, +", actual: ", @reprepare_count - old_reprepare_count) +as "ERROR"; +else +select '' as "SUCCESS"; +end if; +end| +set @reprepare_count= 0; +flush status; ===================================================================== -Testing 1: NOTHING -> TABLE transitions +Part 1: NOTHING -> TABLE transitions ===================================================================== -drop table if exists t1; -prepare stmt from 'select * from t1'; +prepare stmt from "select * from t1"; ERROR 42S02: Table 'test.t1' doesn't exist ===================================================================== -Testing 2: NOTHING -> TEMPORARY TABLE transitions +Part 2: NOTHING -> TEMPORARY TABLE transitions ===================================================================== ===================================================================== -Testing 3: NOTHING -> VIEW transitions +Part 3: NOTHING -> VIEW transitions ===================================================================== ===================================================================== -Testing 4: TABLE -> NOTHING transitions +Part 4: TABLE -> NOTHING transitions ===================================================================== -drop table if exists t4; -create table t4(a int); -prepare stmt from 'select * from t4'; +create table t1 (a int); +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t4; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; execute stmt; -ERROR 42S02: Table 'test.t4' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + execute stmt; -ERROR 42S02: Table 'test.t4' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; ===================================================================== -Testing 5: TABLE -> TABLE (DDL) transitions +Part 5: TABLE -> TABLE (DDL) transitions ===================================================================== -drop table if exists t5; -create table t5(a int); -prepare stmt from 'select a from t5'; +create table t1 (a int); +prepare stmt from "select a from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t5 add column (b int); -set @expected = @expected + 1; +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 add column (b int); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t5; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +deallocate prepare stmt; ===================================================================== -Testing 6: TABLE -> TABLE (TRIGGER) transitions +Part 6: TABLE -> TABLE (TRIGGER) transitions ===================================================================== -drop table if exists t6; -create table t6(a int); -prepare stmt from 'insert into t6(a) value (?)'; +# Test 6-a: adding a relevant trigger +create table t1 (a int); +prepare stmt from "insert into t1 (a) value (?)"; set @val=1; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +create trigger t1_bi before insert on t1 for each row +set @message= new.a; set @val=2; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -create trigger t6_bi before insert on t6 for each row -begin -set @message= "t6_bi"; -end -$$ -set @message="none"; -set @val=3; -set @expected = @expected + 1; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + select @message; @message -t6_bi +2 +set @val=3; +execute stmt using @val; +call p_verify_reprepare_count(0); +SUCCESS + +select @message; +@message +3 +prepare stmt from "insert into t1 (a) value (?)"; set @val=4; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; +4 +# Test 6-b: adding an irrelevant trigger +create trigger t1_bd before delete on t1 for each row +set @message= old.a; set @val=5; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + select @message; @message -t6_bi -set @message="none"; +5 set @val=6; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi -create trigger t6_bd before delete on t6 for each row -begin -set @message= "t6_bd"; -end -$$ -set @message="none"; +6 +prepare stmt from "insert into t1 (a) value (?)"; set @val=7; -set @expected = @expected + 1; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi -set @message="none"; +7 +# Test 6-c: changing a relevant trigger +drop trigger t1_bi; +create trigger t1_bi before insert on t1 for each row +set @message= concat("new trigger: ", new.a); set @val=8; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + select @message; @message -t6_bi -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; +new trigger: 8 set @val=9; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi -set @message="none"; +new trigger: 9 +prepare stmt from "insert into t1 (a) value (?)"; set @val=10; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi -drop trigger t6_bi; -create trigger t6_bi before insert on t6 for each row -begin -set @message= "t6_bi (2)"; -end -$$ -set @message="none"; +new trigger: 10 +# Test 6-d: changing an irrelevant trigger +drop trigger t1_bd; set @val=11; -set @expected = @expected + 1; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + select @message; @message -t6_bi (2) +new trigger: 11 +drop trigger t1_bi; set @val=12; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + select @message; @message -t6_bi (2) -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; +new trigger: 11 set @val=13; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi (2) -set @message="none"; +new trigger: 11 +prepare stmt from "insert into t1 (a) value (?)"; set @val=14; execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + select @message; @message -t6_bi (2) -drop trigger t6_bd; -create trigger t6_bd before delete on t6 for each row -begin -set @message= "t6_bd (2)"; -end -$$ -set @message="none"; -set @val=15; -set @expected = @expected + 1; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -t6_bi (2) -set @message="none"; -set @val=16; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -t6_bi (2) -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; -set @val=17; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -t6_bi (2) -set @message="none"; -set @val=18; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -t6_bi (2) -drop trigger t6_bi; -set @message="none"; -set @val=19; -set @expected = @expected + 1; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -none -set @val=20; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -none -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; -set @val=21; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -none -set @val=22; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -none -drop trigger t6_bd; -set @val=23; -set @expected = @expected + 1; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -none -set @val=24; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select @message; -@message -none -select * from t6 order by a; +new trigger: 11 +select * from t1 order by a; a 1 2 @@ -553,1443 +234,747 @@ a 12 13 14 -15 -16 -17 -18 -19 -20 -21 -22 -23 -24 -drop table t6; +drop table t1; +deallocate prepare stmt; ===================================================================== -Testing 7: TABLE -> TABLE (TRIGGER dependencies) transitions +Part 7: TABLE -> TABLE (TRIGGER dependencies) transitions ===================================================================== -drop table if exists t7_proc; -drop table if exists t7_func; -drop table if exists t7_view; -drop table if exists t7_table; -drop table if exists t7_dependent_table; -drop table if exists t7_table_trigger; -drop table if exists t7_audit; -drop procedure if exists audit_proc; -drop function if exists audit_func; -drop view if exists audit_view; -create table t7_proc(a int); -create table t7_func(a int); -create table t7_view(a int); -create table t7_table(a int); -create table t7_table_trigger(a int); -create table t7_audit(old_a int, new_a int, reason varchar(50)); -create table t7_dependent_table(old_a int, new_a int, reason varchar(50)); -create procedure audit_proc(a int) -insert into t7_audit values (NULL, a, "proc v1"); -create function audit_func() returns varchar(50) -return "func v1"; -create view audit_view as select "view v1" as reason from dual; -create trigger t7_proc_bi before insert on t7_proc for each row -call audit_proc(NEW.a); -create trigger t7_func_bi before insert on t7_func for each row -insert into t7_audit values (NULL, NEW.a, audit_func()); -create trigger t7_view_bi before insert on t7_view for each row -insert into t7_audit values (NULL, NEW.a, (select reason from audit_view)); -create trigger t7_table_bi before insert on t7_table for each row -insert into t7_dependent_table values (NULL, NEW.a, "dependent table"); -create trigger t7_table_trigger_bi before insert on t7_dependent_table -for each row set NEW.reason="trigger v1"; -prepare stmt_proc from 'insert into t7_proc(a) value (?)'; -set @val=101; -execute stmt_proc using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=102; -execute stmt_proc using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure audit_proc; -create procedure audit_proc(a int) -insert into t7_audit values (NULL, a, "proc v2"); -set @val=103; -set @expected = @expected + 1; -execute stmt_proc using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=104; -execute stmt_proc using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -prepare stmt_func from 'insert into t7_func(a) value (?)'; -set @val=201; -execute stmt_func using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=202; -execute stmt_func using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function audit_func; -create function audit_func() returns varchar(50) -return "func v2"; -set @val=203; -set @expected = @expected + 1; -execute stmt_func using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=204; -execute stmt_func using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -prepare stmt_view from 'insert into t7_view(a) value (?)'; -set @val=301; -execute stmt_view using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=302; -execute stmt_view using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view audit_view; -create view audit_view as select "view v2" as reason from dual; -set @val=303; -set @expected = @expected + 1; -execute stmt_view using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=304; -execute stmt_view using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -prepare stmt_table from 'insert into t7_table(a) value (?)'; -set @val=401; -execute stmt_table using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=402; -execute stmt_table using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t7_dependent_table add column comments varchar(100) default NULL; -set @val=403; -set @expected = @expected + 1; -execute stmt_table using @val; -ERROR 21S01: Column count doesn't match value count at row 1 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=404; -set @expected = @expected + 1; -execute stmt_table using @val; -ERROR 21S01: Column count doesn't match value count at row 1 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t7_dependent_table drop column comments; -set @val=405; -set @expected = @expected + 1; -execute stmt_table using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=406; -execute stmt_table using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -prepare stmt_table_trigger from 'insert into t7_table(a) value (?)'; -set @val=501; -execute stmt_table_trigger using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=502; -execute stmt_table_trigger using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop trigger t7_table_trigger_bi; -create trigger t7_table_trigger_bi before insert on t7_dependent_table -for each row set NEW.reason="trigger v2"; -set @val=503; -set @expected = @expected + 1; -execute stmt_table_trigger using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=504; -execute stmt_table_trigger using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select * from t7_audit order by new_a; -old_a new_a reason -NULL 101 proc v1 -NULL 102 proc v1 -NULL 103 proc v2 -NULL 104 proc v2 -NULL 201 func v1 -NULL 202 func v1 -NULL 203 func v2 -NULL 204 func v2 -NULL 301 view v1 -NULL 302 view v1 -NULL 303 view v1 -NULL 304 view v1 -select * from t7_dependent_table order by new_a; -old_a new_a reason -NULL 401 trigger v1 -NULL 402 trigger v1 -NULL 405 trigger v1 -NULL 406 trigger v1 -NULL 501 trigger v1 -NULL 502 trigger v1 -NULL 503 trigger v2 -NULL 504 trigger v2 -drop table t7_proc; -drop table t7_func; -drop table t7_view; -drop table t7_table; -drop table t7_dependent_table; -drop table t7_table_trigger; -drop table t7_audit; -drop procedure audit_proc; -drop function audit_func; -drop view audit_view; +# Test 7-a: dependent PROCEDURE has changed +# +# Note, this scenario is not supported, subject of Bug#12093 +# +create table t1 (a int); +create trigger t1_ai after insert on t1 for each row +call p1(new.a); +create procedure p1(a int) begin end; +prepare stmt from "insert into t1 (a) values (?)"; +set @var= 1; +execute stmt using @var; +drop procedure p1; +create procedure p1 (a int) begin end; +set @var= 2; +execute stmt using @var; +ERROR 42000: PROCEDURE test.p1 does not exist +# Cleanup +drop procedure p1; +call p_verify_reprepare_count(0); +SUCCESS + +# Test 7-b: dependent FUNCTION has changed +# +# Note, this scenario is not supported, subject of Bug#12093 +# +drop trigger t1_ai; +create trigger t1_ai after insert on t1 for each row +select f1(new.a+1) into @var; +create function f1 (a int) returns int return a; +prepare stmt from "insert into t1(a) values (?)"; +set @var=3; +execute stmt using @var; +select @var; +@var +4 +drop function f1; +create function f1 (a int) returns int return 0; +execute stmt using @var; +ERROR 42000: FUNCTION test.f1 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +drop function f1; +deallocate prepare stmt; +# Test 7-c: dependent VIEW has changed +# +# Note, this scenario is not functioning correctly, see +# Bug#33255 Trigger using views and view ddl : corrupted triggers +# and Bug #33000 Triggers do not detect changes in meta-data. +# +drop trigger t1_ai; +create table t2 (a int unique); +create table t3 (a int unique); +create view v1 as select a from t2; +create trigger t1_ai after insert on t1 for each row +insert into v1 (a) values (new.a); +# Demonstrate that the same bug is present +# without prepared statements +insert into t1 (a) values (5); +select * from t2; +a +5 +select * from t3; +a +drop view v1; +create view v1 as select a from t3; +insert into t1 (a) values (6); +ERROR 42S02: Table 'test.t2' doesn't exist +flush table t1; +insert into t1 (a) values (6); +select * from t2; +a +5 +select * from t3; +a +6 +prepare stmt from "insert into t1 (a) values (?)"; +set @var=7; +execute stmt using @var; +call p_verify_reprepare_count(0); +SUCCESS + +select * from t3; +a +6 +7 +select * from t2; +a +5 +drop view v1; +create view v1 as select a from t2; +set @var=8; +execute stmt using @var; +call p_verify_reprepare_count(0); +SUCCESS + +# +# Sic: the insert went into t3, even though the view now +# points at t2. This is because neither the merged view +# nor its prelocking list are affected by view DDL +# The binary log is of course wrong, since it is not +# using prepared statements +# +select * from t2; +a +5 +select * from t3; +a +6 +7 +8 +flush table t1; +set @var=9; +execute stmt using @var; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t2; +a +5 +9 +select * from t3; +a +6 +7 +8 +drop view v1; +drop table t1,t2,t3; +# Test 7-d: dependent TABLE has changed +create table t1 (a int); +create trigger t1_ai after insert on t1 for each row +insert into t2 (a) values (new.a); +create table t2 (a int); +prepare stmt from "insert into t1 (a) values (?)"; +set @var=1; +execute stmt using @var; +alter table t2 add column comment varchar(255); +set @var=2; +# Since the dependent table is tracked in the prelocked +# list of the prepared statement, invalidation happens +# and the statement is re-prepared. This is an unnecessary +# side effect, since the statement that *is* dependent +# on t2 definition is inside the trigger, and it is currently +# not reprepared (see the previous test case). +execute stmt using @var; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t1; +a +1 +2 +select * from t2; +a comment +1 NULL +2 NULL +drop table t1,t2; +# Test 7-e: dependent TABLE TRIGGER has changed +create table t1 (a int); +create trigger t1_ai after insert on t1 for each row +insert into t2 (a) values (new.a); +create table t2 (a int unique); +create trigger t2_ai after insert on t2 for each row +insert into t3 (a) values (new.a); +create table t3 (a int unique); +create table t4 (a int unique); +insert into t1 (a) values (1); +select * from t1 join t2 on (t1.a=t2.a) join t3 on (t2.a=t3.a); +a a a +1 1 1 +drop trigger t2_ai; +create trigger t2_ai after insert on t2 for each row +insert into t4 (a) values (new.a); +insert into t1 (a) values (2); +select * from t1 join t2 on (t1.a=t2.a) join t4 on (t2.a=t4.a); +a a a +2 2 2 +prepare stmt from "insert into t1 (a) values (?)"; +set @var=3; +execute stmt using @var; +select * from t1 join t2 on (t1.a=t2.a) join t4 on (t2.a=t4.a); +a a a +2 2 2 +3 3 3 +drop trigger t2_ai; +create trigger t2_ai after insert on t2 for each row +insert into t3 (a) values (new.a); +set @var=4; +execute stmt using @var; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t1 join t2 on (t1.a=t2.a) join t3 on (t2.a=t3.a); +a a a +1 1 1 +4 4 4 +select * from t1 join t2 on (t1.a=t2.a) join t4 on (t2.a=t4.a); +a a a +2 2 2 +3 3 3 +drop table t1, t2, t3, t4; +deallocate prepare stmt; ===================================================================== -Testing 8: TABLE -> TEMPORARY TABLE transitions +Part 8: TABLE -> TEMPORARY TABLE transitions ===================================================================== -drop table if exists t8; -create table t8(a int); -prepare stmt from 'select * from t8'; +create table t1 (a int); +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop table t1; +create temporary table t1 (a int); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t8; -create temporary table t8(a int); -set @expected = @expected + 1; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t8; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +deallocate prepare stmt; ===================================================================== -Testing 9: TABLE -> VIEW transitions +Part 9: TABLE -> VIEW transitions ===================================================================== -drop table if exists t9; -drop table if exists t9_b; -create table t9(a int); -create table t9_b(a int); -prepare stmt from 'select * from t9'; +create table t1 (a int); +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +create table t2 (a int); +create view t1 as select * from t2; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t9; -create view t9 as select * from t9_b; -set @expected = @expected + 1; -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view t9; -drop table t9_b; +call p_verify_reprepare_count(1); +SUCCESS + +drop view t1; +drop table t2; +deallocate prepare stmt; ===================================================================== -Testing 10: TEMPORARY TABLE -> NOTHING transitions +Part 10: TEMPORARY TABLE -> NOTHING transitions ===================================================================== -drop temporary table if exists t10; -create temporary table t10(a int); -prepare stmt from 'select * from t10'; +create temporary table t1 (a int); +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +drop temporary table t1; execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop temporary table t10; -execute stmt; -ERROR 42S02: Table 'test.t10' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -ERROR 42S02: Table 'test.t10' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; ===================================================================== -Testing 11: TEMPORARY TABLE -> TABLE transitions +Part 11: TEMPORARY TABLE -> TABLE transitions ===================================================================== -drop table if exists t11; -drop temporary table if exists t11; -create table t11(a int); -insert into t11(a) value (1); -create temporary table t11(a int); -prepare stmt from 'select * from t11'; +create table t1 (a int); +insert into t1 (a) value (1); +create temporary table t1 (a int); +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop temporary table t11; -set @expected = @expected + 1; +call p_verify_reprepare_count(0); +SUCCESS + +drop temporary table t1; execute stmt; a 1 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t1; a 1 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select * from t11; -a -1 -drop table t11; +drop table t1; +deallocate prepare stmt; ===================================================================== -Testing 12: TEMPORARY TABLE -> TEMPORARY TABLE (DDL) transitions +Part 12: TEMPORARY TABLE -> TEMPORARY TABLE (DDL) transitions ===================================================================== -drop temporary table if exists t12; -create temporary table t12(a int); -prepare stmt from 'select a from t12'; +create temporary table t1 (a int); +prepare stmt from "select a from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +drop temporary table t1; +create temporary table t1 (a int, b int); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop temporary table t12; -create temporary table t12(a int, b int); -set @expected = @expected + 1; -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select * from t12; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t1; a b -drop table t12; +drop temporary table t1; +deallocate prepare stmt; ===================================================================== -Testing 13: TEMPORARY TABLE -> VIEW transitions +Part 13: TEMPORARY TABLE -> VIEW transitions ===================================================================== -drop temporary table if exists t13; -drop table if exists t13_b; -create temporary table t13(a int); -create table t13_b(a int); -prepare stmt from 'select * from t13'; +create temporary table t1 (a int); +create table t2 (a int); +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +drop temporary table t1; +create view t1 as select * from t2; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop temporary table t13; -create view t13 as select * from t13_b; -set @expected = @expected + 1; -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view t13; -drop table t13_b; +call p_verify_reprepare_count(1); +SUCCESS + +drop view t1; +drop table t2; +deallocate prepare stmt; ===================================================================== -Testing 14: VIEW -> NOTHING transitions +Part 14: VIEW -> NOTHING transitions ===================================================================== -drop view if exists t14; -drop table if exists t14_b; -create table t14_b(a int); -create view t14 as select * from t14_b; -prepare stmt from 'select * from t14'; +create table t2 (a int); +create view t1 as select * from t2; +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop view t1; execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view t14; -set @expected = @expected + 1; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + execute stmt; -ERROR 42S02: Table 'test.t14' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @expected = @expected + 1; -execute stmt; -ERROR 42S02: Table 'test.t14' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t14_b; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +deallocate prepare stmt; ===================================================================== -Testing 15: VIEW -> TABLE transitions +Part 15: VIEW -> TABLE transitions ===================================================================== -drop view if exists t15; -drop table if exists t15_b; -create table t15_b(a int); -create view t15 as select * from t15_b; -prepare stmt from 'select * from t15'; +create table t2 (a int); +create view t1 as select * from t2; +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +drop view t1; +create table t1 (a int); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view t15; -create table t15(a int); -set @expected = @expected + 1; -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t15_b; -drop table t15; +call p_verify_reprepare_count(1); +SUCCESS + +drop table t2; +drop table t1; +deallocate prepare stmt; ===================================================================== -Testing 16: VIEW -> TEMPORARY TABLE transitions +Part 16: VIEW -> TEMPORARY TABLE transitions ===================================================================== -drop view if exists t16; -drop table if exists t16_b; -create table t16_b(a int); -create view t16 as select * from t16_b; -prepare stmt from 'select * from t16'; +create table t2 (a int); +insert into t2 (a) values (1); +create view t1 as select * from t2; +prepare stmt from "select * from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +1 +call p_verify_reprepare_count(0); +SUCCESS + +create temporary table t1 (a int); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view t16; -create temporary table t16(a int); -set @expected = @expected + 1; +call p_verify_reprepare_count(1); +SUCCESS + +drop view t1; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t16_b; -drop temporary table t16; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +drop temporary table t1; +deallocate prepare stmt; ===================================================================== -Testing 17: VIEW -> VIEW (DDL) transitions +Part 17: VIEW -> VIEW (DDL) transitions ===================================================================== -drop view if exists t17; -drop table if exists t17_b; -create table t17_b(a int); -insert into t17_b values (10), (20), (30); -create view t17 as select a, 2*a as b, 3*a as c from t17_b; -select * from t17; +create table t2 (a int); +insert into t2 values (10), (20), (30); +create view t1 as select a, 2*a as b, 3*a as c from t2; +select * from t1; a b c 10 20 30 20 40 60 30 60 90 -prepare stmt from 'select * from t17'; +prepare stmt from "select * from t1"; execute stmt; a b c 10 20 30 20 40 60 30 60 90 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop view t1; +create view t1 as select a, 2*a as b, 5*a as c from t2; +select * from t1; +a b c +10 20 50 +20 40 100 +30 60 150 +# Currently a different result from conventional statements. +# A view is inlined once at prepare, later on view DDL +# does not affect prepared statement and it is not re-prepared. execute stmt; a b c 10 20 30 20 40 60 30 60 90 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view t17; -create view t17 as select a, 2*a as b, 5*a as c from t17_b; -select * from t17; -a b c -10 20 50 -20 40 100 -30 60 150 -set @expected = @expected + 1; +call p_verify_reprepare_count(0); +SUCCESS + +flush table t2; execute stmt; a b c 10 20 50 20 40 100 30 60 150 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + +drop table t2; +drop view t1; +deallocate prepare stmt; +===================================================================== +Part 18: VIEW -> VIEW (VIEW dependencies) transitions +===================================================================== +# Part 18a: dependent function has changed +create table t1 (a int); +insert into t1 (a) values (1), (2), (3); +create function f1() returns int return (select max(a) from t1); +create view v1 as select f1(); +prepare stmt from "select * from v1"; +execute stmt; +f1() +3 +execute stmt; +f1() +3 +call p_verify_reprepare_count(0); +SUCCESS + +drop function f1; +create function f1() returns int return 2; +# XXX: Bug#12093. We only get a different error +# message because the non-existing procedure error is masked +# by the view. +execute stmt; +ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them +execute stmt; +ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them +call p_verify_reprepare_count(0); +SUCCESS + +# Part 18b: dependent procedure has changed (referred to via a function) +create table t2 (a int); +insert into t2 (a) values (4), (5), (6); +drop function f1; +create function f1() returns int +begin +declare x int; +call p1(x); +return x; +end| +create procedure p1(out x int) select max(a) from t1 into x; +prepare stmt from "select * from v1"; +execute stmt; +f1() +3 +execute stmt; +f1() +3 +call p_verify_reprepare_count(0); +SUCCESS + +drop procedure p1; +create procedure p1(out x int) select max(a) from t2 into x; +# XXX: bug. The prelocked list is not invalidated +# and we keep opening table t1, whereas the procedure +execute stmt; +ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them +call p_verify_reprepare_count(0); +SUCCESS + +flush table t1; +execute stmt; +f1() +6 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +f1() +6 +# Test 18-c: dependent VIEW has changed +drop view v1; +create view v2 as select a from t1; +create view v1 as select * from v2; +prepare stmt from "select * from v1"; execute stmt; -a b c -10 20 50 -20 40 100 -30 60 150 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t17_b; -drop view t17; -===================================================================== -Testing 18: VIEW -> VIEW (VIEW dependencies) transitions -===================================================================== -drop table if exists t18; -drop table if exists t18_dependent_table; -drop view if exists t18_func; -drop view if exists t18_view; -drop view if exists t18_table; -drop function if exists view_func; -drop view if exists view_view; -create table t18(a int); -insert into t18 values (1), (2), (3); -create function view_func(x int) returns int -return x+1; -create view view_view as select "view v1" as reason from dual; -create table t18_dependent_table(a int); -create view t18_func as select a, view_func(a) as b from t18; -create view t18_view as select a, reason as b from t18, view_view; -create view t18_table as select * from t18; -prepare stmt_func from 'select * from t18_func'; -execute stmt_func; -a b -1 2 -2 3 -3 4 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_func; -a b -1 2 -2 3 -3 4 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function view_func; -create function view_func(x int) returns int -return x*x; -set @expected = @expected + 1; -execute stmt_func; -a b -1 1 -2 4 -3 9 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_func; -a b -1 1 -2 4 -3 9 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -prepare stmt_view from 'select * from t18_view'; -execute stmt_view; -a b -1 view v1 -2 view v1 -3 view v1 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_view; -a b -1 view v1 -2 view v1 -3 view v1 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop view view_view; -create view view_view as select "view v2" as reason from dual; -set @expected = @expected + 1; -execute stmt_view; -a b -1 view v2 -2 view v2 -3 view v2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_view; -a b -1 view v2 -2 view v2 -3 view v2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -prepare stmt_table from 'select * from t18_table'; -execute stmt_table; a 1 2 3 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_table; +execute stmt; a 1 2 3 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t18 add column comments varchar(50) default NULL; -set @expected = @expected + 1; -execute stmt_table; +call p_verify_reprepare_count(0); +SUCCESS + +drop view v2; +create view v2 as select a from t2; +execute stmt; a 1 2 3 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_table; +execute stmt; a 1 2 3 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t18; -drop table t18_dependent_table; -drop view t18_func; -drop view t18_view; -drop view t18_table; -drop function view_func; -drop view view_view; +call p_verify_reprepare_count(0); +SUCCESS + +flush table t1; +execute stmt; +a +4 +5 +6 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +a +4 +5 +6 +# Test 18-d: dependent TABLE has changed +drop view v2; +create table v2 as select * from t1; +execute stmt; +a +1 +2 +3 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +a +1 +2 +3 +call p_verify_reprepare_count(0); +SUCCESS + +drop table v2; +create table v2 (a int unique) as select * from t2; +execute stmt; +a +4 +5 +6 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +a +4 +5 +6 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 18-e: dependent TABLE trigger has changed +prepare stmt from "insert into v1 (a) values (?)"; +set @var= 7; +execute stmt using @var; +call p_verify_reprepare_count(0); +SUCCESS + +create trigger v2_bi before insert on v2 for each row set @message="v2_bi"; +set @var=8; +execute stmt using @var; +call p_verify_reprepare_count(1); +SUCCESS + +select @message; +@message +v2_bi +drop trigger v2_bi; +set @message=null; +set @var=9; +execute stmt using @var; +call p_verify_reprepare_count(1); +SUCCESS + +select @message; +@message +NULL +create trigger v2_bi after insert on v2 for each row set @message="v2_ai"; +set @var= 10; +execute stmt using @var; +call p_verify_reprepare_count(1); +SUCCESS + +select @message; +@message +v2_ai +select * from v1; +a +4 +5 +6 +7 +8 +9 +10 +# Cleanup +drop table if exists t1, t2, v1, v2; +drop view if exists v1, v2; +drop function f1; +drop procedure p1; +deallocate prepare stmt; ===================================================================== -Testing 19: Special tables (INFORMATION_SCHEMA) +Part 19: Special tables (INFORMATION_SCHEMA) ===================================================================== -drop procedure if exists proc_19; prepare stmt from -'select ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE +"select ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE from INFORMATION_SCHEMA.ROUTINES where - routine_name=\'proc_19\''; -create procedure proc_19() select "hi there"; + routine_name='p1'"; +create procedure p1() select "hi there"; execute stmt; ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE -test proc_19 PROCEDURE -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +test p1 PROCEDURE execute stmt; ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE -test proc_19 PROCEDURE -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure proc_19; -create procedure proc_19() select "hi there, again"; +test p1 PROCEDURE +drop procedure p1; +create procedure p1() select "hi there, again"; execute stmt; ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE -test proc_19 PROCEDURE -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +test p1 PROCEDURE execute stmt; ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE -test proc_19 PROCEDURE -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure proc_19; +test p1 PROCEDURE +call p_verify_reprepare_count(0); +SUCCESS + +drop procedure p1; +deallocate prepare stmt; ===================================================================== -Testing 20: Special tables (log tables) +Part 20: Special tables (log tables) ===================================================================== prepare stmt from -'select * from mysql.general_log where argument=\'IMPOSSIBLE QUERY STRING\''; +"select * from mysql.general_log where argument='IMPOSSIBLE QUERY STRING'"; execute stmt; -event_time user_host thread_id server_id command_type argument -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; -event_time user_host thread_id server_id command_type argument -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; -event_time user_host thread_id server_id command_type argument -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; -event_time user_host thread_id server_id command_type argument -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; ===================================================================== -Testing 21: Special tables (system tables) +Part 21: Special tables (system tables) ===================================================================== -drop procedure if exists proc_21; prepare stmt from -'select type, db, name from mysql.proc where name=\'proc_21\''; -create procedure proc_21() select "hi there"; +"select type, db, name from mysql.proc where name='p1'"; +create procedure p1() select "hi there"; execute stmt; type db name -PROCEDURE test proc_21 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +PROCEDURE test p1 execute stmt; type db name -PROCEDURE test proc_21 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure proc_21; -create procedure proc_21() select "hi there, again"; +PROCEDURE test p1 +drop procedure p1; +create procedure p1() select "hi there, again"; execute stmt; type db name -PROCEDURE test proc_21 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +PROCEDURE test p1 execute stmt; type db name -PROCEDURE test proc_21 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure proc_21; +PROCEDURE test p1 +call p_verify_reprepare_count(0); +SUCCESS + +drop procedure p1; +deallocate prepare stmt; ===================================================================== -Testing 22: Special tables (views temp tables) +Part 22: Special tables (views temp tables) ===================================================================== -drop table if exists t22_b; -drop view if exists t22; -create table t22_b(a int); -create algorithm=temptable view t22 as select a*a as a2 from t22_b; -show create view t22; +create table t1 (a int); +create algorithm=temptable view v1 as select a*a as a2 from t1; +# Using a temporary table internally should not confuse the prepared +# statement code, and should not raise ER_PS_INVALIDATED errors +show create view v1; View Create View character_set_client collation_connection -t22 CREATE ALGORITHM=TEMPTABLE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `t22` AS select (`t22_b`.`a` * `t22_b`.`a`) AS `a2` from `t22_b` latin1 latin1_swedish_ci -prepare stmt from 'select * from t22'; -insert into t22_b values (1), (2), (3); +v1 CREATE ALGORITHM=TEMPTABLE DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select (`t1`.`a` * `t1`.`a`) AS `a2` from `t1` latin1 latin1_swedish_ci +prepare stmt from "select * from v1"; +insert into t1 values (1), (2), (3); execute stmt; a2 1 4 9 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; a2 1 4 9 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -insert into t22_b values (4), (5), (6); +insert into t1 values (4), (5), (6); execute stmt; a2 1 @@ -1998,16 +983,6 @@ a2 16 25 36 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; a2 1 @@ -2016,1333 +991,291 @@ a2 16 25 36 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t22_b; -drop view t22; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +drop view v1; ===================================================================== -Testing 23: Special tables (internal join tables) +Part 23: Special statements ===================================================================== -drop table if exists t23_a; -drop table if exists t23_b; -create table t23_a(a int); -create table t23_b(b int); -prepare stmt from 'select * from t23_a join t23_b'; -insert into t23_a values (1), (2), (3); -insert into t23_b values (10), (20), (30); +# SQLCOM_ALTER_TABLE: +create table t1 (a int); +prepare stmt from "alter table t1 add column b int"; execute stmt; -a b -1 10 -2 10 -3 10 -1 20 -2 20 -3 20 -1 30 -2 30 -3 30 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop table t1; +create table t1 (a1 int, a2 int); +# t1 has changed, and it's does not lead to reprepare execute stmt; -a b -1 10 -2 10 -3 10 -1 20 -2 20 -3 20 -1 30 -2 30 -3 30 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -insert into t23_a values (4); -insert into t23_b values (40); +alter table t1 drop column b; execute stmt; -a b -1 10 -2 10 -3 10 -4 10 -1 20 -2 20 -3 20 -4 20 -1 30 -2 30 -3 30 -4 30 -1 40 -2 40 -3 40 -4 40 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +alter table t1 drop column b; execute stmt; -a b -1 10 -2 10 -3 10 -4 10 -1 20 -2 20 -3 20 -4 20 -1 30 -2 30 -3 30 -4 30 -1 40 -2 40 -3 40 -4 40 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t23_a; -drop table t23_b; -===================================================================== -Testing 24: Special statements -===================================================================== -drop table if exists t24_alter; -create table t24_alter(a int); -prepare stmt from 'alter table t24_alter add column b int'; -execute stmt; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_alter; -create table t24_alter(a1 int, a2 int); -execute stmt; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_alter drop column b; -execute stmt; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_alter drop column b; -execute stmt; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_alter; -drop table if exists t24_repair; -create table t24_repair(a int); -insert into t24_repair values (1), (2), (3); -prepare stmt from 'repair table t24_repair'; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +# SQLCOM_REPAIR: +create table t1 (a int); +insert into t1 values (1), (2), (3); +prepare stmt from "repair table t1"; execute stmt; Table Op Msg_type Msg_text -test.t24_repair repair status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_repair; -create table t24_repair(a1 int, a2 int); -insert into t24_repair values (1, 10), (2, 20), (3, 30); +test.t1 repair status OK execute stmt; Table Op Msg_type Msg_text -test.t24_repair repair status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_repair add column b varchar(50) default NULL; +test.t1 repair status OK +drop table t1; +create table t1 (a1 int, a2 int); +insert into t1 values (1, 10), (2, 20), (3, 30); +# t1 has changed, and it's does not lead to reprepare execute stmt; Table Op Msg_type Msg_text -test.t24_repair repair status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_repair drop column b; +test.t1 repair status OK +alter table t1 add column b varchar(50) default NULL; execute stmt; Table Op Msg_type Msg_text -test.t24_repair repair status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_repair; -drop table if exists t24_analyze; -create table t24_analyze(a int); -insert into t24_analyze values (1), (2), (3); -prepare stmt from 'analyze table t24_analyze'; +test.t1 repair status OK +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 drop column b; execute stmt; Table Op Msg_type Msg_text -test.t24_analyze analyze status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_analyze; -create table t24_analyze(a1 int, a2 int); -insert into t24_analyze values (1, 10), (2, 20), (3, 30); +test.t1 repair status OK +call p_verify_reprepare_count(0); +SUCCESS + +# SQLCOM_ANALYZE: +prepare stmt from "analyze table t1"; execute stmt; Table Op Msg_type Msg_text -test.t24_analyze analyze status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_analyze add column b varchar(50) default NULL; +test.t1 analyze status OK +drop table t1; +create table t1 (a1 int, a2 int); +insert into t1 values (1, 10), (2, 20), (3, 30); +# t1 has changed, and it's not a problem execute stmt; Table Op Msg_type Msg_text -test.t24_analyze analyze status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_analyze drop column b; +test.t1 analyze status OK +alter table t1 add column b varchar(50) default NULL; execute stmt; Table Op Msg_type Msg_text -test.t24_analyze analyze status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_analyze; -drop table if exists t24_optimize; -create table t24_optimize(a int); -insert into t24_optimize values (1), (2), (3); -prepare stmt from 'optimize table t24_optimize'; +test.t1 analyze status OK +alter table t1 drop column b; execute stmt; Table Op Msg_type Msg_text -test.t24_optimize optimize status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_optimize; -create table t24_optimize(a1 int, a2 int); -insert into t24_optimize values (1, 10), (2, 20), (3, 30); +test.t1 analyze status OK +call p_verify_reprepare_count(0); +SUCCESS + +# SQLCOM_OPTIMIZE: +prepare stmt from "optimize table t1"; execute stmt; Table Op Msg_type Msg_text -test.t24_optimize optimize status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_optimize add column b varchar(50) default NULL; +test.t1 optimize status Table is already up to date +drop table t1; +create table t1 (a1 int, a2 int); +insert into t1 values (1, 10), (2, 20), (3, 30); +# t1 has changed, and it's not a problem execute stmt; Table Op Msg_type Msg_text -test.t24_optimize optimize status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t24_optimize drop column b; +test.t1 optimize status OK +alter table t1 add column b varchar(50) default NULL; execute stmt; Table Op Msg_type Msg_text -test.t24_optimize optimize status OK -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_optimize; -drop procedure if exists changing_proc; -prepare stmt from 'show create procedure changing_proc'; +test.t1 optimize status OK +alter table t1 drop column b; execute stmt; -ERROR 42000: PROCEDURE changing_proc does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +Table Op Msg_type Msg_text +test.t1 optimize status OK +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +# SQLCOM_SHOW_CREATE_PROC: +prepare stmt from "show create procedure p1"; execute stmt; -ERROR 42000: PROCEDURE changing_proc does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -create procedure changing_proc() begin end; +ERROR 42000: PROCEDURE p1 does not exist execute stmt; -Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -changing_proc CREATE DEFINER=`root`@`localhost` PROCEDURE `changing_proc`() -begin end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +ERROR 42000: PROCEDURE p1 does not exist +create procedure p1() begin end; execute stmt; -Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -changing_proc CREATE DEFINER=`root`@`localhost` PROCEDURE `changing_proc`() -begin end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure changing_proc; -create procedure changing_proc(x int, y int) begin end; execute stmt; -Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -changing_proc CREATE DEFINER=`root`@`localhost` PROCEDURE `changing_proc`(x int, y int) -begin end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop procedure p1; +create procedure p1(x int, y int) begin end; execute stmt; -Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation -changing_proc CREATE DEFINER=`root`@`localhost` PROCEDURE `changing_proc`(x int, y int) -begin end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop procedure changing_proc; execute stmt; -ERROR 42000: PROCEDURE changing_proc does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop procedure p1; execute stmt; -ERROR 42000: PROCEDURE changing_proc does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function if exists changing_func; -prepare stmt from 'show create function changing_func'; +ERROR 42000: PROCEDURE p1 does not exist execute stmt; -ERROR 42000: FUNCTION changing_func does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +ERROR 42000: PROCEDURE p1 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +# SQLCOM_SHOW_CREATE_FUNC: +prepare stmt from "show create function f1"; execute stmt; -ERROR 42000: FUNCTION changing_func does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -create function changing_func() returns int return 0; +ERROR 42000: FUNCTION f1 does not exist execute stmt; -Function sql_mode Create Function character_set_client collation_connection Database Collation -changing_func CREATE DEFINER=`root`@`localhost` FUNCTION `changing_func`() RETURNS int(11) -return 0 latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +ERROR 42000: FUNCTION f1 does not exist +create function f1() returns int return 0; execute stmt; -Function sql_mode Create Function character_set_client collation_connection Database Collation -changing_func CREATE DEFINER=`root`@`localhost` FUNCTION `changing_func`() RETURNS int(11) -return 0 latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function changing_func; -create function changing_func(x int, y int) returns int return x+y; execute stmt; -Function sql_mode Create Function character_set_client collation_connection Database Collation -changing_func CREATE DEFINER=`root`@`localhost` FUNCTION `changing_func`(x int, y int) RETURNS int(11) -return x+y latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop function f1; +create function f1(x int, y int) returns int return x+y; execute stmt; -Function sql_mode Create Function character_set_client collation_connection Database Collation -changing_func CREATE DEFINER=`root`@`localhost` FUNCTION `changing_func`(x int, y int) RETURNS int(11) -return x+y latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function changing_func; execute stmt; -ERROR 42000: FUNCTION changing_func does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +drop function f1; execute stmt; -ERROR 42000: FUNCTION changing_func does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table if exists t24_trigger; -create table t24_trigger(a int); -prepare stmt from 'show create trigger t24_bi;'; +ERROR 42000: FUNCTION f1 does not exist +execute stmt; +ERROR 42000: FUNCTION f1 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +# SQLCOM_SHOW_CREATE_TRIGGER: +create table t1 (a int); +prepare stmt from "show create trigger t1_bi"; execute stmt; ERROR HY000: Trigger does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; ERROR HY000: Trigger does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -create trigger t24_bi before insert on t24_trigger for each row -begin -set @message= "t24_bi"; -end -$$ +create trigger t1_bi before insert on t1 for each row set @message= "t1_bi"; execute stmt; -Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -t24_bi CREATE DEFINER=`root`@`localhost` trigger t24_bi before insert on t24_trigger for each row -begin -set @message= "t24_bi"; -end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; -Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -t24_bi CREATE DEFINER=`root`@`localhost` trigger t24_bi before insert on t24_trigger for each row -begin -set @message= "t24_bi"; -end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop trigger t24_bi; -create trigger t24_bi before insert on t24_trigger for each row -begin -set @message= "t24_bi (2)"; -end -$$ -set @expected = @expected + 1; +drop trigger t1_bi; +create trigger t1_bi before insert on t1 for each row set @message= "t1_bi (2)"; execute stmt; -Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -t24_bi CREATE DEFINER=`root`@`localhost` trigger t24_bi before insert on t24_trigger for each row -begin -set @message= "t24_bi (2)"; -end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; -Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation -t24_bi CREATE DEFINER=`root`@`localhost` trigger t24_bi before insert on t24_trigger for each row -begin -set @message= "t24_bi (2)"; -end latin1 latin1_swedish_ci latin1_swedish_ci -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop trigger t24_bi; +drop trigger t1_bi; execute stmt; ERROR HY000: Trigger does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; ERROR HY000: Trigger does not exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t24_trigger; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +deallocate prepare stmt; ===================================================================== -Testing 25: Testing the strength of TABLE_SHARE version +Part 24: Testing the strength of TABLE_SHARE version ===================================================================== -drop table if exists t25_num_col; -create table t25_num_col(a int); -prepare stmt from 'select a from t25_num_col'; +# Test 24-a: number of columns +create table t1 (a int); +prepare stmt from "select a from t1"; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 add column b varchar(50) default NULL; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_num_col add column b varchar(50) default NULL; -set @expected = @expected + 1; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-b: column name +alter table t1 change b c int; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_num_col; -drop table if exists t25_col_name; -create table t25_col_name(a int); -prepare stmt from 'select * from t25_col_name'; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-c: column type +alter table t1 change a a varchar(10); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_col_name change a b int; -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_col_name; -drop table if exists t25_col_type; -create table t25_col_type(a int); -prepare stmt from 'select * from t25_col_type'; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-d: column type length +alter table t1 change a a varchar(20); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_col_type change a a varchar(10); -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_col_type; -drop table if exists t25_col_type_length; -create table t25_col_type_length(a varchar(10)); -prepare stmt from 'select * from t25_col_type_length'; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-e: column NULL property +alter table t1 change a a varchar(20) NOT NULL; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_col_type_length change a a varchar(20); -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_col_type_length; -drop table if exists t25_col_null; -create table t25_col_null(a varchar(10)); -prepare stmt from 'select * from t25_col_null'; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-f: column DEFAULT +alter table t1 change c c int DEFAULT 20; execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_col_null change a a varchar(10) NOT NULL; -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_col_null; -drop table if exists t25_col_default; -create table t25_col_default(a int, b int DEFAULT 10); -prepare stmt from 'insert into t25_col_default(a) values (?)'; -set @val=1; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=2; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_col_default change b b int DEFAULT 20; -set @val=3; -set @expected = @expected + 1; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @val=4; -execute stmt using @val; -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -select * from t25_col_default; -a b -1 10 -2 10 -3 20 -4 20 -drop table t25_col_default; -drop table if exists t25_index; -create table t25_index(a varchar(10)); -prepare stmt from 'select * from t25_index'; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-g: number of keys +create unique index t1_a_idx on t1 (a); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -create index i1 on t25_index(a); -set @expected = @expected + 1; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + +# Test 24-h: changing index uniqueness +drop index t1_a_idx on t1; +create index t1_a_idx on t1 (a); execute stmt; a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_index; -drop table if exists t25_index_unique; -create table t25_index_unique(a varchar(10), b varchar(10)); -create index i1 on t25_index_unique(a, b); -show create table t25_index_unique; -Table Create Table -t25_index_unique CREATE TABLE `t25_index_unique` ( - `a` varchar(10) DEFAULT NULL, - `b` varchar(10) DEFAULT NULL, - KEY `i1` (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -prepare stmt from 'select * from t25_index_unique'; +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; -a b -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a b -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -alter table t25_index_unique drop index i1; -create unique index i1 on t25_index_unique(a, b); -show create table t25_index_unique; -Table Create Table -t25_index_unique CREATE TABLE `t25_index_unique` ( - `a` varchar(10) DEFAULT NULL, - `b` varchar(10) DEFAULT NULL, - UNIQUE KEY `i1` (`a`,`b`) -) ENGINE=MyISAM DEFAULT CHARSET=latin1 -set @expected = @expected + 1; -execute stmt; -a b -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -a b -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop table t25_index_unique; +a +call p_verify_reprepare_count(0); +SUCCESS + +# Cleanup +drop table t1; +deallocate prepare stmt; ===================================================================== Testing reported bugs ===================================================================== -drop table if exists table_12093; -drop function if exists func_12093; -drop function if exists func_12093_unrelated; -drop procedure if exists proc_12093; -create table table_12093(a int); -create function func_12093() -returns int -begin -return (select count(*) from table_12093); -end// -create procedure proc_12093(a int) -begin -select * from table_12093; -end// -create function func_12093_unrelated() returns int return 2; -create procedure proc_12093_unrelated() begin end; -prepare stmt_sf from 'select func_12093();'; -prepare stmt_sp from 'call proc_12093(func_12093())'; -execute stmt_sf; -func_12093() -0 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_sp; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function func_12093_unrelated; -drop procedure proc_12093_unrelated; -execute stmt_sf; -func_12093() -0 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_sp; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_sf; -func_12093() -0 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt_sp; -a -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -deallocate prepare stmt_sf; -deallocate prepare stmt_sp; -drop table table_12093; -drop function func_12093; -drop procedure proc_12093; -drop function if exists func_21294; -create function func_21294() returns int return 10; -prepare stmt from "select func_21294()"; -execute stmt; -func_21294() -10 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function func_21294; -create function func_21294() returns int return 10; -execute stmt; -func_21294() -10 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -drop function func_21294; -create function func_21294() returns int return 20; -set @expected = @expected + 1; -execute stmt; -func_21294() -20 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -deallocate prepare stmt; -drop function func_21294; +# +# Bug#27420 A combination of PS and view operations cause +# error + assertion on shutdown +# drop table if exists t_27420_100; drop table if exists t_27420_101; drop view if exists v_27420; @@ -3353,55 +1286,36 @@ insert into t_27420_101 values (1), (2); create view v_27420 as select t_27420_100.a X, t_27420_101.a Y from t_27420_100, t_27420_101 where t_27420_100.a=t_27420_101.a; -prepare stmt from 'select * from v_27420'; +prepare stmt from "select * from v_27420"; execute stmt; X Y 1 1 2 2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + drop view v_27420; create table v_27420(X int, Y int); -set @expected = @expected + 1; execute stmt; X Y -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + drop table v_27420; create table v_27420 (a int, b int, filler char(200)); -set @expected = @expected + 1; execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -deallocate prepare stmt; +a b filler +call p_verify_reprepare_count(1); +SUCCESS + drop table t_27420_100; drop table t_27420_101; drop table v_27420; +deallocate prepare stmt; +# +# Bug#27430 Crash in subquery code when in PS and table DDL changed +# after PREPARE +# drop table if exists t_27430_1; drop table if exists t_27430_2; create table t_27430_1 (a int not null, oref int not null, key(a)); @@ -3418,39 +1332,16 @@ insert into t_27430_2 values (1234, 3), (1234, 4); prepare stmt from -'select oref, a, a in (select a from t_27430_1 where oref=t_27430_2.oref) Z from t_27430_2'; +"select oref, a, a in (select a from t_27430_1 where oref=t_27430_2.oref) Z from t_27430_2"; execute stmt; oref a Z 1 1 1 2 2 0 3 1234 0 4 1234 0 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -execute stmt; -oref a Z -1 1 1 -2 2 0 -3 1234 0 -4 1234 0 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + drop table t_27430_1, t_27430_2; create table t_27430_1 (a int, oref int, key(a)); insert into t_27430_1 values @@ -3465,35 +1356,22 @@ insert into t_27430_2 values (2,2), (NULL, 3), (NULL, 4); -set @expected = @expected + 1; execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -set @expected = @expected + 1; -execute stmt; -ERROR HY000: Prepared statement result set has changed, rebind needed -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -deallocate prepare stmt; +oref a Z +1 1 1 +2 2 0 +3 NULL NULL +4 NULL 0 +call p_verify_reprepare_count(1); +SUCCESS + drop table t_27430_1; drop table t_27430_2; +deallocate prepare stmt; +# +# Bug#27690 Re-execution of prepared statement after table +# was replaced with a view crashes +# drop table if exists t_27690_1; drop view if exists v_27690_1; drop table if exists v_27690_2; @@ -3501,66 +1379,28 @@ create table t_27690_1 (a int, b int); insert into t_27690_1 values (1,1),(2,2); create table v_27690_1 as select * from t_27690_1; create table v_27690_2 as select * from t_27690_1; -prepare stmt from 'select * from v_27690_1, v_27690_2'; +prepare stmt from "select * from v_27690_1, v_27690_2"; execute stmt; a b a b 1 1 1 1 2 2 1 1 1 1 2 2 2 2 2 2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; a b a b 1 1 1 1 2 2 1 1 1 1 2 2 2 2 2 2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 drop table v_27690_1; execute stmt; ERROR 42S02: Table 'test.v_27690_1' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 execute stmt; ERROR 42S02: Table 'test.v_27690_1' doesn't exist -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(0); +SUCCESS + create view v_27690_1 as select A.a, A.b from t_27690_1 A, t_27690_1 B; -set @expected = @expected + 1; execute stmt; a b a b 1 1 1 1 @@ -3571,16 +1411,9 @@ a b a b 2 2 2 2 1 1 2 2 2 2 2 2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 +call p_verify_reprepare_count(1); +SUCCESS + execute stmt; a b a b 1 1 1 1 @@ -3591,17 +1424,84 @@ a b a b 2 2 2 2 1 1 2 2 2 2 2 2 -SELECT CASE (VARIABLE_VALUE - @base_count - @expected) -WHEN 0 THEN "PASSED" - ELSE "FAILED" - END -AS `CHECK`, -(VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS -where variable_name='COM_STMT_REPREPARE' ; -CHECK OFFSET -PASSED 0 -deallocate prepare stmt; +call p_verify_reprepare_count(0); +SUCCESS + drop table t_27690_1; drop view v_27690_1; drop table v_27690_2; +deallocate prepare stmt; +#===================================================================== +# TODO: fix the below two bugs and modify their tests +# +# Bug#21294 Executing a prepared statement that executes +# a stored function which was recreat +# +create function f1() returns int return 10; +prepare stmt from "select f1()"; +execute stmt; +f1() +10 +drop function f1; +create function f1() returns int return 10; +execute stmt; +ERROR 42000: FUNCTION test.f1 does not exist +drop function f1; +create function f1() returns int return 20; +execute stmt; +ERROR 42000: FUNCTION test.f1 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +drop function f1; +deallocate prepare stmt; +# +# Bug#12093 SP not found on second PS execution if another thread drops +# other SP in between +# +drop table if exists t_12093; +drop function if exists f_12093; +drop function if exists f_12093_unrelated; +drop procedure if exists p_12093; +create table t_12093 (a int); +create function f_12093() returns int return (select count(*) from t_12093); +create procedure p_12093(a int) select * from t_12093; +create function f_12093_unrelated() returns int return 2; +create procedure p_12093_unrelated() begin end; +prepare stmt_sf from 'select f_12093();'; +prepare stmt_sp from 'call p_12093(f_12093())'; +execute stmt_sf; +f_12093() +0 +execute stmt_sp; +a +drop function f_12093_unrelated; +drop procedure p_12093_unrelated; +# XXX: bug +execute stmt_sf; +ERROR 42000: FUNCTION test.f_12093 does not exist +# XXX: bug +execute stmt_sp; +ERROR 42000: PROCEDURE test.p_12093 does not exist +# XXX: bug +execute stmt_sf; +ERROR 42000: FUNCTION test.f_12093 does not exist +# XXX: bug +execute stmt_sp; +ERROR 42000: PROCEDURE test.p_12093 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +drop table t_12093; +drop function f_12093; +drop procedure p_12093; +deallocate prepare stmt_sf; +deallocate prepare stmt_sp; +# Cleanup +# +drop temporary table if exists t1, t2, t3; +drop table if exists t1, t2, t3, v1, v2; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists v1, v2; diff --git a/mysql-test/t/ps_ddl.test b/mysql-test/t/ps_ddl.test index c824d17063b..d3df035444c 100644 --- a/mysql-test/t/ps_ddl.test +++ b/mysql-test/t/ps_ddl.test @@ -47,1629 +47,1082 @@ # - Part 20: Special tables (log tables) # - Part 21: Special tables (system tables) # - Part 22: Special tables (views temp tables) -# - Part 23: Special tables (internal join tables) -# - Part 24: Special statements -# - Part 25: Testing the strength of TABLE_SHARE version - -let $base_count = SELECT VARIABLE_VALUE from -INFORMATION_SCHEMA.SESSION_STATUS where variable_name='COM_STMT_REPREPARE' -into @base_count ; - -let $check = SELECT CASE (VARIABLE_VALUE - @base_count - @expected) - WHEN 0 THEN "PASSED" - ELSE "FAILED" - END - AS `CHECK`, - (VARIABLE_VALUE - @base_count - @expected) AS `OFFSET` - from INFORMATION_SCHEMA.SESSION_STATUS - where variable_name='COM_STMT_REPREPARE' ; - -eval $base_count; -set @expected = 0; - -# Maintainer: -# When not expecting a re-prepare, write the test like this: -# execute stmt; -# eval $check; -# -# When expecting a re-prepare, write the test like this: -# set @expected = @expected + 1; -# execute stmt; -# eval $check; -# - ---echo ===================================================================== ---echo Testing 1: NOTHING -> TABLE transitions ---echo ===================================================================== - +# - Part 23: Special statements +# - Part 24: Testing the strength of TABLE_SHARE version --disable_warnings -drop table if exists t1; +drop temporary table if exists t1, t2, t3; +drop table if exists t1, t2, t3; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists v1, v2; --enable_warnings +delimiter |; +create procedure p_verify_reprepare_count(expected int) +begin + declare old_reprepare_count int default @reprepare_count; + + select variable_value from + information_schema.session_status where + variable_name='com_stmt_reprepare' + into @reprepare_count; + + if old_reprepare_count + expected <> @reprepare_count then + select concat("Expected: ", expected, + ", actual: ", @reprepare_count - old_reprepare_count) + as "ERROR"; + else + select '' as "SUCCESS"; + end if; +end| +delimiter ;| +set @reprepare_count= 0; +flush status; + +--echo ===================================================================== +--echo Part 1: NOTHING -> TABLE transitions +--echo ===================================================================== + # can not be tested since prepare failed --error ER_NO_SUCH_TABLE -prepare stmt from 'select * from t1'; +prepare stmt from "select * from t1"; --echo ===================================================================== ---echo Testing 2: NOTHING -> TEMPORARY TABLE transitions +--echo Part 2: NOTHING -> TEMPORARY TABLE transitions --echo ===================================================================== # can not be tested --echo ===================================================================== ---echo Testing 3: NOTHING -> VIEW transitions +--echo Part 3: NOTHING -> VIEW transitions --echo ===================================================================== # can not be tested --echo ===================================================================== ---echo Testing 4: TABLE -> NOTHING transitions +--echo Part 4: TABLE -> NOTHING transitions --echo ===================================================================== ---disable_warnings -drop table if exists t4; ---enable_warnings +create table t1 (a int); -create table t4(a int); - -prepare stmt from 'select * from t4'; +prepare stmt from "select * from t1"; execute stmt; -eval $check; +call p_verify_reprepare_count(0); execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t4; +drop table t1; --error ER_NO_SUCH_TABLE execute stmt; -eval $check; +call p_verify_reprepare_count(0); --error ER_NO_SUCH_TABLE execute stmt; -eval $check; +call p_verify_reprepare_count(0); +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 5: TABLE -> TABLE (DDL) transitions +--echo Part 5: TABLE -> TABLE (DDL) transitions --echo ===================================================================== ---disable_warnings -drop table if exists t5; ---enable_warnings +create table t1 (a int); -create table t5(a int); - -prepare stmt from 'select a from t5'; +prepare stmt from "select a from t1"; execute stmt; -eval $check; +call p_verify_reprepare_count(0); execute stmt; -eval $check; +call p_verify_reprepare_count(0); -alter table t5 add column (b int); +alter table t1 add column (b int); -set @expected = @expected + 1; execute stmt; -eval $check; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t5; +drop table t1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 6: TABLE -> TABLE (TRIGGER) transitions +--echo Part 6: TABLE -> TABLE (TRIGGER) transitions --echo ===================================================================== -# -# Test 6-a: adding a relevant trigger -# Test 6-b: adding an irrelevant trigger -# Test 6-c: changing a relevant trigger -# Test 6-d: changing an irrelevant trigger -# Test 6-e: removing a relevant trigger -# Test 6-f: removing an irrelevant trigger -# ---disable_warnings -drop table if exists t6; ---enable_warnings +--echo # Test 6-a: adding a relevant trigger -create table t6(a int); +create table t1 (a int); -prepare stmt from 'insert into t6(a) value (?)'; +prepare stmt from "insert into t1 (a) value (?)"; set @val=1; execute stmt using @val; -eval $check; -set @val=2; -execute stmt using @val; -eval $check; +call p_verify_reprepare_count(0); # Relevant trigger: execute should reprepare -delimiter $$; -create trigger t6_bi before insert on t6 for each row - begin - set @message= "t6_bi"; - end -$$ -delimiter ;$$ +create trigger t1_bi before insert on t1 for each row + set @message= new.a; -set @message="none"; -set @val=3; -set @expected = @expected + 1; +set @val=2; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(1); select @message; +set @val=3; +execute stmt using @val; +call p_verify_reprepare_count(0); +select @message; + +prepare stmt from "insert into t1 (a) value (?)"; set @val=4; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(0); select @message; -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; +--echo # Test 6-b: adding an irrelevant trigger + +# Unrelated trigger: reprepare may or may not happen, implementation dependent +create trigger t1_bd before delete on t1 for each row + set @message= old.a; + set @val=5; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(1); select @message; -set @message="none"; set @val=6; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(0); select @message; -# Unrelated trigger: execute can pass of fail, implementation dependent -delimiter $$; -create trigger t6_bd before delete on t6 for each row - begin - set @message= "t6_bd"; - end -$$ -delimiter ;$$ - -set @message="none"; +prepare stmt from "insert into t1 (a) value (?)"; set @val=7; -set @expected = @expected + 1; execute stmt using @val; -eval $check; -select @message; -set @message="none"; -set @val=8; -execute stmt using @val; -eval $check; +call p_verify_reprepare_count(0); select @message; -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; -set @val=9; -execute stmt using @val; -eval $check; -select @message; -set @message="none"; -set @val=10; -execute stmt using @val; -eval $check; -select @message; +--echo # Test 6-c: changing a relevant trigger # Relevant trigger: execute should reprepare -drop trigger t6_bi; -delimiter $$; -create trigger t6_bi before insert on t6 for each row - begin - set @message= "t6_bi (2)"; - end -$$ -delimiter ;$$ +drop trigger t1_bi; +create trigger t1_bi before insert on t1 for each row + set @message= concat("new trigger: ", new.a); -set @message="none"; -set @val=11; -set @expected = @expected + 1; +set @val=8; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(1); select @message; +set @val=9; +execute stmt using @val; +call p_verify_reprepare_count(0); +select @message; + +prepare stmt from "insert into t1 (a) value (?)"; +set @val=10; +execute stmt using @val; +call p_verify_reprepare_count(0); +select @message; + +--echo # Test 6-d: changing an irrelevant trigger + +# Unrelated trigger: reprepare may or may not happen, implementation dependent +drop trigger t1_bd; + +set @val=11; +execute stmt using @val; +call p_verify_reprepare_count(1); +select @message; + +--ehco Test 6-e: removing a relevant trigger + +drop trigger t1_bi; + set @val=12; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(1); select @message; - -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; set @val=13; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(0); select @message; -set @message="none"; + +prepare stmt from "insert into t1 (a) value (?)"; set @val=14; execute stmt using @val; -eval $check; +call p_verify_reprepare_count(0); select @message; -# Unrelated trigger: execute can pass of fail, implementation dependent -drop trigger t6_bd; -delimiter $$; -create trigger t6_bd before delete on t6 for each row - begin - set @message= "t6_bd (2)"; - end -$$ -delimiter ;$$ - -set @message="none"; -set @val=15; -set @expected = @expected + 1; -execute stmt using @val; -eval $check; -select @message; -set @message="none"; -set @val=16; -execute stmt using @val; -eval $check; -select @message; - -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; -set @val=17; -execute stmt using @val; -eval $check; -select @message; -set @message="none"; -set @val=18; -execute stmt using @val; -eval $check; -select @message; - -drop trigger t6_bi; - -set @message="none"; -set @val=19; -set @expected = @expected + 1; -execute stmt using @val; -eval $check; -select @message; -set @val=20; -execute stmt using @val; -eval $check; -select @message; - -prepare stmt from 'insert into t6(a) value (?)'; -set @message="none"; -set @val=21; -execute stmt using @val; -eval $check; -select @message; -set @val=22; -execute stmt using @val; -eval $check; -select @message; - -drop trigger t6_bd; - -set @val=23; -set @expected = @expected + 1; -execute stmt using @val; -eval $check; -select @message; -set @val=24; -execute stmt using @val; -eval $check; -select @message; - -select * from t6 order by a; -drop table t6; +select * from t1 order by a; +drop table t1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 7: TABLE -> TABLE (TRIGGER dependencies) transitions +--echo Part 7: TABLE -> TABLE (TRIGGER dependencies) transitions --echo ===================================================================== -# -# Test 7-a: dependent PROCEDURE has changed -# Test 7-b: dependent FUNCTION has changed -# Test 7-c: dependent VIEW has changed -# Test 7-d: dependent TABLE has changed -# Test 7-e: dependent TABLE TRIGGER has changed -# +--echo # Test 7-a: dependent PROCEDURE has changed +--echo # +--echo # Note, this scenario is not supported, subject of Bug#12093 +--echo # ---disable_warnings -drop table if exists t7_proc; -drop table if exists t7_func; -drop table if exists t7_view; -drop table if exists t7_table; -drop table if exists t7_dependent_table; -drop table if exists t7_table_trigger; -drop table if exists t7_audit; -drop procedure if exists audit_proc; -drop function if exists audit_func; -drop view if exists audit_view; ---enable_warnings +create table t1 (a int); +create trigger t1_ai after insert on t1 for each row + call p1(new.a); +create procedure p1(a int) begin end; +prepare stmt from "insert into t1 (a) values (?)"; +set @var= 1; +execute stmt using @var; +drop procedure p1; +create procedure p1 (a int) begin end; +set @var= 2; +--error ER_SP_DOES_NOT_EXIST +execute stmt using @var; +--echo # Cleanup +drop procedure p1; +call p_verify_reprepare_count(0); -create table t7_proc(a int); -create table t7_func(a int); -create table t7_view(a int); -create table t7_table(a int); -create table t7_table_trigger(a int); +--echo # Test 7-b: dependent FUNCTION has changed +--echo # +--echo # Note, this scenario is not supported, subject of Bug#12093 +--echo # +drop trigger t1_ai; +create trigger t1_ai after insert on t1 for each row + select f1(new.a+1) into @var; +create function f1 (a int) returns int return a; +prepare stmt from "insert into t1(a) values (?)"; +set @var=3; +execute stmt using @var; +select @var; +drop function f1; +create function f1 (a int) returns int return 0; +--error ER_SP_DOES_NOT_EXIST +execute stmt using @var; +call p_verify_reprepare_count(0); +drop function f1; +deallocate prepare stmt; -create table t7_audit(old_a int, new_a int, reason varchar(50)); -create table t7_dependent_table(old_a int, new_a int, reason varchar(50)); +--echo # Test 7-c: dependent VIEW has changed +--echo # +--echo # Note, this scenario is not functioning correctly, see +--echo # Bug#33255 Trigger using views and view ddl : corrupted triggers +--echo # and Bug #33000 Triggers do not detect changes in meta-data. +--echo # +drop trigger t1_ai; +create table t2 (a int unique); +create table t3 (a int unique); +create view v1 as select a from t2; +create trigger t1_ai after insert on t1 for each row + insert into v1 (a) values (new.a); -create procedure audit_proc(a int) - insert into t7_audit values (NULL, a, "proc v1"); +--echo # Demonstrate that the same bug is present +--echo # without prepared statements +insert into t1 (a) values (5); +select * from t2; +select * from t3; +drop view v1; +create view v1 as select a from t3; +--error ER_NO_SUCH_TABLE +insert into t1 (a) values (6); +flush table t1; +insert into t1 (a) values (6); +select * from t2; +select * from t3; -create function audit_func() returns varchar(50) - return "func v1"; +prepare stmt from "insert into t1 (a) values (?)"; +set @var=7; +execute stmt using @var; +call p_verify_reprepare_count(0); +select * from t3; +select * from t2; +drop view v1; +create view v1 as select a from t2; +set @var=8; +execute stmt using @var; +call p_verify_reprepare_count(0); +--echo # +--echo # Sic: the insert went into t3, even though the view now +--echo # points at t2. This is because neither the merged view +--echo # nor its prelocking list are affected by view DDL +--echo # The binary log is of course wrong, since it is not +--echo # using prepared statements +--echo # +select * from t2; +select * from t3; +flush table t1; +set @var=9; +execute stmt using @var; +call p_verify_reprepare_count(1); +select * from t2; +select * from t3; +drop view v1; +drop table t1,t2,t3; -create view audit_view as select "view v1" as reason from dual; +--echo # Test 7-d: dependent TABLE has changed +create table t1 (a int); +create trigger t1_ai after insert on t1 for each row + insert into t2 (a) values (new.a); +create table t2 (a int); -create trigger t7_proc_bi before insert on t7_proc for each row - call audit_proc(NEW.a); +prepare stmt from "insert into t1 (a) values (?)"; +set @var=1; +execute stmt using @var; +alter table t2 add column comment varchar(255); +set @var=2; +--echo # Since the dependent table is tracked in the prelocked +--echo # list of the prepared statement, invalidation happens +--echo # and the statement is re-prepared. This is an unnecessary +--echo # side effect, since the statement that *is* dependent +--echo # on t2 definition is inside the trigger, and it is currently +--echo # not reprepared (see the previous test case). +execute stmt using @var; +call p_verify_reprepare_count(1); +select * from t1; +select * from t2; +drop table t1,t2; -create trigger t7_func_bi before insert on t7_func for each row - insert into t7_audit values (NULL, NEW.a, audit_func()); +--echo # Test 7-e: dependent TABLE TRIGGER has changed +create table t1 (a int); +create trigger t1_ai after insert on t1 for each row + insert into t2 (a) values (new.a); +create table t2 (a int unique); +create trigger t2_ai after insert on t2 for each row + insert into t3 (a) values (new.a); +create table t3 (a int unique); +create table t4 (a int unique); -create trigger t7_view_bi before insert on t7_view for each row - insert into t7_audit values (NULL, NEW.a, (select reason from audit_view)); +insert into t1 (a) values (1); +select * from t1 join t2 on (t1.a=t2.a) join t3 on (t2.a=t3.a); +drop trigger t2_ai; +create trigger t2_ai after insert on t2 for each row + insert into t4 (a) values (new.a); +insert into t1 (a) values (2); +select * from t1 join t2 on (t1.a=t2.a) join t4 on (t2.a=t4.a); -create trigger t7_table_bi before insert on t7_table for each row - insert into t7_dependent_table values (NULL, NEW.a, "dependent table"); +prepare stmt from "insert into t1 (a) values (?)"; +set @var=3; +execute stmt using @var; +select * from t1 join t2 on (t1.a=t2.a) join t4 on (t2.a=t4.a); +drop trigger t2_ai; +create trigger t2_ai after insert on t2 for each row + insert into t3 (a) values (new.a); +set @var=4; +execute stmt using @var; +call p_verify_reprepare_count(1); +select * from t1 join t2 on (t1.a=t2.a) join t3 on (t2.a=t3.a); +select * from t1 join t2 on (t1.a=t2.a) join t4 on (t2.a=t4.a); -create trigger t7_table_trigger_bi before insert on t7_dependent_table - for each row set NEW.reason="trigger v1"; - -prepare stmt_proc from 'insert into t7_proc(a) value (?)'; -set @val=101; -execute stmt_proc using @val; -eval $check; -set @val=102; -execute stmt_proc using @val; -eval $check; - -drop procedure audit_proc; - -create procedure audit_proc(a int) - insert into t7_audit values (NULL, a, "proc v2"); - -set @val=103; -set @expected = @expected + 1; -execute stmt_proc using @val; -eval $check; -set @val=104; -execute stmt_proc using @val; -eval $check; - - -prepare stmt_func from 'insert into t7_func(a) value (?)'; -set @val=201; -execute stmt_func using @val; -eval $check; -set @val=202; -execute stmt_func using @val; -eval $check; - -drop function audit_func; - -create function audit_func() returns varchar(50) - return "func v2"; - -set @val=203; -set @expected = @expected + 1; -execute stmt_func using @val; -eval $check; -set @val=204; -execute stmt_func using @val; -eval $check; - -prepare stmt_view from 'insert into t7_view(a) value (?)'; -set @val=301; -execute stmt_view using @val; -eval $check; -set @val=302; -execute stmt_view using @val; -eval $check; - -drop view audit_view; - -create view audit_view as select "view v2" as reason from dual; - -# Because of Bug#33255, the wrong result is still produced for cases -# 303 and 304, even after re-preparing the statement. -# This is because the table trigger is cached and is not invalidated. - -set @val=303; -set @expected = @expected + 1; -execute stmt_view using @val; -eval $check; -set @val=304; -execute stmt_view using @val; -eval $check; - - -prepare stmt_table from 'insert into t7_table(a) value (?)'; -set @val=401; -execute stmt_table using @val; -eval $check; -set @val=402; -execute stmt_table using @val; -eval $check; - -alter table t7_dependent_table add column comments varchar(100) default NULL; - -set @val=403; -set @expected = @expected + 1; ---error ER_WRONG_VALUE_COUNT_ON_ROW -execute stmt_table using @val; -eval $check; -set @val=404; -set @expected = @expected + 1; ---error ER_WRONG_VALUE_COUNT_ON_ROW -execute stmt_table using @val; -eval $check; - -alter table t7_dependent_table drop column comments; - -set @val=405; -set @expected = @expected + 1; -execute stmt_table using @val; -eval $check; -set @val=406; -execute stmt_table using @val; -eval $check; - - -prepare stmt_table_trigger from 'insert into t7_table(a) value (?)'; -set @val=501; -execute stmt_table_trigger using @val; -eval $check; -set @val=502; -execute stmt_table_trigger using @val; -eval $check; - -drop trigger t7_table_trigger_bi; - -create trigger t7_table_trigger_bi before insert on t7_dependent_table - for each row set NEW.reason="trigger v2"; - -set @val=503; -set @expected = @expected + 1; -execute stmt_table_trigger using @val; -eval $check; -set @val=504; -execute stmt_table_trigger using @val; -eval $check; - -select * from t7_audit order by new_a; - -select * from t7_dependent_table order by new_a; - -drop table t7_proc; -drop table t7_func; -drop table t7_view; -drop table t7_table; -drop table t7_dependent_table; -drop table t7_table_trigger; -drop table t7_audit; -drop procedure audit_proc; -drop function audit_func; -drop view audit_view; +drop table t1, t2, t3, t4; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 8: TABLE -> TEMPORARY TABLE transitions +--echo Part 8: TABLE -> TEMPORARY TABLE transitions --echo ===================================================================== ---disable_warnings -drop table if exists t8; ---enable_warnings +create table t1 (a int); -create table t8(a int); - -prepare stmt from 'select * from t8'; +prepare stmt from "select * from t1"; execute stmt; -eval $check; -execute stmt; -eval $check; -drop table t8; -create temporary table t8(a int); +drop table t1; +create temporary table t1 (a int); -set @expected = @expected + 1; execute stmt; -eval $check; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t8; +drop table t1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 9: TABLE -> VIEW transitions +--echo Part 9: TABLE -> VIEW transitions --echo ===================================================================== ---disable_warnings -drop table if exists t9; -drop table if exists t9_b; ---enable_warnings +create table t1 (a int); -create table t9(a int); -create table t9_b(a int); - -prepare stmt from 'select * from t9'; +prepare stmt from "select * from t1"; execute stmt; -eval $check; -execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t9; -create view t9 as select * from t9_b; +drop table t1; +create table t2 (a int); +create view t1 as select * from t2; -set @expected = @expected + 1; execute stmt; -eval $check; -execute stmt; -eval $check; +call p_verify_reprepare_count(1); -drop view t9; -drop table t9_b; +drop view t1; +drop table t2; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 10: TEMPORARY TABLE -> NOTHING transitions +--echo Part 10: TEMPORARY TABLE -> NOTHING transitions --echo ===================================================================== ---disable_warnings -drop temporary table if exists t10; ---enable_warnings +create temporary table t1 (a int); -create temporary table t10(a int); - -prepare stmt from 'select * from t10'; +prepare stmt from "select * from t1"; execute stmt; -eval $check; -execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop temporary table t10; +drop temporary table t1; --error ER_NO_SUCH_TABLE execute stmt; -eval $check; +call p_verify_reprepare_count(0); +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 11: TEMPORARY TABLE -> TABLE transitions +--echo ===================================================================== + +create table t1 (a int); +insert into t1 (a) value (1); +create temporary table t1 (a int); + +prepare stmt from "select * from t1"; +execute stmt; +call p_verify_reprepare_count(0); + +drop temporary table t1; + +execute stmt; +call p_verify_reprepare_count(1); + +select * from t1; +drop table t1; +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 12: TEMPORARY TABLE -> TEMPORARY TABLE (DDL) transitions +--echo ===================================================================== + +create temporary table t1 (a int); + +prepare stmt from "select a from t1"; +execute stmt; +call p_verify_reprepare_count(0); + +drop temporary table t1; +create temporary table t1 (a int, b int); + +execute stmt; +call p_verify_reprepare_count(1); + +select * from t1; +drop temporary table t1; +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 13: TEMPORARY TABLE -> VIEW transitions +--echo ===================================================================== + +create temporary table t1 (a int); +create table t2 (a int); + +prepare stmt from "select * from t1"; +execute stmt; +call p_verify_reprepare_count(0); + +drop temporary table t1; +create view t1 as select * from t2; + +execute stmt; +call p_verify_reprepare_count(1); + +drop view t1; +drop table t2; +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 14: VIEW -> NOTHING transitions +--echo ===================================================================== + +create table t2 (a int); +create view t1 as select * from t2; + +prepare stmt from "select * from t1"; +execute stmt; +drop view t1; + --error ER_NO_SUCH_TABLE execute stmt; -eval $check; - ---echo ===================================================================== ---echo Testing 11: TEMPORARY TABLE -> TABLE transitions ---echo ===================================================================== - ---disable_warnings -drop table if exists t11; -drop temporary table if exists t11; ---enable_warnings - -create table t11(a int); -insert into t11(a) value (1); -create temporary table t11(a int); - -prepare stmt from 'select * from t11'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop temporary table t11; - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -select * from t11; -drop table t11; - ---echo ===================================================================== ---echo Testing 12: TEMPORARY TABLE -> TEMPORARY TABLE (DDL) transitions ---echo ===================================================================== - ---disable_warnings -drop temporary table if exists t12; ---enable_warnings - -create temporary table t12(a int); - -prepare stmt from 'select a from t12'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop temporary table t12; -create temporary table t12(a int, b int); - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -select * from t12; -drop table t12; - ---echo ===================================================================== ---echo Testing 13: TEMPORARY TABLE -> VIEW transitions ---echo ===================================================================== - ---disable_warnings -drop temporary table if exists t13; -drop table if exists t13_b; ---enable_warnings - -create temporary table t13(a int); -create table t13_b(a int); - -prepare stmt from 'select * from t13'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop temporary table t13; -create view t13 as select * from t13_b; - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop view t13; -drop table t13_b; - ---echo ===================================================================== ---echo Testing 14: VIEW -> NOTHING transitions ---echo ===================================================================== - ---disable_warnings -drop view if exists t14; -drop table if exists t14_b; ---enable_warnings - -create table t14_b(a int); -create view t14 as select * from t14_b; - -prepare stmt from 'select * from t14'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop view t14; - -set @expected = @expected + 1; +call p_verify_reprepare_count(0); --error ER_NO_SUCH_TABLE execute stmt; -eval $check; -set @expected = @expected + 1; ---error ER_NO_SUCH_TABLE +call p_verify_reprepare_count(0); + +drop table t2; +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 15: VIEW -> TABLE transitions +--echo ===================================================================== + +create table t2 (a int); +create view t1 as select * from t2; + +prepare stmt from "select * from t1"; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t14_b; +drop view t1; +create table t1 (a int); + +execute stmt; +call p_verify_reprepare_count(1); + +drop table t2; +drop table t1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 15: VIEW -> TABLE transitions +--echo Part 16: VIEW -> TEMPORARY TABLE transitions --echo ===================================================================== +create table t2 (a int); +insert into t2 (a) values (1); +create view t1 as select * from t2; + +prepare stmt from "select * from t1"; +execute stmt; +call p_verify_reprepare_count(0); + +create temporary table t1 (a int); +execute stmt; +call p_verify_reprepare_count(1); +drop view t1; +execute stmt; +call p_verify_reprepare_count(0); + +drop table t2; +drop temporary table t1; +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 17: VIEW -> VIEW (DDL) transitions +--echo ===================================================================== + +create table t2 (a int); +insert into t2 values (10), (20), (30); + +create view t1 as select a, 2*a as b, 3*a as c from t2; +select * from t1; + +prepare stmt from "select * from t1"; +execute stmt; + +drop view t1; +create view t1 as select a, 2*a as b, 5*a as c from t2; +select * from t1; + +--echo # Currently a different result from conventional statements. +--echo # A view is inlined once at prepare, later on view DDL +--echo # does not affect prepared statement and it is not re-prepared. +execute stmt; +call p_verify_reprepare_count(0); +flush table t2; +execute stmt; +call p_verify_reprepare_count(1); + +drop table t2; +drop view t1; +deallocate prepare stmt; + +--echo ===================================================================== +--echo Part 18: VIEW -> VIEW (VIEW dependencies) transitions +--echo ===================================================================== + +--echo # Part 18a: dependent function has changed +create table t1 (a int); +insert into t1 (a) values (1), (2), (3); +create function f1() returns int return (select max(a) from t1); +create view v1 as select f1(); +prepare stmt from "select * from v1"; +execute stmt; +execute stmt; +call p_verify_reprepare_count(0); +drop function f1; +create function f1() returns int return 2; +--echo # XXX: Bug#12093. We only get a different error +--echo # message because the non-existing procedure error is masked +--echo # by the view. +--error ER_VIEW_INVALID +execute stmt; +--error ER_VIEW_INVALID +execute stmt; +call p_verify_reprepare_count(0); + +--echo # Part 18b: dependent procedure has changed (referred to via a function) + +create table t2 (a int); +insert into t2 (a) values (4), (5), (6); + +drop function f1; +delimiter |; +create function f1() returns int +begin + declare x int; + call p1(x); + return x; +end| +delimiter ;| +create procedure p1(out x int) select max(a) from t1 into x; + +prepare stmt from "select * from v1"; +execute stmt; +execute stmt; +call p_verify_reprepare_count(0); +drop procedure p1; +create procedure p1(out x int) select max(a) from t2 into x; +--echo # XXX: bug. The prelocked list is not invalidated +--echo # and we keep opening table t1, whereas the procedure +--ehco # is now referring to table t2 +--error ER_VIEW_INVALID +execute stmt; +call p_verify_reprepare_count(0); +flush table t1; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; + +--echo # Test 18-c: dependent VIEW has changed + +drop view v1; +create view v2 as select a from t1; +create view v1 as select * from v2; +prepare stmt from "select * from v1"; +execute stmt; +execute stmt; +call p_verify_reprepare_count(0); +drop view v2; +create view v2 as select a from t2; +execute stmt; +execute stmt; +call p_verify_reprepare_count(0); +flush table t1; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +--echo # Test 18-d: dependent TABLE has changed +drop view v2; +create table v2 as select * from t1; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); +drop table v2; +create table v2 (a int unique) as select * from t2; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); + +--echo # Test 18-e: dependent TABLE trigger has changed + +prepare stmt from "insert into v1 (a) values (?)"; +set @var= 7; +execute stmt using @var; +call p_verify_reprepare_count(0); +create trigger v2_bi before insert on v2 for each row set @message="v2_bi"; +set @var=8; +execute stmt using @var; +call p_verify_reprepare_count(1); +select @message; +drop trigger v2_bi; +set @message=null; +set @var=9; +execute stmt using @var; +call p_verify_reprepare_count(1); +select @message; +create trigger v2_bi after insert on v2 for each row set @message="v2_ai"; +set @var= 10; +execute stmt using @var; +call p_verify_reprepare_count(1); +select @message; +select * from v1; + +--echo # Cleanup + --disable_warnings -drop view if exists t15; -drop table if exists t15_b; +drop table if exists t1, t2, v1, v2; +drop view if exists v1, v2; +drop function f1; +drop procedure p1; --enable_warnings - -create table t15_b(a int); -create view t15 as select * from t15_b; - -prepare stmt from 'select * from t15'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop view t15; -create table t15(a int); - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop table t15_b; -drop table t15; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 16: VIEW -> TEMPORARY TABLE transitions +--echo Part 19: Special tables (INFORMATION_SCHEMA) --echo ===================================================================== ---disable_warnings -drop view if exists t16; -drop table if exists t16_b; ---enable_warnings - -create table t16_b(a int); -create view t16 as select * from t16_b; - -prepare stmt from 'select * from t16'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop view t16; -create temporary table t16(a int); - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop table t16_b; -drop temporary table t16; - ---echo ===================================================================== ---echo Testing 17: VIEW -> VIEW (DDL) transitions ---echo ===================================================================== - ---disable_warnings -drop view if exists t17; -drop table if exists t17_b; ---enable_warnings - -create table t17_b(a int); -insert into t17_b values (10), (20), (30); - -create view t17 as select a, 2*a as b, 3*a as c from t17_b; -select * from t17; - -prepare stmt from 'select * from t17'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop view t17; -create view t17 as select a, 2*a as b, 5*a as c from t17_b; -select * from t17; - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop table t17_b; -drop view t17; - ---echo ===================================================================== ---echo Testing 18: VIEW -> VIEW (VIEW dependencies) transitions ---echo ===================================================================== - -# -# Test 18-a: dependent PROCEDURE has changed (via a trigger) -# Test 18-b: dependent FUNCTION has changed -# Test 18-c: dependent VIEW has changed -# Test 18-d: dependent TABLE has changed -# Test 18-e: dependent TABLE TRIGGER has changed -# - ---disable_warnings -drop table if exists t18; -drop table if exists t18_dependent_table; -drop view if exists t18_func; -drop view if exists t18_view; -drop view if exists t18_table; -drop function if exists view_func; -drop view if exists view_view; ---enable_warnings - -# TODO: insertable view -> trigger -# TODO: insertable view -> trigger -> proc ? - -create table t18(a int); -insert into t18 values (1), (2), (3); - -create function view_func(x int) returns int - return x+1; - -create view view_view as select "view v1" as reason from dual; - -create table t18_dependent_table(a int); - -create view t18_func as select a, view_func(a) as b from t18; -create view t18_view as select a, reason as b from t18, view_view; -create view t18_table as select * from t18; - -prepare stmt_func from 'select * from t18_func'; -execute stmt_func; -eval $check; -execute stmt_func; -eval $check; - -drop function view_func; -create function view_func(x int) returns int - return x*x; - -set @expected = @expected + 1; -execute stmt_func; -eval $check; -execute stmt_func; -eval $check; - -prepare stmt_view from 'select * from t18_view'; -execute stmt_view; -eval $check; -execute stmt_view; -eval $check; - -drop view view_view; -create view view_view as select "view v2" as reason from dual; - -set @expected = @expected + 1; -execute stmt_view; -eval $check; -execute stmt_view; -eval $check; - -prepare stmt_table from 'select * from t18_table'; -execute stmt_table; -eval $check; -execute stmt_table; -eval $check; - -alter table t18 add column comments varchar(50) default NULL; - -set @expected = @expected + 1; -execute stmt_table; -eval $check; -execute stmt_table; -eval $check; - -drop table t18; -drop table t18_dependent_table; -drop view t18_func; -drop view t18_view; -drop view t18_table; -drop function view_func; -drop view view_view; - ---echo ===================================================================== ---echo Testing 19: Special tables (INFORMATION_SCHEMA) ---echo ===================================================================== - ---disable_warnings -drop procedure if exists proc_19; ---enable_warnings - # Using a temporary table internally should not confuse the prepared # statement code, and should not raise ER_PS_INVALIDATED errors prepare stmt from - 'select ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE + "select ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE from INFORMATION_SCHEMA.ROUTINES where - routine_name=\'proc_19\''; + routine_name='p1'"; -create procedure proc_19() select "hi there"; +create procedure p1() select "hi there"; execute stmt; -eval $check; execute stmt; -eval $check; -drop procedure proc_19; -create procedure proc_19() select "hi there, again"; +drop procedure p1; +create procedure p1() select "hi there, again"; execute stmt; -eval $check; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop procedure proc_19; +drop procedure p1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 20: Special tables (log tables) +--echo Part 20: Special tables (log tables) --echo ===================================================================== prepare stmt from - 'select * from mysql.general_log where argument=\'IMPOSSIBLE QUERY STRING\''; + "select * from mysql.general_log where argument='IMPOSSIBLE QUERY STRING'"; +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log +call p_verify_reprepare_count(0); +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 21: Special tables (system tables) +--echo Part 21: Special tables (system tables) --echo ===================================================================== ---disable_warnings -drop procedure if exists proc_21; ---enable_warnings - prepare stmt from - 'select type, db, name from mysql.proc where name=\'proc_21\''; + "select type, db, name from mysql.proc where name='p1'"; -create procedure proc_21() select "hi there"; +create procedure p1() select "hi there"; execute stmt; -eval $check; execute stmt; -eval $check; -drop procedure proc_21; -create procedure proc_21() select "hi there, again"; +drop procedure p1; +create procedure p1() select "hi there, again"; execute stmt; -eval $check; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop procedure proc_21; +drop procedure p1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 22: Special tables (views temp tables) +--echo Part 22: Special tables (views temp tables) --echo ===================================================================== ---disable_warnings -drop table if exists t22_b; -drop view if exists t22; ---enable_warnings +create table t1 (a int); -create table t22_b(a int); +create algorithm=temptable view v1 as select a*a as a2 from t1; -create algorithm=temptable view t22 as select a*a as a2 from t22_b; +--echo # Using a temporary table internally should not confuse the prepared +--echo # statement code, and should not raise ER_PS_INVALIDATED errors +show create view v1; -# Using a temporary table internally should not confuse the prepared -# statement code, and should not raise ER_PS_INVALIDATED errors -show create view t22; +prepare stmt from "select * from v1"; -prepare stmt from 'select * from t22'; - -insert into t22_b values (1), (2), (3); +insert into t1 values (1), (2), (3); execute stmt; -eval $check; execute stmt; -eval $check; -insert into t22_b values (4), (5), (6); +insert into t1 values (4), (5), (6); execute stmt; -eval $check; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t22_b; -drop view t22; +drop table t1; +drop view v1; --echo ===================================================================== ---echo Testing 23: Special tables (internal join tables) +--echo Part 23: Special statements --echo ===================================================================== ---disable_warnings -drop table if exists t23_a; -drop table if exists t23_b; ---enable_warnings +--echo # SQLCOM_ALTER_TABLE: -create table t23_a(a int); -create table t23_b(b int); -# Using a temporary table internally should not confuse the prepared -# statement code, and should not raise ER_PS_INVALIDATED errors -prepare stmt from 'select * from t23_a join t23_b'; +create table t1 (a int); -insert into t23_a values (1), (2), (3); -insert into t23_b values (10), (20), (30); +prepare stmt from "alter table t1 add column b int"; execute stmt; -eval $check; + +drop table t1; +create table t1 (a1 int, a2 int); + +--echo # t1 has changed, and it's does not lead to reprepare execute stmt; -eval $check; -insert into t23_a values (4); -insert into t23_b values (40); +alter table t1 drop column b; execute stmt; -eval $check; + +alter table t1 drop column b; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t23_a; -drop table t23_b; +drop table t1; ---echo ===================================================================== ---echo Testing 24: Special statements ---echo ===================================================================== +--echo # SQLCOM_REPAIR: -# SQLCOM_ALTER_TABLE: +create table t1 (a int); ---disable_warnings -drop table if exists t24_alter; ---enable_warnings +insert into t1 values (1), (2), (3); -create table t24_alter(a int); +prepare stmt from "repair table t1"; -prepare stmt from 'alter table t24_alter add column b int'; execute stmt; -eval $check; - -drop table t24_alter; -create table t24_alter(a1 int, a2 int); - -# t24_alter has changed, and it's not a problem execute stmt; -eval $check; -alter table t24_alter drop column b; +drop table t1; +create table t1 (a1 int, a2 int); +insert into t1 values (1, 10), (2, 20), (3, 30); + +--echo # t1 has changed, and it's does not lead to reprepare execute stmt; -eval $check; -alter table t24_alter drop column b; +alter table t1 add column b varchar(50) default NULL; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t24_alter; - -# SQLCOM_REPAIR: - ---disable_warnings -drop table if exists t24_repair; ---enable_warnings - -create table t24_repair(a int); -insert into t24_repair values (1), (2), (3); - -prepare stmt from 'repair table t24_repair'; +alter table t1 drop column b; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t24_repair; -create table t24_repair(a1 int, a2 int); -insert into t24_repair values (1, 10), (2, 20), (3, 30); +--echo # SQLCOM_ANALYZE: -# t24_repair has changed, and it's not a problem +prepare stmt from "analyze table t1"; execute stmt; -eval $check; -alter table t24_repair add column b varchar(50) default NULL; +drop table t1; +create table t1 (a1 int, a2 int); +insert into t1 values (1, 10), (2, 20), (3, 30); +--echo # t1 has changed, and it's not a problem execute stmt; -eval $check; -alter table t24_repair drop column b; +alter table t1 add column b varchar(50) default NULL; execute stmt; -eval $check; -drop table t24_repair; - -# SQLCOM_ANALYZE: - ---disable_warnings -drop table if exists t24_analyze; ---enable_warnings - -create table t24_analyze(a int); -insert into t24_analyze values (1), (2), (3); - -prepare stmt from 'analyze table t24_analyze'; +alter table t1 drop column b; execute stmt; -eval $check; -drop table t24_analyze; -create table t24_analyze(a1 int, a2 int); -insert into t24_analyze values (1, 10), (2, 20), (3, 30); +call p_verify_reprepare_count(0); -# t24_analyze has changed, and it's not a problem +--echo # SQLCOM_OPTIMIZE: + +prepare stmt from "optimize table t1"; execute stmt; -eval $check; -alter table t24_analyze add column b varchar(50) default NULL; +drop table t1; +create table t1 (a1 int, a2 int); +insert into t1 values (1, 10), (2, 20), (3, 30); + +--echo # t1 has changed, and it's not a problem execute stmt; -eval $check; -alter table t24_analyze drop column b; +alter table t1 add column b varchar(50) default NULL; execute stmt; -eval $check; -drop table t24_analyze; - -# SQLCOM_OPTIMIZE: - ---disable_warnings -drop table if exists t24_optimize; ---enable_warnings - -create table t24_optimize(a int); -insert into t24_optimize values (1), (2), (3); - -prepare stmt from 'optimize table t24_optimize'; +alter table t1 drop column b; execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t24_optimize; -create table t24_optimize(a1 int, a2 int); -insert into t24_optimize values (1, 10), (2, 20), (3, 30); +drop table t1; -# t24_optimize has changed, and it's not a problem -execute stmt; -eval $check; +--echo # SQLCOM_SHOW_CREATE_PROC: -alter table t24_optimize add column b varchar(50) default NULL; -execute stmt; -eval $check; - -alter table t24_optimize drop column b; -execute stmt; -eval $check; - -drop table t24_optimize; - -# SQLCOM_SHOW_CREATE_PROC: - ---disable_warnings -drop procedure if exists changing_proc; ---enable_warnings - -prepare stmt from 'show create procedure changing_proc'; +prepare stmt from "show create procedure p1"; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; -create procedure changing_proc() begin end; +create procedure p1() begin end; -# changing_proc has changed, and it's not a problem +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log -drop procedure changing_proc; -create procedure changing_proc(x int, y int) begin end; +drop procedure p1; +create procedure p1(x int, y int) begin end; +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log -drop procedure changing_proc; +drop procedure p1; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; +call p_verify_reprepare_count(0); -# SQLCOM_SHOW_CREATE_FUNC: +--echo # SQLCOM_SHOW_CREATE_FUNC: ---disable_warnings -drop function if exists changing_func; ---enable_warnings - -prepare stmt from 'show create function changing_func'; +prepare stmt from "show create function f1"; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; -create function changing_func() returns int return 0; +create function f1() returns int return 0; -# changing_proc has changed, and it's not a problem +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log -drop function changing_func; -create function changing_func(x int, y int) returns int return x+y; +drop function f1; +create function f1(x int, y int) returns int return x+y; +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log -drop function changing_func; +drop function f1; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; --error ER_SP_DOES_NOT_EXIST execute stmt; -eval $check; +call p_verify_reprepare_count(0); -# SQLCOM_SHOW_CREATE_TRIGGER: +--echo # SQLCOM_SHOW_CREATE_TRIGGER: ---disable_warnings -drop table if exists t24_trigger; ---enable_warnings +create table t1 (a int); -create table t24_trigger(a int); - -prepare stmt from 'show create trigger t24_bi;'; +prepare stmt from "show create trigger t1_bi"; --error ER_TRG_DOES_NOT_EXIST execute stmt; -eval $check; --error ER_TRG_DOES_NOT_EXIST execute stmt; -eval $check; -delimiter $$; -create trigger t24_bi before insert on t24_trigger for each row - begin - set @message= "t24_bi"; - end -$$ -delimiter ;$$ +create trigger t1_bi before insert on t1 for each row set @message= "t1_bi"; -# t24_bi has changed, and it's not a problem +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log -drop trigger t24_bi; -delimiter $$; -create trigger t24_bi before insert on t24_trigger for each row - begin - set @message= "t24_bi (2)"; - end -$$ -delimiter ;$$ +drop trigger t1_bi; -# t24_bi has changed, and it's not a problem -set @expected = @expected + 1; +create trigger t1_bi before insert on t1 for each row set @message= "t1_bi (2)"; + +--disable_result_log execute stmt; -eval $check; execute stmt; -eval $check; +--enable_result_log -drop trigger t24_bi; +drop trigger t1_bi; --error ER_TRG_DOES_NOT_EXIST execute stmt; -eval $check; --error ER_TRG_DOES_NOT_EXIST execute stmt; -eval $check; +call p_verify_reprepare_count(0); -drop table t24_trigger; +drop table t1; +deallocate prepare stmt; --echo ===================================================================== ---echo Testing 25: Testing the strength of TABLE_SHARE version +--echo Part 24: Testing the strength of TABLE_SHARE version --echo ===================================================================== -# Test 25-a: number of columns +--echo # Test 24-a: number of columns ---disable_warnings -drop table if exists t25_num_col; ---enable_warnings +create table t1 (a int); -create table t25_num_col(a int); - -prepare stmt from 'select a from t25_num_col'; +prepare stmt from "select a from t1"; execute stmt; -eval $check; +call p_verify_reprepare_count(0); + +alter table t1 add column b varchar(50) default NULL; + execute stmt; -eval $check; - -alter table t25_num_col add column b varchar(50) default NULL; - -set @expected = @expected + 1; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); + +--echo # Test 24-b: column name + +alter table t1 change b c int; execute stmt; -eval $check; - -drop table t25_num_col; - -# Test 25-b: column name - ---disable_warnings -drop table if exists t25_col_name; ---enable_warnings - -create table t25_col_name(a int); - -prepare stmt from 'select * from t25_col_name'; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); + +--echo # Test 24-c: column type + +alter table t1 change a a varchar(10); + execute stmt; -eval $check; - -alter table t25_col_name change a b int; - -set @expected = @expected + 1; ---error ER_PS_REBIND +call p_verify_reprepare_count(1); execute stmt; -eval $check; -set @expected = @expected + 1; ---error ER_PS_REBIND +call p_verify_reprepare_count(0); + +--echo # Test 24-d: column type length + +alter table t1 change a a varchar(20); + execute stmt; -eval $check; - -drop table t25_col_name; - -# Test 25-c: column type - ---disable_warnings -drop table if exists t25_col_type; ---enable_warnings - -create table t25_col_type(a int); - -prepare stmt from 'select * from t25_col_type'; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); + +--echo # Test 24-e: column NULL property + +alter table t1 change a a varchar(20) NOT NULL; + execute stmt; -eval $check; - -alter table t25_col_type change a a varchar(10); - -set @expected = @expected + 1; ---error ER_PS_REBIND +call p_verify_reprepare_count(1); execute stmt; -eval $check; -set @expected = @expected + 1; ---error ER_PS_REBIND +call p_verify_reprepare_count(0); + +--echo # Test 24-f: column DEFAULT + +alter table t1 change c c int DEFAULT 20; + execute stmt; -eval $check; - -drop table t25_col_type; - -# Test 25-d: column type length - ---disable_warnings -drop table if exists t25_col_type_length; ---enable_warnings - -create table t25_col_type_length(a varchar(10)); - -prepare stmt from 'select * from t25_col_type_length'; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); + +--echo # Test 24-g: number of keys +create unique index t1_a_idx on t1 (a); + execute stmt; -eval $check; - -alter table t25_col_type_length change a a varchar(20); - -set @expected = @expected + 1; ---error ER_PS_REBIND +call p_verify_reprepare_count(1); execute stmt; -eval $check; -set @expected = @expected + 1; ---error ER_PS_REBIND +call p_verify_reprepare_count(0); + +--echo # Test 24-h: changing index uniqueness + +drop index t1_a_idx on t1; +create index t1_a_idx on t1 (a); + execute stmt; -eval $check; - -drop table t25_col_type_length; - -# Test 25-e: column NULL property - ---disable_warnings -drop table if exists t25_col_null; ---enable_warnings - -create table t25_col_null(a varchar(10)); - -prepare stmt from 'select * from t25_col_null'; +call p_verify_reprepare_count(1); execute stmt; -eval $check; -execute stmt; -eval $check; +call p_verify_reprepare_count(0); -alter table t25_col_null change a a varchar(10) NOT NULL; +--echo # Cleanup +drop table t1; -set @expected = @expected + 1; ---error ER_PS_REBIND -execute stmt; -eval $check; -set @expected = @expected + 1; ---error ER_PS_REBIND -execute stmt; -eval $check; - -drop table t25_col_null; - -# Test 25-f: column DEFAULT - ---disable_warnings -drop table if exists t25_col_default; ---enable_warnings - -create table t25_col_default(a int, b int DEFAULT 10); - -prepare stmt from 'insert into t25_col_default(a) values (?)'; -set @val=1; -execute stmt using @val; -eval $check; -set @val=2; -execute stmt using @val; -eval $check; - -alter table t25_col_default change b b int DEFAULT 20; - -set @val=3; -# Must insert the correct default value for b -set @expected = @expected + 1; -execute stmt using @val; -eval $check; - -set @val=4; -# Must insert the correct default value for b -execute stmt using @val; -eval $check; - -select * from t25_col_default; - -drop table t25_col_default; - -# Test 25-g: number of keys - ---disable_warnings -drop table if exists t25_index; ---enable_warnings - -create table t25_index(a varchar(10)); - -prepare stmt from 'select * from t25_index'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -create index i1 on t25_index(a); - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop table t25_index; - -# Test 25-h: changing index uniqueness - ---disable_warnings -drop table if exists t25_index_unique; ---enable_warnings - -create table t25_index_unique(a varchar(10), b varchar(10)); -create index i1 on t25_index_unique(a, b); - -show create table t25_index_unique; - -prepare stmt from 'select * from t25_index_unique'; -execute stmt; -eval $check; -execute stmt; -eval $check; - -alter table t25_index_unique drop index i1; -create unique index i1 on t25_index_unique(a, b); - -show create table t25_index_unique; - -set @expected = @expected + 1; -execute stmt; -eval $check; -execute stmt; -eval $check; - -drop table t25_index_unique; +deallocate prepare stmt; --echo ===================================================================== --echo Testing reported bugs --echo ===================================================================== -# -# Bug#12093 (SP not found on second PS execution if another thread drops -# other SP in between) -# - ---disable_warnings -drop table if exists table_12093; -drop function if exists func_12093; -drop function if exists func_12093_unrelated; -drop procedure if exists proc_12093; ---enable_warnings - -connect (con1,localhost,root,,); - -connection default; - -create table table_12093(a int); - -delimiter //; - -create function func_12093() -returns int -begin - return (select count(*) from table_12093); -end// - -create procedure proc_12093(a int) -begin - select * from table_12093; -end// - -delimiter ;// - -create function func_12093_unrelated() returns int return 2; -create procedure proc_12093_unrelated() begin end; - -prepare stmt_sf from 'select func_12093();'; -prepare stmt_sp from 'call proc_12093(func_12093())'; - -execute stmt_sf; -eval $check; -execute stmt_sp; -eval $check; - -connection con1; - -drop function func_12093_unrelated; -drop procedure proc_12093_unrelated; - -connection default; - -# previously, failed with --error 1305 -execute stmt_sf; -eval $check; -# previously, failed with --error 1305 -execute stmt_sp; -eval $check; - -# previously, failed with --error 1305 -execute stmt_sf; -eval $check; -# previously, failed with --error 1305 -execute stmt_sp; -eval $check; - -deallocate prepare stmt_sf; -deallocate prepare stmt_sp; - -disconnect con1; - -drop table table_12093; -drop function func_12093; -drop procedure proc_12093; - -# -# Bug#21294 (executing a prepared statement that executes a stored function -# which was recreat) -# - ---disable_warnings -drop function if exists func_21294; ---enable_warnings - -create function func_21294() returns int return 10; - -prepare stmt from "select func_21294()"; -execute stmt; -eval $check; - -drop function func_21294; -create function func_21294() returns int return 10; - -# might pass or fail, implementation dependent -execute stmt; -eval $check; - -drop function func_21294; -create function func_21294() returns int return 20; - -set @expected = @expected + 1; -execute stmt; -eval $check; - -deallocate prepare stmt; -drop function func_21294; - -# -# Bug#27420 (A combination of PS and view operations cause error + assertion -# on shutdown) -# +--echo # +--echo # Bug#27420 A combination of PS and view operations cause +--echo # error + assertion on shutdown +--echo # --disable_warnings drop table if exists t_27420_100; @@ -1677,10 +1130,6 @@ drop table if exists t_27420_101; drop view if exists v_27420; --enable_warnings -connect (con1,localhost,root,,); - -connection default; - create table t_27420_100(a int); insert into t_27420_100 values (1), (2); @@ -1691,46 +1140,33 @@ create view v_27420 as select t_27420_100.a X, t_27420_101.a Y from t_27420_100, t_27420_101 where t_27420_100.a=t_27420_101.a; -prepare stmt from 'select * from v_27420'; +prepare stmt from "select * from v_27420"; execute stmt; -eval $check; - -connection con1; +call p_verify_reprepare_count(0); drop view v_27420; create table v_27420(X int, Y int); -connection default; - -set @expected = @expected + 1; execute stmt; -eval $check; - -connection con1; +call p_verify_reprepare_count(1); drop table v_27420; # passes in 5.0, fails in 5.1, should pass create table v_27420 (a int, b int, filler char(200)); -connection default; - -set @expected = @expected + 1; ---error ER_PS_REBIND execute stmt; -eval $check; +call p_verify_reprepare_count(1); -disconnect con1; - -deallocate prepare stmt; drop table t_27420_100; drop table t_27420_101; drop table v_27420; +deallocate prepare stmt; -# -# Bug#27430 (Crash in subquery code when in PS and table DDL changed after -# PREPARE) -# +--echo # +--echo # Bug#27430 Crash in subquery code when in PS and table DDL changed +--echo # after PREPARE +--echo # --disable_warnings drop table if exists t_27430_1; @@ -1753,12 +1189,10 @@ insert into t_27430_2 values (1234, 4); prepare stmt from - 'select oref, a, a in (select a from t_27430_1 where oref=t_27430_2.oref) Z from t_27430_2'; + "select oref, a, a in (select a from t_27430_1 where oref=t_27430_2.oref) Z from t_27430_2"; execute stmt; -eval $check; -execute stmt; -eval $check; +call p_verify_reprepare_count(0); drop table t_27430_1, t_27430_2; @@ -1777,23 +1211,17 @@ insert into t_27430_2 values (NULL, 3), (NULL, 4); -set @expected = @expected + 1; ---error ER_PS_REBIND execute stmt; -eval $check; -set @expected = @expected + 1; ---error ER_PS_REBIND -execute stmt; -eval $check; +call p_verify_reprepare_count(1); -deallocate prepare stmt; drop table t_27430_1; drop table t_27430_2; +deallocate prepare stmt; -# -# Bug#27690 (Re-execution of prepared statement after table was replaced -# with a view crashes) -# +--echo # +--echo # Bug#27690 Re-execution of prepared statement after table +--echo # was replaced with a view crashes +--echo # --disable_warnings drop table if exists t_27690_1; @@ -1807,33 +1235,125 @@ insert into t_27690_1 values (1,1),(2,2); create table v_27690_1 as select * from t_27690_1; create table v_27690_2 as select * from t_27690_1; -prepare stmt from 'select * from v_27690_1, v_27690_2'; +prepare stmt from "select * from v_27690_1, v_27690_2"; execute stmt; -eval $check; execute stmt; -eval $check; drop table v_27690_1; --error ER_NO_SUCH_TABLE execute stmt; -eval $check; --error ER_NO_SUCH_TABLE execute stmt; -eval $check; +call p_verify_reprepare_count(0); create view v_27690_1 as select A.a, A.b from t_27690_1 A, t_27690_1 B; -set @expected = @expected + 1; execute stmt; -eval $check; +call p_verify_reprepare_count(1); execute stmt; -eval $check; +call p_verify_reprepare_count(0); -deallocate prepare stmt; drop table t_27690_1; drop view v_27690_1; drop table v_27690_2; +deallocate prepare stmt; +--echo #===================================================================== +--echo # TODO: fix the below two bugs and modify their tests +--echo # +--echo # Bug#21294 Executing a prepared statement that executes +--echo # a stored function which was recreat +--echo # + +create function f1() returns int return 10; + +prepare stmt from "select f1()"; +execute stmt; + +drop function f1; +create function f1() returns int return 10; + +# might pass or fail, implementation dependent +--error ER_SP_DOES_NOT_EXIST +execute stmt; + +drop function f1; +create function f1() returns int return 20; + +--error ER_SP_DOES_NOT_EXIST +execute stmt; +call p_verify_reprepare_count(0); + +drop function f1; +deallocate prepare stmt; + +--echo # +--echo # Bug#12093 SP not found on second PS execution if another thread drops +--echo # other SP in between +--echo # +--disable_warnings +drop table if exists t_12093; +drop function if exists f_12093; +drop function if exists f_12093_unrelated; +drop procedure if exists p_12093; +--enable_warnings + +create table t_12093 (a int); + +create function f_12093() returns int return (select count(*) from t_12093); + +create procedure p_12093(a int) select * from t_12093; + +create function f_12093_unrelated() returns int return 2; +create procedure p_12093_unrelated() begin end; + +prepare stmt_sf from 'select f_12093();'; +prepare stmt_sp from 'call p_12093(f_12093())'; + +execute stmt_sf; +execute stmt_sp; + +connect (con1,localhost,root,,); +connection con1; + +drop function f_12093_unrelated; +drop procedure p_12093_unrelated; + +connection default; + +--echo # XXX: bug +--error ER_SP_DOES_NOT_EXIST +execute stmt_sf; +--echo # XXX: bug +--error ER_SP_DOES_NOT_EXIST +execute stmt_sp; + +--echo # XXX: bug +--error ER_SP_DOES_NOT_EXIST +execute stmt_sf; +--echo # XXX: bug +--error ER_SP_DOES_NOT_EXIST +execute stmt_sp; +call p_verify_reprepare_count(0); + +disconnect con1; + +drop table t_12093; +drop function f_12093; +drop procedure p_12093; +deallocate prepare stmt_sf; +deallocate prepare stmt_sp; + +--echo # Cleanup +--echo # +--disable_warnings +drop temporary table if exists t1, t2, t3; +drop table if exists t1, t2, t3, v1, v2; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists v1, v2; +--enable_warnings From 17ec1c3c3b036bc8d856824dc0912539ca6e7da9 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 15:42:32 +0400 Subject: [PATCH 036/435] A fix for Bug#32724 "innodb_mysql.test fails randomly". Enable back the disabled test case. mysql-test/t/disabled.def: Enable the test case innodb_mysql. sql/sql_parse.cc: Fix the random failure of innodb_mysql test. The failure is not random any more after a patch for Bug 12713 added asserts around handler commit. --- mysql-test/t/disabled.def | 1 - sql/sql_parse.cc | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 4e58c30b812..af7b9c25f18 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -16,7 +16,6 @@ ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Do federated_transactions : Bug#29523 Transactions do not work lowercase_table3 : Bug#32667 lowercase_table3.test reports to error log -innodb_mysql : Bug#32724: innodb_mysql.test fails randomly ctype_create : Bug#32965 main.ctype_create fails status : Bug#32966 main.status fails ps_ddl : Bug#12093 2007-12-14 pending WL#4165 / WL#4166 diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 3edad3a2184..c28fea57c64 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -3301,6 +3301,7 @@ end_with_restore_list: can free its locks if LOCK TABLES locked some tables before finding that it can't lock a table in its list */ + ha_autocommit_or_rollback(thd, 1); end_active_trans(thd); thd->options&= ~(OPTION_TABLE_LOCK); } From 797bfd6e3fda46deb88ab34ef368223e01759111 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 23:57:47 +0400 Subject: [PATCH 037/435] Fix a compilation warning (unused variable). --- sql/sql_update.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/sql_update.cc b/sql/sql_update.cc index fe34301cda0..103ac17a821 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -853,7 +853,9 @@ bool mysql_prepare_update(THD *thd, TABLE_LIST *table_list, Item **conds, uint order_num, ORDER *order) { Item *fake_conds= 0; +#ifndef NO_EMBEDDED_ACCESS_CHECKS TABLE *table= table_list->table; +#endif List all_fields; SELECT_LEX *select_lex= &thd->lex->select_lex; DBUG_ENTER("mysql_prepare_update"); From 8765b5f021395087b69a92534f6596c19ef7096d Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 7 Apr 2008 18:40:37 -0400 Subject: [PATCH 038/435] Work around for older version of cmake. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d4697efef93..ae069498da1 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,17 +83,17 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805") # Disable warnings in Visual Studio 8 and above -IF(MSVC AND MSVC_VERSION GREATER 1399) +IF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996") SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996") SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /wd4996") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /wd4996") SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /wd4996") SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /wd4996") -ENDIF(MSVC AND MSVC_VERSION GREATER 1399) +ENDIF(MSVC AND NOT CMAKE_GENERATOR MATCHES "Visual Studio 7") # Settings for Visual Studio 7 and above. -IF(MSVC AND MSVC_VERSION GREATER 1299) +IF(MSVC) # replace /MDd with /MTd STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) STRING(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELWITHDEBINFO ${CMAKE_C_FLAGS_RELWITHDEBINFO}) @@ -123,7 +123,7 @@ IF(MSVC AND MSVC_VERSION GREATER 1299) IF(NOT tmp_manifest) SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") ENDIF(NOT tmp_manifest) -ENDIF(MSVC AND MSVC_VERSION GREATER 1299) +ENDIF(MSVC) ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE") From 9fd89afca04400812a8fec6b1802bf60518bd2ac Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 10:20:58 +0500 Subject: [PATCH 039/435] Fix for bug #35732: read-only blocks SELECT statements in InnoDB Problem: SELECTs prohibited for a transactional SE in autocommit mode if read_only is set. Fix: allow them. mysql-test/r/read_only_innodb.result: Fix for bug #35732: read-only blocks SELECT statements in InnoDB - test result. mysql-test/t/read_only_innodb.test: Fix for bug #35732: read-only blocks SELECT statements in InnoDB - test case. sql/handler.cc: Fix for bug #35732: read-only blocks SELECT statements in InnoDB - in autocommit mode thd->transaction.all list is empty thus is_real_trans set to TRUE for any SELECTs, so using it in the "read_only" check is insufficient. ha_check_and_coalesce_trx_read_only() changed to return number of engines with read-write changes. This value is used in the "read-only" check and checks for GLOBAL READ LOCK. sql/lock.cc: Fix for bug #35732: read-only blocks SELECT statements in InnoDB - added assert(protect_against_global_read_lock) before decreasing, in order to catch (uint) 0 - 1 situation due to wrong wait_if_global_read_lock()/start_waiting_global_read_lock() call sequence. --- mysql-test/r/read_only_innodb.result | 30 +++++++++++++ mysql-test/t/read_only_innodb.test | 42 ++++++++++++++++++ sql/handler.cc | 66 ++++++++++++++++------------ sql/lock.cc | 1 + 4 files changed, 110 insertions(+), 29 deletions(-) diff --git a/mysql-test/r/read_only_innodb.result b/mysql-test/r/read_only_innodb.result index d028e3cc207..690de085bf9 100644 --- a/mysql-test/r/read_only_innodb.result +++ b/mysql-test/r/read_only_innodb.result @@ -16,3 +16,33 @@ ERROR HY000: The MySQL server is running with the --read-only option so it canno set global read_only=0; drop table table_11733 ; drop user test@localhost; +GRANT CREATE, SELECT, DROP ON *.* TO test@localhost; +CREATE TABLE t1(a INT) ENGINE=INNODB; +INSERT INTO t1 VALUES (0), (1); +SET GLOBAL read_only=1; +SELECT * FROM t1; +a +0 +1 +BEGIN; +SELECT * FROM t1; +a +0 +1 +COMMIT; +SET GLOBAL read_only=0; +FLUSH TABLES WITH READ LOCK; +SELECT * FROM t1; +a +0 +1 +BEGIN; +SELECT * FROM t1; +a +0 +1 +COMMIT; +UNLOCK TABLES; +DROP TABLE t1; +DROP USER test@localhost; +echo End of 5.1 tests diff --git a/mysql-test/t/read_only_innodb.test b/mysql-test/t/read_only_innodb.test index 76d9748aa60..f8c25fdee1d 100644 --- a/mysql-test/t/read_only_innodb.test +++ b/mysql-test/t/read_only_innodb.test @@ -41,3 +41,45 @@ set global read_only=0; drop table table_11733 ; drop user test@localhost; +disconnect con1; + +# +# Bug #35732: read-only blocks SELECT statements in InnoDB +# +# Test 1: read only mode +GRANT CREATE, SELECT, DROP ON *.* TO test@localhost; +connect(con1, localhost, test, , test); + +connection default; +CREATE TABLE t1(a INT) ENGINE=INNODB; +INSERT INTO t1 VALUES (0), (1); +SET GLOBAL read_only=1; + +connection con1; +SELECT * FROM t1; +BEGIN; +SELECT * FROM t1; +COMMIT; + +connection default; +SET GLOBAL read_only=0; + +# +# Test 2: global read lock +# +FLUSH TABLES WITH READ LOCK; + +connection con1; +SELECT * FROM t1; +BEGIN; +SELECT * FROM t1; +COMMIT; + +connection default; +UNLOCK TABLES; +DROP TABLE t1; +DROP USER test@localhost; + +disconnect con1; + +--echo echo End of 5.1 tests diff --git a/sql/handler.cc b/sql/handler.cc index b334e003851..6099faa929f 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -952,16 +952,21 @@ int ha_prepare(THD *thd) A helper function to evaluate if two-phase commit is mandatory. As a side effect, propagates the read-only/read-write flags of the statement transaction to its enclosing normal transaction. + + If we have at least two engines with read-write changes we must + run a two-phase commit. Otherwise we can run several independent + commits as the only transactional engine has read-write changes + and others are read-only. - @retval TRUE we must run a two-phase commit. Returned - if we have at least two engines with read-write changes. - @retval FALSE Don't need two-phase commit. Even if we have two - transactional engines, we can run two independent - commits if changes in one of the engines are read-only. + @retval 0 All engines are read-only. + @retval 1 We have the only engine with read-write changes. + @retval >1 More than one engine have read-write changes. + Note: return value might NOT be the exact number of + engines with read-write changes. */ static -bool +uint ha_check_and_coalesce_trx_read_only(THD *thd, Ha_trx_info *ha_list, bool all) { @@ -998,7 +1003,7 @@ ha_check_and_coalesce_trx_read_only(THD *thd, Ha_trx_info *ha_list, break; } } - return rw_ha_count > 1; + return rw_ha_count; } @@ -1061,25 +1066,8 @@ int ha_commit_trans(THD *thd, bool all) #ifdef USING_TRANSACTIONS if (ha_info) { - bool must_2pc; - - if (is_real_trans && wait_if_global_read_lock(thd, 0, 0)) - { - ha_rollback_trans(thd, all); - DBUG_RETURN(1); - } - - if ( is_real_trans - && opt_readonly - && ! (thd->security_ctx->master_access & SUPER_ACL) - && ! thd->slave_thread - ) - { - my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--read-only"); - ha_rollback_trans(thd, all); - error= 1; - goto end; - } + uint rw_ha_count; + bool rw_trans; DBUG_EXECUTE_IF("crash_commit_before", abort();); @@ -1087,9 +1075,29 @@ int ha_commit_trans(THD *thd, bool all) if (is_real_trans) /* not a statement commit */ thd->stmt_map.close_transient_cursors(); - must_2pc= ha_check_and_coalesce_trx_read_only(thd, ha_info, all); + rw_ha_count= ha_check_and_coalesce_trx_read_only(thd, ha_info, all); + /* rw_trans is TRUE when we in a transaction changing data */ + rw_trans= is_real_trans && (rw_ha_count > 0); - if (!trans->no_2pc && must_2pc) + if (rw_trans && + wait_if_global_read_lock(thd, 0, 0)) + { + ha_rollback_trans(thd, all); + DBUG_RETURN(1); + } + + if (rw_trans && + opt_readonly && + !(thd->security_ctx->master_access & SUPER_ACL) && + !thd->slave_thread) + { + my_error(ER_OPTION_PREVENTS_STATEMENT, MYF(0), "--read-only"); + ha_rollback_trans(thd, all); + error= 1; + goto end; + } + + if (!trans->no_2pc && (rw_ha_count > 1)) { for (; ha_info && !error; ha_info= ha_info->next()) { @@ -1129,7 +1137,7 @@ int ha_commit_trans(THD *thd, bool all) tc_log->unlog(cookie, xid); DBUG_EXECUTE_IF("crash_commit_after", abort();); end: - if (is_real_trans) + if (rw_trans) start_waiting_global_read_lock(thd); } #endif /* USING_TRANSACTIONS */ diff --git a/sql/lock.cc b/sql/lock.cc index a0d6faa6604..675b94c2175 100644 --- a/sql/lock.cc +++ b/sql/lock.cc @@ -1533,6 +1533,7 @@ void start_waiting_global_read_lock(THD *thd) if (unlikely(thd->global_read_lock)) DBUG_VOID_RETURN; (void) pthread_mutex_lock(&LOCK_global_read_lock); + DBUG_ASSERT(protect_against_global_read_lock); tmp= (!--protect_against_global_read_lock && (waiting_for_read_lock || global_read_lock_blocks_commit)); (void) pthread_mutex_unlock(&LOCK_global_read_lock); From 73febb3bf9c33fc8c91252e783bd2aeaac21d56a Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 10:43:00 +0300 Subject: [PATCH 040/435] Bug #35762 Failing CREATE-SELECT steels Table map of the following query Among two claimed artifacts the critical one is in that the Table map of a query following the failing with a duplicate key error CREATE-SELECT is skipped from instantionating (and thus binlogging). That leads to sending a "chopped" group of the data row-events without the table map head to the slave. The slave can not apply the only data row events. It's not easy to force the slave to react with an error in such a case (the second complaint on the bug report), because the lack of a table Rows_log_event::do_apply_event the data row event handler is a common situation which normally designates the event has to be filtered out basing on the repliation do/ingore rules decision. Fixed: table map creating and binlogging is restored via deploying the standard cleanup call in select_create::abort(). No error is reported if by chance the table map was not been binlogged. Leaving this out to resolve with considering how to combine the do/ingore rules with the situation when erronoulsy the Table_map is not written to binlog. mysql-test/suite/rpl/r/rpl_row_create_table.result: results changed mysql-test/suite/rpl/t/rpl_row_create_table.test: regression test for the bug sql/sql_insert.cc: adding resetting of thd binlogging state that was missed for the particular case of failing CREATE..SELECT --- .../suite/rpl/r/rpl_row_create_table.result | 14 ++++++++++ .../suite/rpl/t/rpl_row_create_table.test | 27 +++++++++++++++++++ sql/sql_insert.cc | 2 +- 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/rpl/r/rpl_row_create_table.result b/mysql-test/suite/rpl/r/rpl_row_create_table.result index ebfb576c42d..c4cf8353bca 100644 --- a/mysql-test/suite/rpl/r/rpl_row_create_table.result +++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result @@ -417,3 +417,17 @@ Log_name Pos Event_type Server_id End_log_pos Info SELECT * FROM t2 ORDER BY a; a DROP TABLE t1,t2; +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(1); +CREATE TABLE t2 (a INT UNIQUE) ENGINE=INNODB SELECT * FROM t1; +ERROR 23000: Duplicate entry '1' for key 'a' +INSERT INTO t1 VALUES (2); +*** the proof of the fix: +select must show that the last insert performed on the slave *** +SELECT * FROM t1; +a +1 +1 +2 +DROP TABLE t1; +end of the tests diff --git a/mysql-test/suite/rpl/t/rpl_row_create_table.test b/mysql-test/suite/rpl/t/rpl_row_create_table.test index bfeb939f30f..e5cdfa4341a 100644 --- a/mysql-test/suite/rpl/t/rpl_row_create_table.test +++ b/mysql-test/suite/rpl/t/rpl_row_create_table.test @@ -234,3 +234,30 @@ SELECT * FROM t2 ORDER BY a; connection master; DROP TABLE t1,t2; sync_slave_with_master; + +# +# bug#35762 Failing CREATE-SELECT produces bad binlog in row mode +# + +connection master; + +CREATE TABLE t1 (a INT); + +INSERT INTO t1 VALUES (1),(1); +--error ER_DUP_ENTRY +CREATE TABLE t2 (a INT UNIQUE) ENGINE=INNODB SELECT * FROM t1; +INSERT INTO t1 VALUES (2); + +sync_slave_with_master; +# connection slave; + +--echo *** the proof of the fix: +--echo select must show that the last insert performed on the slave *** +SELECT * FROM t1; + +connection master; +DROP TABLE t1; +sync_slave_with_master; + + +--echo end of the tests diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 89038bacda3..d1e5c26912d 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -3720,7 +3720,7 @@ void select_create::abort() select_insert::abort(); thd->transaction.stmt.modified_non_trans_table= FALSE; reenable_binlog(thd); - + thd->binlog_flush_pending_rows_event(TRUE); if (m_plock) { From 1d5f5887ec388cc2ad459a48d44628237ef8973f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 11:44:18 +0200 Subject: [PATCH 041/435] Makefile.am: Add ChangeLog if it exists - Removed separate 'normal+rowrepl' test run, not needed any longer - Removed separate 'rpl' test run, included in main test run already - Renamed some test "comments", to use similar naming style - Limited one of the Cluster test runs to 'ndb' and 'rpl_ndb' suites - Reordered test runs, to be aligned with Windows test runs mysql.spec.sh: - No longer including the "Example" storage engine - Added to configure "--without-ENGINE" if not to compile engine as plugin Docs/Makefile.am: Add ChangeLog if it exists Makefile.am: - Removed separate 'normal+rowrepl' test run, not needed any longer - Removed separate 'rpl' test run, included in main test run already - Renamed some test "comments", to use similar naming style - Limited one of the Cluster test runs to 'ndb' and 'rpl_ndb' suites - Reordered test runs, to be aligned with Windows test runs support-files/mysql.spec.sh: - No longer including the "Example" storage engine - Added to configure "--without-ENGINE" if not to compile engine as plugin --- Docs/Makefile.am | 19 +++++++++++++--- Makefile.am | 43 ++++++++++++++++--------------------- support-files/mysql.spec.sh | 6 ++++-- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/Docs/Makefile.am b/Docs/Makefile.am index 629618609a3..24f921a4877 100644 --- a/Docs/Makefile.am +++ b/Docs/Makefile.am @@ -19,11 +19,24 @@ EXTRA_DIST = mysql.info INSTALL-BINARY @extra_docs@ # automake only seems to take care of this automatically, # if we're building the info page from texi directly. install-data-hook: $(srcdir)/mysql.info - $(mkinstalldirs) $(DESTDIR)$(infodir) - $(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir) + if test `basename $(prefix)` = "mysql" ; then \ + $(mkinstalldirs) $(DESTDIR)$(prefix)/docs ; \ + $(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(prefix)/docs ; \ + test ! -f $(top_srcdir)/ChangeLog || $(INSTALL_DATA) $(top_srcdir)/ChangeLog $(DESTDIR)$(prefix)/docs ; \ + else \ + $(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(pkgdatadir) ; \ + $(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir) ; \ + test ! -f $(top_srcdir)/ChangeLog || $(INSTALL_DATA) $(top_srcdir)/ChangeLog $(DESTDIR)$(pkgdatadir) ; \ + fi uninstall-local: - @RM@ -f $(DESTDIR)$(infodir)/mysql.info + if test `basename $(prefix)` = "mysql" ; then \ + @RM@ -f $(DESTDIR)$(prefix)/docs/mysql.info ; \ + @RM@ -f $(DESTDIR)$(prefix)/docs/ChangeLog ; \ + else \ + @RM@ -f $(DESTDIR)$(infodir)/mysql.info ; \ + @RM@ -f $(DESTDIR)$(pkgdatadir)/ChangeLog ; \ + fi # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/Makefile.am b/Makefile.am index f999df86acf..60b4f9bd07c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -132,20 +132,33 @@ test-bt: -cd mysql-test ; MTR_BUILD_THREAD=auto \ @PERL@ ./mysql-test-run.pl --comment=ps --force --timer \ --skip-ndbcluster --ps-protocol - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=normal+rowrepl --force --timer \ - --skip-ndbcluster --mysqld=--binlog-format=row -if [ -e bin/ndbd -o -e storage/ndb/src/kernel/ndbd ] ; then \ cd mysql-test ; \ MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=ps+rowrepl+NDB --force --timer \ - --ps-protocol --mysqld=--binlog-format=row ; \ + @PERL@ ./mysql-test-run.pl --comment=ndb+rpl_ndb+ps --force --timer \ + --ps-protocol --mysqld=--binlog-format=row --suite=ndb,rpl_ndb ; \ MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=NDB --force --timer \ + @PERL@ ./mysql-test-run.pl --comment=ndb --force --timer \ --with-ndbcluster-only ; \ else \ echo "no program found for 'ndbcluster' tests - skipped testing" ; \ fi + -cd mysql-test ; MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --force --comment=funcs1+ps --ps-protocol --suite=funcs_1 + -cd mysql-test ; MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2 + -cd mysql-test ; MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --force --comment=partitions --suite=parts + -cd mysql-test ; MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress + -if [ -d mysql-test/suite/nist ] ; then \ + cd mysql-test ; MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --comment=nist --force --suite=nist ; \ + fi + -if [ -d mysql-test/suite/nist ] ; then \ + cd mysql-test ; MTR_BUILD_THREAD=auto \ + @PERL@ ./mysql-test-run.pl --comment=nist+ps --force --suite=nist --ps-protocol ; \ + fi -if [ -e bin/mysqltest_embedded -o -e libmysqld/examples/mysqltest_embedded ] ; then \ cd mysql-test ; MTR_BUILD_THREAD=auto \ @PERL@ ./mysql-test-run.pl --comment=embedded --force --timer \ @@ -153,24 +166,6 @@ test-bt: else \ echo "no program found for 'embedded' tests - skipped testing" ; \ fi - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --force --comment=funcs1_ps --ps-protocol --suite=funcs_1 - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --force --comment=funcs2 --suite=funcs_2 - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --force --comment=rpl --suite=rpl - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --force --comment=partitions --suite=parts - -if [ -d mysql-test/suite/nist ] ; then \ - cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=NIST+normal --force --suite=nist ; \ - fi - -if [ -d mysql-test/suite/nist ] ; then \ - cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --comment=NIST+ps --force --suite=nist --ps-protocol ; \ - fi - -cd mysql-test ; MTR_BUILD_THREAD=auto \ - @PERL@ ./mysql-test-run.pl --force --comment=stress --suite=stress # Re-enable the "jp" suite when bug#28563 is fixed # -cd mysql-test ; MTR_BUILD_THREAD=auto \ diff --git a/support-files/mysql.spec.sh b/support-files/mysql.spec.sh index 7f7674eefc9..5cbd85c62b4 100644 --- a/support-files/mysql.spec.sh +++ b/support-files/mysql.spec.sh @@ -341,7 +341,6 @@ BuildMySQL "--enable-shared \ %endif --with-archive-storage-engine \ --with-csv-storage-engine \ - --with-example-storage-engine \ --with-blackhole-storage-engine \ %if %{FEDERATED_BUILD} --with-federated-storage-engine \ @@ -373,13 +372,16 @@ BuildMySQL "--enable-shared \ --with-innodb \ %if %{CLUSTER_BUILD} --with-ndbcluster \ +%else + --without-ndbcluster \ %endif --with-archive-storage-engine \ --with-csv-storage-engine \ - --with-example-storage-engine \ --with-blackhole-storage-engine \ %if %{FEDERATED_BUILD} --with-federated-storage-engine \ +%else + --without-federated-storage-engine \ %endif --with-partition \ --with-embedded-server \ From f0b49d281904d474e8195547cb0178fe787653b1 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 15:57:44 +0200 Subject: [PATCH 042/435] Merge error between two patches caused error out-of-bounds assignment. --- sql/sql_acl.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 91fa3e48ee0..0b33abcfba2 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -3539,7 +3539,7 @@ static my_bool grant_load_procs_priv(TABLE *p_table) bool check_no_resolve= specialflag & SPECIAL_NO_RESOLVE; MEM_ROOT **save_mem_root_ptr= my_pthread_getspecific_ptr(MEM_ROOT**, THR_MALLOC); - DBUG_ENTER("grant_load"); + DBUG_ENTER("grant_load_procs_priv"); (void) hash_init(&proc_priv_hash,system_charset_info, 0,0,0, (hash_get_key) get_grant_table, 0,0); @@ -3723,6 +3723,7 @@ static my_bool grant_reload_procs_priv(THD *thd) table.alias= table.table_name= (char*) "procs_priv"; table.db= (char *) "mysql"; table.lock_type= TL_READ; + table.skip_temporary= 1; if (simple_open_n_lock_tables(thd, &table)) { @@ -3788,8 +3789,7 @@ my_bool grant_reload(THD *thd) tables[0].db= tables[1].db= (char *) "mysql"; tables[0].next_local= tables[0].next_global= tables+1; tables[0].lock_type= tables[1].lock_type= TL_READ; - tables[0].skip_temporary= tables[1].skip_temporary= - tables[2].skip_temporary= TRUE; + tables[0].skip_temporary= tables[1].skip_temporary= TRUE; /* To avoid deadlocks we should obtain table locks before obtaining LOCK_grant rwlock. From a63dde5a5b9a519ad2e4343c1d0b27de5bf41fc0 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 20:01:20 +0400 Subject: [PATCH 043/435] Tentative implementation of WL#4165 Prepared statements: validation WL#4166 Prepared statements: automatic re-prepare Fixes Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE Bug#27690 Re-execution of prepared statement after table was replaced with a view crashes Bug#27420 A combination of PS and view operations cause error + assertion on shutdown The basic idea of the patch is to keep track of table metadata between prepared statement prepare and execute. If some table used in the statement has changed, the prepared statement is re-prepared before execution. See WL#4165 and WL#4166 contents and comments in the code for details of the implementation. include/my_global.h: Remove 'register' keyword to avoid warnings when swapping large structures that don't fit into a register. Any modern compiler is capable of placing a variable in a register when that would benefit performance. mysql-test/r/ps_1general.result: Update test results: since now we re-prepare automatically, more correct results are produced in prepare-ddl-execute scenario. mysql-test/r/query_cache_merge.result: Ensure that the table definition cache is large enough for the test to pass in --ps-protocol mysql-test/r/trigger.result: Update test results to reflect automatic statement reprepare. mysql-test/t/disabled.def: Enable ps_ddl.test, which now passes. mysql-test/t/ps_1general.test: Since now we re-execute prepared statements after DDL successfully, change the test to produce repeatable results. Remove expectancy of an error in one place where now we automatically reprepare the prepared statement. mysql-test/t/query_cache_merge.test: Ensure the table definition cache is large enough for the test to pass in --ps-protocol mysql-test/t/trigger.test: Sinc sql/item.cc: Implement Item_param "copy" functionality, used at re-prepare of a prepared statement. We copy the type of the original parameter, and move the assigned value, if any. Sic, the value is "moved", since it can be quite big -- e.g. in case we deal with a LONG DATA parameter. It's essential to move the value from the old parameter since at the time of re-prepare the client packet with the necessary information may be not available. sql/item.h: Declare a new method used for reprepare. sql/my_decimal.h: Implement "swap()" functionality of class my_decimal to be able to easily swap two decimal values. sql/mysql_priv.h: Declare enum_metadata_type. sql/mysqld.cc: Implement a status variable for the number of reprepared statements. sql/sql_base.cc: Implement metadata version validation. sql/share/errmsg.txt: Add two new error messages: ER_NEED_REPREPARE and ER_PS_REBIND. The first error (theoretically) never reaches the user. It is issued by the metadata validation framework when a metadata version has changed between prepare and execute. Later on it's intercepted and the statement is automatically re-prepared. Only if the error has occurred repeatedly MAX_REPREPARE_ATTEMTS (3) times do we return it to the user. The second error is issued when after re-prepare we discover that the metadata we sent over to the client using the binary protocol differs drammatically from the new result set metadata that the reprepared statement produces (e.g. number of result set columns is different). sql/sql_class.cc: Implement metadata version validation framework. sql/sql_class.h: Declarations for metadata version validation framework. sql/sql_parse.cc: Mark commands for which we must invalidate and reprepare a prepared statement when metadata has changed. sql/sql_prepare.cc: Implement WL#4165 and WL#4166 (limited support of metadata validation and re-prepare). sql/table.h: Implement metadata validation. tests/mysql_client_test.c: Add a test case for WL#4166 --- include/my_global.h | 2 +- mysql-test/r/ps_1general.result | 19 +- mysql-test/r/query_cache_merge.result | 1 + mysql-test/r/trigger.result | 1 - mysql-test/t/disabled.def | 1 - mysql-test/t/ps_1general.test | 5 +- mysql-test/t/query_cache_merge.test | 10 + mysql-test/t/trigger.test | 7 +- sql/item.cc | 39 ++ sql/item.h | 1 + sql/my_decimal.h | 8 + sql/mysql_priv.h | 40 ++ sql/mysqld.cc | 9 +- sql/share/errmsg.txt | 6 + sql/sql_base.cc | 110 +++++- sql/sql_class.cc | 10 +- sql/sql_class.h | 86 ++++- sql/sql_parse.cc | 25 +- sql/sql_prepare.cc | 516 +++++++++++++++++++++----- sql/table.h | 130 +++++++ tests/mysql_client_test.c | 120 +++++- 21 files changed, 1028 insertions(+), 118 deletions(-) diff --git a/include/my_global.h b/include/my_global.h index d9a8aeca881..a1118f0cb3d 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -568,7 +568,7 @@ typedef unsigned short ushort; #define CMP_NUM(a,b) (((a) < (b)) ? -1 : ((a) == (b)) ? 0 : 1) #define sgn(a) (((a) < 0) ? -1 : ((a) > 0) ? 1 : 0) -#define swap_variables(t, a, b) { register t dummy; dummy= a; a= b; b= dummy; } +#define swap_variables(t, a, b) { t dummy; dummy= a; a= b; b= dummy; } #define test(a) ((a) ? 1 : 0) #define set_if_bigger(a,b) do { if ((a) < (b)) (a)=(b); } while(0) #define set_if_smaller(a,b) do { if ((a) > (b)) (a)=(b); } while(0) diff --git a/mysql-test/r/ps_1general.result b/mysql-test/r/ps_1general.result index 1c5f0e4dfd6..33849eefe7a 100644 --- a/mysql-test/r/ps_1general.result +++ b/mysql-test/r/ps_1general.result @@ -143,32 +143,32 @@ b char(30) ); insert into t5( a, b, c) values( 9, 'recreated table', 9); execute stmt2 ; -a b c -9 recreated table 9 +a c b +9 9 recreated table drop table t5 ; create table t5 ( a int primary key, b char(30), c int, -d timestamp default current_timestamp +d timestamp default '2008-02-23 09:23:45' ); insert into t5( a, b, c) values( 9, 'recreated table', 9); execute stmt2 ; -a b c -9 recreated table 9 +a b c d +9 recreated table 9 2008-02-23 09:23:45 drop table t5 ; create table t5 ( a int primary key, -d timestamp default current_timestamp, +d timestamp default '2008-02-23 09:23:45', b char(30), c int ); insert into t5( a, b, c) values( 9, 'recreated table', 9); execute stmt2 ; -a b c -9 recreated table 9 +a d b c +9 2008-02-23 09:23:45 recreated table 9 drop table t5 ; create table t5 ( @@ -189,7 +189,8 @@ f3 int ); insert into t5( f1, f2, f3) values( 9, 'recreated table', 9); execute stmt2 ; -ERROR 42S22: Unknown column 'test.t5.a' in 'field list' +f1 f2 f3 +9 recreated table 9 drop table t5 ; prepare stmt1 from ' select * from t1 where a <= 2 ' ; execute stmt1 ; diff --git a/mysql-test/r/query_cache_merge.result b/mysql-test/r/query_cache_merge.result index c6df4266de2..d2bbe217815 100644 --- a/mysql-test/r/query_cache_merge.result +++ b/mysql-test/r/query_cache_merge.result @@ -18,3 +18,4 @@ Variable_name Value Qcache_queries_in_cache 0 drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65,t66,t67,t68,t69,t70,t71,t72,t73,t74,t75,t76,t77,t78,t79,t80,t81,t82,t83,t84,t85,t86,t87,t88,t89,t90,t91,t92,t93,t94,t95,t96,t97,t98,t99,t100,t101,t102,t103,t104,t105,t106,t107,t108,t109,t110,t111,t112,t113,t114,t115,t116,t117,t118,t119,t120,t121,t122,t123,t124,t125,t126,t127,t128,t129,t130,t131,t132,t133,t134,t135,t136,t137,t138,t139,t140,t141,t142,t143,t144,t145,t146,t147,t148,t149,t150,t151,t152,t153,t154,t155,t156,t157,t158,t159,t160,t161,t162,t163,t164,t165,t166,t167,t168,t169,t170,t171,t172,t173,t174,t175,t176,t177,t178,t179,t180,t181,t182,t183,t184,t185,t186,t187,t188,t189,t190,t191,t192,t193,t194,t195,t196,t197,t198,t199,t200,t201,t202,t203,t204,t205,t206,t207,t208,t209,t210,t211,t212,t213,t214,t215,t216,t217,t218,t219,t220,t221,t222,t223,t224,t225,t226,t227,t228,t229,t230,t231,t232,t233,t234,t235,t236,t237,t238,t239,t240,t241,t242,t243,t244,t245,t246,t247,t248,t249,t250,t251,t252,t253,t254,t255,t256,t257,t00; SET @@global.query_cache_size=0; +set @@global.table_definition_cache=@save_table_definition_cache; diff --git a/mysql-test/r/trigger.result b/mysql-test/r/trigger.result index e7f5c41513b..35d5134fa6b 100644 --- a/mysql-test/r/trigger.result +++ b/mysql-test/r/trigger.result @@ -820,7 +820,6 @@ call p1(); drop trigger t1_bi; create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id); execute stmt1; -ERROR 42S02: Table 'test.t3' doesn't exist call p1(); ERROR 42S02: Table 'test.t3' doesn't exist deallocate prepare stmt1; diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index af7b9c25f18..24a5522b3dc 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -18,6 +18,5 @@ federated_transactions : Bug#29523 Transactions do not work lowercase_table3 : Bug#32667 lowercase_table3.test reports to error log ctype_create : Bug#32965 main.ctype_create fails status : Bug#32966 main.status fails -ps_ddl : Bug#12093 2007-12-14 pending WL#4165 / WL#4166 csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables cast : Bug#35594 2008-03-27 main.cast fails on Windows2003-64 diff --git a/mysql-test/t/ps_1general.test b/mysql-test/t/ps_1general.test index 42bf39890de..95cbd908933 100644 --- a/mysql-test/t/ps_1general.test +++ b/mysql-test/t/ps_1general.test @@ -181,7 +181,7 @@ create table t5 a int primary key, b char(30), c int, - d timestamp default current_timestamp + d timestamp default '2008-02-23 09:23:45' ); insert into t5( a, b, c) values( 9, 'recreated table', 9); execute stmt2 ; @@ -191,7 +191,7 @@ drop table t5 ; create table t5 ( a int primary key, - d timestamp default current_timestamp, + d timestamp default '2008-02-23 09:23:45', b char(30), c int ); @@ -218,7 +218,6 @@ create table t5 f3 int ); insert into t5( f1, f2, f3) values( 9, 'recreated table', 9); ---error 1054 execute stmt2 ; drop table t5 ; diff --git a/mysql-test/t/query_cache_merge.test b/mysql-test/t/query_cache_merge.test index 36b8662f088..5247d29a83c 100644 --- a/mysql-test/t/query_cache_merge.test +++ b/mysql-test/t/query_cache_merge.test @@ -25,6 +25,15 @@ while ($1) } --enable_warnings +# +# In order for the test to pass in --ps-protocol, we must +# set table_definition_cache size to at least 258 elements. +# Otherwise table versions are bound to change between +# prepare and execute, and we will get a constant validation +# error. See WL#4165 for details. +# +set @save_table_definition_cache= @@global.table_definition_cache; +set @@global.table_definition_cache=512; create table t00 (a int) engine=MERGE UNION=(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65,t66,t67,t68,t69,t70,t71,t72,t73,t74,t75,t76,t77,t78,t79,t80,t81,t82,t83,t84,t85,t86,t87,t88,t89,t90,t91,t92,t93,t94,t95,t96,t97,t98,t99,t100,t101,t102,t103,t104,t105,t106,t107,t108,t109,t110,t111,t112,t113,t114,t115,t116,t117,t118,t119,t120,t121,t122,t123,t124,t125,t126,t127,t128,t129,t130,t131,t132,t133,t134,t135,t136,t137,t138,t139,t140,t141,t142,t143,t144,t145,t146,t147,t148,t149,t150,t151,t152,t153,t154,t155,t156,t157,t158,t159,t160,t161,t162,t163,t164,t165,t166,t167,t168,t169,t170,t171,t172,t173,t174,t175,t176,t177,t178,t179,t180,t181,t182,t183,t184,t185,t186,t187,t188,t189,t190,t191,t192,t193,t194,t195,t196,t197,t198,t199,t200,t201,t202,t203,t204,t205,t206,t207,t208,t209,t210,t211,t212,t213,t214,t215,t216,t217,t218,t219,t220,t221,t222,t223,t224,t225,t226,t227,t228,t229,t230,t231,t232,t233,t234,t235,t236,t237,t238,t239,t240,t241,t242,t243,t244,t245,t246,t247,t248,t249,t250,t251,t252,t253,t254,t255,t256,t257) INSERT_METHOD=FIRST; enable_query_log; select count(*) from t00; @@ -36,5 +45,6 @@ show status like "Qcache_queries_in_cache"; drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65,t66,t67,t68,t69,t70,t71,t72,t73,t74,t75,t76,t77,t78,t79,t80,t81,t82,t83,t84,t85,t86,t87,t88,t89,t90,t91,t92,t93,t94,t95,t96,t97,t98,t99,t100,t101,t102,t103,t104,t105,t106,t107,t108,t109,t110,t111,t112,t113,t114,t115,t116,t117,t118,t119,t120,t121,t122,t123,t124,t125,t126,t127,t128,t129,t130,t131,t132,t133,t134,t135,t136,t137,t138,t139,t140,t141,t142,t143,t144,t145,t146,t147,t148,t149,t150,t151,t152,t153,t154,t155,t156,t157,t158,t159,t160,t161,t162,t163,t164,t165,t166,t167,t168,t169,t170,t171,t172,t173,t174,t175,t176,t177,t178,t179,t180,t181,t182,t183,t184,t185,t186,t187,t188,t189,t190,t191,t192,t193,t194,t195,t196,t197,t198,t199,t200,t201,t202,t203,t204,t205,t206,t207,t208,t209,t210,t211,t212,t213,t214,t215,t216,t217,t218,t219,t220,t221,t222,t223,t224,t225,t226,t227,t228,t229,t230,t231,t232,t233,t234,t235,t236,t237,t238,t239,t240,t241,t242,t243,t244,t245,t246,t247,t248,t249,t250,t251,t252,t253,t254,t255,t256,t257,t00; SET @@global.query_cache_size=0; +set @@global.table_definition_cache=@save_table_definition_cache; # End of 4.1 tests diff --git a/mysql-test/t/trigger.test b/mysql-test/t/trigger.test index 921c9579bfb..c57178c1928 100644 --- a/mysql-test/t/trigger.test +++ b/mysql-test/t/trigger.test @@ -997,11 +997,10 @@ call p1(); # Altering trigger forcing it use different set of tables drop trigger t1_bi; create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id); -# Until we implement proper mechanism for invalidation of PS/SP when table -# or SP's are changed these two statements will fail with 'Table ... was -# not locked' error (this mechanism should be based on the new TDC). ---error ER_NO_SUCH_TABLE execute stmt1; +# Until we implement proper mechanism for invalidation of SP statements +# invoked whenever a table used in SP changes, this statement will fail with +# 'Table ... does not exist' error. --error ER_NO_SUCH_TABLE call p1(); deallocate prepare stmt1; diff --git a/sql/item.cc b/sql/item.cc index 883c293f645..04c75107d14 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -3161,6 +3161,45 @@ void Item_param::print(String *str, enum_query_type query_type) } +/** + Preserve the original parameter types and values + when re-preparing a prepared statement. + + Copy parameter type information and conversion function + pointers from a parameter of the old statement to the + corresponding parameter of the new one. + + Move parameter values from the old parameters to the new + one. We simply "exchange" the values, which allows + to save on allocation and character set conversion in + case a parameter is a string or a blob/clob. + + @param[in] src parameter item of the original + prepared statement +*/ + +void +Item_param::set_param_type_and_swap_value(Item_param *src) +{ + unsigned_flag= src->unsigned_flag; + param_type= src->param_type; + set_param_func= src->set_param_func; + item_type= src->item_type; + item_result_type= src->item_result_type; + + collation.set(src->collation.collation); + maybe_null= src->maybe_null; + null_value= src->null_value; + max_length= src->max_length; + decimals= src->decimals; + state= src->state; + value= src->value; + + decimal_value.swap(src->decimal_value); + str_value.swap(src->str_value); + str_value_ptr.swap(src->str_value_ptr); +} + /**************************************************************************** Item_copy_string ****************************************************************************/ diff --git a/sql/item.h b/sql/item.h index cd8bb4faccb..465d6f4d54c 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1684,6 +1684,7 @@ public: bool eq(const Item *item, bool binary_cmp) const; /** Item is a argument to a limit clause. */ bool limit_clause_param; + void set_param_type_and_swap_value(Item_param *from); }; diff --git a/sql/my_decimal.h b/sql/my_decimal.h index 1885036f42b..b096abaf8ae 100644 --- a/sql/my_decimal.h +++ b/sql/my_decimal.h @@ -114,6 +114,14 @@ public: bool sign() const { return decimal_t::sign; } void sign(bool s) { decimal_t::sign= s; } uint precision() const { return intg + frac; } + + /** Swap two my_decimal values */ + void swap(my_decimal &rhs) + { + swap_variables(my_decimal, *this, rhs); + /* Swap the buffer pointers back */ + swap_variables(decimal_digit_t *, buf, rhs.buf); + } }; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 26f253a6f8e..491a4c8ca1b 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -259,6 +259,21 @@ protected: #define USER_VARS_HASH_SIZE 16 #define TABLE_OPEN_CACHE_MIN 64 #define TABLE_OPEN_CACHE_DEFAULT 64 +#define TABLE_DEF_CACHE_DEFAULT 256 +/** + We must have room for at least 256 table definitions in the table + cache, since otherwise there is no chance prepared + statements that use these many tables can work. + Prepared statements use table definition cache ids (table_map_id) + as table version identifiers. If the table definition + cache size is less than the number of tables used in a statement, + the contents of the table definition cache is guaranteed to rotate + between a prepare and execute. This leads to stable validation + errors. In future we shall use more stable version identifiers, + for now the only solution is to ensure that the table definition + cache can contain at least all tables of a given statement. +*/ +#define TABLE_DEF_CACHE_MIN 256 /* Value of 9236 discovered through binary search 2006-09-26 on Ubuntu Dapper @@ -670,6 +685,31 @@ const char *set_thd_proc_info(THD *thd, const char *info, const char *calling_file, const unsigned int calling_line); +/** + Enumerate possible types of a table from re-execution + standpoint. + TABLE_LIST class has a member of this type. + At prepared statement prepare, this member is assigned a value + as of the current state of the database. Before (re-)execution + of a prepared statement, we check that the value recorded at + prepare matches the type of the object we obtained from the + table definition cache. + + @sa check_and_update_metadata_version() + @sa Execute_observer + @sa Prepared_statement::reprepare() +*/ + +enum enum_metadata_type +{ + /** Initial value set by the parser */ + METADATA_NULL= 0, + METADATA_VIEW, + METADATA_BASE_TABLE, + METADATA_I_S_TABLE, + METADATA_TMP_TABLE +}; + /* External variables */ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 36a5b1a10d9..d93100a068f 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3089,6 +3089,7 @@ SHOW_VAR com_status_vars[]= { {"stmt_execute", (char*) offsetof(STATUS_VAR, com_stmt_execute), SHOW_LONG_STATUS}, {"stmt_fetch", (char*) offsetof(STATUS_VAR, com_stmt_fetch), SHOW_LONG_STATUS}, {"stmt_prepare", (char*) offsetof(STATUS_VAR, com_stmt_prepare), SHOW_LONG_STATUS}, + {"stmt_reprepare", (char*) offsetof(STATUS_VAR, com_stmt_reprepare), SHOW_LONG_STATUS}, {"stmt_reset", (char*) offsetof(STATUS_VAR, com_stmt_reset), SHOW_LONG_STATUS}, {"stmt_send_long_data", (char*) offsetof(STATUS_VAR, com_stmt_send_long_data), SHOW_LONG_STATUS}, {"truncate", (char*) offsetof(STATUS_VAR, com_stat[(uint) SQLCOM_TRUNCATE]), SHOW_LONG_STATUS}, @@ -3177,7 +3178,7 @@ static int init_common_variables(const char *conf_file_name, int argc, We have few debug-only commands in com_status_vars, only visible in debug builds. for simplicity we enable the assert only in debug builds - There are 7 Com_ variables which don't have corresponding SQLCOM_ values: + There are 8 Com_ variables which don't have corresponding SQLCOM_ values: (TODO strictly speaking they shouldn't be here, should not have Com_ prefix that is. Perhaps Stmt_ ? Comstmt_ ? Prepstmt_ ?) @@ -3186,6 +3187,7 @@ static int init_common_variables(const char *conf_file_name, int argc, Com_stmt_execute => com_stmt_execute Com_stmt_fetch => com_stmt_fetch Com_stmt_prepare => com_stmt_prepare + Com_stmt_reprepare => com_stmt_reprepare Com_stmt_reset => com_stmt_reset Com_stmt_send_long_data => com_stmt_send_long_data @@ -3194,7 +3196,7 @@ static int init_common_variables(const char *conf_file_name, int argc, of SQLCOM_ constants. */ compile_time_assert(sizeof(com_status_vars)/sizeof(com_status_vars[0]) - 1 == - SQLCOM_END + 7); + SQLCOM_END + 8); #endif load_defaults(conf_file_name, groups, &argc, &argv); @@ -6757,7 +6759,8 @@ The minimum value for this variable is 4096.", {"table_definition_cache", OPT_TABLE_DEF_CACHE, "The number of cached table definitions.", (uchar**) &table_def_size, (uchar**) &table_def_size, - 0, GET_ULONG, REQUIRED_ARG, 128, 1, 512*1024L, 0, 1, 0}, + 0, GET_ULONG, REQUIRED_ARG, TABLE_DEF_CACHE_DEFAULT, TABLE_DEF_CACHE_MIN, + 512*1024L, 0, 1, 0}, {"table_open_cache", OPT_TABLE_OPEN_CACHE, "The number of cached open tables.", (uchar**) &table_cache_size, (uchar**) &table_cache_size, 0, GET_ULONG, diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 7990baa6bb7..684d1ce9421 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -6120,3 +6120,9 @@ ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT eng "The BINLOG statement of type `%s` was not preceded by a format description BINLOG statement." ER_SLAVE_CORRUPT_EVENT eng "Corrupted replication event was detected" + +ER_NEED_REPREPARE + eng "Prepared statement needs to be re-prepared" + +ER_PS_REBIND + eng "Prepared statement result set has changed, a rebind needed" diff --git a/sql/sql_base.cc b/sql/sql_base.cc index f0faf034027..62a723953ed 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3717,6 +3717,72 @@ void assign_new_table_id(TABLE_SHARE *share) DBUG_VOID_RETURN; } + +/** + Compare metadata versions of an element obtained from the table + definition cache and its corresponding node in the parse tree. + + If the new and the old values mismatch, invoke + Metadata_version_observer. + + At prepared statement prepare, all TABLE_LIST version values are + NULL and we always have a mismatch. But there is no observer set + in THD, and therefore no error is reported. Instead, we update + the value in the parse tree, effectively recording the original + version. + At prepared statement execute, an observer may be installed. If + there is a version mismatch, we push an error and return TRUE. + + For conventional execution (no prepared statements), the + observer is never installed. + + @sa Execute_observer + @sa check_prepared_statement() to see cases when an observer is installed + @sa TABLE_LIST::is_metadata_version_equal() + @sa TABLE_SHARE::get_metadata_version() + + @param[in] thd used to report errors + @param[in,out] tables TABLE_LIST instance created by the parser + Metadata version information in this object + is updated upon success. + @param[in] table_share an element from the table definition cache + + @retval TRUE an error, which has been reported + @retval FALSE success, version in TABLE_LIST has been updated +*/ + +bool +check_and_update_table_version(THD *thd, + TABLE_LIST *tables, TABLE_SHARE *table_share) +{ + if (! tables->is_metadata_version_equal(table_share)) + { + if (thd->m_metadata_observer && + thd->m_metadata_observer->check_metadata_change(thd)) + { + /* + Version of the table share is different from the + previous execution of the prepared statement, and it is + unacceptable for this SQLCOM. Error has been reported. + */ + return TRUE; + } + /* Always maintain the latest version */ + tables->set_metadata_version(table_share); + } +#if 0 +#ifndef DBUG_OFF + /* Spuriously reprepare each statement. */ + if (thd->m_metadata_observer && thd->stmt_arena->is_reprepared == FALSE) + { + thd->m_metadata_observer->check_metadata_change(thd); + return TRUE; + } +#endif +#endif + return FALSE; +} + /* Load a table definition from file and open unireg table @@ -3762,6 +3828,8 @@ retry: if (share->is_view) { + if (check_and_update_table_version(thd, table_list, share)) + goto err; if (table_list->i_s_requested_object & OPEN_TABLE_ONLY) goto err; @@ -3779,6 +3847,26 @@ retry: release_table_share(share, RELEASE_NORMAL); DBUG_RETURN((flags & OPEN_VIEW_NO_PARSE)? -1 : 0); } + else if (table_list->view) + { + /* + We're trying to open a table for what was a view. + This can only happen during (re-)execution. + At prepared statement prepare the view has been opened and + merged into the statement parse tree. After that, someone + performed a DDL and replaced the view with a base table. + Don't try to open the table inside a prepared statement, + invalidate it instead. + + Note, the assert below is known to fail inside stored + procedures (Bug#27011). + */ + DBUG_ASSERT(thd->m_metadata_observer); + check_and_update_table_version(thd, table_list, share); + /* Always an error. */ + DBUG_ASSERT(thd->is_error()); + goto err; + } if (table_list->i_s_requested_object & OPEN_VIEW_ONLY) goto err; @@ -4375,8 +4463,18 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags) */ if (tables->schema_table) { - if (!mysql_schema_table(thd, thd->lex, tables)) + /* + If this information_schema table is merged into a mergeable + view, ignore it for now -- it will be filled when its respective + TABLE_LIST is processed. This code works only during re-execution. + */ + if (tables->view) + goto process_view_routines; + if (!mysql_schema_table(thd, thd->lex, tables) && + !check_and_update_table_version(thd, tables, tables->table->s)) + { continue; + } DBUG_RETURN(-1); } (*counter)++; @@ -4524,6 +4622,12 @@ int open_tables(THD *thd, TABLE_LIST **start, uint *counter, uint flags) } tables->table->grant= tables->grant; + if (check_and_update_table_version(thd, tables, tables->table->s)) + { + result= -1; + goto err; + } + /* Attach MERGE children if not locked already. */ DBUG_PRINT("tcache", ("is parent: %d is child: %d", test(tables->table->child_l), @@ -4582,7 +4686,11 @@ process_view_routines: error happens on a MERGE child, clear the parents TABLE reference. */ if (tables->parent_l) + { + if (tables->parent_l->next_global == tables->parent_l->table->child_l) + tables->parent_l->next_global= *tables->parent_l->table->child_last_l; tables->parent_l->table= NULL; + } tables->table= NULL; } DBUG_PRINT("tcache", ("returning: %d", result)); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 7c57e3fc40e..6a4ef0781a2 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -359,6 +359,10 @@ char *thd_security_context(THD *thd, char *buffer, unsigned int length, return thd->strmake(str.ptr(), str.length()); } +Metadata_version_observer::~Metadata_version_observer() +{ +} + /** Clear this diagnostics area. @@ -2767,7 +2771,8 @@ void THD::restore_backup_open_tables_state(Open_tables_state *backup) DBUG_ASSERT(open_tables == 0 && temporary_tables == 0 && handler_tables == 0 && derived_tables == 0 && lock == 0 && locked_tables == 0 && - prelocked_mode == NON_PRELOCKED); + prelocked_mode == NON_PRELOCKED && + m_metadata_observer == NULL); set_open_tables_state(backup); DBUG_VOID_RETURN; } @@ -2871,6 +2876,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, first_successful_insert_id_in_prev_stmt; backup->first_successful_insert_id_in_cur_stmt= first_successful_insert_id_in_cur_stmt; + backup->m_metadata_observer= m_metadata_observer; if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && !current_stmt_binlog_row_based) @@ -2890,6 +2896,7 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, cuted_fields= 0; transaction.savepoints= 0; first_successful_insert_id_in_cur_stmt= 0; + m_metadata_observer= 0; } @@ -2938,6 +2945,7 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup) */ examined_row_count+= backup->examined_row_count; cuted_fields+= backup->cuted_fields; + m_metadata_observer= backup->m_metadata_observer; } diff --git a/sql/sql_class.h b/sql/sql_class.h index 2bfcc43a454..837b74b3b60 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -23,6 +23,53 @@ #include "log.h" #include "rpl_tblmap.h" +/** + An abstract interface that can be used to take an action when + the locking module notices that a table version has changed + since the last execution. "Table" here may refer to any kind of + table -- a base table, a temporary table, a view or an + information schema table. + + When we open and lock tables for execution of a prepared + statement, we must verify that they did not change + since statement prepare. If some table did change, the statement + parse tree *may* be no longer valid, e.g. in case it contains + optimizations that depend on table metadata. + + This class provides an abstract interface (a method) that is + invoked when such a situation takes place. + The implementation of the interface in most cases simply + reports an error, but the exact details depend on the nature of + the SQL statement. + + At most 1 instance of this class is active at a time, in which + case THD::m_metadata_observer is not NULL. + + @sa check_and_update_metadata_version() for details of the + version tracking algorithm + + @sa Execute_observer for details of how we detect that + a metadata change is fatal and a re-prepare is necessary + + @sa Open_tables_state::m_metadata_observer for the life cycle + of metadata observers. +*/ + +class Metadata_version_observer +{ +protected: + virtual ~Metadata_version_observer(); +public: + /** + Check if a change of metadata is OK. In future + the signature of this method may be extended to accept the old + and the new versions, but since currently the check is very + simple, we only need the THD to report an error. + */ + virtual bool check_metadata_change(THD *thd)= 0; +}; + + class Relay_log_info; class Query_log_event; @@ -406,6 +453,7 @@ typedef struct system_status_var ulong filesort_scan_count; /* Prepared statements and binary protocol */ ulong com_stmt_prepare; + ulong com_stmt_reprepare; ulong com_stmt_execute; ulong com_stmt_send_long_data; ulong com_stmt_fetch; @@ -436,7 +484,7 @@ void free_tmp_table(THD *thd, TABLE *entry); /* The following macro is to make init of Query_arena simpler */ #ifndef DBUG_OFF -#define INIT_ARENA_DBUG_INFO is_backup_arena= 0 +#define INIT_ARENA_DBUG_INFO is_backup_arena= 0; is_reprepared= FALSE; #else #define INIT_ARENA_DBUG_INFO #endif @@ -452,6 +500,7 @@ public: MEM_ROOT *mem_root; // Pointer to current memroot #ifndef DBUG_OFF bool is_backup_arena; /* True if this arena is used for backup. */ + bool is_reprepared; #endif /* The states relfects three diffrent life cycles for three @@ -788,6 +837,20 @@ enum prelocked_mode_type {NON_PRELOCKED= 0, PRELOCKED= 1, class Open_tables_state { public: + /** + As part of class THD, this member is set during execution + of a prepared statement. When it is set, it is used + by the locking subsystem to report a change in table metadata. + + When Open_tables_state part of THD is reset to open + a system or INFORMATION_SCHEMA table, the member is cleared + to avoid spurious ER_NEED_REPREPARE errors -- system and + INFORMATION_SCHEMA tables are not subject to metadata version + tracking. + @sa check_and_update_metadata_version() + */ + Metadata_version_observer *m_metadata_observer; + /** List of regular tables in use by this thread. Contains temporary and base tables that were opened with @see open_tables(). @@ -891,6 +954,7 @@ public: extra_lock= lock= locked_tables= 0; prelocked_mode= NON_PRELOCKED; state_flags= 0U; + m_metadata_observer= NULL; } }; @@ -919,6 +983,25 @@ public: bool enable_slow_log; bool last_insert_id_used; SAVEPOINT *savepoints; + /** + When inside a substatement (a stored function or trigger + statement), clear the metadata observer in THD, if any. + Remember the value of the observer here, to be able + to restore it when leaving the substatement. + + We reset the observer to suppress errors when a substatement + uses temporary tables. If a temporary table does not exist + at start of the main statement, it's not prelocked + and thus is not validated with other prelocked tables. + + Later on, when the temporary table is opened, metadata + versions mismatch, expectedly. + + The proper solution for the problem is to re-validate tables + of substatements (Bug#12257, Bug#27011, Bug#32868, Bug#33000), + but it's not implemented yet. + */ + Metadata_version_observer *m_metadata_observer; }; @@ -2777,6 +2860,7 @@ public: #define CF_STATUS_COMMAND 4 #define CF_SHOW_TABLE_COMMAND 8 #define CF_WRITE_LOGS_COMMAND 16 +#define CF_REEXECUTION_FRAGILE 32 /* Functions in sql_class.cc */ diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c28fea57c64..faf48b38fd0 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -218,14 +218,23 @@ void init_update_queries(void) sql_command_flags[SQLCOM_ALTER_EVENT]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_DROP_EVENT]= CF_CHANGES_DATA; - sql_command_flags[SQLCOM_UPDATE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; - sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_UPDATE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_UPDATE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_INSERT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_INSERT_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_DELETE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_DELETE_MULTI]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_REPLACE]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | + CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SELECT]= CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_SHOW_STATUS_PROC]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_STATUS]= CF_STATUS_COMMAND; diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index c221e29e1d0..7550226adff 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -116,6 +116,39 @@ public: #endif }; +/** + If a metadata changed, report a respective error to trigger + re-prepare of a prepared statement. +*/ + +class Execute_observer: public Metadata_version_observer +{ +public: + virtual bool check_metadata_change(THD *thd); + /** Set to TRUE if metadata of some used table has changed since prepare */ + bool m_invalidated; +}; + +/** + Push an error to the error stack and return TRUE for now. + In future we must take special care of statements like CREATE + TABLE ... SELECT. Should we re-prepare such statements every + time? +*/ + +bool +Execute_observer::check_metadata_change(THD *thd) +{ + bool save_thd_no_warnings_for_error= thd->no_warnings_for_error; + DBUG_ENTER("Execute_observer::notify_about_metadata_change"); + + thd->no_warnings_for_error= TRUE; + my_error(ER_NEED_REPREPARE, MYF(0)); + thd->no_warnings_for_error= save_thd_no_warnings_for_error; + m_invalidated= TRUE; + DBUG_RETURN(TRUE); +} + /****************************************************************************/ /** @@ -156,20 +189,27 @@ public: bool set_name(LEX_STRING *name); inline void close_cursor() { delete cursor; cursor= 0; } inline bool is_in_use() { return flags & (uint) IS_IN_USE; } + inline bool is_protocol_text() const { return protocol == &thd->protocol_text; } bool prepare(const char *packet, uint packet_length); - bool execute(String *expanded_query, bool open_cursor); + bool execute_loop(String *expanded_query, + bool open_cursor, + uchar *packet_arg, uchar *packet_end_arg); /* Destroy this statement */ void deallocate(); private: - /** - Store the parsed tree of a prepared statement here. - */ - LEX main_lex; /** The memory root to allocate parsed tree elements (instances of Item, SELECT_LEX and other classes). */ MEM_ROOT main_mem_root; +private: + bool set_db(const char *db, uint db_length); + bool set_parameters(String *expanded_query, + uchar *packet, uchar *packet_end); + bool execute(String *expanded_query, bool open_cursor); + bool reprepare(); + bool validate_metadata(Prepared_statement *copy); + void swap_prepared_statement(Prepared_statement *copy); }; @@ -941,6 +981,55 @@ static bool emb_insert_params_with_log(Prepared_statement *stmt, #endif /*!EMBEDDED_LIBRARY*/ +/** + Setup data conversion routines using an array of parameter + markers from the original prepared statement. + Move the parameter data of the original prepared + statement to the new one. + + Used only when we re-prepare a prepared statement. + There are two reasons for this function to exist: + + 1) In the binary client/server protocol, parameter metadata + is sent only at first execute. Consequently, if we need to + reprepare a prepared statement at a subsequent execution, + we may not have metadata information in the packet. + In that case we use the parameter array of the original + prepared statement to setup parameter types of the new + prepared statement. + + 2) In the binary client/server protocol, we may supply + long data in pieces. When the last piece is supplied, + we assemble the pieces and convert them from client + character set to the connection character set. After + that the parameter value is only available inside + the parameter, the original pieces are lost, and thus + we can only assign the corresponding parameter of the + reprepared statement from the original value. + + @param[out] param_array_dst parameter markers of the new statement + @param[in] param_array_src parameter markers of the original + statement + @param[in] param_count total number of parameters. Is the + same in src and dst arrays, since + the statement query is the same + + @return this function never fails +*/ + +static void +swap_parameter_array(Item_param **param_array_dst, + Item_param **param_array_src, + uint param_count) +{ + Item_param **dst= param_array_dst; + Item_param **src= param_array_src; + Item_param **end= param_array_dst + param_count; + + for (; dst < end; ++src, ++dst) + (*dst)->set_param_type_and_swap_value(*src); +} + /** Assign prepared statement parameters from user variables. @@ -1264,7 +1353,7 @@ error: */ static int mysql_test_select(Prepared_statement *stmt, - TABLE_LIST *tables, bool text_protocol) + TABLE_LIST *tables) { THD *thd= stmt->thd; LEX *lex= stmt->lex; @@ -1300,7 +1389,7 @@ static int mysql_test_select(Prepared_statement *stmt, */ if (unit->prepare(thd, 0, 0)) goto error; - if (!lex->describe && !text_protocol) + if (!lex->describe && !stmt->is_protocol_text()) { /* Make copy of item list, as change_columns may change it */ List fields(lex->select_lex.item_list); @@ -1708,8 +1797,7 @@ static bool mysql_test_insert_select(Prepared_statement *stmt, TRUE error, error message is set in THD (but not sent) */ -static bool check_prepared_statement(Prepared_statement *stmt, - bool text_protocol) +static bool check_prepared_statement(Prepared_statement *stmt) { THD *thd= stmt->thd; LEX *lex= stmt->lex; @@ -1752,7 +1840,7 @@ static bool check_prepared_statement(Prepared_statement *stmt, break; case SQLCOM_SELECT: - res= mysql_test_select(stmt, tables, text_protocol); + res= mysql_test_select(stmt, tables); if (res == 2) { /* Statement and field info has already been sent */ @@ -1867,8 +1955,8 @@ static bool check_prepared_statement(Prepared_statement *stmt, break; } if (res == 0) - DBUG_RETURN(text_protocol? FALSE : (send_prep_stmt(stmt, 0) || - thd->protocol->flush())); + DBUG_RETURN(stmt->is_protocol_text() ? + FALSE : (send_prep_stmt(stmt, 0) || thd->protocol->flush())); error: DBUG_RETURN(TRUE); } @@ -2309,11 +2397,10 @@ void mysql_stmt_execute(THD *thd, char *packet_arg, uint packet_length) ulong flags= (ulong) packet[4]; /* Query text for binary, general or slow log, if any of them is open */ String expanded_query; -#ifndef EMBEDDED_LIBRARY uchar *packet_end= packet + packet_length; -#endif Prepared_statement *stmt; bool error; + bool open_cursor; DBUG_ENTER("mysql_stmt_execute"); packet+= 9; /* stmt_id + 5 bytes of flags */ @@ -2338,44 +2425,12 @@ void mysql_stmt_execute(THD *thd, char *packet_arg, uint packet_length) sp_cache_flush_obsolete(&thd->sp_proc_cache); sp_cache_flush_obsolete(&thd->sp_func_cache); -#ifndef EMBEDDED_LIBRARY - if (stmt->param_count) - { - uchar *null_array= packet; - if (setup_conversion_functions(stmt, &packet, packet_end) || - stmt->set_params(stmt, null_array, packet, packet_end, - &expanded_query)) - goto set_params_data_err; - } -#else - /* - In embedded library we re-install conversion routines each time - we set params, and also we don't need to parse packet. - So we do it in one function. - */ - if (stmt->param_count && stmt->set_params_data(stmt, &expanded_query)) - goto set_params_data_err; -#endif - if (!(specialflag & SPECIAL_NO_PRIOR)) - my_pthread_setprio(pthread_self(),QUERY_PRIOR); + open_cursor= test(flags & (ulong) CURSOR_TYPE_READ_ONLY); - /* - If the free_list is not empty, we'll wrongly free some externally - allocated items when cleaning up after validation of the prepared - statement. - */ - DBUG_ASSERT(thd->free_list == NULL); + stmt->execute_loop(&expanded_query, open_cursor, packet, packet_end); - error= stmt->execute(&expanded_query, - test(flags & (ulong) CURSOR_TYPE_READ_ONLY)); - if (!(specialflag & SPECIAL_NO_PRIOR)) - my_pthread_setprio(pthread_self(), WAIT_PRIOR); DBUG_VOID_RETURN; -set_params_data_err: - my_error(ER_WRONG_ARGUMENTS, MYF(0), "mysql_stmt_execute"); - reset_stmt_params(stmt); - DBUG_VOID_RETURN; } @@ -2421,24 +2476,8 @@ void mysql_sql_stmt_execute(THD *thd) DBUG_PRINT("info",("stmt: 0x%lx", (long) stmt)); - /* - If the free_list is not empty, we'll wrongly free some externally - allocated items when cleaning up after validation of the prepared - statement. - */ - DBUG_ASSERT(thd->free_list == NULL); + (void) stmt->execute_loop(&expanded_query, FALSE, NULL, NULL); - if (stmt->set_params_from_vars(stmt, lex->prepared_stmt_params, - &expanded_query)) - goto set_params_data_err; - - (void) stmt->execute(&expanded_query, FALSE); - - DBUG_VOID_RETURN; - -set_params_data_err: - my_error(ER_WRONG_ARGUMENTS, MYF(0), "EXECUTE"); - reset_stmt_params(stmt); DBUG_VOID_RETURN; } @@ -2742,7 +2781,7 @@ Select_fetch_protocol_binary::send_data(List &fields) ****************************************************************************/ Prepared_statement::Prepared_statement(THD *thd_arg, Protocol *protocol_arg) - :Statement(&main_lex, &main_mem_root, + :Statement(0, &main_mem_root, INITIALIZED, ++thd_arg->statement_id_counter), thd(thd_arg), result(thd_arg), @@ -2813,7 +2852,11 @@ Prepared_statement::~Prepared_statement() like Item_param, don't free everything until free_items() */ free_items(); - delete lex->result; + if (lex) + { + delete lex->result; + delete (st_lex_local *) lex; + } free_root(&main_mem_root, MYF(0)); DBUG_VOID_RETURN; } @@ -2849,6 +2892,34 @@ bool Prepared_statement::set_name(LEX_STRING *name_arg) return name.str == 0; } + +/** + Remember the current database. + + We must reset/restore the current database during execution of + a prepared statement since it affects execution environment: + privileges, @@character_set_database, and other. + + @return Returns an error if out of memory. +*/ + +bool +Prepared_statement::set_db(const char *db_arg, uint db_length_arg) +{ + /* Remember the current database. */ + if (db_arg && db_length_arg) + { + db= this->strmake(db_arg, db_length_arg); + db_length= db_length_arg; + } + else + { + db= NULL; + db_length= 0; + } + return db_arg != NULL && db == NULL; +} + /************************************************************************** Common parts of mysql_[sql]_stmt_prepare, mysql_[sql]_stmt_execute. Essentially, these functions do all the magic of preparing/executing @@ -2890,6 +2961,12 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) */ status_var_increment(thd->status_var.com_stmt_prepare); + if (! (lex= new (mem_root) st_lex_local)) + DBUG_RETURN(TRUE); + + if (set_db(thd->db, thd->db_length)) + DBUG_RETURN(TRUE); + /* alloc_query() uses thd->memroot && thd->query, so we should call both of backup_statement() and backup_query_arena() here. @@ -2917,19 +2994,6 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) lex->set_trg_event_type_for_tables(); - /* Remember the current database. */ - - if (thd->db && thd->db_length) - { - db= this->strmake(thd->db, thd->db_length); - db_length= thd->db_length; - } - else - { - db= NULL; - db_length= 0; - } - /* While doing context analysis of the query (in check_prepared_statement) we allocate a lot of additional memory: for open tables, JOINs, derived @@ -2953,7 +3017,7 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) */ if (error == 0) - error= check_prepared_statement(this, name.str != 0); + error= check_prepared_statement(this); /* Currently CREATE PROCEDURE/TRIGGER/EVENT are prohibited in prepared @@ -3000,6 +3064,293 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) DBUG_RETURN(error); } + +bool +Prepared_statement::set_parameters(String *expanded_query, + uchar *packet, uchar *packet_end) +{ + bool is_sql_ps= packet == NULL; + + if (is_sql_ps) + { + /* SQL prepared statement */ + if (set_params_from_vars(this, thd->lex->prepared_stmt_params, + expanded_query)) + goto set_params_data_err; + } + else if (param_count) + { +#ifndef EMBEDDED_LIBRARY + uchar *null_array= packet; + if (setup_conversion_functions(this, &packet, packet_end) || + set_params(this, null_array, packet, packet_end, + expanded_query)) + goto set_params_data_err; +#else + /* + In embedded library we re-install conversion routines each time + we set params, and also we don't need to parse packet. + So we do it in one function. + */ + if (set_params_data(this, expanded_query)) + goto set_params_data_err; +#endif + } + return FALSE; +set_params_data_err: + my_error(ER_WRONG_ARGUMENTS, MYF(0), + is_sql_ps ? "EXECUTE" : "mysql_stmt_execute"); + reset_stmt_params(this); + return TRUE; +} + + +/** + Execute a prepared statement. Re-prepare it a limited number + of times if necessary. + + Try to execute a prepared statement. If there is a metadata + validation error, prepare a new copy of the prepared statement, + swap the old and the new statements, and try again. + If there is a validation error again, repeat the above, but + perform no more than MAX_REPREPARE_ATTEMPTS. + + @note We have to try several times in a loop since we + release metadata locks on tables after prepared statement + prepare. Therefore, a DDL statement may sneak in between prepare + and execute of a new statement. If this happens repeatedly + more than MAX_REPREPARE_ATTEMPTS times, we give up. + + In future we need to be able to keep the metadata locks between + prepare and execute, but right now open_and_lock_tables(), as + well as close_thread_tables() are buried deep inside + execution code (mysql_execute_command()). + + @return TRUE if an error, FALSE if success + @retval TRUE either MAX_REPREPARE_ATTEMPTS has been reached, + or some general error + @retval FALSE successfully executed the statement, perhaps + after having reprepared it a few times. +*/ + +bool +Prepared_statement::execute_loop(String *expanded_query, + bool open_cursor, + uchar *packet, + uchar *packet_end) +{ + const int MAX_REPREPARE_ATTEMPTS= 3; + Execute_observer execute_observer; + bool error; + int reprepare_attempt= 0; + + if (set_parameters(expanded_query, packet, packet_end)) + return TRUE; + +reexecute: + execute_observer.m_invalidated= FALSE; + + /* + If the free_list is not empty, we'll wrongly free some externally + allocated items when cleaning up after validation of the prepared + statement. + */ + DBUG_ASSERT(thd->free_list == NULL); + + /* + Install the metadata observer. If some metadata version is + different from prepare time and an observer is installed, + the observer method will be invoked to push an error into + the error stack. + */ + if (sql_command_flags[lex->sql_command] & + CF_REEXECUTION_FRAGILE) + { + thd->m_metadata_observer= &execute_observer; + } + + if (!(specialflag & SPECIAL_NO_PRIOR)) + my_pthread_setprio(pthread_self(),QUERY_PRIOR); + + error= execute(expanded_query, open_cursor) || thd->is_error(); + + if (!(specialflag & SPECIAL_NO_PRIOR)) + my_pthread_setprio(pthread_self(), WAIT_PRIOR); + + thd->m_metadata_observer= 0; + + if (error && !thd->is_fatal_error && !thd->killed && + execute_observer.m_invalidated && + reprepare_attempt++ < MAX_REPREPARE_ATTEMPTS) + { + thd->clear_error(); + + error= reprepare(); + + if (! error) /* Success */ + goto reexecute; + } + reset_stmt_params(this); + + return error; +} + + +/** + Reprepare this prepared statement. + + Currently this is implemented by creating a new prepared + statement, preparing it with the original query and then + swapping the new statement and the original one. + + @retval TRUE an error occurred. Possible errors include + incompatibility of new and old result set + metadata + @retval FALSE success, the statement has been reprepared +*/ + +bool +Prepared_statement::reprepare() +{ + char saved_cur_db_name_buf[NAME_LEN+1]; + LEX_STRING saved_cur_db_name= + { saved_cur_db_name_buf, sizeof(saved_cur_db_name_buf) }; + LEX_STRING stmt_db_name= { db, db_length }; + Prepared_statement *copy; + bool cur_db_changed; + bool error= TRUE; + + status_var_increment(thd->status_var.com_stmt_reprepare); + + copy= new Prepared_statement(thd, &thd->protocol_text); + + if (! copy) + return TRUE; + + if (mysql_opt_change_db(thd, &stmt_db_name, &saved_cur_db_name, TRUE, + &cur_db_changed)) + goto end; + + error= (name.str && copy->set_name(&name) || + copy->prepare(query, query_length) || + validate_metadata(copy)); + + if (cur_db_changed) + mysql_change_db(thd, &saved_cur_db_name, TRUE); + + if (! error) + { + swap_prepared_statement(copy); + swap_parameter_array(param_array, copy->param_array, param_count); + is_reprepared= TRUE; + /* + Clear possible warnigns during re-prepare, it has to be completely + transparent to the user. We use mysql_reset_errors() since + there were no separate query id issued for re-prepare. + */ + mysql_reset_errors(thd, TRUE); + } +end: + delete copy; + return error; +} + + +/** + Validate statement result set metadata (if the statement returns + a result set). + + Currently we only check that the number of columns of the result + set did not change. + This is a helper method used during re-prepare. + + @param[in] copy the re-prepared prepared statement to verify + the metadata of + + @retval TRUE error, ER_PS_NEED_REBIND is reported + @retval FALSE statement return no or compatible metadata +*/ + + +bool Prepared_statement::validate_metadata(Prepared_statement *copy) +{ + List_iterator_fast it_org(lex->select_lex.item_list); + List_iterator_fast it_new(copy->lex->select_lex.item_list); + Item *item_org; + Item *item_new; + + /** + If this is an SQL prepared statement or EXPLAIN, + return FALSE -- the metadata of the original SELECT, + if any, has not been sent to the client. + */ + if (is_protocol_text() || lex->describe) + return FALSE; + + if (lex->select_lex.item_list.elements != + copy->lex->select_lex.item_list.elements) + { + /** Column counts mismatch. */ + my_error(ER_PS_REBIND, MYF(0)); + return TRUE; + } + + return FALSE; +} + + +/** + Replace the original prepared statement with a prepared copy. + + This is a private helper that is used as part of statement + reprepare + + @return This function does not return any errors. +*/ + +void +Prepared_statement::swap_prepared_statement(Prepared_statement *copy) +{ + Statement tmp_stmt; + + /* Swap memory roots. */ + swap_variables(MEM_ROOT, main_mem_root, copy->main_mem_root); + + /* Swap the arenas */ + tmp_stmt.set_query_arena(this); + set_query_arena(copy); + copy->set_query_arena(&tmp_stmt); + + /* Swap the statement parent classes */ + tmp_stmt.set_statement(this); + set_statement(copy); + copy->set_statement(&tmp_stmt); + + /* Swap ids back, we need the original id */ + swap_variables(ulong, id, copy->id); + /* Swap mem_roots back, they must continue pointing at the main_mem_roots */ + swap_variables(MEM_ROOT *, mem_root, copy->mem_root); + /* + Swap the old and the new parameters array. The old array + is allocated in the old arena. + */ + swap_variables(Item_param **, param_array, copy->param_array); + /* Swap flags: this is perhaps unnecessary */ + swap_variables(uint, flags, copy->flags); + /* Swap names, the old name is allocated in the wrong memory root */ + swap_variables(LEX_STRING, name, copy->name); + /* Ditto */ + swap_variables(char *, db, copy->db); + + DBUG_ASSERT(db_length == copy->db_length); + DBUG_ASSERT(param_count == copy->param_count); + DBUG_ASSERT(thd == copy->thd); + last_error[0]= '\0'; + last_errno= 0; + /* Do not swap protocols, the copy always has protocol_text */ +} + + /** Execute a prepared statement. @@ -3162,10 +3513,7 @@ bool Prepared_statement::execute(String *expanded_query, bool open_cursor) DBUG_ASSERT(! (error && cursor)); if (! cursor) - { cleanup_stmt(); - reset_stmt_params(this); - } thd->set_statement(&stmt_backup); thd->stmt_arena= old_stmt_arena; diff --git a/sql/table.h b/sql/table.h index d448485a117..2b3c9b8d5b1 100644 --- a/sql/table.h +++ b/sql/table.h @@ -437,6 +437,105 @@ typedef struct st_table_share return table_map_id; } + /** + Convert unrelated members of TABLE_SHARE to one enum + representing its metadata type. + + @todo perhaps we need to have a member instead of a function. + */ + enum enum_metadata_type get_metadata_type() const + { + if (is_view) + return METADATA_VIEW; + switch (tmp_table) { + case NO_TMP_TABLE: + return METADATA_BASE_TABLE; + case SYSTEM_TMP_TABLE: + return METADATA_I_S_TABLE; + default: + return METADATA_TMP_TABLE; + } + } + /** + Return a table metadata version. + * for base tables, we return table_map_id. + It is assigned from a global counter incremented for each + new table loaded into the table definition cache (TDC). + * for temporary tables it's table_map_id again. But for + temporary tables table_map_id is assigned from + thd->query_id. The latter is assigned from a thread local + counter incremented for every new SQL statement. Since + temporary tables are thread-local, each temporary table + gets a unique id. + * for everything else (views, information schema tables), + the version id is zero. + + This choice of version id is a large compromise + to have a working prepared statement validation in 5.1. In + future version ids will be persistent, as described in WL#4180. + + Let's try to explain why and how this limited solution allows + to validate prepared statements. + + Firstly, spaces (in mathematical sense) of version numbers + never intersect for different metadata types. Therefore, + version id of a temporary table is never compared with + a version id of a view or a temporary table, and vice versa. + + Secondly, for base tables, we know that each DDL flushes the + respective share from the TDC. This ensures that whenever + a table is altered or dropped and recreated, it gets a new + version id. + Unfortunately, since elements of the TDC are also flushed on + LRU basis, this choice of version ids leads to false positives. + E.g. when the TDC size is too small, we may have a SELECT + * FROM INFORMATION_SCHEMA.TABLES flush all its elements, which + in turn will lead to a validation error and a subsequent + reprepare of all prepared statements. This is + considered acceptable, since as long as prepared statements are + automatically reprepared, spurious invalidation is only + a performance hit. Besides, no better simple solution exists. + + For temporary tables, using thd->query_id ensures that if + a temporary table was altered or recreated, a new version id is + assigned. This suits validation needs very well and will perhaps + never change. + + Metadata of information schema tables never changes. + Thus we can safely assume 0 for a good enough version id. + + Views are a special and tricky case. A view is always inlined + into the parse tree of a prepared statement at prepare. + Thus, when we execute a prepared statement, the parse tree + will not get modified even if the view is replaced with another + view. Therefore, we can safely choose 0 for version id of + views and effectively never invalidate a prepared statement + when a view definition is altered. Note, that this leads to + wrong binary log in statement-based replication, since we log + prepared statement execution in form Query_log_events + containing conventional statements. But since there is no + metadata locking for views, the very same problem exists for + conventional statements alone, as reported in Bug#25144. The only + difference between prepared and conventional execution is, + effectively, that for prepared statements the race condition + window is much wider. + In 6.0 we plan to support view metadata locking (WL#3726) and + extend table definition cache to cache views (WL#4298). + When this is done, views will be handled in the same fashion + as the base tables. + + Finally, by taking into account metadata type, we always + track that a change has taken place when a view is replaced + with a base table, a base table is replaced with a temporary + table and so on. + + @sa TABLE_LIST::is_metadata_version_equal() + */ + ulong get_metadata_version() const + { + return tmp_table == SYSTEM_TMP_TABLE || is_view ? 0 : table_map_id; + } + } TABLE_SHARE; @@ -1232,6 +1331,33 @@ struct TABLE_LIST child_def_version= ~0UL; } + /** + Compare the version of metadata from the previous execution + (if any) with values obtained from the current table + definition cache element. + + @sa check_and_update_metadata_version() + */ + inline + bool is_metadata_version_equal(TABLE_SHARE *s) const + { + return (m_metadata_type == s->get_metadata_type() && + m_metadata_version == s->get_metadata_version()); + } + + /** + Record the value of metadata version of the corresponding + table definition cache element in this parse tree node. + + @sa check_and_update_metadata_version() + */ + inline + void set_metadata_version(TABLE_SHARE *s) + { + m_metadata_type= s->get_metadata_type(); + m_metadata_version= s->get_metadata_version(); + } + private: bool prep_check_option(THD *thd, uint8 check_opt_type); bool prep_where(THD *thd, Item **conds, bool no_where_clause); @@ -1242,6 +1368,10 @@ private: /* Remembered MERGE child def version. See top comment in ha_myisammrg.cc */ ulong child_def_version; + /** See comments for set_metadata_version() */ + enum enum_metadata_type m_metadata_type; + /** See comments for set_metadata_version() */ + ulong m_metadata_version; }; class Item; diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 0df2d4ed4a5..748f04b11d3 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -11132,7 +11132,7 @@ static void test_bug4236() int rc; MYSQL_STMT backup; - myheader("test_bug4296"); + myheader("test_bug4236"); stmt= mysql_stmt_init(mysql); @@ -17383,6 +17383,123 @@ static void test_bug28386() DBUG_VOID_RETURN; } +static void test_wl4166() +{ + MYSQL_STMT *stmt; + int int_data; + char str_data[50]; + char tiny_data; + short small_data; + longlong big_data; + float real_data; + double double_data; + ulong length[7]; + my_bool is_null[7]; + MYSQL_BIND my_bind[7]; + int rc; + int i; + + myheader("test_wl4166"); + + rc= mysql_query(mysql, "DROP TABLE IF EXISTS table_4166"); + myquery(rc); + + rc= mysql_query(mysql, "CREATE TABLE table_4166(col1 tinyint NOT NULL, " + "col2 varchar(15), col3 int, " + "col4 smallint, col5 bigint, " + "col6 float, col7 double, " + "colX varchar(10) default NULL)"); + myquery(rc); + + stmt= mysql_simple_prepare(mysql, + "INSERT INTO table_4166(col1, col2, col3, col4, col5, col6, col7) " + "VALUES(?, ?, ?, ?, ?, ?, ?)"); + check_stmt(stmt); + + verify_param_count(stmt, 7); + + /* tinyint */ + my_bind[0].buffer_type= MYSQL_TYPE_TINY; + my_bind[0].buffer= (void *)&tiny_data; + /* string */ + my_bind[1].buffer_type= MYSQL_TYPE_STRING; + my_bind[1].buffer= (void *)str_data; + my_bind[1].buffer_length= 1000; /* Max string length */ + /* integer */ + my_bind[2].buffer_type= MYSQL_TYPE_LONG; + my_bind[2].buffer= (void *)&int_data; + /* short */ + my_bind[3].buffer_type= MYSQL_TYPE_SHORT; + my_bind[3].buffer= (void *)&small_data; + /* bigint */ + my_bind[4].buffer_type= MYSQL_TYPE_LONGLONG; + my_bind[4].buffer= (void *)&big_data; + /* float */ + my_bind[5].buffer_type= MYSQL_TYPE_FLOAT; + my_bind[5].buffer= (void *)&real_data; + /* double */ + my_bind[6].buffer_type= MYSQL_TYPE_DOUBLE; + my_bind[6].buffer= (void *)&double_data; + + for (i= 0; i < (int) array_elements(my_bind); i++) + { + my_bind[i].length= &length[i]; + my_bind[i].is_null= &is_null[i]; + is_null[i]= 0; + } + + rc= mysql_stmt_bind_param(stmt, my_bind); + check_execute(stmt, rc); + + int_data= 320; + small_data= 1867; + big_data= 1000; + real_data= 2; + double_data= 6578.001; + + /* now, execute the prepared statement to insert 10 records.. */ + for (tiny_data= 0; tiny_data < 10; tiny_data++) + { + length[1]= my_sprintf(str_data, (str_data, "MySQL%d", int_data)); + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + int_data += 25; + small_data += 10; + big_data += 100; + real_data += 1; + double_data += 10.09; + } + + /* force a re-prepare with some DDL */ + + rc= mysql_query(mysql, + "ALTER TABLE table_4166 change colX colX varchar(20) default NULL"); + myquery(rc); + + /* + execute the prepared statement again, + without changing the types of parameters already bound. + */ + + for (tiny_data= 50; tiny_data < 60; tiny_data++) + { + length[1]= my_sprintf(str_data, (str_data, "MySQL%d", int_data)); + rc= mysql_stmt_execute(stmt); + check_execute(stmt, rc); + int_data += 25; + small_data += 10; + big_data += 100; + real_data += 1; + double_data += 10.09; + } + + mysql_stmt_close(stmt); + + rc= mysql_query(mysql, "DROP TABLE table_4166"); + myquery(rc); + +} + /* Read and parse arguments and MySQL options from my.cnf */ @@ -17689,6 +17806,7 @@ static struct my_tests_st my_tests[]= { { "test_bug31418", test_bug31418 }, { "test_bug31669", test_bug31669 }, { "test_bug28386", test_bug28386 }, + { "test_wl4166", test_wl4166 }, { 0, 0 } }; From 2ca624969a3efe06252ce44872132da3f583feee Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 20:31:40 +0400 Subject: [PATCH 044/435] Remove dead code. sql/sp.h: Remove unused code. --- sql/opt_range.cc | 3 - sql/sp.cc | 204 ----------------------------------------------- sql/sp.h | 3 - sql/sql_parse.cc | 14 ---- 4 files changed, 224 deletions(-) diff --git a/sql/opt_range.cc b/sql/opt_range.cc index b8bdb604eea..454c68e11a1 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -2317,9 +2317,6 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use, table deletes. */ if ((thd->lex->sql_command != SQLCOM_DELETE)) -#ifdef NOT_USED - if ((thd->lex->sql_command != SQLCOM_UPDATE)) -#endif { /* Get best non-covering ROR-intersection plan and prepare data for diff --git a/sql/sp.cc b/sql/sp.cc index 69eae8de207..3fe0841e879 100644 --- a/sql/sp.cc +++ b/sql/sp.cc @@ -1070,210 +1070,6 @@ sp_update_routine(THD *thd, int type, sp_name *name, st_sp_chistics *chistics) } -struct st_used_field -{ - const char *field_name; - uint field_length; - enum enum_field_types field_type; - Field *field; -}; - -static struct st_used_field init_fields[]= -{ - { "Db", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0}, - { "Name", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0}, - { "Type", 9, MYSQL_TYPE_STRING, 0}, - { "Definer", USER_HOST_BUFF_SIZE, MYSQL_TYPE_STRING, 0}, - { "Modified", 0, MYSQL_TYPE_TIMESTAMP, 0}, - { "Created", 0, MYSQL_TYPE_TIMESTAMP, 0}, - { "Security_type", 1, MYSQL_TYPE_STRING, 0}, - { "Comment", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0}, - { "character_set_client", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0}, - { "collation_connection", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0}, - { "Database Collation", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0}, - { 0, 0, MYSQL_TYPE_STRING, 0} -}; - - -static int -print_field_values(THD *thd, TABLE *table, - struct st_used_field *used_fields, - int type, const char *wild) -{ - Protocol *protocol= thd->protocol; - - if (table->field[MYSQL_PROC_MYSQL_TYPE]->val_int() == type) - { - String db_string; - String name_string; - struct st_used_field *used_field= used_fields; - - if (get_field(thd->mem_root, used_field->field, &db_string)) - db_string.set_ascii("", 0); - used_field+= 1; - get_field(thd->mem_root, used_field->field, &name_string); - - if (!wild || !wild[0] || !wild_compare(name_string.ptr(), wild, 0)) - { - protocol->prepare_for_resend(); - protocol->store(&db_string); - protocol->store(&name_string); - for (used_field++; - used_field->field_name; - used_field++) - { - switch (used_field->field_type) { - case MYSQL_TYPE_TIMESTAMP: - { - MYSQL_TIME tmp_time; - - bzero((char *)&tmp_time, sizeof(tmp_time)); - ((Field_timestamp *) used_field->field)->get_time(&tmp_time); - protocol->store(&tmp_time); - } - break; - default: - { - String tmp_string; - - get_field(thd->mem_root, used_field->field, &tmp_string); - protocol->store(&tmp_string); - } - break; - } - } - if (protocol->write()) - return SP_INTERNAL_ERROR; - } - } - - return SP_OK; -} - - -/** - Implement SHOW STATUS statement for stored routines. - - @param thd Thread context. - @param type Stored routine type - (TYPE_ENUM_PROCEDURE or TYPE_ENUM_FUNCTION) - @param name_pattern Stored routine name pattern. - - @return Error code. SP_OK is returned on success. Other SP_ constants are - used to indicate about errors. -*/ - -int -sp_show_status_routine(THD *thd, int type, const char *name_pattern) -{ - TABLE *table; - TABLE_LIST tables; - int res; - DBUG_ENTER("sp_show_status_routine"); - - DBUG_ASSERT(type == TYPE_ENUM_PROCEDURE || - type == TYPE_ENUM_FUNCTION); - - memset(&tables, 0, sizeof(tables)); - tables.db= (char*)"mysql"; - tables.table_name= tables.alias= (char*)"proc"; - - if (! (table= open_ltable(thd, &tables, TL_READ, 0))) - { - res= SP_OPEN_TABLE_FAILED; - goto done; - } - else - { - Item *item; - List field_list; - struct st_used_field *used_field; - TABLE_LIST *leaves= 0; - st_used_field used_fields[array_elements(init_fields)]; - - table->use_all_columns(); - memcpy((char*) used_fields, (char*) init_fields, sizeof(used_fields)); - /* Init header */ - for (used_field= &used_fields[0]; - used_field->field_name; - used_field++) - { - switch (used_field->field_type) { - case MYSQL_TYPE_TIMESTAMP: - item= new Item_return_date_time(used_field->field_name, - MYSQL_TYPE_DATETIME); - field_list.push_back(item); - break; - default: - item= new Item_empty_string(used_field->field_name, - used_field->field_length); - field_list.push_back(item); - break; - } - } - /* Print header */ - if (thd->protocol->send_fields(&field_list, Protocol::SEND_NUM_ROWS | - Protocol::SEND_EOF)) - { - res= SP_INTERNAL_ERROR; - goto err_case; - } - - /* - Init fields - - tables is not VIEW for sure => we can pass 0 as condition - */ - thd->lex->select_lex.context.resolve_in_table_list_only(&tables); - setup_tables(thd, &thd->lex->select_lex.context, - &thd->lex->select_lex.top_join_list, - &tables, &leaves, FALSE); - for (used_field= &used_fields[0]; - used_field->field_name; - used_field++) - { - Item_field *field= new Item_field(&thd->lex->select_lex.context, - "mysql", "proc", - used_field->field_name); - if (!field || - !(used_field->field= find_field_in_tables(thd, field, &tables, NULL, - 0, REPORT_ALL_ERRORS, 1, - TRUE))) - { - res= SP_INTERNAL_ERROR; - goto err_case1; - } - } - - table->file->ha_index_init(0, 1); - if ((res= table->file->index_first(table->record[0]))) - { - res= (res == HA_ERR_END_OF_FILE) ? 0 : SP_INTERNAL_ERROR; - goto err_case1; - } - - do - { - res= print_field_values(thd, table, used_fields, type, name_pattern); - - if (res) - goto err_case1; - } - while (!table->file->index_next(table->record[0])); - - res= SP_OK; - } - -err_case1: - my_eof(thd); -err_case: - table->file->ha_index_end(); - close_thread_tables(thd); -done: - DBUG_RETURN(res); -} - - /** Drop all routines in database 'db' diff --git a/sql/sp.h b/sql/sp.h index 31173e1f90c..75088ea0b83 100644 --- a/sql/sp.h +++ b/sql/sp.h @@ -48,9 +48,6 @@ sp_routine_exists_in_table(THD *thd, int type, sp_name *name); bool sp_show_create_routine(THD *thd, int type, sp_name *name); -int -sp_show_status_routine(THD *thd, int type, const char *wild); - int sp_create_routine(THD *thd, int type, sp_head *sp); diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index c28fea57c64..62047e70d51 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4305,20 +4305,6 @@ create_sp_error: } break; } -#ifdef NOT_USED - case SQLCOM_SHOW_STATUS_PROC: - { - res= sp_show_status_routine(thd, TYPE_ENUM_PROCEDURE, - (lex->wild ? lex->wild->ptr() : NullS)); - break; - } - case SQLCOM_SHOW_STATUS_FUNC: - { - res= sp_show_status_routine(thd, TYPE_ENUM_FUNCTION, - (lex->wild ? lex->wild->ptr() : NullS)); - break; - } -#endif #ifndef DBUG_OFF case SQLCOM_SHOW_PROC_CODE: case SQLCOM_SHOW_FUNC_CODE: From 1ff9a2437a5a7ecd5d6b8bb409fa473613f14460 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 8 Apr 2008 21:49:31 +0400 Subject: [PATCH 045/435] Fix pushbuild errors and warnings. --- sql/sql_prepare.cc | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 7550226adff..720deac116d 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -2399,7 +2399,6 @@ void mysql_stmt_execute(THD *thd, char *packet_arg, uint packet_length) String expanded_query; uchar *packet_end= packet + packet_length; Prepared_statement *stmt; - bool error; bool open_cursor; DBUG_ENTER("mysql_stmt_execute"); @@ -3242,7 +3241,9 @@ Prepared_statement::reprepare() { swap_prepared_statement(copy); swap_parameter_array(param_array, copy->param_array, param_count); +#ifndef DBUG_OFF is_reprepared= TRUE; +#endif /* Clear possible warnigns during re-prepare, it has to be completely transparent to the user. We use mysql_reset_errors() since @@ -3274,11 +3275,6 @@ end: bool Prepared_statement::validate_metadata(Prepared_statement *copy) { - List_iterator_fast it_org(lex->select_lex.item_list); - List_iterator_fast it_new(copy->lex->select_lex.item_list); - Item *item_org; - Item *item_new; - /** If this is an SQL prepared statement or EXPLAIN, return FALSE -- the metadata of the original SELECT, From 9fd682e6e0432061853661c84a214fd031a3ed54 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Apr 2008 15:56:25 +0200 Subject: [PATCH 046/435] Additional tests inspired by Bug #12713 Error in a stored function called from a SELECT doesn't cause ROLLBACK of statem mysql-test/r/func_rollback.result: Expected results mysql-test/t/func_rollback.test: New test --- mysql-test/r/func_rollback.result | 461 ++++++++++++++++++++++++++++ mysql-test/t/func_rollback.test | 488 ++++++++++++++++++++++++++++++ 2 files changed, 949 insertions(+) create mode 100644 mysql-test/r/func_rollback.result create mode 100644 mysql-test/t/func_rollback.test diff --git a/mysql-test/r/func_rollback.result b/mysql-test/r/func_rollback.result new file mode 100644 index 00000000000..57968910051 --- /dev/null +++ b/mysql-test/r/func_rollback.result @@ -0,0 +1,461 @@ +DROP TABLE IF EXISTS t1_select; +DROP TABLE IF EXISTS t1_aux; +DROP TABLE IF EXISTS t1_not_null; +DROP VIEW IF EXISTS v1_not_null; +DROP VIEW IF EXISTS v1_func; +DROP TABLE IF EXISTS t1_fail; +DROP FUNCTION IF EXISTS f1_simple_insert; +DROP FUNCTION IF EXISTS f1_two_inserts; +DROP FUNCTION IF EXISTS f1_insert_select; +SET SESSION AUTOCOMMIT=0; +SET SESSION sql_mode = ''; +CREATE TABLE t1_select (f1 BIGINT, f2 BIGINT) ENGINE = MEMORY; +INSERT INTO t1_select(f1,f2) VALUES (1,-1),(2,NULL),(3,0),(4,1),(5,2); +SELECT * FROM t1_select; +f1 f2 +1 -1 +2 NULL +3 0 +4 1 +5 2 +CREATE TABLE t1_not_null (f1 BIGINT, f2 BIGINT NOT NULL) +ENGINE = ; +SELECT * FROM t1_not_null; +f1 f2 +CREATE TABLE t1_aux (f1 BIGINT, f2 BIGINT) +ENGINE = ; +SELECT * FROM t1_aux; +f1 f2 +COMMIT; +CREATE FUNCTION f1_simple_insert(my_f1 INTEGER) RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null SET f1 = 10, f2 = my_f1; +RETURN 1; +END// + +# One f1_simple_insert execution per row, no NOT NULL violation +SELECT f1_simple_insert(1); +f1_simple_insert(1) +1 +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +10 1 +ROLLBACK; +SELECT * FROM t1_not_null; +f1 f2 +SELECT f1_simple_insert(1) FROM t1_select; +f1_simple_insert(1) +1 +1 +1 +1 +1 +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +10 1 +10 1 +10 1 +10 1 +10 1 +ROLLBACK; +SELECT * FROM t1_not_null; +f1 f2 + +# One f1_simple_insert execution per row, NOT NULL violation when the +# SELECT processes the first row. +SELECT f1_simple_insert(NULL); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT f1_simple_insert(NULL) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT 1 FROM (SELECT 1 AS f1,1 AS f2 UNION ALL SELECT 1,NULL) AS t1 WHERE f1_simple_insert(NULL) = 1; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# One f1_simple_insert execution per row, NOT NULL violation when the +# SELECT processes the non first row +SELECT f1_simple_insert(f2) FROM (SELECT 1 AS f1,1 AS f2 UNION ALL SELECT 1,NULL) AS t1; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT f1_simple_insert(f2) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# Two f1_simple_insert executions per row, NOT NULL violation when the +# SELECT processes the first row. +SELECT f1_simple_insert(1),f1_simple_insert(NULL); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT f1_simple_insert(NULL),f1_simple_insert(1); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# Two f1_simple_insert executions per row, NOT NULL violation when the +# SELECT processes the non first row +SELECT f1_simple_insert(f1),f1_simple_insert(f2) FROM (SELECT 1 AS f1,1 AS f2 UNION ALL SELECT 1,NULL) AS t1; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT f1_simple_insert(f2),f1_simple_insert(f1) FROM (SELECT 1 AS f1,1 AS f2 UNION ALL SELECT 1,NULL) AS t1; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT f1_simple_insert(f1),f1_simple_insert(f2) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT f1_simple_insert(f2),f1_simple_insert(f1) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT 1 FROM (SELECT 1 AS f1,1 AS f2 UNION ALL SELECT 1,NULL) AS t1 +WHERE 1 = f1_simple_insert(f2) AND 1 = f1_simple_insert(f1); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# Nested functions, the inner fails +SELECT f1_simple_insert(f1_simple_insert(NULL)) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# Nested functions, the outer fails +SELECT f1_simple_insert(f1_simple_insert(1) + NULL) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_simple_insert; +CREATE FUNCTION f1_insert_select(my_f1 INTEGER) RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null SELECT * FROM t1_select WHERE f1 = my_f1; +RETURN 1; +END; + +# f1_insert_select(2), tries to INSERT SELECT one row containing NULL +# The fact that +# - SELECT f1_insert_select(2); gives any result set and +# - t1_not_null gets a row inserted +# is covered by the manual. +SELECT f1_insert_select(2); +f1_insert_select(2) +1 +Warnings: +Warning 1048 Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +2 0 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_insert_select; +SET SESSION sql_mode = 'traditional'; +CREATE FUNCTION f1_insert_select(my_f1 INTEGER) RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null SELECT * FROM t1_select WHERE f1 = my_f1; +RETURN 1; +END; +SELECT f1_insert_select(2); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_insert_select; +SET SESSION sql_mode = ''; + +# Function tries to +# 1. INSERT statement: Insert one row with NULL -> NOT NULL violation +# 2. INSERT statement: Insert one row without NULL +CREATE FUNCTION f1_two_inserts() RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null SET f1 = 10, f2 = NULL; +INSERT INTO t1_not_null SET f1 = 10, f2 = 10; +RETURN 1; +END// +SELECT f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_two_inserts; + +# Function tries to +# 1. INSERT statement: Insert one row without NULL +# 2. INSERT statement: Insert one row with NULL -> NOT NULL violation +CREATE FUNCTION f1_two_inserts() RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null SET f1 = 10, f2 = 10; +INSERT INTO t1_not_null SET f1 = 10, f2 = NULL; +RETURN 1; +END// +SELECT f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# Function tries to +# INSERT statement: Insert two rows +# first row without NULL +# second row with NULL -> NOT NULL violation +# -> NOT NULL violation +CREATE FUNCTION f1_insert_with_two_rows() RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null(f1,f2) VALUES (10,10),(10,NULL); +RETURN 1; +END; +# The fact that +# - SELECT f1_insert_with_two_rows(); gives any result set and +# - t1_not_null gets a row inserted +# is covered by the manual. +SELECT f1_insert_with_two_rows(); +f1_insert_with_two_rows() +1 +Warnings: +Warning 1048 Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +10 0 +10 10 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_insert_with_two_rows; +SET SESSION sql_mode = 'traditional'; +CREATE FUNCTION f1_insert_with_two_rows() RETURNS INTEGER +BEGIN +INSERT INTO t1_not_null(f1,f2) VALUES (10,10),(10,NULL); +RETURN 1; +END; +SELECT f1_insert_with_two_rows(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SET SESSION sql_mode = ''; + +# FUNCTION in Correlated Subquery +SELECT 1 FROM t1_select t1 +WHERE 1 = (SELECT f1_insert_with_two_rows() FROM t1_select t2 +WHERE t2.f1 = t1.f1); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# FUNCTION in JOIN +SELECT 1 FROM t1_select t1, t1_select t2 +WHERE t1.f1 = t2.f1 AND t2.f1 = f1_insert_with_two_rows(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT STRAIGHT_JOIN * FROM t1_select t2 RIGHT JOIN t1_select t1 +ON t1.f1 = t1.f1 WHERE 1 = f1_insert_with_two_rows(); +ERROR 23000: Column 'f2' cannot be null +DROP FUNCTION f1_insert_with_two_rows; + +# FUNCTION in UNION +SELECT 1 +UNION ALL +SELECT f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# FUNCTION in INSERT +INSERT INTO t1_aux SET f1 = 1, f2 = f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +INSERT INTO t1_aux SELECT 1, f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT * FROM t1_aux ORDER BY f1,f2; +f1 f2 +INSERT INTO t1_aux VALUES(1,f1_two_inserts()); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT * FROM t1_aux ORDER BY f1,f2; +f1 f2 + +# FUNCTION in DELETE +INSERT INTO t1_aux VALUES (1,1); +COMMIT; +DELETE FROM t1_aux WHERE f1 = f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT * FROM t1_aux ORDER BY f1,f2; +f1 f2 +1 1 + +# FUNCTION in UPDATE SET +UPDATE t1_aux SET f2 = f1_two_inserts() + 1; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +SELECT * FROM t1_aux ORDER BY f1,f2; +f1 f2 +1 1 + +# FUNCTION in VIEW definition +CREATE VIEW v1_func AS SELECT f1_two_inserts() FROM t1_select; +SELECT * FROM v1_func; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP VIEW v1_func; + +# FUNCTION in CREATE TABLE ... AS SELECT +CREATE TABLE t1_fail AS SELECT f1_two_inserts() FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +CREATE TABLE t1_fail AS SELECT * FROM t1_select WHERE 1 = f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# FUNCTION in ORDER BY +SELECT * FROM t1_select ORDER BY f1,f1_two_inserts(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# FUNCTION in aggregate function +SELECT AVG(f1_two_inserts()) FROM t1_select; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 + +# FUNCTION in HAVING +SELECT 1 FROM t1_select HAVING AVG(f1) = f1_two_inserts() + 2; +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_two_inserts; + +# FUNCTION modifies Updatable VIEW +CREATE VIEW v1_not_null AS SELECT f1,f2 FROM t1_not_null WITH CHECK OPTION; +CREATE FUNCTION f1_two_inserts_v1() RETURNS INTEGER +BEGIN +INSERT INTO v1_not_null SET f1 = 10, f2 = 10; +INSERT INTO v1_not_null SET f1 = 10, f2 = NULL; +RETURN 1; +END// +SELECT f1_two_inserts_v1(); +ERROR 23000: Column 'f2' cannot be null +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +f1 f2 +DROP FUNCTION f1_two_inserts_v1; +DROP VIEW v1_not_null; + +# FUNCTION causes FOREIGN KEY constraint violation +CREATE TABLE t1_parent (f1 BIGINT, f2 BIGINT, PRIMARY KEY(f1)) +ENGINE = InnoDB; +INSERT INTO t1_parent VALUES (1,1); +CREATE TABLE t1_child (f1 BIGINT, f2 BIGINT, PRIMARY KEY(f1), +FOREIGN KEY (f1) REFERENCES t1_parent(f1)) +ENGINE = InnoDB; +CREATE FUNCTION f1_two_inserts() RETURNS INTEGER +BEGIN +INSERT INTO t1_child SET f1 = 1, f2 = 1; +INSERT INTO t1_child SET f1 = 2, f2 = 2; +RETURN 1; +END// +SELECT f1_two_inserts(); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t1_child`, CONSTRAINT `t1_child_ibfk_1` FOREIGN KEY (`f1`) REFERENCES `t1_parent` (`f1`)) +SELECT * FROM t1_child; +f1 f2 +DROP TABLE t1_child; +DROP TABLE t1_parent; +DROP FUNCTION f1_two_inserts; +DROP TABLE t1_select; +DROP TABLE t1_aux; +DROP TABLE t1_not_null; diff --git a/mysql-test/t/func_rollback.test b/mysql-test/t/func_rollback.test new file mode 100644 index 00000000000..87930909f91 --- /dev/null +++ b/mysql-test/t/func_rollback.test @@ -0,0 +1,488 @@ +# func_rollback.test +# +# Test variations inspired by +# Bug#12713 Error in a stored function called from a SELECT doesn't cause +# ROLLBACK of statement +# Essential of the bug: +# - A SELECT using a FUNCTION processes a table. +# - The SELECT affects more than row. +# - The FUNCTION modifies a table. +# - When processing the non first matching row, the function fails. +# But the modification caused by the function when the SELECT processed the +# first matching row is not reverted. +# +# Goal of this test: Attempts to catch a situation where +# - a statement A involving the execution of one or more functions is run +# - the function/functions themself contain one or more statements +# modifying a table +# - one of the modifying statements within one of the functions fails +# - the table remains at least partially modified +# +# = There is no automatic ROLLBACK of changes caused by the failing +# statement A. +# = Statement A is not atomic. +# +# Notes: +# - The table to be modified must use a transactional storage engine. +# For example MyISAM cannot avoid the situation above. +# - Some comments assume that the rows of the table t1_select are processed +# in the order of insertion. That means +# SELECT f1,f2 FROM t1_select +# should have the same result set and row order like +# SELECT f1,f2 FROM t1_select ORDER BY f1; +# - The manual says that we get in non strict sql mode a warning around INSERT: +# Inserting NULL into a column that has been declared NOT NULL. +# For multiple-row INSERT statements or INSERT INTO ... SELECT statements, +# the column is set to the implicit default value for the column data type. +# +# Created: +# 2008-04-09 mleich +# + +let $fixed_bug_35877 = 0; + +let $from_select = SELECT 1 AS f1,1 AS f2 UNION ALL SELECT 1,NULL; + +--source include/have_innodb.inc +let $engine = InnoDB; + +--disable_warnings +DROP TABLE IF EXISTS t1_select; +DROP TABLE IF EXISTS t1_aux; +DROP TABLE IF EXISTS t1_not_null; +DROP VIEW IF EXISTS v1_not_null; +DROP VIEW IF EXISTS v1_func; +DROP TABLE IF EXISTS t1_fail; +DROP FUNCTION IF EXISTS f1_simple_insert; +DROP FUNCTION IF EXISTS f1_two_inserts; +DROP FUNCTION IF EXISTS f1_insert_select; +--enable_warnings + +SET SESSION AUTOCOMMIT=0; +SET SESSION sql_mode = ''; + +CREATE TABLE t1_select (f1 BIGINT, f2 BIGINT) ENGINE = MEMORY; +INSERT INTO t1_select(f1,f2) VALUES (1,-1),(2,NULL),(3,0),(4,1),(5,2); +SELECT * FROM t1_select; + +--replace_result $engine +eval +CREATE TABLE t1_not_null (f1 BIGINT, f2 BIGINT NOT NULL) +ENGINE = $engine; +SELECT * FROM t1_not_null; + +--replace_result $engine +eval +CREATE TABLE t1_aux (f1 BIGINT, f2 BIGINT) +ENGINE = $engine; +SELECT * FROM t1_aux; +COMMIT; + +# FUNCTION with "simple" INSERT +delimiter //; +CREATE FUNCTION f1_simple_insert(my_f1 INTEGER) RETURNS INTEGER +BEGIN + INSERT INTO t1_not_null SET f1 = 10, f2 = my_f1; + RETURN 1; +END// +delimiter ;// + +--echo +--echo # One f1_simple_insert execution per row, no NOT NULL violation +SELECT f1_simple_insert(1); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null; +# +SELECT f1_simple_insert(1) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null; + +--echo +--echo # One f1_simple_insert execution per row, NOT NULL violation when the +--echo # SELECT processes the first row. +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(NULL); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(NULL) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +eval SELECT 1 FROM ($from_select) AS t1 WHERE f1_simple_insert(NULL) = 1; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # One f1_simple_insert execution per row, NOT NULL violation when the +--echo # SELECT processes the non first row +--error ER_BAD_NULL_ERROR +eval SELECT f1_simple_insert(f2) FROM ($from_select) AS t1; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(f2) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # Two f1_simple_insert executions per row, NOT NULL violation when the +--echo # SELECT processes the first row. +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(1),f1_simple_insert(NULL); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(NULL),f1_simple_insert(1); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # Two f1_simple_insert executions per row, NOT NULL violation when the +--echo # SELECT processes the non first row +--error ER_BAD_NULL_ERROR +eval SELECT f1_simple_insert(f1),f1_simple_insert(f2) FROM ($from_select) AS t1; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +eval SELECT f1_simple_insert(f2),f1_simple_insert(f1) FROM ($from_select) AS t1; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(f1),f1_simple_insert(f2) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(f2),f1_simple_insert(f1) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +eval SELECT 1 FROM ($from_select) AS t1 +WHERE 1 = f1_simple_insert(f2) AND 1 = f1_simple_insert(f1); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # Nested functions, the inner fails +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(f1_simple_insert(NULL)) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +--echo +--echo # Nested functions, the outer fails +--error ER_BAD_NULL_ERROR +SELECT f1_simple_insert(f1_simple_insert(1) + NULL) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_simple_insert; + +# FUNCTION with INSERT ... SELECT +delimiter //; +let $f1_insert_select = +CREATE FUNCTION f1_insert_select(my_f1 INTEGER) RETURNS INTEGER +BEGIN + INSERT INTO t1_not_null SELECT * FROM t1_select WHERE f1 = my_f1; + RETURN 1; +END// +delimiter ;// +eval $f1_insert_select; +# +--echo +--echo # f1_insert_select(2), tries to INSERT SELECT one row containing NULL +--echo # The fact that +--echo # - SELECT f1_insert_select(2); gives any result set and +--echo # - t1_not_null gets a row inserted +--echo # is covered by the manual. +# Non strict sqlmode + INSERT SELECT --> NULL adjusted to default +SELECT f1_insert_select(2); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_insert_select; +# +SET SESSION sql_mode = 'traditional'; +eval $f1_insert_select; +--error ER_BAD_NULL_ERROR +SELECT f1_insert_select(2); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_insert_select; +SET SESSION sql_mode = ''; + +# FUNCTION with two simple INSERTs +--echo +--echo # Function tries to +--echo # 1. INSERT statement: Insert one row with NULL -> NOT NULL violation +--echo # 2. INSERT statement: Insert one row without NULL +# I guess the execution of the function becomes aborted just when the +# error happens. +delimiter //; +CREATE FUNCTION f1_two_inserts() RETURNS INTEGER +BEGIN + INSERT INTO t1_not_null SET f1 = 10, f2 = NULL; + INSERT INTO t1_not_null SET f1 = 10, f2 = 10; + RETURN 1; +END// +delimiter ;// +--error ER_BAD_NULL_ERROR +SELECT f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_two_inserts; +# +--echo +--echo # Function tries to +--echo # 1. INSERT statement: Insert one row without NULL +--echo # 2. INSERT statement: Insert one row with NULL -> NOT NULL violation +delimiter //; +CREATE FUNCTION f1_two_inserts() RETURNS INTEGER +BEGIN + INSERT INTO t1_not_null SET f1 = 10, f2 = 10; + INSERT INTO t1_not_null SET f1 = 10, f2 = NULL; + RETURN 1; +END// +delimiter ;// +--error ER_BAD_NULL_ERROR +SELECT f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # Function tries to +--echo # INSERT statement: Insert two rows +--echo # first row without NULL +--echo # second row with NULL -> NOT NULL violation +--echo # -> NOT NULL violation +delimiter //; +let $f1_insert_with_two_rows = +CREATE FUNCTION f1_insert_with_two_rows() RETURNS INTEGER +BEGIN + INSERT INTO t1_not_null(f1,f2) VALUES (10,10),(10,NULL); + RETURN 1; +END// +delimiter ;// +eval $f1_insert_with_two_rows; +--echo # The fact that +--echo # - SELECT f1_insert_with_two_rows(); gives any result set and +--echo # - t1_not_null gets a row inserted +--echo # is covered by the manual. +# Non strict sqlmode + multiple-row INSERT --> NULL adjusted to default +SELECT f1_insert_with_two_rows(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_insert_with_two_rows; +# +SET SESSION sql_mode = 'traditional'; +eval $f1_insert_with_two_rows; +--error ER_BAD_NULL_ERROR +SELECT f1_insert_with_two_rows(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +SET SESSION sql_mode = ''; + +--echo +--echo # FUNCTION in Correlated Subquery +--error ER_BAD_NULL_ERROR +SELECT 1 FROM t1_select t1 +WHERE 1 = (SELECT f1_insert_with_two_rows() FROM t1_select t2 + WHERE t2.f1 = t1.f1); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # FUNCTION in JOIN +--error ER_BAD_NULL_ERROR +SELECT 1 FROM t1_select t1, t1_select t2 +WHERE t1.f1 = t2.f1 AND t2.f1 = f1_insert_with_two_rows(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +SELECT STRAIGHT_JOIN * FROM t1_select t2 RIGHT JOIN t1_select t1 +ON t1.f1 = t1.f1 WHERE 1 = f1_insert_with_two_rows(); + +DROP FUNCTION f1_insert_with_two_rows; + +--echo +--echo # FUNCTION in UNION +--error ER_BAD_NULL_ERROR +SELECT 1 +UNION ALL +SELECT f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # FUNCTION in INSERT +--error ER_BAD_NULL_ERROR +INSERT INTO t1_aux SET f1 = 1, f2 = f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +INSERT INTO t1_aux SELECT 1, f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +SELECT * FROM t1_aux ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +INSERT INTO t1_aux VALUES(1,f1_two_inserts()); +SELECT * FROM t1_not_null ORDER BY f1,f2; +SELECT * FROM t1_aux ORDER BY f1,f2; + +--echo +--echo # FUNCTION in DELETE +INSERT INTO t1_aux VALUES (1,1); +COMMIT; +--error ER_BAD_NULL_ERROR +DELETE FROM t1_aux WHERE f1 = f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +SELECT * FROM t1_aux ORDER BY f1,f2; + +--echo +--echo # FUNCTION in UPDATE SET +# FUNCTION in SET +--error ER_BAD_NULL_ERROR +UPDATE t1_aux SET f2 = f1_two_inserts() + 1; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +SELECT * FROM t1_aux ORDER BY f1,f2; +# +if ($fixed_bug_35877) +{ +--echo +--echo # FUNCTION in UPDATE WHERE +# Bug#35877 Update .. WHERE with function, constraint violation, crash +UPDATE t1_aux SET f2 = 2 WHERE f1 = f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +SELECT * FROM t1_aux ORDER BY f1,f2; +} + +--echo +--echo # FUNCTION in VIEW definition +CREATE VIEW v1_func AS SELECT f1_two_inserts() FROM t1_select; +--error ER_BAD_NULL_ERROR +SELECT * FROM v1_func; +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP VIEW v1_func; + +--echo +--echo # FUNCTION in CREATE TABLE ... AS SELECT +--error ER_BAD_NULL_ERROR +CREATE TABLE t1_fail AS SELECT f1_two_inserts() FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; +# +--error ER_BAD_NULL_ERROR +CREATE TABLE t1_fail AS SELECT * FROM t1_select WHERE 1 = f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +# + +--echo +--echo # FUNCTION in ORDER BY +--error ER_BAD_NULL_ERROR +SELECT * FROM t1_select ORDER BY f1,f1_two_inserts(); +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # FUNCTION in aggregate function +--error ER_BAD_NULL_ERROR +SELECT AVG(f1_two_inserts()) FROM t1_select; +SELECT * FROM t1_not_null ORDER BY f1,f2; + +--echo +--echo # FUNCTION in HAVING +--error ER_BAD_NULL_ERROR +SELECT 1 FROM t1_select HAVING AVG(f1) = f1_two_inserts() + 2; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_two_inserts; + +--echo +--echo # FUNCTION modifies Updatable VIEW +CREATE VIEW v1_not_null AS SELECT f1,f2 FROM t1_not_null WITH CHECK OPTION; +delimiter //; +CREATE FUNCTION f1_two_inserts_v1() RETURNS INTEGER +BEGIN + INSERT INTO v1_not_null SET f1 = 10, f2 = 10; + INSERT INTO v1_not_null SET f1 = 10, f2 = NULL; + RETURN 1; +END// +delimiter ;// +--error ER_BAD_NULL_ERROR +SELECT f1_two_inserts_v1(); +SELECT * FROM t1_not_null ORDER BY f1,f2; +ROLLBACK; +SELECT * FROM t1_not_null ORDER BY f1,f2; +DROP FUNCTION f1_two_inserts_v1; +DROP VIEW v1_not_null; + +--echo +--echo # FUNCTION causes FOREIGN KEY constraint violation +eval +CREATE TABLE t1_parent (f1 BIGINT, f2 BIGINT, PRIMARY KEY(f1)) +ENGINE = $engine; +INSERT INTO t1_parent VALUES (1,1); +eval +CREATE TABLE t1_child (f1 BIGINT, f2 BIGINT, PRIMARY KEY(f1), +FOREIGN KEY (f1) REFERENCES t1_parent(f1)) +ENGINE = $engine; +--error ER_NO_REFERENCED_ROW_2 +delimiter //; +CREATE FUNCTION f1_two_inserts() RETURNS INTEGER +BEGIN + INSERT INTO t1_child SET f1 = 1, f2 = 1; + INSERT INTO t1_child SET f1 = 2, f2 = 2; + RETURN 1; +END// +delimiter ;// +--error ER_NO_REFERENCED_ROW_2 +SELECT f1_two_inserts(); +SELECT * FROM t1_child; +DROP TABLE t1_child; +DROP TABLE t1_parent; +DROP FUNCTION f1_two_inserts; + +# Cleanup +DROP TABLE t1_select; +DROP TABLE t1_aux; +DROP TABLE t1_not_null; From 2bc7179d2d0019fd2b4666de0990faf3f19b9582 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Apr 2008 12:27:30 -0400 Subject: [PATCH 047/435] Follow-up to B-g#15776, test failures on 64-bit linux. Make maximum blob size to be 2**32-1, regardless of word size. Fix failure of timestamp with size of 2**31-1. The method of rounding up to the nearest even number would overflow. mysql-test/r/type_blob.result: 2**32-1 is not a special case for timestamp. Test 2**32-1 and 2**64 as the reliable test points for both 32- and 64-bit machines. I'd like to test 2**32, but that would make tests that vary between architectures. I'd like to generalize the tests by pulling the max blob size from the server, and then "eval"ing N-1, N, and N+1 instead of all these literal numbers, but I have not found a way to get UINT_MAX. mysql-test/t/type_blob.test: 2**32-1 is not a special case for timestamp. Test 2**32-1 and 2**64 as the reliable test points for both 32- and 64-bit machines. I'd like to test 2**32, but that would make tests that vary between architectures. I'd like to generalize the tests by pulling the max blob size from the server, and then "eval"ing N-1, N, and N+1 instead of all these literal numbers, but I have not found a way to get UINT_MAX. sql/field.cc: Fix a bug where the round-to-even code for TIMESTAMP fields failed where the size would overflow the size to zero and then fail. Also, since we silently truncate the size of TIMESTAMP fields, set the maximum size we report is allowable to be the largest parsable number. sql/unireg.h: Make BLOB size the maximum that the packed value in field_blob::get_length() allows. --- mysql-test/r/type_blob.result | 6 +++++- mysql-test/t/type_blob.test | 4 +++- sql/field.cc | 24 +++++++++++++++++------- sql/unireg.h | 2 +- 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result index 84f2d815bdd..4c9ee9b84e3 100644 --- a/mysql-test/r/type_blob.result +++ b/mysql-test/r/type_blob.result @@ -880,9 +880,13 @@ Warnings: Warning 1287 'TIMESTAMP(4294967294)' is deprecated; use 'TIMESTAMP' instead DROP TABLE b15776; CREATE TABLE b15776 (a timestamp(4294967295)); -ERROR 42000: Display width out of range for column 'a' (max = 255) +Warnings: +Warning 1287 'TIMESTAMP(4294967295)' is deprecated; use 'TIMESTAMP' instead +DROP TABLE b15776; CREATE TABLE b15776 (a timestamp(4294967296)); ERROR 42000: Display width out of range for column 'a' (max = 4294967295) +CREATE TABLE b15776 (a timestamp(-1)); +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 '-1))' at line 1 CREATE TABLE b15776 (a timestamp(-2)); 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 '-2))' at line 1 CREATE TABLE b15776 (a int(999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999)); diff --git a/mysql-test/t/type_blob.test b/mysql-test/t/type_blob.test index ad578a18979..d7af7c40d23 100644 --- a/mysql-test/t/type_blob.test +++ b/mysql-test/t/type_blob.test @@ -528,11 +528,13 @@ CREATE TABLE b15776 (a year(-2)); ## For timestamp, we silently rewrite widths to 14 or 19. CREATE TABLE b15776 (a timestamp(4294967294)); DROP TABLE b15776; ---error ER_TOO_BIG_DISPLAYWIDTH CREATE TABLE b15776 (a timestamp(4294967295)); +DROP TABLE b15776; --error ER_TOO_BIG_DISPLAYWIDTH CREATE TABLE b15776 (a timestamp(4294967296)); --error ER_PARSE_ERROR +CREATE TABLE b15776 (a timestamp(-1)); +--error ER_PARSE_ERROR CREATE TABLE b15776 (a timestamp(-2)); diff --git a/sql/field.cc b/sql/field.cc index 2950f349580..99b61ec1ee0 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -6848,6 +6848,7 @@ uint32 Field_blob::get_length(const char *pos) return (uint32) tmp; } } + /* When expanding this, see also MAX_FIELD_BLOBLENGTH. */ return 0; // Impossible } @@ -8395,11 +8396,11 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, (fld_type_modifier & NOT_NULL_FLAG) && fld_type != FIELD_TYPE_TIMESTAMP) flags|= NO_DEFAULT_VALUE_FLAG; - if (fld_length != 0) + if (fld_length != NULL) { errno= 0; length= strtoul(fld_length, NULL, 10); - if (errno != 0) + if ((errno != 0) || (length > MAX_FIELD_BLOBLENGTH)) { my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), fld_name, MAX_FIELD_BLOBLENGTH); DBUG_RETURN(TRUE); @@ -8556,7 +8557,7 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, } break; case FIELD_TYPE_TIMESTAMP: - if (!fld_length) + if (fld_length == NULL) { /* Compressed date YYYYMMDDHHMMSS */ length= MAX_DATETIME_COMPRESSED_WIDTH; @@ -8565,12 +8566,21 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, { /* We support only even TIMESTAMP lengths less or equal than 14 - and 19 as length of 4.1 compatible representation. + and 19 as length of 4.1 compatible representation. Silently + shrink it to MAX_DATETIME_COMPRESSED_WIDTH. */ - length= ((length+1)/2)*2; /* purecov: inspected */ - length= min(length, MAX_DATETIME_COMPRESSED_WIDTH); /* purecov: inspected */ + DBUG_ASSERT(MAX_DATETIME_COMPRESSED_WIDTH < UINT_MAX); + if (length != UINT_MAX) /* avoid overflow; is safe because of min() */ + length= ((length+1)/2)*2; + length= min(length, MAX_DATETIME_COMPRESSED_WIDTH); } flags|= ZEROFILL_FLAG | UNSIGNED_FLAG; + /* + Since we silently rewrite down to MAX_DATETIME_COMPRESSED_WIDTH bytes, + the parser should not raise errors unless bizzarely large. + */ + max_field_charlength= UINT_MAX; + if (fld_default_value) { /* Grammar allows only NOW() value for ON UPDATE clause */ @@ -8677,7 +8687,7 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, ((length > max_field_charlength && fld_type != FIELD_TYPE_SET && fld_type != FIELD_TYPE_ENUM && (fld_type != MYSQL_TYPE_VARCHAR || fld_default_value)) || - (!length && + ((length == 0) && fld_type != MYSQL_TYPE_STRING && fld_type != MYSQL_TYPE_VARCHAR && fld_type != FIELD_TYPE_GEOMETRY))) { diff --git a/sql/unireg.h b/sql/unireg.h index 0ab2a40048b..24e57b4e584 100644 --- a/sql/unireg.h +++ b/sql/unireg.h @@ -60,7 +60,7 @@ #define MAX_MBWIDTH 3 /* Max multibyte sequence */ #define MAX_FIELD_CHARLENGTH 255 #define MAX_FIELD_VARCHARLENGTH 65535 -#define MAX_FIELD_BLOBLENGTH UINT_MAX +#define MAX_FIELD_BLOBLENGTH UINT_MAX32 /* cf field_blob::get_length() */ #define CONVERT_IF_BIGGER_TO_BLOB 512 /* Used for CREATE ... SELECT */ /* Max column width +1 */ From ec63ce25294e38a8ad581b72b1da83d48235d9e3 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 9 Apr 2008 21:19:41 -0400 Subject: [PATCH 048/435] Error message changed across versions. --- mysql-test/r/type_blob.result | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/r/type_blob.result b/mysql-test/r/type_blob.result index 2211c8ac9df..90857269c5c 100644 --- a/mysql-test/r/type_blob.result +++ b/mysql-test/r/type_blob.result @@ -895,7 +895,7 @@ Warning 1287 The syntax 'TIMESTAMP(4294967294)' is deprecated and will be remove DROP TABLE b15776; CREATE TABLE b15776 (a timestamp(4294967295)); Warnings: -Warning 1287 'TIMESTAMP(4294967295)' is deprecated; use 'TIMESTAMP' instead +Warning 1287 The syntax 'TIMESTAMP(4294967295)' is deprecated and will be removed in MySQL 5.2. Please use 'TIMESTAMP' instead DROP TABLE b15776; CREATE TABLE b15776 (a timestamp(4294967296)); ERROR 42000: Display width out of range for column 'a' (max = 4294967295) From b00c536378b56f06d4d721d975161506e7e0cf2a Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 10 Apr 2008 15:14:28 +0200 Subject: [PATCH 049/435] System variable tests delivered by Folio3 (see WL4288). BitKeeper/etc/ignore: Added mysql-test/linux_sys_vars.inc mysql-test/load_sysvars.inc mysql-test/windows_sys_vars.inc to the ignore list --- .bzrignore | 3 + mysql-test/include/charset_basic.inc | 80 + mysql-test/include/collation_basic.inc | 258 ++ mysql-test/include/linux_sys_vars.inc | 34 + mysql-test/include/load_sysvars.inc | 14 + mysql-test/include/windows_sys_vars.inc | 34 + mysql-test/r/auto_commit_basic.result | 117 + .../r/auto_increment_increment_basic.result | 165 ++ .../r/auto_increment_increment_func.result | 201 ++ .../r/auto_increment_offset_basic.result | 178 ++ .../r/auto_increment_offset_func.result | 257 ++ mysql-test/r/autocommit_func.result | 109 + .../r/automatic_sp_privileges_basic.result | 101 + .../r/automatic_sp_privileges_func.result | 59 + mysql-test/r/basedir_basic.result | 53 + mysql-test/r/big_tables_basic.result | 103 + mysql-test/r/binlog_format_basic.result | 75 + .../r/character_set_client_basic.result | 509 ++++ mysql-test/r/character_set_client_func.result | 38 + .../r/character_set_connection_basic.result | 508 ++++ .../r/character_set_connection_func.result | 55 + .../r/character_set_database_basic.result | 507 ++++ .../r/character_set_database_func.result | 76 + .../r/character_set_filesystem_basic.result | 485 ++++ .../r/character_set_results_basic.result | Bin 0 -> 16478 bytes .../r/character_set_results_func.result | 64 + .../r/character_set_server_basic.result | 504 ++++ mysql-test/r/character_set_server_func.result | 65 + .../r/character_set_system_basic.result | 53 + .../r/collation_connection_basic.result | 1225 ++++++++ mysql-test/r/collation_connection_func.result | 60 + mysql-test/r/collation_database_basic.result | 1224 ++++++++ mysql-test/r/collation_database_func.result | 111 + mysql-test/r/collation_server_basic.result | 1224 ++++++++ mysql-test/r/collation_server_func.result | 91 + mysql-test/r/completion_type_basic.result | 122 + mysql-test/r/completion_type_func.result | 76 + mysql-test/r/concurrent_insert_basic.result | 106 + mysql-test/r/concurrent_insert_func.result | 73 + mysql-test/r/connect_timeout_basic.result | 94 + mysql-test/r/datadir_basic.result | 53 + mysql-test/r/default_week_format_basic.result | 168 ++ mysql-test/r/default_week_format_func.result | 65 + mysql-test/r/delay_key_write_basic.result | 98 + mysql-test/r/delay_key_write_func.result | 66 + mysql-test/r/delayed_insert_limit_func.result | 186 ++ .../r/delayed_insert_timeout_basic.result | 114 + .../r/div_precision_increment_basic.result | 186 ++ .../r/div_precision_increment_func.result | 79 + .../r/engine_condition_pushdown_basic.result | 174 ++ mysql-test/r/error_count_basic.result | 54 + mysql-test/r/event_scheduler_basic.result | 98 + mysql-test/r/event_scheduler_func.result | 44 + mysql-test/r/expire_logs_days_basic.result | 126 + mysql-test/r/flush_basic.result | 97 + mysql-test/r/foreign_key_checks_basic.result | 102 + mysql-test/r/foreign_key_checks_func.result | 59 + mysql-test/r/ft_boolean_syntax_basic.result | 102 + mysql-test/r/ft_boolean_syntax_func.result | 107 + mysql-test/r/general_log_basic.result | 94 + mysql-test/r/general_log_file_basic.result | 18 + mysql-test/r/general_log_file_func.result | 19 + mysql-test/r/general_log_func.result | 32 + .../r/group_concat_max_len_basic.result | 168 ++ mysql-test/r/group_concat_max_len_func.result | 77 + mysql-test/r/have_compress_basic.result | 53 + mysql-test/r/have_crypt_basic.result | 53 + mysql-test/r/have_csv_basic.result | 53 + .../r/have_dynamic_loading_basic.result | 53 + mysql-test/r/have_geometry_basic.result | 53 + mysql-test/r/have_innodb_basic.result | 53 + mysql-test/r/have_ndbcluster_basic.result | 53 + mysql-test/r/have_openssl_basic.result | 53 + mysql-test/r/have_partitioning_basic.result | 53 + mysql-test/r/have_query_cache_basic.result | 53 + mysql-test/r/have_rtree_keys_basic.result | 53 + mysql-test/r/have_ssl_basic.result | 53 + mysql-test/r/have_symlink_basic.result | 53 + mysql-test/r/hostname_basic.result | 53 + mysql-test/r/identity_basic.result | 121 + mysql-test/r/identity_func.result | 105 + mysql-test/r/init_connect_basic.result | 98 + mysql-test/r/init_slave_basic.result | 98 + ...nodb_additional_mem_pool_size_basic.result | 53 + .../innodb_autoextend_increment_basic.result | 94 + .../r/innodb_autoinc_lock_mode_basic.result | 35 + .../r/innodb_autoinc_lock_mode_func.result | 22 + .../r/innodb_buffer_pool_size_basic.result | 53 + mysql-test/r/innodb_checksums_basic.result | 53 + .../r/innodb_commit_concurrency_basic.result | 96 + .../r/innodb_data_file_path_basic.result | 53 + .../r/innodb_data_home_dir_basic.result | 53 + mysql-test/r/innodb_doublewrite_basic.result | 53 + .../r/innodb_fast_shutdown_basic.result | 127 + .../r/innodb_file_io_threads_basic.result | 53 + .../r/innodb_file_per_table_basic.result | 53 + ...nnodb_flush_log_at_trx_commit_basic.result | 96 + mysql-test/r/innodb_flush_method_basic.result | 53 + .../r/innodb_force_recovery_basic.result | 53 + .../r/innodb_lock_wait_timeout_basic.result | 53 + ...nnodb_locks_unsafe_for_binlog_basic.result | 53 + .../r/innodb_log_buffer_size_basic.result | 53 + .../r/innodb_log_file_size_basic.result | 53 + .../r/innodb_log_files_in_group_basic.result | 53 + .../r/innodb_log_group_home_dir_basic.result | 53 + .../r/innodb_max_dirty_pages_pct_basic.result | 96 + .../r/innodb_max_dirty_pages_pct_func.result | 30 + .../r/innodb_mirrored_log_groups_basic.result | 53 + mysql-test/r/innodb_open_files_basic.result | 53 + .../r/innodb_rollback_on_timeout_basic.result | 53 + mysql-test/r/innodb_support_xa_basic.result | 176 ++ mysql-test/r/innodb_support_xa_func.result | 75 + mysql-test/r/innodb_table_locks_basic.result | 170 ++ mysql-test/r/innodb_table_locks_func.result | 32 + .../r/innodb_thread_concurrency_basic.result | 96 + .../r/innodb_thread_sleep_delay_basic.result | 84 + mysql-test/r/insert_id_basic.result | 121 + mysql-test/r/insert_id_func.result | 68 + mysql-test/r/interactive_timeout_basic.result | 164 ++ mysql-test/r/interactive_timeout_func.result | 30 + .../r/keep_files_on_create_basic.result | 166 ++ mysql-test/r/key_buffer_size_func.result | 36 + mysql-test/r/last_insert_id_func.result | 93 + mysql-test/r/lc_time_names_basic.result | 1094 +++++++ mysql-test/r/lc_time_names_func.result | 55 + mysql-test/r/license_basic.result | 53 + mysql-test/r/local_infile_basic.result | 99 + mysql-test/r/local_infile_func.result | 36 + mysql-test/r/log_basic.result | 17 + ...g_bin_trust_function_creators_basic.result | 100 + ...og_bin_trust_function_creators_func.result | 71 + ...og_bin_trust_routine_creators_basic.result | 121 + mysql-test/r/log_output_basic.result | 172 ++ mysql-test/r/log_output_func.result | 53 + ...log_queries_not_using_indexes_basic.result | 53 + mysql-test/r/long_query_time_basic.result | 158 ++ .../r/low_priority_updates_basic.result | 164 ++ mysql-test/r/max_allowed_packet_basic.result | 193 ++ mysql-test/r/max_allowed_packet_func.result | 45 + .../r/max_binlog_cache_size_func.result | 350 +++ mysql-test/r/max_binlog_size_basic.result | 145 + mysql-test/r/max_connections_basic.result | 137 + mysql-test/r/max_delayed_threads_basic.result | 183 ++ mysql-test/r/max_error_count_basic.result | 173 ++ .../r/max_insert_delayed_threads_basic.result | 184 ++ mysql-test/r/max_join_size_func.result | 61 + .../r/max_length_for_sort_data_basic.result | 199 ++ .../r/max_prepared_stmt_count_basic.result | 129 + .../r/max_prepared_stmt_count_func.result | 81 + mysql-test/r/max_relay_log_size_basic.result | 131 + mysql-test/r/max_seeks_for_key_func.result | 75 + mysql-test/r/max_sort_length_basic.result | 199 ++ mysql-test/r/max_sort_length_func.result | 298 ++ .../r/max_sp_recursion_depth_basic.result | 191 ++ .../r/max_sp_recursion_depth_func.result | 164 ++ .../r/max_user_connections_basic.result | 115 + mysql-test/r/max_user_connections_func.result | 18 + .../r/myisam_data_pointer_size_basic.result | 127 + .../r/myisam_data_pointer_size_func.result | 42 + .../r/myisam_sort_buffer_size_basic.result | 184 ++ mysql-test/r/myisam_stats_method_basic.result | 155 + mysql-test/r/myisam_stats_method_func.result | 85 + mysql-test/r/myisam_use_mmap_basic.result | 53 + .../r/ndb_log_update_as_write_basic.result | 14 + .../r/ndb_log_updated_only_basic.result | 14 + mysql-test/r/net_buffer_length_basic.result | 194 ++ mysql-test/r/net_read_timeout_basic.result | 164 ++ mysql-test/r/net_write_timeout_basic.result | 160 ++ mysql-test/r/new_basic.result | 163 ++ mysql-test/r/old_passwords_basic.result | 159 ++ mysql-test/r/old_passwords_func.result | 55 + .../r/optimizer_prune_level_basic.result | 168 ++ .../r/optimizer_search_depth_basic.result | 170 ++ mysql-test/r/preload_buffer_size_basic.result | 194 ++ mysql-test/r/query_cache_limit_func.result | 115 + mysql-test/r/query_cache_type_basic.result | 157 + mysql-test/r/query_cache_type_func.result | 221 ++ .../query_cache_wlock_invalidate_basic.result | 174 ++ .../query_cache_wlock_invalidate_func.result | 164 ++ mysql-test/r/query_prealloc_size_func.result | 38 + mysql-test/r/read_buffer_size_basic.result | 189 ++ mysql-test/r/read_only_basic.result | 119 + mysql-test/r/read_only_func.result | 56 + .../r/read_rnd_buffer_size_basic.result | 188 ++ mysql-test/r/relay_log_purge_basic.result | 94 + mysql-test/r/rpl_init_slave_func.result | 47 + mysql-test/r/rpl_max_binlog_size_func.result | 5 + mysql-test/r/secure_auth_basic.result | 105 + mysql-test/r/secure_auth_func.result | 33 + .../r/slave_allow_batching_basic.result | 12 + .../r/slave_compressed_protocol_basic.result | 103 + mysql-test/r/slave_exec_mode_basic.result | 2 + mysql-test/r/slave_net_timeout_basic.result | 127 + mysql-test/r/slow_launch_time_basic.result | 130 + mysql-test/r/slow_launch_time_func.result | 37 + mysql-test/r/slow_query_log_basic.result | 94 + mysql-test/r/slow_query_log_file_basic.result | 18 + mysql-test/r/slow_query_log_file_func.result | 3 + mysql-test/r/slow_query_log_func.result | 24 + mysql-test/r/sql_auto_is_null_basic.result | 54 + mysql-test/r/sql_big_selects_basic.result | 103 + mysql-test/r/sql_big_selects_func.result | 74 + mysql-test/r/sql_big_tables_basic.result | 108 + mysql-test/r/sql_big_tables_func.result | 121 + mysql-test/r/sql_buffer_result_basic.result | 116 + mysql-test/r/sql_buffer_result_func.result | 84 + mysql-test/r/sql_log_bin_basic.result | 106 + mysql-test/r/sql_log_off_basic.result | 108 + mysql-test/r/sql_log_off_func.result | 51 + .../r/sql_low_priority_updates_basic.result | 173 ++ .../r/sql_low_priority_updates_func.result | 114 + mysql-test/r/sql_max_join_size_func.result | 77 + mysql-test/r/sql_mode_basic.result | 453 +++ mysql-test/r/sql_mode_func.result | 105 + mysql-test/r/sql_notes_basic.result | 106 + mysql-test/r/sql_notes_func.result | 64 + .../r/sql_quote_show_create_basic.result | 108 + .../r/sql_quote_show_create_func.result | 61 + mysql-test/r/sql_safe_updates_basic.result | 108 + mysql-test/r/sql_safe_updates_func.result | 169 ++ mysql-test/r/sql_select_limit_func.result | 172 ++ .../r/sql_slave_skip_counter_basic.result | 40 + mysql-test/r/sql_warnings_basic.result | 109 + mysql-test/r/sql_warnings_func.result | 49 + mysql-test/r/ssl_ca_basic.result | 53 + mysql-test/r/ssl_capath_basic.result | 53 + mysql-test/r/ssl_cert_basic.result | 53 + mysql-test/r/ssl_cipher_basic.result | 53 + mysql-test/r/ssl_key_basic.result | 53 + mysql-test/r/storage_engine_basic.result | 115 + mysql-test/r/sync_frm_basic.result | 97 + mysql-test/r/system_time_zone_basic.result | 53 + .../r/table_definition_cache_basic.result | 102 + .../r/table_lock_wait_timeout_basic.result | 99 + mysql-test/r/table_open_cache_basic.result | 108 + mysql-test/r/thread_cache_size_func.result | 68 + mysql-test/r/thread_handling_basic.result | 55 + mysql-test/r/time_zone_basic.result | 230 ++ mysql-test/r/time_zone_func.result | 185 ++ mysql-test/r/timed_mutexes_basic.result | 104 + mysql-test/r/timestamp_func.result | 33 + mysql-test/r/tmpdir_basic.result | 53 + mysql-test/r/tx_isolation_basic.result | 176 ++ mysql-test/r/tx_isolation_func.result | 380 +++ mysql-test/r/unique_checks_basic.result | 89 + .../r/updatable_views_with_limit_basic.result | 183 ++ .../r/updatable_views_with_limit_func.result | 66 + mysql-test/r/version_basic.result | 53 + mysql-test/r/version_comment_basic.result | 53 + .../r/version_compile_machine_basic.result | 53 + mysql-test/r/version_compile_os_basic.result | 53 + mysql-test/r/wait_timeout_func.result | 30 + mysql-test/r/warning_count_basic.result | 54 + mysql-test/std_data/charset_utf8.txt | 2527 +++++++++++++++++ mysql-test/std_data/numbers.txt | 9 + mysql-test/t/auto_commit_basic.test | 190 ++ .../t/auto_increment_increment_basic.test | 208 ++ .../t/auto_increment_increment_func.test | 202 ++ mysql-test/t/auto_increment_offset_basic.test | 214 ++ mysql-test/t/auto_increment_offset_func.test | 200 ++ mysql-test/t/autocommit_func-master.opt | 1 + mysql-test/t/autocommit_func.test | 164 ++ .../t/automatic_sp_privileges_basic.test | 179 ++ .../t/automatic_sp_privileges_func.test | 148 + mysql-test/t/basedir_basic.test | 100 + mysql-test/t/big_tables_basic.test | 179 ++ mysql-test/t/binlog_format_basic.test | 113 + mysql-test/t/character_set_client_basic.test | 341 +++ mysql-test/t/character_set_client_func.test | 84 + .../t/character_set_connection_basic.test | 268 ++ .../t/character_set_connection_func.test | 102 + .../t/character_set_database_basic.test | 268 ++ mysql-test/t/character_set_database_func.test | 113 + .../t/character_set_filesystem_basic.test | 250 ++ .../character_set_filesystem_func-master.opt | 1 + mysql-test/t/character_set_results_basic.test | 266 ++ mysql-test/t/character_set_results_func.test | 102 + mysql-test/t/character_set_server_basic.test | 267 ++ mysql-test/t/character_set_server_func.test | 106 + mysql-test/t/character_set_system_basic.test | 100 + mysql-test/t/collation_connection_basic.test | 260 ++ mysql-test/t/collation_connection_func.test | 95 + mysql-test/t/collation_database_basic.test | 259 ++ mysql-test/t/collation_database_func.test | 138 + mysql-test/t/collation_server_basic.test | 261 ++ mysql-test/t/collation_server_func.test | 115 + mysql-test/t/completion_type_basic.test | 184 ++ mysql-test/t/completion_type_func-master.opt | 1 + mysql-test/t/completion_type_func.test | 104 + mysql-test/t/concurrent_insert_basic.test | 178 ++ mysql-test/t/concurrent_insert_func.test | 140 + mysql-test/t/connect_timeout_basic.test | 153 + mysql-test/t/datadir_basic.test | 100 + mysql-test/t/default_week_format_basic.test | 199 ++ mysql-test/t/default_week_format_func.test | 66 + mysql-test/t/delay_key_write_basic.test | 173 ++ mysql-test/t/delay_key_write_func-master.opt | 2 + mysql-test/t/delay_key_write_func.test | 148 + mysql-test/t/delayed_insert_limit_func.test | 227 ++ .../t/delayed_insert_timeout_basic.test | 171 ++ .../t/div_precision_increment_basic.test | 209 ++ .../t/div_precision_increment_func.test | 125 + .../t/engine_condition_pushdown_basic.test | 227 ++ mysql-test/t/error_count_basic.test | 97 + mysql-test/t/event_scheduler_basic.test | 175 ++ mysql-test/t/event_scheduler_func.test | 90 + mysql-test/t/expire_logs_days_basic.test | 179 ++ mysql-test/t/flush_basic.test | 172 ++ mysql-test/t/foreign_key_checks_basic.test | 172 ++ mysql-test/t/foreign_key_checks_func.test | 139 + mysql-test/t/ft_boolean_syntax_basic.test | 162 ++ mysql-test/t/ft_boolean_syntax_func.test | 125 + mysql-test/t/general_log_basic.test | 169 ++ .../t/general_log_file_basic-master.opt | 1 + mysql-test/t/general_log_file_basic.test | 70 + mysql-test/t/general_log_file_func-master.opt | 2 + mysql-test/t/general_log_file_func.test | 56 + mysql-test/t/general_log_func.test | 84 + mysql-test/t/group_concat_max_len_basic.test | 206 ++ mysql-test/t/group_concat_max_len_func.test | 127 + mysql-test/t/have_compress_basic.test | 100 + mysql-test/t/have_crypt_basic.test | 100 + mysql-test/t/have_csv_basic.test | 100 + mysql-test/t/have_dynamic_loading_basic.test | 100 + mysql-test/t/have_geometry_basic.test | 100 + mysql-test/t/have_innodb_basic.test | 100 + mysql-test/t/have_ndbcluster_basic.test | 100 + mysql-test/t/have_openssl_basic.test | 100 + mysql-test/t/have_partitioning_basic.test | 100 + mysql-test/t/have_query_cache_basic.test | 100 + mysql-test/t/have_rtree_keys_basic.test | 100 + mysql-test/t/have_ssl_basic.test | 100 + mysql-test/t/have_symlink_basic.test | 100 + mysql-test/t/hostname_basic.test | 100 + mysql-test/t/identity_basic.test | 189 ++ mysql-test/t/identity_func-master.opt | 2 + mysql-test/t/identity_func.test | 143 + mysql-test/t/init_connect_basic.test | 151 + mysql-test/t/init_slave_basic.test | 153 + ...innodb_additional_mem_pool_size_basic.test | 100 + .../t/innodb_autoextend_increment_basic.test | 159 ++ .../t/innodb_autoinc_lock_mode_basic.test | 89 + .../innodb_autoinc_lock_mode_func-master.opt | 2 + .../t/innodb_autoinc_lock_mode_func.test | 56 + .../t/innodb_buffer_pool_size_basic.test | 100 + mysql-test/t/innodb_checksums_basic.test | 100 + .../t/innodb_commit_concurrency_basic.test | 146 + mysql-test/t/innodb_data_file_path_basic.test | 100 + mysql-test/t/innodb_data_home_dir_basic.test | 100 + mysql-test/t/innodb_doublewrite_basic.test | 100 + mysql-test/t/innodb_fast_shutdown_basic.test | 192 ++ .../t/innodb_file_io_threads_basic.test | 100 + mysql-test/t/innodb_file_per_table_basic.test | 100 + .../innodb_flush_log_at_trx_commit_basic.test | 150 + mysql-test/t/innodb_flush_method_basic.test | 100 + mysql-test/t/innodb_force_recovery_basic.test | 100 + .../t/innodb_lock_wait_timeout_basic.test | 100 + .../innodb_locks_unsafe_for_binlog_basic.test | 100 + .../t/innodb_log_buffer_size_basic.test | 100 + mysql-test/t/innodb_log_file_size_basic.test | 100 + .../t/innodb_log_files_in_group_basic.test | 100 + .../t/innodb_log_group_home_dir_basic.test | 100 + .../t/innodb_max_dirty_pages_pct_basic.test | 142 + .../t/innodb_max_dirty_pages_pct_func.test | 164 ++ .../t/innodb_mirrored_log_groups_basic.test | 100 + mysql-test/t/innodb_open_files_basic.test | 100 + .../t/innodb_rollback_on_timeout_basic.test | 100 + mysql-test/t/innodb_support_xa_basic.test | 234 ++ mysql-test/t/innodb_support_xa_func.test | 138 + mysql-test/t/innodb_table_locks_basic.test | 231 ++ mysql-test/t/innodb_table_locks_func.test | 86 + .../t/innodb_thread_concurrency_basic.test | 150 + mysql-test/t/insert_id_basic.test | 192 ++ mysql-test/t/insert_id_func.test | 113 + mysql-test/t/interactive_timeout_basic.test | 207 ++ mysql-test/t/interactive_timeout_func.test | 70 + mysql-test/t/keep_files_on_create_basic.test | 222 ++ mysql-test/t/key_buffer_size_func.test | 100 + mysql-test/t/last_insert_id_func-master.opt | 2 + mysql-test/t/last_insert_id_func.test | 145 + mysql-test/t/lc_time_names_basic.test | 714 +++++ mysql-test/t/lc_time_names_func.test | 87 + mysql-test/t/license_basic.test | 100 + mysql-test/t/local_infile_basic.test | 173 ++ mysql-test/t/local_infile_func.test | 92 + mysql-test/t/log_basic.test | 60 + ...log_bin_trust_function_creators_basic.test | 170 ++ ...in_trust_function_creators_func-master.opt | 1 + .../log_bin_trust_function_creators_func.test | 121 + .../log_bin_trust_routine_creators_basic.test | 164 ++ mysql-test/t/log_output_basic.test | 231 ++ mysql-test/t/log_output_func.test | 112 + .../log_queries_not_using_indexes_basic.test | 103 + mysql-test/t/long_query_time_basic.test | 210 ++ mysql-test/t/low_priority_updates_basic.test | 222 ++ mysql-test/t/max_allowed_packet_basic.test | 216 ++ mysql-test/t/max_allowed_packet_func.test | 84 + .../t/max_binlog_cache_size_func-master.opt | 2 + mysql-test/t/max_binlog_size_basic.test | 183 ++ mysql-test/t/max_connections_basic.test | 184 ++ mysql-test/t/max_delayed_threads_basic.test | 229 ++ mysql-test/t/max_error_count_basic.test | 215 ++ .../t/max_insert_delayed_threads_basic.test | 231 ++ mysql-test/t/max_join_size_func.test | 124 + .../t/max_length_for_sort_data_basic.test | 224 ++ .../t/max_prepared_stmt_count_basic.test | 185 ++ .../t/max_prepared_stmt_count_func.test | 150 + mysql-test/t/max_relay_log_size_basic.test | 184 ++ mysql-test/t/max_seeks_for_key_func.test | 104 + mysql-test/t/max_sort_length_basic.test | 225 ++ mysql-test/t/max_sort_length_func.test | 253 ++ .../t/max_sp_recursion_depth_basic.test | 225 ++ mysql-test/t/max_sp_recursion_depth_func.test | 182 ++ mysql-test/t/max_user_connections_basic.test | 172 ++ mysql-test/t/max_user_connections_func.test | 93 + .../t/myisam_data_pointer_size_basic.test | 182 ++ .../t/myisam_data_pointer_size_func.test | 111 + mysql-test/t/myisam_stats_method_basic.test | 226 ++ mysql-test/t/myisam_stats_method_func.test | 106 + mysql-test/t/myisam_use_mmap_basic.test | 104 + .../t/ndb_log_update_as_write_basic.test | 216 ++ mysql-test/t/ndb_log_updated_only_basic.test | 216 ++ mysql-test/t/net_buffer_length_basic.test | 226 ++ mysql-test/t/net_read_timeout_basic.test | 207 ++ mysql-test/t/net_write_timeout_basic.test | 203 ++ mysql-test/t/new_basic.test | 220 ++ mysql-test/t/old_passwords_basic.test | 220 ++ mysql-test/t/old_passwords_func.test | 118 + mysql-test/t/optimizer_prune_level_basic.test | 228 ++ .../t/optimizer_search_depth_basic.test | 210 ++ mysql-test/t/preload_buffer_size_basic.test | 217 ++ mysql-test/t/query_cache_limit_func.test | 173 ++ mysql-test/t/query_cache_type_basic.test | 228 ++ mysql-test/t/query_cache_type_func.test | 314 ++ .../t/query_cache_wlock_invalidate_basic.test | 231 ++ .../t/query_cache_wlock_invalidate_func.test | 311 ++ mysql-test/t/query_prealloc_size_func.test | 86 + mysql-test/t/read_buffer_size_basic.test | 209 ++ mysql-test/t/read_only_basic.test | 173 ++ mysql-test/t/read_only_func.test | 149 + mysql-test/t/read_rnd_buffer_size_basic.test | 209 ++ mysql-test/t/relay_log_purge_basic.test | 163 ++ mysql-test/t/rpl_init_slave_func-slave.opt | 1 + mysql-test/t/rpl_init_slave_func.test | 96 + .../t/rpl_max_binlog_size_func-master.opt | 2 + mysql-test/t/rpl_max_binlog_size_func.test | 37 + mysql-test/t/secure_auth_basic.test | 170 ++ mysql-test/t/secure_auth_func-master.opt | 2 + mysql-test/t/secure_auth_func.test | 130 + mysql-test/t/slave_allow_batching_basic.test | 167 ++ .../t/slave_compressed_protocol_basic.test | 166 ++ mysql-test/t/slave_exec_mode_basic.test | 41 + mysql-test/t/slave_net_timeout_basic.test | 186 ++ mysql-test/t/slow_launch_time_basic.test | 177 ++ mysql-test/t/slow_launch_time_func.test | 107 + mysql-test/t/slow_query_log_basic.test | 170 ++ .../t/slow_query_log_file_basic-master.opt | 1 + mysql-test/t/slow_query_log_file_basic.test | 70 + .../t/slow_query_log_file_func-master.opt | 2 + mysql-test/t/slow_query_log_file_func.test | 31 + mysql-test/t/slow_query_log_func.test | 39 + mysql-test/t/sql_auto_is_null_basic.test | 101 + mysql-test/t/sql_big_selects_basic.test | 174 ++ mysql-test/t/sql_big_selects_func.test | 133 + mysql-test/t/sql_big_tables_basic.test | 175 ++ mysql-test/t/sql_big_tables_func.test | 146 + mysql-test/t/sql_buffer_result_basic.test | 184 ++ mysql-test/t/sql_buffer_result_func.test | 130 + mysql-test/t/sql_log_bin_basic.test | 174 ++ mysql-test/t/sql_log_off_basic.test | 175 ++ mysql-test/t/sql_log_off_func.test | 115 + .../t/sql_low_priority_updates_basic.test | 233 ++ .../t/sql_low_priority_updates_func.test | 239 ++ mysql-test/t/sql_max_join_size_func.test | 133 + mysql-test/t/sql_mode_basic.test | 413 +++ mysql-test/t/sql_mode_func.test | 200 ++ mysql-test/t/sql_notes_basic.test | 176 ++ mysql-test/t/sql_notes_func.test | 134 + mysql-test/t/sql_quote_show_create_basic.test | 176 ++ mysql-test/t/sql_quote_show_create_func.test | 114 + mysql-test/t/sql_safe_updates_basic.test | 175 ++ mysql-test/t/sql_safe_updates_func.test | 202 ++ mysql-test/t/sql_select_limit_func.test | 209 ++ .../t/sql_slave_skip_counter_basic.test | 108 + mysql-test/t/sql_warnings_basic.test | 182 ++ mysql-test/t/sql_warnings_func.test | 120 + mysql-test/t/ssl_ca_basic.test | 100 + mysql-test/t/ssl_capath_basic.test | 100 + mysql-test/t/ssl_cert_basic.test | 100 + mysql-test/t/ssl_cipher_basic.test | 100 + mysql-test/t/ssl_key_basic.test | 100 + mysql-test/t/storage_engine_basic-master.opt | 1 + mysql-test/t/storage_engine_basic.test | 179 ++ mysql-test/t/sync_frm_basic.test | 163 ++ mysql-test/t/system_time_zone_basic.test | 100 + .../t/table_definition_cache_basic.test | 159 ++ .../t/table_lock_wait_timeout_basic.test | 172 ++ mysql-test/t/table_open_cache_basic.test | 177 ++ mysql-test/t/thread_cache_size_func.test | 156 + mysql-test/t/thread_handling_basic.test | 107 + mysql-test/t/time_zone_basic.test | 325 +++ mysql-test/t/time_zone_func.test | 188 ++ mysql-test/t/timed_mutexes_basic.test | 169 ++ mysql-test/t/timestamp_func.test | 79 + mysql-test/t/tmpdir_basic.test | 100 + mysql-test/t/tx_isolation_basic.test | 251 ++ mysql-test/t/tx_isolation_func-master.opt | 3 + mysql-test/t/tx_isolation_func.test | 412 +++ mysql-test/t/unique_checks_basic.test | 170 ++ .../t/updatable_views_with_limit_basic.test | 275 ++ .../t/updatable_views_with_limit_func.test | 143 + mysql-test/t/version_basic.test | 100 + mysql-test/t/version_comment_basic.test | 100 + .../t/version_compile_machine_basic.test | 100 + mysql-test/t/version_compile_os_basic.test | 100 + mysql-test/t/wait_timeout_func.test | 101 + mysql-test/t/warning_count_basic.test | 97 + 517 files changed, 71653 insertions(+) create mode 100644 mysql-test/include/charset_basic.inc create mode 100644 mysql-test/include/collation_basic.inc create mode 100644 mysql-test/include/linux_sys_vars.inc create mode 100644 mysql-test/include/load_sysvars.inc create mode 100644 mysql-test/include/windows_sys_vars.inc create mode 100644 mysql-test/r/auto_commit_basic.result create mode 100644 mysql-test/r/auto_increment_increment_basic.result create mode 100644 mysql-test/r/auto_increment_increment_func.result create mode 100644 mysql-test/r/auto_increment_offset_basic.result create mode 100644 mysql-test/r/auto_increment_offset_func.result create mode 100644 mysql-test/r/autocommit_func.result create mode 100644 mysql-test/r/automatic_sp_privileges_basic.result create mode 100644 mysql-test/r/automatic_sp_privileges_func.result create mode 100644 mysql-test/r/basedir_basic.result create mode 100644 mysql-test/r/big_tables_basic.result create mode 100644 mysql-test/r/binlog_format_basic.result create mode 100644 mysql-test/r/character_set_client_basic.result create mode 100644 mysql-test/r/character_set_client_func.result create mode 100644 mysql-test/r/character_set_connection_basic.result create mode 100644 mysql-test/r/character_set_connection_func.result create mode 100644 mysql-test/r/character_set_database_basic.result create mode 100644 mysql-test/r/character_set_database_func.result create mode 100644 mysql-test/r/character_set_filesystem_basic.result create mode 100644 mysql-test/r/character_set_results_basic.result create mode 100644 mysql-test/r/character_set_results_func.result create mode 100644 mysql-test/r/character_set_server_basic.result create mode 100644 mysql-test/r/character_set_server_func.result create mode 100644 mysql-test/r/character_set_system_basic.result create mode 100644 mysql-test/r/collation_connection_basic.result create mode 100644 mysql-test/r/collation_connection_func.result create mode 100644 mysql-test/r/collation_database_basic.result create mode 100644 mysql-test/r/collation_database_func.result create mode 100644 mysql-test/r/collation_server_basic.result create mode 100644 mysql-test/r/collation_server_func.result create mode 100644 mysql-test/r/completion_type_basic.result create mode 100644 mysql-test/r/completion_type_func.result create mode 100644 mysql-test/r/concurrent_insert_basic.result create mode 100644 mysql-test/r/concurrent_insert_func.result create mode 100644 mysql-test/r/connect_timeout_basic.result create mode 100644 mysql-test/r/datadir_basic.result create mode 100644 mysql-test/r/default_week_format_basic.result create mode 100644 mysql-test/r/default_week_format_func.result create mode 100644 mysql-test/r/delay_key_write_basic.result create mode 100644 mysql-test/r/delay_key_write_func.result create mode 100644 mysql-test/r/delayed_insert_limit_func.result create mode 100644 mysql-test/r/delayed_insert_timeout_basic.result create mode 100644 mysql-test/r/div_precision_increment_basic.result create mode 100644 mysql-test/r/div_precision_increment_func.result create mode 100644 mysql-test/r/engine_condition_pushdown_basic.result create mode 100644 mysql-test/r/error_count_basic.result create mode 100644 mysql-test/r/event_scheduler_basic.result create mode 100644 mysql-test/r/event_scheduler_func.result create mode 100644 mysql-test/r/expire_logs_days_basic.result create mode 100644 mysql-test/r/flush_basic.result create mode 100644 mysql-test/r/foreign_key_checks_basic.result create mode 100644 mysql-test/r/foreign_key_checks_func.result create mode 100644 mysql-test/r/ft_boolean_syntax_basic.result create mode 100644 mysql-test/r/ft_boolean_syntax_func.result create mode 100644 mysql-test/r/general_log_basic.result create mode 100644 mysql-test/r/general_log_file_basic.result create mode 100644 mysql-test/r/general_log_file_func.result create mode 100644 mysql-test/r/general_log_func.result create mode 100644 mysql-test/r/group_concat_max_len_basic.result create mode 100644 mysql-test/r/group_concat_max_len_func.result create mode 100644 mysql-test/r/have_compress_basic.result create mode 100644 mysql-test/r/have_crypt_basic.result create mode 100644 mysql-test/r/have_csv_basic.result create mode 100644 mysql-test/r/have_dynamic_loading_basic.result create mode 100644 mysql-test/r/have_geometry_basic.result create mode 100644 mysql-test/r/have_innodb_basic.result create mode 100644 mysql-test/r/have_ndbcluster_basic.result create mode 100644 mysql-test/r/have_openssl_basic.result create mode 100644 mysql-test/r/have_partitioning_basic.result create mode 100644 mysql-test/r/have_query_cache_basic.result create mode 100644 mysql-test/r/have_rtree_keys_basic.result create mode 100644 mysql-test/r/have_ssl_basic.result create mode 100644 mysql-test/r/have_symlink_basic.result create mode 100644 mysql-test/r/hostname_basic.result create mode 100644 mysql-test/r/identity_basic.result create mode 100644 mysql-test/r/identity_func.result create mode 100644 mysql-test/r/init_connect_basic.result create mode 100644 mysql-test/r/init_slave_basic.result create mode 100644 mysql-test/r/innodb_additional_mem_pool_size_basic.result create mode 100644 mysql-test/r/innodb_autoextend_increment_basic.result create mode 100644 mysql-test/r/innodb_autoinc_lock_mode_basic.result create mode 100644 mysql-test/r/innodb_autoinc_lock_mode_func.result create mode 100644 mysql-test/r/innodb_buffer_pool_size_basic.result create mode 100644 mysql-test/r/innodb_checksums_basic.result create mode 100644 mysql-test/r/innodb_commit_concurrency_basic.result create mode 100644 mysql-test/r/innodb_data_file_path_basic.result create mode 100644 mysql-test/r/innodb_data_home_dir_basic.result create mode 100644 mysql-test/r/innodb_doublewrite_basic.result create mode 100644 mysql-test/r/innodb_fast_shutdown_basic.result create mode 100644 mysql-test/r/innodb_file_io_threads_basic.result create mode 100644 mysql-test/r/innodb_file_per_table_basic.result create mode 100644 mysql-test/r/innodb_flush_log_at_trx_commit_basic.result create mode 100644 mysql-test/r/innodb_flush_method_basic.result create mode 100644 mysql-test/r/innodb_force_recovery_basic.result create mode 100644 mysql-test/r/innodb_lock_wait_timeout_basic.result create mode 100644 mysql-test/r/innodb_locks_unsafe_for_binlog_basic.result create mode 100644 mysql-test/r/innodb_log_buffer_size_basic.result create mode 100644 mysql-test/r/innodb_log_file_size_basic.result create mode 100644 mysql-test/r/innodb_log_files_in_group_basic.result create mode 100644 mysql-test/r/innodb_log_group_home_dir_basic.result create mode 100644 mysql-test/r/innodb_max_dirty_pages_pct_basic.result create mode 100644 mysql-test/r/innodb_max_dirty_pages_pct_func.result create mode 100644 mysql-test/r/innodb_mirrored_log_groups_basic.result create mode 100644 mysql-test/r/innodb_open_files_basic.result create mode 100644 mysql-test/r/innodb_rollback_on_timeout_basic.result create mode 100644 mysql-test/r/innodb_support_xa_basic.result create mode 100644 mysql-test/r/innodb_support_xa_func.result create mode 100644 mysql-test/r/innodb_table_locks_basic.result create mode 100644 mysql-test/r/innodb_table_locks_func.result create mode 100644 mysql-test/r/innodb_thread_concurrency_basic.result create mode 100644 mysql-test/r/innodb_thread_sleep_delay_basic.result create mode 100644 mysql-test/r/insert_id_basic.result create mode 100644 mysql-test/r/insert_id_func.result create mode 100644 mysql-test/r/interactive_timeout_basic.result create mode 100644 mysql-test/r/interactive_timeout_func.result create mode 100644 mysql-test/r/keep_files_on_create_basic.result create mode 100644 mysql-test/r/key_buffer_size_func.result create mode 100644 mysql-test/r/last_insert_id_func.result create mode 100644 mysql-test/r/lc_time_names_basic.result create mode 100644 mysql-test/r/lc_time_names_func.result create mode 100644 mysql-test/r/license_basic.result create mode 100644 mysql-test/r/local_infile_basic.result create mode 100644 mysql-test/r/local_infile_func.result create mode 100644 mysql-test/r/log_basic.result create mode 100644 mysql-test/r/log_bin_trust_function_creators_basic.result create mode 100644 mysql-test/r/log_bin_trust_function_creators_func.result create mode 100644 mysql-test/r/log_bin_trust_routine_creators_basic.result create mode 100644 mysql-test/r/log_output_basic.result create mode 100644 mysql-test/r/log_output_func.result create mode 100644 mysql-test/r/log_queries_not_using_indexes_basic.result create mode 100644 mysql-test/r/long_query_time_basic.result create mode 100644 mysql-test/r/low_priority_updates_basic.result create mode 100644 mysql-test/r/max_allowed_packet_basic.result create mode 100644 mysql-test/r/max_allowed_packet_func.result create mode 100644 mysql-test/r/max_binlog_cache_size_func.result create mode 100644 mysql-test/r/max_binlog_size_basic.result create mode 100644 mysql-test/r/max_connections_basic.result create mode 100644 mysql-test/r/max_delayed_threads_basic.result create mode 100644 mysql-test/r/max_error_count_basic.result create mode 100644 mysql-test/r/max_insert_delayed_threads_basic.result create mode 100644 mysql-test/r/max_join_size_func.result create mode 100644 mysql-test/r/max_length_for_sort_data_basic.result create mode 100644 mysql-test/r/max_prepared_stmt_count_basic.result create mode 100644 mysql-test/r/max_prepared_stmt_count_func.result create mode 100644 mysql-test/r/max_relay_log_size_basic.result create mode 100644 mysql-test/r/max_seeks_for_key_func.result create mode 100644 mysql-test/r/max_sort_length_basic.result create mode 100644 mysql-test/r/max_sort_length_func.result create mode 100644 mysql-test/r/max_sp_recursion_depth_basic.result create mode 100644 mysql-test/r/max_sp_recursion_depth_func.result create mode 100644 mysql-test/r/max_user_connections_basic.result create mode 100644 mysql-test/r/max_user_connections_func.result create mode 100644 mysql-test/r/myisam_data_pointer_size_basic.result create mode 100644 mysql-test/r/myisam_data_pointer_size_func.result create mode 100644 mysql-test/r/myisam_sort_buffer_size_basic.result create mode 100644 mysql-test/r/myisam_stats_method_basic.result create mode 100644 mysql-test/r/myisam_stats_method_func.result create mode 100644 mysql-test/r/myisam_use_mmap_basic.result create mode 100644 mysql-test/r/ndb_log_update_as_write_basic.result create mode 100644 mysql-test/r/ndb_log_updated_only_basic.result create mode 100644 mysql-test/r/net_buffer_length_basic.result create mode 100644 mysql-test/r/net_read_timeout_basic.result create mode 100644 mysql-test/r/net_write_timeout_basic.result create mode 100644 mysql-test/r/new_basic.result create mode 100644 mysql-test/r/old_passwords_basic.result create mode 100644 mysql-test/r/old_passwords_func.result create mode 100644 mysql-test/r/optimizer_prune_level_basic.result create mode 100644 mysql-test/r/optimizer_search_depth_basic.result create mode 100644 mysql-test/r/preload_buffer_size_basic.result create mode 100644 mysql-test/r/query_cache_limit_func.result create mode 100644 mysql-test/r/query_cache_type_basic.result create mode 100644 mysql-test/r/query_cache_type_func.result create mode 100644 mysql-test/r/query_cache_wlock_invalidate_basic.result create mode 100644 mysql-test/r/query_cache_wlock_invalidate_func.result create mode 100644 mysql-test/r/query_prealloc_size_func.result create mode 100644 mysql-test/r/read_buffer_size_basic.result create mode 100644 mysql-test/r/read_only_basic.result create mode 100644 mysql-test/r/read_only_func.result create mode 100644 mysql-test/r/read_rnd_buffer_size_basic.result create mode 100644 mysql-test/r/relay_log_purge_basic.result create mode 100644 mysql-test/r/rpl_init_slave_func.result create mode 100644 mysql-test/r/rpl_max_binlog_size_func.result create mode 100644 mysql-test/r/secure_auth_basic.result create mode 100644 mysql-test/r/secure_auth_func.result create mode 100644 mysql-test/r/slave_allow_batching_basic.result create mode 100644 mysql-test/r/slave_compressed_protocol_basic.result create mode 100644 mysql-test/r/slave_exec_mode_basic.result create mode 100644 mysql-test/r/slave_net_timeout_basic.result create mode 100644 mysql-test/r/slow_launch_time_basic.result create mode 100644 mysql-test/r/slow_launch_time_func.result create mode 100644 mysql-test/r/slow_query_log_basic.result create mode 100644 mysql-test/r/slow_query_log_file_basic.result create mode 100644 mysql-test/r/slow_query_log_file_func.result create mode 100644 mysql-test/r/slow_query_log_func.result create mode 100644 mysql-test/r/sql_auto_is_null_basic.result create mode 100644 mysql-test/r/sql_big_selects_basic.result create mode 100644 mysql-test/r/sql_big_selects_func.result create mode 100644 mysql-test/r/sql_big_tables_basic.result create mode 100644 mysql-test/r/sql_big_tables_func.result create mode 100644 mysql-test/r/sql_buffer_result_basic.result create mode 100644 mysql-test/r/sql_buffer_result_func.result create mode 100644 mysql-test/r/sql_log_bin_basic.result create mode 100644 mysql-test/r/sql_log_off_basic.result create mode 100644 mysql-test/r/sql_log_off_func.result create mode 100644 mysql-test/r/sql_low_priority_updates_basic.result create mode 100644 mysql-test/r/sql_low_priority_updates_func.result create mode 100644 mysql-test/r/sql_max_join_size_func.result create mode 100644 mysql-test/r/sql_mode_basic.result create mode 100644 mysql-test/r/sql_mode_func.result create mode 100644 mysql-test/r/sql_notes_basic.result create mode 100644 mysql-test/r/sql_notes_func.result create mode 100644 mysql-test/r/sql_quote_show_create_basic.result create mode 100644 mysql-test/r/sql_quote_show_create_func.result create mode 100644 mysql-test/r/sql_safe_updates_basic.result create mode 100644 mysql-test/r/sql_safe_updates_func.result create mode 100644 mysql-test/r/sql_select_limit_func.result create mode 100644 mysql-test/r/sql_slave_skip_counter_basic.result create mode 100644 mysql-test/r/sql_warnings_basic.result create mode 100644 mysql-test/r/sql_warnings_func.result create mode 100644 mysql-test/r/ssl_ca_basic.result create mode 100644 mysql-test/r/ssl_capath_basic.result create mode 100644 mysql-test/r/ssl_cert_basic.result create mode 100644 mysql-test/r/ssl_cipher_basic.result create mode 100644 mysql-test/r/ssl_key_basic.result create mode 100644 mysql-test/r/storage_engine_basic.result create mode 100644 mysql-test/r/sync_frm_basic.result create mode 100644 mysql-test/r/system_time_zone_basic.result create mode 100644 mysql-test/r/table_definition_cache_basic.result create mode 100644 mysql-test/r/table_lock_wait_timeout_basic.result create mode 100644 mysql-test/r/table_open_cache_basic.result create mode 100644 mysql-test/r/thread_cache_size_func.result create mode 100644 mysql-test/r/thread_handling_basic.result create mode 100644 mysql-test/r/time_zone_basic.result create mode 100644 mysql-test/r/time_zone_func.result create mode 100644 mysql-test/r/timed_mutexes_basic.result create mode 100644 mysql-test/r/timestamp_func.result create mode 100644 mysql-test/r/tmpdir_basic.result create mode 100644 mysql-test/r/tx_isolation_basic.result create mode 100644 mysql-test/r/tx_isolation_func.result create mode 100644 mysql-test/r/unique_checks_basic.result create mode 100644 mysql-test/r/updatable_views_with_limit_basic.result create mode 100644 mysql-test/r/updatable_views_with_limit_func.result create mode 100644 mysql-test/r/version_basic.result create mode 100644 mysql-test/r/version_comment_basic.result create mode 100644 mysql-test/r/version_compile_machine_basic.result create mode 100644 mysql-test/r/version_compile_os_basic.result create mode 100644 mysql-test/r/wait_timeout_func.result create mode 100644 mysql-test/r/warning_count_basic.result create mode 100644 mysql-test/std_data/charset_utf8.txt create mode 100644 mysql-test/std_data/numbers.txt create mode 100644 mysql-test/t/auto_commit_basic.test create mode 100644 mysql-test/t/auto_increment_increment_basic.test create mode 100644 mysql-test/t/auto_increment_increment_func.test create mode 100644 mysql-test/t/auto_increment_offset_basic.test create mode 100644 mysql-test/t/auto_increment_offset_func.test create mode 100644 mysql-test/t/autocommit_func-master.opt create mode 100644 mysql-test/t/autocommit_func.test create mode 100644 mysql-test/t/automatic_sp_privileges_basic.test create mode 100644 mysql-test/t/automatic_sp_privileges_func.test create mode 100644 mysql-test/t/basedir_basic.test create mode 100644 mysql-test/t/big_tables_basic.test create mode 100644 mysql-test/t/binlog_format_basic.test create mode 100644 mysql-test/t/character_set_client_basic.test create mode 100644 mysql-test/t/character_set_client_func.test create mode 100644 mysql-test/t/character_set_connection_basic.test create mode 100644 mysql-test/t/character_set_connection_func.test create mode 100644 mysql-test/t/character_set_database_basic.test create mode 100644 mysql-test/t/character_set_database_func.test create mode 100644 mysql-test/t/character_set_filesystem_basic.test create mode 100644 mysql-test/t/character_set_filesystem_func-master.opt create mode 100644 mysql-test/t/character_set_results_basic.test create mode 100644 mysql-test/t/character_set_results_func.test create mode 100644 mysql-test/t/character_set_server_basic.test create mode 100644 mysql-test/t/character_set_server_func.test create mode 100644 mysql-test/t/character_set_system_basic.test create mode 100644 mysql-test/t/collation_connection_basic.test create mode 100644 mysql-test/t/collation_connection_func.test create mode 100644 mysql-test/t/collation_database_basic.test create mode 100644 mysql-test/t/collation_database_func.test create mode 100644 mysql-test/t/collation_server_basic.test create mode 100644 mysql-test/t/collation_server_func.test create mode 100644 mysql-test/t/completion_type_basic.test create mode 100644 mysql-test/t/completion_type_func-master.opt create mode 100644 mysql-test/t/completion_type_func.test create mode 100644 mysql-test/t/concurrent_insert_basic.test create mode 100644 mysql-test/t/concurrent_insert_func.test create mode 100644 mysql-test/t/connect_timeout_basic.test create mode 100644 mysql-test/t/datadir_basic.test create mode 100644 mysql-test/t/default_week_format_basic.test create mode 100644 mysql-test/t/default_week_format_func.test create mode 100644 mysql-test/t/delay_key_write_basic.test create mode 100644 mysql-test/t/delay_key_write_func-master.opt create mode 100644 mysql-test/t/delay_key_write_func.test create mode 100644 mysql-test/t/delayed_insert_limit_func.test create mode 100644 mysql-test/t/delayed_insert_timeout_basic.test create mode 100644 mysql-test/t/div_precision_increment_basic.test create mode 100644 mysql-test/t/div_precision_increment_func.test create mode 100644 mysql-test/t/engine_condition_pushdown_basic.test create mode 100644 mysql-test/t/error_count_basic.test create mode 100644 mysql-test/t/event_scheduler_basic.test create mode 100644 mysql-test/t/event_scheduler_func.test create mode 100644 mysql-test/t/expire_logs_days_basic.test create mode 100644 mysql-test/t/flush_basic.test create mode 100644 mysql-test/t/foreign_key_checks_basic.test create mode 100644 mysql-test/t/foreign_key_checks_func.test create mode 100644 mysql-test/t/ft_boolean_syntax_basic.test create mode 100644 mysql-test/t/ft_boolean_syntax_func.test create mode 100644 mysql-test/t/general_log_basic.test create mode 100644 mysql-test/t/general_log_file_basic-master.opt create mode 100644 mysql-test/t/general_log_file_basic.test create mode 100644 mysql-test/t/general_log_file_func-master.opt create mode 100644 mysql-test/t/general_log_file_func.test create mode 100644 mysql-test/t/general_log_func.test create mode 100644 mysql-test/t/group_concat_max_len_basic.test create mode 100644 mysql-test/t/group_concat_max_len_func.test create mode 100644 mysql-test/t/have_compress_basic.test create mode 100644 mysql-test/t/have_crypt_basic.test create mode 100644 mysql-test/t/have_csv_basic.test create mode 100644 mysql-test/t/have_dynamic_loading_basic.test create mode 100644 mysql-test/t/have_geometry_basic.test create mode 100644 mysql-test/t/have_innodb_basic.test create mode 100644 mysql-test/t/have_ndbcluster_basic.test create mode 100644 mysql-test/t/have_openssl_basic.test create mode 100644 mysql-test/t/have_partitioning_basic.test create mode 100644 mysql-test/t/have_query_cache_basic.test create mode 100644 mysql-test/t/have_rtree_keys_basic.test create mode 100644 mysql-test/t/have_ssl_basic.test create mode 100644 mysql-test/t/have_symlink_basic.test create mode 100644 mysql-test/t/hostname_basic.test create mode 100644 mysql-test/t/identity_basic.test create mode 100644 mysql-test/t/identity_func-master.opt create mode 100644 mysql-test/t/identity_func.test create mode 100644 mysql-test/t/init_connect_basic.test create mode 100644 mysql-test/t/init_slave_basic.test create mode 100644 mysql-test/t/innodb_additional_mem_pool_size_basic.test create mode 100644 mysql-test/t/innodb_autoextend_increment_basic.test create mode 100644 mysql-test/t/innodb_autoinc_lock_mode_basic.test create mode 100644 mysql-test/t/innodb_autoinc_lock_mode_func-master.opt create mode 100644 mysql-test/t/innodb_autoinc_lock_mode_func.test create mode 100644 mysql-test/t/innodb_buffer_pool_size_basic.test create mode 100644 mysql-test/t/innodb_checksums_basic.test create mode 100644 mysql-test/t/innodb_commit_concurrency_basic.test create mode 100644 mysql-test/t/innodb_data_file_path_basic.test create mode 100644 mysql-test/t/innodb_data_home_dir_basic.test create mode 100644 mysql-test/t/innodb_doublewrite_basic.test create mode 100644 mysql-test/t/innodb_fast_shutdown_basic.test create mode 100644 mysql-test/t/innodb_file_io_threads_basic.test create mode 100644 mysql-test/t/innodb_file_per_table_basic.test create mode 100644 mysql-test/t/innodb_flush_log_at_trx_commit_basic.test create mode 100644 mysql-test/t/innodb_flush_method_basic.test create mode 100644 mysql-test/t/innodb_force_recovery_basic.test create mode 100644 mysql-test/t/innodb_lock_wait_timeout_basic.test create mode 100644 mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test create mode 100644 mysql-test/t/innodb_log_buffer_size_basic.test create mode 100644 mysql-test/t/innodb_log_file_size_basic.test create mode 100644 mysql-test/t/innodb_log_files_in_group_basic.test create mode 100644 mysql-test/t/innodb_log_group_home_dir_basic.test create mode 100644 mysql-test/t/innodb_max_dirty_pages_pct_basic.test create mode 100644 mysql-test/t/innodb_max_dirty_pages_pct_func.test create mode 100644 mysql-test/t/innodb_mirrored_log_groups_basic.test create mode 100644 mysql-test/t/innodb_open_files_basic.test create mode 100644 mysql-test/t/innodb_rollback_on_timeout_basic.test create mode 100644 mysql-test/t/innodb_support_xa_basic.test create mode 100644 mysql-test/t/innodb_support_xa_func.test create mode 100644 mysql-test/t/innodb_table_locks_basic.test create mode 100644 mysql-test/t/innodb_table_locks_func.test create mode 100644 mysql-test/t/innodb_thread_concurrency_basic.test create mode 100644 mysql-test/t/insert_id_basic.test create mode 100644 mysql-test/t/insert_id_func.test create mode 100644 mysql-test/t/interactive_timeout_basic.test create mode 100644 mysql-test/t/interactive_timeout_func.test create mode 100644 mysql-test/t/keep_files_on_create_basic.test create mode 100644 mysql-test/t/key_buffer_size_func.test create mode 100644 mysql-test/t/last_insert_id_func-master.opt create mode 100644 mysql-test/t/last_insert_id_func.test create mode 100644 mysql-test/t/lc_time_names_basic.test create mode 100644 mysql-test/t/lc_time_names_func.test create mode 100644 mysql-test/t/license_basic.test create mode 100644 mysql-test/t/local_infile_basic.test create mode 100644 mysql-test/t/local_infile_func.test create mode 100644 mysql-test/t/log_basic.test create mode 100644 mysql-test/t/log_bin_trust_function_creators_basic.test create mode 100644 mysql-test/t/log_bin_trust_function_creators_func-master.opt create mode 100644 mysql-test/t/log_bin_trust_function_creators_func.test create mode 100644 mysql-test/t/log_bin_trust_routine_creators_basic.test create mode 100644 mysql-test/t/log_output_basic.test create mode 100644 mysql-test/t/log_output_func.test create mode 100644 mysql-test/t/log_queries_not_using_indexes_basic.test create mode 100644 mysql-test/t/long_query_time_basic.test create mode 100644 mysql-test/t/low_priority_updates_basic.test create mode 100644 mysql-test/t/max_allowed_packet_basic.test create mode 100644 mysql-test/t/max_allowed_packet_func.test create mode 100644 mysql-test/t/max_binlog_cache_size_func-master.opt create mode 100644 mysql-test/t/max_binlog_size_basic.test create mode 100644 mysql-test/t/max_connections_basic.test create mode 100644 mysql-test/t/max_delayed_threads_basic.test create mode 100644 mysql-test/t/max_error_count_basic.test create mode 100644 mysql-test/t/max_insert_delayed_threads_basic.test create mode 100644 mysql-test/t/max_join_size_func.test create mode 100644 mysql-test/t/max_length_for_sort_data_basic.test create mode 100644 mysql-test/t/max_prepared_stmt_count_basic.test create mode 100644 mysql-test/t/max_prepared_stmt_count_func.test create mode 100644 mysql-test/t/max_relay_log_size_basic.test create mode 100644 mysql-test/t/max_seeks_for_key_func.test create mode 100644 mysql-test/t/max_sort_length_basic.test create mode 100644 mysql-test/t/max_sort_length_func.test create mode 100644 mysql-test/t/max_sp_recursion_depth_basic.test create mode 100644 mysql-test/t/max_sp_recursion_depth_func.test create mode 100644 mysql-test/t/max_user_connections_basic.test create mode 100644 mysql-test/t/max_user_connections_func.test create mode 100644 mysql-test/t/myisam_data_pointer_size_basic.test create mode 100644 mysql-test/t/myisam_data_pointer_size_func.test create mode 100644 mysql-test/t/myisam_stats_method_basic.test create mode 100644 mysql-test/t/myisam_stats_method_func.test create mode 100644 mysql-test/t/myisam_use_mmap_basic.test create mode 100644 mysql-test/t/ndb_log_update_as_write_basic.test create mode 100644 mysql-test/t/ndb_log_updated_only_basic.test create mode 100644 mysql-test/t/net_buffer_length_basic.test create mode 100644 mysql-test/t/net_read_timeout_basic.test create mode 100644 mysql-test/t/net_write_timeout_basic.test create mode 100644 mysql-test/t/new_basic.test create mode 100644 mysql-test/t/old_passwords_basic.test create mode 100644 mysql-test/t/old_passwords_func.test create mode 100644 mysql-test/t/optimizer_prune_level_basic.test create mode 100644 mysql-test/t/optimizer_search_depth_basic.test create mode 100644 mysql-test/t/preload_buffer_size_basic.test create mode 100644 mysql-test/t/query_cache_limit_func.test create mode 100644 mysql-test/t/query_cache_type_basic.test create mode 100644 mysql-test/t/query_cache_type_func.test create mode 100644 mysql-test/t/query_cache_wlock_invalidate_basic.test create mode 100644 mysql-test/t/query_cache_wlock_invalidate_func.test create mode 100644 mysql-test/t/query_prealloc_size_func.test create mode 100644 mysql-test/t/read_buffer_size_basic.test create mode 100644 mysql-test/t/read_only_basic.test create mode 100644 mysql-test/t/read_only_func.test create mode 100644 mysql-test/t/read_rnd_buffer_size_basic.test create mode 100644 mysql-test/t/relay_log_purge_basic.test create mode 100644 mysql-test/t/rpl_init_slave_func-slave.opt create mode 100644 mysql-test/t/rpl_init_slave_func.test create mode 100644 mysql-test/t/rpl_max_binlog_size_func-master.opt create mode 100644 mysql-test/t/rpl_max_binlog_size_func.test create mode 100644 mysql-test/t/secure_auth_basic.test create mode 100644 mysql-test/t/secure_auth_func-master.opt create mode 100644 mysql-test/t/secure_auth_func.test create mode 100644 mysql-test/t/slave_allow_batching_basic.test create mode 100644 mysql-test/t/slave_compressed_protocol_basic.test create mode 100644 mysql-test/t/slave_exec_mode_basic.test create mode 100644 mysql-test/t/slave_net_timeout_basic.test create mode 100644 mysql-test/t/slow_launch_time_basic.test create mode 100644 mysql-test/t/slow_launch_time_func.test create mode 100644 mysql-test/t/slow_query_log_basic.test create mode 100644 mysql-test/t/slow_query_log_file_basic-master.opt create mode 100644 mysql-test/t/slow_query_log_file_basic.test create mode 100644 mysql-test/t/slow_query_log_file_func-master.opt create mode 100644 mysql-test/t/slow_query_log_file_func.test create mode 100644 mysql-test/t/slow_query_log_func.test create mode 100644 mysql-test/t/sql_auto_is_null_basic.test create mode 100644 mysql-test/t/sql_big_selects_basic.test create mode 100644 mysql-test/t/sql_big_selects_func.test create mode 100644 mysql-test/t/sql_big_tables_basic.test create mode 100644 mysql-test/t/sql_big_tables_func.test create mode 100644 mysql-test/t/sql_buffer_result_basic.test create mode 100644 mysql-test/t/sql_buffer_result_func.test create mode 100644 mysql-test/t/sql_log_bin_basic.test create mode 100644 mysql-test/t/sql_log_off_basic.test create mode 100644 mysql-test/t/sql_log_off_func.test create mode 100644 mysql-test/t/sql_low_priority_updates_basic.test create mode 100644 mysql-test/t/sql_low_priority_updates_func.test create mode 100644 mysql-test/t/sql_max_join_size_func.test create mode 100644 mysql-test/t/sql_mode_basic.test create mode 100644 mysql-test/t/sql_mode_func.test create mode 100644 mysql-test/t/sql_notes_basic.test create mode 100644 mysql-test/t/sql_notes_func.test create mode 100644 mysql-test/t/sql_quote_show_create_basic.test create mode 100644 mysql-test/t/sql_quote_show_create_func.test create mode 100644 mysql-test/t/sql_safe_updates_basic.test create mode 100644 mysql-test/t/sql_safe_updates_func.test create mode 100644 mysql-test/t/sql_select_limit_func.test create mode 100644 mysql-test/t/sql_slave_skip_counter_basic.test create mode 100644 mysql-test/t/sql_warnings_basic.test create mode 100644 mysql-test/t/sql_warnings_func.test create mode 100644 mysql-test/t/ssl_ca_basic.test create mode 100644 mysql-test/t/ssl_capath_basic.test create mode 100644 mysql-test/t/ssl_cert_basic.test create mode 100644 mysql-test/t/ssl_cipher_basic.test create mode 100644 mysql-test/t/ssl_key_basic.test create mode 100644 mysql-test/t/storage_engine_basic-master.opt create mode 100644 mysql-test/t/storage_engine_basic.test create mode 100644 mysql-test/t/sync_frm_basic.test create mode 100644 mysql-test/t/system_time_zone_basic.test create mode 100644 mysql-test/t/table_definition_cache_basic.test create mode 100644 mysql-test/t/table_lock_wait_timeout_basic.test create mode 100644 mysql-test/t/table_open_cache_basic.test create mode 100644 mysql-test/t/thread_cache_size_func.test create mode 100644 mysql-test/t/thread_handling_basic.test create mode 100644 mysql-test/t/time_zone_basic.test create mode 100644 mysql-test/t/time_zone_func.test create mode 100644 mysql-test/t/timed_mutexes_basic.test create mode 100644 mysql-test/t/timestamp_func.test create mode 100644 mysql-test/t/tmpdir_basic.test create mode 100644 mysql-test/t/tx_isolation_basic.test create mode 100644 mysql-test/t/tx_isolation_func-master.opt create mode 100644 mysql-test/t/tx_isolation_func.test create mode 100644 mysql-test/t/unique_checks_basic.test create mode 100644 mysql-test/t/updatable_views_with_limit_basic.test create mode 100644 mysql-test/t/updatable_views_with_limit_func.test create mode 100644 mysql-test/t/version_basic.test create mode 100644 mysql-test/t/version_comment_basic.test create mode 100644 mysql-test/t/version_compile_machine_basic.test create mode 100644 mysql-test/t/version_compile_os_basic.test create mode 100644 mysql-test/t/wait_timeout_func.test create mode 100644 mysql-test/t/warning_count_basic.test diff --git a/.bzrignore b/.bzrignore index 507f04363f9..74f656b7e53 100644 --- a/.bzrignore +++ b/.bzrignore @@ -3020,3 +3020,6 @@ mysql-test/.DS_Store libmysqld/sql_profile.cc mysql-test/suite/funcs_1.tar.zip mysql-test/reg.log +mysql-test/linux_sys_vars.inc +mysql-test/load_sysvars.inc +mysql-test/windows_sys_vars.inc diff --git a/mysql-test/include/charset_basic.inc b/mysql-test/include/charset_basic.inc new file mode 100644 index 00000000000..ebe3b8633cb --- /dev/null +++ b/mysql-test/include/charset_basic.inc @@ -0,0 +1,80 @@ +# +# This auxiliary script is used by character set test cases. +# + + + +eval SET $charset_variable = big5; +eval SELECT $charset_variable; +eval SET $charset_variable = dec8; +eval SELECT $charset_variable; +eval SET $charset_variable = cp850; +eval SELECT $charset_variable; +eval SET $charset_variable = hp8; +eval SELECT $charset_variable; +eval SET $charset_variable = koi8r; +eval SELECT $charset_variable; +eval SET $charset_variable = latin1; +eval SELECT $charset_variable; +eval SET $charset_variable = latin2; +eval SELECT $charset_variable; +eval SET $charset_variable = swe7; +eval SELECT $charset_variable; +eval SET $charset_variable = ascii; +eval SELECT $charset_variable; +eval SET $charset_variable = ujis; +eval SELECT $charset_variable; +eval SET $charset_variable = sjis; +eval SELECT $charset_variable; +eval SET $charset_variable = hebrew; +eval SELECT $charset_variable; +eval SET $charset_variable = tis620; +eval SELECT $charset_variable; +eval SET $charset_variable = euckr; +eval SELECT $charset_variable; +eval SET $charset_variable = koi8u; +eval SELECT $charset_variable; +eval SET $charset_variable = gb2312; +eval SELECT $charset_variable; +eval SET $charset_variable = greek; +eval SELECT $charset_variable; +eval SET $charset_variable = cp1250; +eval SELECT $charset_variable; +eval SET $charset_variable = gbk; +eval SELECT $charset_variable; +eval SET $charset_variable = latin5; +eval SELECT $charset_variable; +eval SET $charset_variable = armscii8; +eval SELECT $charset_variable; +eval SET $charset_variable = utf8; +eval SELECT $charset_variable; +# Error with Linux +--error 0,ER_WRONG_VALUE_FOR_VAR +eval SET $charset_variable = ucs2; +eval SELECT $charset_variable; +eval SET $charset_variable = cp866; +eval SELECT $charset_variable; +eval SET $charset_variable = keybcs2; +eval SELECT $charset_variable; +eval SET $charset_variable = macce; +eval SELECT $charset_variable; +eval SET $charset_variable = macroman; +eval SELECT $charset_variable; +eval SET $charset_variable = cp852; +eval SELECT $charset_variable; +eval SET $charset_variable = latin7; +eval SELECT $charset_variable; +eval SET $charset_variable = cp1251; +eval SELECT $charset_variable; +eval SET $charset_variable = cp1256; +eval SELECT $charset_variable; +eval SET $charset_variable = cp1257; +eval SELECT $charset_variable; +eval SET $charset_variable = binary; +eval SELECT $charset_variable; +eval SET $charset_variable = geostd8; +eval SELECT $charset_variable; +eval SET $charset_variable = cp932; +eval SELECT $charset_variable; +eval SET $charset_variable = eucjpms; +eval SELECT $charset_variable; diff --git a/mysql-test/include/collation_basic.inc b/mysql-test/include/collation_basic.inc new file mode 100644 index 00000000000..5e983ad3163 --- /dev/null +++ b/mysql-test/include/collation_basic.inc @@ -0,0 +1,258 @@ +# +# This auxiliary file is used by collation variables +# + +eval SET $collation_variable = big5_chinese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = big5_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = dec8_swedish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = dec8_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp850_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp850_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = hp8_english_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = hp8_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = koi8r_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = koi8r_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_german1_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_swedish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_danish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_german2_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_general_cs; +eval SELECT $collation_variable; +eval SET $collation_variable = latin1_spanish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin2_czech_cs; +eval SELECT $collation_variable; +eval SET $collation_variable = latin2_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin2_hungarian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin2_croatian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin2_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = swe7_swedish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = swe7_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = ascii_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ascii_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = ujis_japanese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ujis_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = sjis_japanese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = sjis_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = hebrew_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = hebrew_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = tis620_thai_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = tis620_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = euckr_korean_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = euckr_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = koi8u_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = koi8u_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = gb2312_chinese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = gb2312_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = greek_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = greek_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1250_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1250_czech_cs; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1250_croatian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1250_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1250_polish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = gbk_chinese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = gbk_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = latin5_turkish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin5_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = armscii8_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = armscii8_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_unicode_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_icelandic_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_latvian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_romanian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_slovenian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_polish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_estonian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_spanish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_swedish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_turkish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_czech_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_danish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_lithuanian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_slovak_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_spanish2_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_roman_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_persian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_esperanto_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = utf8_hungarian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_unicode_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_icelandic_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_latvian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_romanian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_slovenian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_polish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_estonian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_spanish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_swedish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_turkish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_czech_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_danish_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_lithuanian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_slovak_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_spanish2_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_roman_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_persian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_esperanto_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = ucs2_hungarian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp866_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp866_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = keybcs2_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = keybcs2_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = macce_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = macce_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = macroman_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = macroman_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp852_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp852_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = latin7_estonian_cs; +eval SELECT $collation_variable; +eval SET $collation_variable = latin7_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = latin7_general_cs; +eval SELECT $collation_variable; +eval SET $collation_variable = latin7_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1251_bulgarian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1251_ukrainian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1251_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1251_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1251_general_cs; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1256_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1256_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1257_lithuanian_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1257_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp1257_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = binary; +eval SELECT $collation_variable; +eval SET $collation_variable = geostd8_general_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = geostd8_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = cp932_japanese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = cp932_bin; +eval SELECT $collation_variable; +eval SET $collation_variable = eucjpms_japanese_ci; +eval SELECT $collation_variable; +eval SET $collation_variable = eucjpms_bin; +eval SELECT $collation_variable; diff --git a/mysql-test/include/linux_sys_vars.inc b/mysql-test/include/linux_sys_vars.inc new file mode 100644 index 00000000000..4401a1e057a --- /dev/null +++ b/mysql-test/include/linux_sys_vars.inc @@ -0,0 +1,34 @@ +# +# This file contains default,min and max values for sys variables for redhat linux +# + +--disable_query_log + +SET @default_flush_time = 0; +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; +#SET @max_join_buffer_size = 4294967295; + +SET @default_max_join_size = 4294967295; +SET @min_max_join_size = 1; +SET @max_max_join_size = 4294967295; + +SET @default_sql_max_join_size = 4294967295; +SET @min_sql_max_join_size = 1; +SET @max_sql_max_join_size = 4294967295; + +SET @default_sql_select_limit = 4294967295; +SET @min_sql_select_limit = 0; +SET @max_sql_select_limit = 4294967295; + +SET @default_wait_timeout= 28800; +SET @min_wait_timeout= 1; +SET @max_wait_timeout= 31536000; + +--enable_query_log diff --git a/mysql-test/include/load_sysvars.inc b/mysql-test/include/load_sysvars.inc new file mode 100644 index 00000000000..84e00d74edb --- /dev/null +++ b/mysql-test/include/load_sysvars.inc @@ -0,0 +1,14 @@ +# +# This script is included by every test to include system dependant variables' +# default, minimum and maximum values +# + + +if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows")`) +{ + --source include/windows_sys_vars.inc +} +if (`select convert(@@version_compile_os using latin1) IN ("suse-linux-gnu","redhat-linux-gnu","pc-solaris2.10")`) +{ + --source include/linux_sys_vars.inc +} diff --git a/mysql-test/include/windows_sys_vars.inc b/mysql-test/include/windows_sys_vars.inc new file mode 100644 index 00000000000..90ff86fefd1 --- /dev/null +++ b/mysql-test/include/windows_sys_vars.inc @@ -0,0 +1,34 @@ +# +# This file contains default,min and max values for sys variables for windows +# + +--disable_query_log + +SET @default_flush_time = 1800; +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; +#SET @max_join_buffer_size = 4294967295; + +SET @default_max_join_size = 4294967295; +SET @min_max_join_size = 1; +SET @max_max_join_size = 4294967295; + +SET @default_sql_max_join_size = 4294967295; +SET @min_sql_max_join_size = 1; +SET @max_sql_max_join_size = 4294967295; + +SET @default_sql_select_limit = 4294967295; +SET @min_sql_select_limit = 0; +SET @max_sql_select_limit = 4294967295; + +let $default_wait_timeout = 28800; +let $min_wait_timeout = 1; +let $max_wait_timeout = 2147483; + +--enable_query_log diff --git a/mysql-test/r/auto_commit_basic.result b/mysql-test/r/auto_commit_basic.result new file mode 100644 index 00000000000..c3643aaa1db --- /dev/null +++ b/mysql-test/r/auto_commit_basic.result @@ -0,0 +1,117 @@ +SET @start_value = @@autocommit; +SELECT @start_value; +@start_value +1 +'#--------------------FN_DYNVARS_003_01------------------------#' +SET @@autocommit = 0; +SET @@autocommit = DEFAULT; +SELECT @@autocommit; +@@autocommit +0 +'Bug: variable DEFAULT value not working and is not throwing error' +'#---------------------FN_DYNVARS_003_02-------------------------#' +SET @@autocommit = @start_value; +SELECT @@autocommit = 1; +@@autocommit = 1 +1 +'#--------------------FN_DYNVARS_003_03------------------------#' +SET @@autocommit = 0; +SELECT @@autocommit; +@@autocommit +0 +SET @@autocommit = 1; +SELECT @@autocommit; +@@autocommit +1 +'#--------------------FN_DYNVARS_003_04-------------------------#' +SET @@autocommit = 2; +ERROR 42000: Variable 'autocommit' can't be set to the value of '2' +SET @@autocommit = -1; +ERROR 42000: Variable 'autocommit' can't be set to the value of '-1' +SET @@autocommit = TRUEF; +ERROR 42000: Variable 'autocommit' can't be set to the value of 'TRUEF' +SET @@autocommit = TRUE_F; +ERROR 42000: Variable 'autocommit' can't be set to the value of 'TRUE_F' +SET @@autocommit = FALSE0; +ERROR 42000: Variable 'autocommit' can't be set to the value of 'FALSE0' +SET @@autocommit = OON; +ERROR 42000: Variable 'autocommit' can't be set to the value of 'OON' +SET @@autocommit = ONN; +ERROR 42000: Variable 'autocommit' can't be set to the value of 'ONN' +SET @@autocommit = OOFF; +ERROR 42000: Variable 'autocommit' can't be set to the value of 'OOFF' +SET @@autocommit = 0FF; +ERROR 42000: Variable 'autocommit' can't be set to the value of '0FF' +SET @@autocommit = ' '; +ERROR 42000: Variable 'autocommit' can't be set to the value of ' ' +SET @@autocommit = " "; +ERROR 42000: Variable 'autocommit' can't be set to the value of ' ' +SET @@autocommit = ''; +ERROR 42000: Variable 'autocommit' can't be set to the value of '' +'#-------------------FN_DYNVARS_003_05----------------------------#' +SET @@global.autocommit = 0; +ERROR HY000: Variable 'autocommit' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.autocommit; +ERROR HY000: Variable 'autocommit' is a SESSION variable +'#----------------------FN_DYNVARS_003_06------------------------#' +SELECT @@session.autocommit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='autocommit'; +@@session.autocommit = VARIABLE_VALUE +0 +Bug # 34839: Values in variable and information_schema do not match for autocommit +'#----------------------FN_DYNVARS_003_07------------------------#' +SET @@autocommit = 1; +SELECT @@autocommit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='autocommit'; +@@autocommit = VARIABLE_VALUE +0 +'#---------------------FN_DYNVARS_003_08-------------------------#' +SET @@autocommit = OFF; +SELECT @@autocommit; +@@autocommit +0 +SET @@autocommit = ON; +SELECT @@autocommit; +@@autocommit +1 +'#---------------------FN_DYNVARS_003_09----------------------#' +SET @@autocommit = TRUE; +SELECT @@autocommit; +@@autocommit +1 +SET @@autocommit = FALSE; +SELECT @@autocommit; +@@autocommit +0 +'#---------------------FN_DYNVARS_003_10----------------------#' +SET @@autocommit = 0; +SELECT @@autocommit = @@local.autocommit; +@@autocommit = @@local.autocommit +1 +SELECT @@local.autocommit = @@session.autocommit; +@@local.autocommit = @@session.autocommit +1 +SET @@autocommit = 1; +SELECT @@autocommit = @@local.autocommit; +@@autocommit = @@local.autocommit +1 +SELECT @@session.autocommit = @@autocommit; +@@session.autocommit = @@autocommit +1 +'#---------------------FN_DYNVARS_003_11----------------------#' +SET autocommit = 1; +SELECT @@autocommit; +@@autocommit +1 +SELECT local.autocommit; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.autocommit; +ERROR 42S02: Unknown table 'session' in field list +SELECT autocommit = @@session.autocommit; +ERROR 42S22: Unknown column 'autocommit' in 'field list' +SET @@autocommit = @start_value; +SELECT @@autocommit; +@@autocommit +1 diff --git a/mysql-test/r/auto_increment_increment_basic.result b/mysql-test/r/auto_increment_increment_basic.result new file mode 100644 index 00000000000..c453d2322cf --- /dev/null +++ b/mysql-test/r/auto_increment_increment_basic.result @@ -0,0 +1,165 @@ +SET @start_global_value = @@global.auto_increment_increment; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.auto_increment_increment; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_001_01-------------------------#' +SET @@global.auto_increment_increment = 100; +SET @@global.auto_increment_increment = DEFAULT; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +SET @@session.auto_increment_increment = 200; +SET @@session.auto_increment_increment = DEFAULT; +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +1 +'#--------------------FN_DYNVARS_001_02-------------------------#' +SET @@global.auto_increment_increment = DEFAULT; +SELECT @@global.auto_increment_increment = 1; +@@global.auto_increment_increment = 1 +1 +SET @@session.auto_increment_increment = DEFAULT; +SELECT @@session.auto_increment_increment = 1; +@@session.auto_increment_increment = 1 +1 +'#--------------------FN_DYNVARS_001_03-------------------------#' +SET @@global.auto_increment_increment = 1; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +SET @@global.auto_increment_increment = 60020; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +60020 +SET @@global.auto_increment_increment = 65535; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +65535 +'#--------------------FN_DYNVARS_001_04-------------------------#' +SET @@session.auto_increment_increment = 1; +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +1 +SET @@session.auto_increment_increment = 50050; +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +50050 +SET @@session.auto_increment_increment = 65535; +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +65535 +'#------------------FN_DYNVARS_001_05-----------------------#' +SET @@global.auto_increment_increment = 0; +Warnings: +Warning 1292 Truncated incorrect auto-increment-increment value: '0' +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +SET @@global.auto_increment_increment = -1024; +Warnings: +Warning 1292 Truncated incorrect auto-increment-increment value: '0' +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +SET @@global.auto_increment_increment = 65536; +Warnings: +Warning 1292 Truncated incorrect auto_increment_increment value: '65536' +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +65535 +SET @@global.auto_increment_increment = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +65535 +SET @@global.auto_increment_increment = test; +ERROR 42000: Incorrect argument type to variable 'auto_increment_increment' +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +65535 +SET @@session.auto_increment_increment = 0; +Warnings: +Warning 1292 Truncated incorrect auto-increment-increment value: '0' +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +1 +SET @@session.auto_increment_increment = -2; +Warnings: +Warning 1292 Truncated incorrect auto-increment-increment value: '0' +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +1 +SET @@session.auto_increment_increment = 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.auto_increment_increment = 65550; +Warnings: +Warning 1292 Truncated incorrect auto_increment_increment value: '65550' +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +65535 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.auto_increment_increment = test; +ERROR 42000: Incorrect argument type to variable 'auto_increment_increment' +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +65535 +'#------------------FN_DYNVARS_001_06-----------------------#' +SELECT @@global.auto_increment_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='auto_increment_increment'; +@@global.auto_increment_increment = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_001_07-----------------------#' +SELECT @@session.auto_increment_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='auto_increment_increment'; +@@session.auto_increment_increment = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_001_08-----------------------#' +SET @@global.auto_increment_increment = TRUE; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +SET @@global.auto_increment_increment = FALSE; +Warnings: +Warning 1292 Truncated incorrect auto-increment-increment value: '0' +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.auto_increment_increment = 10; +SET @@session.auto_increment_increment = 11; +SELECT @@auto_increment_increment = @@global.auto_increment_increment; +@@auto_increment_increment = @@global.auto_increment_increment +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@auto_increment_increment = 100; +SELECT @@auto_increment_increment = @@local.auto_increment_increment; +@@auto_increment_increment = @@local.auto_increment_increment +1 +SELECT @@local.auto_increment_increment = @@session.auto_increment_increment; +@@local.auto_increment_increment = @@session.auto_increment_increment +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET auto_increment_increment = 1; +SELECT @@auto_increment_increment; +@@auto_increment_increment +1 +SELECT local.auto_increment_increment; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.auto_increment_increment; +ERROR 42S02: Unknown table 'session' in field list +SELECT auto_increment_increment = @@session.auto_increment_increment; +ERROR 42S22: Unknown column 'auto_increment_increment' in 'field list' +SET @@global.auto_increment_increment = @start_global_value; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +1 +SET @@session.auto_increment_increment = @start_session_value; +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +1 diff --git a/mysql-test/r/auto_increment_increment_func.result b/mysql-test/r/auto_increment_increment_func.result new file mode 100644 index 00000000000..f0f1ada6d95 --- /dev/null +++ b/mysql-test/r/auto_increment_increment_func.result @@ -0,0 +1,201 @@ +SET @global_auto_increment_increment = @@global.auto_increment_increment; +SET @session_auto_increment_increment = @@session.auto_increment_increment; +SET @global_auto_increment_offset = @@global.auto_increment_offset; +SET @session_auto_increment_offset = @@session.auto_increment_offset; +drop table if exists t1; +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_001_01-------------------------#' +## Setting initial value of auto_increment_increment to 5 ## +SET @@auto_increment_increment = 5; +'#--------------------FN_DYNVARS_001_02-------------------------#' +## Inserting first record in table to check behavior of the variable ## +INSERT into t1(name) values('Record_1'); +SELECT * from t1; +id name +1 Record_1 +## Changing value of variable to 10 ## +SET @@global.auto_increment_increment = 10; +## Inserting record and verifying value of column id ## +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +## Test behavior of variable after assigning some larger value to it ## +SELECT @@auto_increment_increment; +@@auto_increment_increment +5 +SET @@auto_increment_increment = 100; +INSERT into t1(name) values('Record_5'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +'#--------------------FN_DYNVARS_001_03-------------------------#' +## Creating new connection test_con1 ## +## Value of session & global vairable here should be 10 ## +SELECT @@global.auto_increment_increment = 10; +@@global.auto_increment_increment = 10 +1 +SELECT @@session.auto_increment_increment = 10; +@@session.auto_increment_increment = 10 +1 +## Setting global value of variable and inserting data in table ## +SET @@global.auto_increment_increment = 20; +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +20 +INSERT into t1(name) values('Record_6'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +## Setting session value of variable and inserting data in table ## +SET @@session.auto_increment_increment = 2; +SELECT @@session.auto_increment_increment; +@@session.auto_increment_increment +2 +INSERT into t1(name) values('Record_8'); +INSERT into t1(name) values('Record_9'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +113 Record_8 +115 Record_9 +'#--------------------FN_DYNVARS_001_04-------------------------#' +## Creating another new connection test_con2 ## +## Verifying initial values of variable in global & session scope ## +## global & session initial value should be 20 ## +SELECT @@global.auto_increment_increment = 20; +@@global.auto_increment_increment = 20 +1 +SELECT @@session.auto_increment_increment = 20; +@@session.auto_increment_increment = 20 +1 +## Setting value of session variable to 5 and verifying its behavior ## +SET @@session.auto_increment_increment = 5; +INSERT into t1(name) values('Record_10'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +113 Record_8 +115 Record_9 +116 Record_10 +'Bug#35362: Here Record_10 id should be 120 instead of 115 because we' +'have set the value of variable to 5' +SET @@session.auto_increment_increment = 1; +SELECT @@auto_increment_increment; +@@auto_increment_increment +1 +SELECT @@global.auto_increment_increment; +@@global.auto_increment_increment +20 +'#--------------------FN_DYNVARS_001_05-------------------------#' +## Switching to test_con1 ## +## Verifying values of global & session value of variable ## +## global value should be 20 ## +SELECT @@global.auto_increment_increment = 20; +@@global.auto_increment_increment = 20 +1 +## session value should be 2 ## +SELECT @@session.auto_increment_increment = 2; +@@session.auto_increment_increment = 2 +1 +INSERT into t1(name) values('Record_11'); +INSERT into t1(name) values('Record_12'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +113 Record_8 +115 Record_9 +116 Record_10 +117 Record_11 +119 Record_12 +'#--------------------FN_DYNVARS_001_06-------------------------#' +## Changing column's datatype to SmallInt and verifying variable's behavior ## +ALTER table t1 MODIFY id SMALLINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_13'); +INSERT into t1(name) values('Record_14'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +113 Record_8 +115 Record_9 +116 Record_10 +117 Record_11 +119 Record_12 +121 Record_13 +123 Record_14 +## Changing column's datatype to BigInt and verifying variable's behavior ## +ALTER table t1 MODIFY id BIGINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_15'); +INSERT into t1(name) values('Record_16'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +113 Record_8 +115 Record_9 +116 Record_10 +117 Record_11 +119 Record_12 +121 Record_13 +123 Record_14 +125 Record_15 +127 Record_16 +'#--------------------FN_DYNVARS_001_07-------------------------#' +## Verifying behavior of variable with negative value ## +SET @@auto_increment_increment = -10; +Warnings: +Warning 1292 Truncated incorrect auto-increment-increment value: '0' +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +SELECT * from t1; +id name +1 Record_1 +6 Record_2 +101 Record_5 +111 Record_6 +113 Record_8 +115 Record_9 +116 Record_10 +117 Record_11 +119 Record_12 +121 Record_13 +123 Record_14 +125 Record_15 +127 Record_16 +128 Record_17 +129 Record_18 +'Bug#35364: Variable is incrementing some random values on assigning -ve value' +## Disconnecting test_con2 ## +## Dropping table t1 ## +DROP table if exists t1; +## Disconnecting test_con1 ## +## switching to default connection ## +SET @@global.auto_increment_increment = @global_auto_increment_increment; +SET @@session.auto_increment_increment = @session_auto_increment_increment; +SET @@global.auto_increment_offset = @global_auto_increment_offset; +SET @@session.auto_increment_offset = @session_auto_increment_offset; diff --git a/mysql-test/r/auto_increment_offset_basic.result b/mysql-test/r/auto_increment_offset_basic.result new file mode 100644 index 00000000000..b5ccca8ce56 --- /dev/null +++ b/mysql-test/r/auto_increment_offset_basic.result @@ -0,0 +1,178 @@ +SET @start_global_value = @@global.auto_increment_offset; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.auto_increment_offset; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_002_01-------------------------#' +SET @@global.auto_increment_offset = 100; +SET @@global.auto_increment_offset = DEFAULT; +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +SET @@session.auto_increment_offset = 200; +SET @@session.auto_increment_offset = DEFAULT; +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +1 +'#--------------------FN_DYNVARS_002_02-------------------------#' +SET @@global.auto_increment_offset = @start_global_value; +SELECT @@global.auto_increment_offset = 1; +@@global.auto_increment_offset = 1 +1 +SET @@session.auto_increment_offset = @start_session_value; +SELECT @@session.auto_increment_offset = 1; +@@session.auto_increment_offset = 1 +1 +'#--------------------FN_DYNVARS_002_03-------------------------#' +SET @@global.auto_increment_offset = 1; +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +SET @@global.auto_increment_offset = 60020; +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +60020 +SET @@global.auto_increment_offset = 65535; +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +65535 +'#--------------------FN_DYNVARS_002_04-------------------------#' +SET @@session.auto_increment_offset = 1; +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +1 +SET @@session.auto_increment_offset = 50050; +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +50050 +SET @@session.auto_increment_offset = 65535; +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +65535 +'#------------------FN_DYNVARS_002_05-----------------------#' +SET @@global.auto_increment_offset = 0; +Warnings: +Warning 1292 Truncated incorrect auto-increment-offset value: '0' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +SET @@global.auto_increment_offset = -1024; +Warnings: +Warning 1292 Truncated incorrect auto-increment-offset value: '0' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +SET @@global.auto_increment_offset = 65536; +Warnings: +Warning 1292 Truncated incorrect auto_increment_offset value: '65536' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +65535 +SET @@global.auto_increment_offset = ON; +ERROR 42000: Incorrect argument type to variable 'auto_increment_offset' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +65535 +SET @@global.auto_increment_offset = OFF; +ERROR 42000: Incorrect argument type to variable 'auto_increment_offset' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +65535 +SET @@global.auto_increment_offset = test; +ERROR 42000: Incorrect argument type to variable 'auto_increment_offset' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +65535 +SET @@session.auto_increment_offset = 0; +Warnings: +Warning 1292 Truncated incorrect auto-increment-offset value: '0' +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +1 +SET @@session.auto_increment_offset = -2; +Warnings: +Warning 1292 Truncated incorrect auto-increment-offset value: '0' +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +1 +SET @@session.auto_increment_offset = 65550; +Warnings: +Warning 1292 Truncated incorrect auto_increment_offset value: '65550' +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +65535 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.auto_increment_offset = ON; +ERROR 42000: Incorrect argument type to variable 'auto_increment_offset' +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +65535 +SET @@session.auto_increment_offset = OFF; +ERROR 42000: Incorrect argument type to variable 'auto_increment_offset' +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +65535 +SET @@session.auto_increment_offset = test; +ERROR 42000: Incorrect argument type to variable 'auto_increment_offset' +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +65535 +'#------------------FN_DYNVARS_002_06-----------------------#' +SELECT @@global.auto_increment_offset = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='auto_increment_offset'; +@@global.auto_increment_offset = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_002_07-----------------------#' +SELECT @@session.auto_increment_offset = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='auto_increment_offset'; +@@session.auto_increment_offset = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_002_08-----------------------#' +SET @@global.auto_increment_offset = TRUE; +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +SET @@global.auto_increment_offset = FALSE; +Warnings: +Warning 1292 Truncated incorrect auto-increment-offset value: '0' +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.auto_increment_offset = 10; +SET @@session.auto_increment_offset = 11; +SELECT @@auto_increment_offset = @@global.auto_increment_offset; +@@auto_increment_offset = @@global.auto_increment_offset +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@auto_increment_offset = 100; +SELECT @@auto_increment_offset = @@local.auto_increment_offset; +@@auto_increment_offset = @@local.auto_increment_offset +1 +SELECT @@local.auto_increment_offset = @@session.auto_increment_offset; +@@local.auto_increment_offset = @@session.auto_increment_offset +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET auto_increment_offset = 1; +SELECT @@auto_increment_offset; +@@auto_increment_offset +1 +SELECT local.auto_increment_offset; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.auto_increment_offset; +ERROR 42S02: Unknown table 'session' in field list +SELECT auto_increment_offset = @@session.auto_increment_offset; +ERROR 42S22: Unknown column 'auto_increment_offset' in 'field list' +SET @@global.auto_increment_offset = @start_global_value; +SELECT @@global.auto_increment_offset; +@@global.auto_increment_offset +1 +SET @@session.auto_increment_offset = @start_session_value; +SELECT @@session.auto_increment_offset; +@@session.auto_increment_offset +1 diff --git a/mysql-test/r/auto_increment_offset_func.result b/mysql-test/r/auto_increment_offset_func.result new file mode 100644 index 00000000000..5c953544e73 --- /dev/null +++ b/mysql-test/r/auto_increment_offset_func.result @@ -0,0 +1,257 @@ +SET @global_auto_increment_increment = @@global.auto_increment_increment; +SET @session_auto_increment_increment = @@session.auto_increment_increment; +SET @global_auto_increment_offset = @@global.auto_increment_offset; +SET @session_auto_increment_offset = @@session.auto_increment_offset; +drop table if exists t1; +## Creating New Table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_002_01-------------------------#' +## Setting initial value of variable to 5 ## +SET @@auto_increment_increment = 10; +SET @@auto_increment_offset = 5; +'#--------------------FN_DYNVARS_002_02-------------------------#' +## Inserting records in table and verifying variable's behavior ## +INSERT into t1(name) values('Record_1'); +SELECT * from t1; +id name +5 Record_1 +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +## Test behavior of variable after updating value of variable ## +SET @@auto_increment_offset = 24; +SELECT @@auto_increment_offset; +@@auto_increment_offset +24 +INSERT into t1(name) values('Record_3'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +INSERT into t1(name) values('Record_4'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +'#--------------------FN_DYNVARS_002_03-------------------------#' +## Changing value of global scope before opening new connection ## +SET @@global.auto_increment_increment = 15; +SET @@global.auto_increment_offset = 36; +## New connection test_con1 ## +## Value of session & global vairable here should be 10 ## +SELECT @@global.auto_increment_offset = 36; +@@global.auto_increment_offset = 36 +1 +SELECT @@session.auto_increment_offset = 36; +@@session.auto_increment_offset = 36 +1 +## Verify global value effect of variable by inserting new rows in table ## +INSERT into t1(name) values('Record_5'); +INSERT into t1(name) values('Record_6'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +## Setting session value of variable and inserting data in table ## +SET @@session.auto_increment_offset = 54; +INSERT into t1(name) values('Record_7'); +INSERT into t1(name) values('Record_8'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +'#--------------------FN_DYNVARS_002_04-------------------------#' +## Setting value of variable less than last insert id ## +SET @@session.auto_increment_offset = 5; +INSERT into t1(name) values('Record_9'); +'Bug#35367: Random value of id is increasing on assigning value to'; +'variable that is less than current offset'; +INSERT into t1(name) values('Record_10'); +INSERT into t1(name) values('Record_11'); +INSERT into t1(name) values('Record_12'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +80 Record_9 +95 Record_10 +110 Record_11 +125 Record_12 +'#--------------------FN_DYNVARS_002_05-------------------------#' +## Assigning value to variable greater than auto_increment_incrent value ## +SET @@auto_increment_offset = 140; +SET @@auto_increment_increment = 10; +INSERT into t1(name) values('Record_13'); +INSERT into t1(name) values('Record_14'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +80 Record_9 +95 Record_10 +110 Record_11 +125 Record_12 +134 Record_13 +140 Record_14 +'Bug#35369: Some invalid value of id is increasing on assigning value to'; +'variable that is greater than auto_increment_increment'; +'#--------------------FN_DYNVARS_002_06-------------------------#' +## Changing datatype of column id with primary key to SmallInt ## +ALTER table t1 modify id SMALLINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_15'); +INSERT into t1(name) values('Record_16'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +80 Record_9 +95 Record_10 +110 Record_11 +125 Record_12 +134 Record_13 +140 Record_14 +150 Record_15 +160 Record_16 +## Changing datatype of column id with primary key to BigInt ## +ALTER table t1 modify id BIGINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +80 Record_9 +95 Record_10 +110 Record_11 +125 Record_12 +134 Record_13 +140 Record_14 +150 Record_15 +160 Record_16 +170 Record_17 +180 Record_18 +'#--------------------FN_DYNVARS_002_07-------------------------#' +## Assigning -ve value to variable ## +SET @@auto_increment_offset = -10; +Warnings: +Warning 1292 Truncated incorrect auto-increment-offset value: '0' +SELECT @@auto_increment_offset = -10; +@@auto_increment_offset = -10 +0 +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +80 Record_9 +95 Record_10 +110 Record_11 +125 Record_12 +134 Record_13 +140 Record_14 +150 Record_15 +160 Record_16 +170 Record_17 +180 Record_18 +181 Record_17 +191 Record_18 +'Bug#35370: Some invalid value of id is increasing on assigning negative'; +' value in variable'; +## Assigning value that is out of range of variable ## +SET @@auto_increment_offset = 65536; +Warnings: +Warning 1292 Truncated incorrect auto_increment_offset value: '65536' +SELECT @@auto_increment_offset; +@@auto_increment_offset +65535 +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +INSERT into t1(name) values('Record_19'); +INSERT into t1(name) values('Record_20'); +SELECT * from t1; +id name +5 Record_1 +15 Record_2 +24 Record_3 +34 Record_4 +36 Record_5 +51 Record_6 +54 Record_7 +69 Record_8 +80 Record_9 +95 Record_10 +110 Record_11 +125 Record_12 +134 Record_13 +140 Record_14 +150 Record_15 +160 Record_16 +170 Record_17 +180 Record_18 +181 Record_17 +191 Record_18 +199 Record_17 +209 Record_18 +219 Record_19 +229 Record_20 +## No effect of auto_increment_offset since value of this variable is greater ## +## than auto_increment_increment ## +## Dropping table ## +DROP table if exists t1; +## Disconnecting connection ## +## switching to default connection ## +SET @@global.auto_increment_increment = @global_auto_increment_increment; +SET @@session.auto_increment_increment = @session_auto_increment_increment; +SET @@global.auto_increment_offset = @global_auto_increment_offset; +SET @@session.auto_increment_offset = @session_auto_increment_offset; diff --git a/mysql-test/r/autocommit_func.result b/mysql-test/r/autocommit_func.result new file mode 100644 index 00000000000..47c2c921022 --- /dev/null +++ b/mysql-test/r/autocommit_func.result @@ -0,0 +1,109 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name varchar(30) +) ENGINE = INNODB; +'#--------------------FN_DYNVARS_003_01-------------------------#' +## Setting variable's value to 0 i.e false ## +SET @@autocommit = 0; +'#--------------------FN_DYNVARS_003_02-------------------------#' +## Creating new connection ## +## Checking value of variable after opening new connection ## +SELECT @@autocommit; +@@autocommit +1 +## Setting value of variable to zero and inserting some rows ## +SET @@autocommit = 0; +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +## Creating another connection and verifying records in table ## +## New Connection test_con2 ## +SELECT * from t1; +id name +'#--------------------FN_DYNVARS_003_03-------------------------#' +## Verifying behavior of variable by commiting rows in test_con1 ## +## Connecting with connection # 01 ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +COMMIT; +## New Connection test_con2 ## +## Now verifying records in table from connection # 02 ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +'#--------------------FN_DYNVARS_003_04-------------------------#' +## Connecting to connection # 01 ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +## Updating value of first row ## +UPDATE t1 set name = 'Record_12' where name = 'Record_1'; +SELECT * from t1; +id name +1 Record_12 +2 Record_2 +## Connecting to connecting # 02 and verifying effect of update query ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +## Now connecting with connection # 01 and using ROLLBACK after it ## +ROLLBACK; +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +'#--------------------FN_DYNVARS_003_05-------------------------#' +## Connecting with connection # 01 ## +INSERT into t1(name) values('Record_3'); +## Connection test_con2 ## +## Now verifying records in table from connection # 02 and changing value ## +## of autocommit to true ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +SET @@autocommit = 1; +INSERT into t1(name) values('Record_4'); +INSERT into t1(name) values('Record_5'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +4 Record_4 +5 Record_5 +## Connecting with connection # 01 and inserting few records ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +3 Record_3 +'Bug#35373: Records donot get committed in transaction on switching connections' +INSERT into t1(name) values('Record_6'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +3 Record_3 +6 Record_6 +## Now verifying the effect of these new records in second connection ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +4 Record_4 +5 Record_5 +## Dropping table t1 ## +DROP table t1; +## Disconnecting both connections ## diff --git a/mysql-test/r/automatic_sp_privileges_basic.result b/mysql-test/r/automatic_sp_privileges_basic.result new file mode 100644 index 00000000000..b9cf9b5ee80 --- /dev/null +++ b/mysql-test/r/automatic_sp_privileges_basic.result @@ -0,0 +1,101 @@ +SET @start_value = @@global.automatic_sp_privileges; +SELECT @start_value; +@start_value +1 +'#--------------------FN_DYNVARS_004_01------------------------#' +SET @@global.automatic_sp_privileges = 0; +SET @@global.automatic_sp_privileges = DEFAULT; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +1 +'#---------------------FN_DYNVARS_004_02-------------------------#' +SET @@global.automatic_sp_privileges = @start_value; +SELECT @@global.automatic_sp_privileges = TRUE; +@@global.automatic_sp_privileges = TRUE +1 +'#--------------------FN_DYNVARS_004_03------------------------#' +SET @@global.automatic_sp_privileges = 0; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +0 +SET @@global.automatic_sp_privileges = 1; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +1 +'#--------------------FN_DYNVARS_004_04-------------------------#' +SET @@global.automatic_sp_privileges = 2; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of '2' +SET @@global.automatic_sp_privileges = -1; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of '-1' +SET @@global.automatic_sp_privileges = TRUEF; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of 'TRUEF' +SET @@global.automatic_sp_privileges = TRUE_F; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of 'TRUE_F' +SET @@global.automatic_sp_privileges = FALSE0; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of 'FALSE0' +SET @@global.automatic_sp_privileges = OON; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of 'OON' +SET @@global.automatic_sp_privileges = ONN; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of 'ONN' +SET @@global.automatic_sp_privileges = OOFF; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of 'OOFF' +SET @@global.automatic_sp_privileges = 0FF; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of '0FF' +SET @@global.automatic_sp_privileges = ' '; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of ' ' +SET @@global.automatic_sp_privileges = " "; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of ' ' +SET @@global.automatic_sp_privileges = ''; +ERROR 42000: Variable 'automatic_sp_privileges' can't be set to the value of '' +'#-------------------FN_DYNVARS_004_05----------------------------#' +SET @@session.automatic_sp_privileges = 1; +ERROR HY000: Variable 'automatic_sp_privileges' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.automatic_sp_privileges; +ERROR HY000: Variable 'automatic_sp_privileges' is a GLOBAL variable +'#----------------------FN_DYNVARS_004_06------------------------#' +SELECT @@global.automatic_sp_privileges = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='automatic_sp_privileges'; +@@global.automatic_sp_privileges = VARIABLE_VALUE +0 +'Bug# 34839: Values in variable and information_schema donot match' +'#---------------------FN_DYNVARS_004_07----------------------#' +SET @@global.automatic_sp_privileges = OFF; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +0 +SET @@global.automatic_sp_privileges = ON; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +1 +'#---------------------FN_DYNVARS_004_08----------------------#' +SET @@global.automatic_sp_privileges = TRUE; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +1 +SET @@global.automatic_sp_privileges = FALSE; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +0 +'#---------------------FN_DYNVARS_004_09----------------------#' +SET @@global.automatic_sp_privileges = 1; +SELECT @@automatic_sp_privileges = @@global.automatic_sp_privileges; +@@automatic_sp_privileges = @@global.automatic_sp_privileges +1 +'#---------------------FN_DYNVARS_004_10----------------------#' +SET automatic_sp_privileges = 1; +ERROR HY000: Variable 'automatic_sp_privileges' is a GLOBAL variable and should be set with SET GLOBAL +SET local.automatic_sp_privileges = 1; +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 'automatic_sp_privileges = 1' at line 1 +SELECT local.automatic_sp_privileges; +ERROR 42S02: Unknown table 'local' in field list +SET global.automatic_sp_privileges = 1; +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 'automatic_sp_privileges = 1' at line 1 +SELECT global.automatic_sp_privileges; +ERROR 42S02: Unknown table 'global' in field list +SELECT automatic_sp_privileges = @@session.automatic_sp_privileges; +ERROR 42S22: Unknown column 'automatic_sp_privileges' in 'field list' +SET @@global.automatic_sp_privileges = @start_value; +SELECT @@global.automatic_sp_privileges; +@@global.automatic_sp_privileges +1 diff --git a/mysql-test/r/automatic_sp_privileges_func.result b/mysql-test/r/automatic_sp_privileges_func.result new file mode 100644 index 00000000000..dac956fb091 --- /dev/null +++ b/mysql-test/r/automatic_sp_privileges_func.result @@ -0,0 +1,59 @@ +** Setup ** +SET @global_automatic_sp_privileges = @@GLOBAL.automatic_sp_privileges; +CREATE TABLE t1 (a varchar(200)); +INSERT INTO t1 VALUES('Procedure Executed.'); +CREATE USER 'userTest'@'localhost'; +CREATE USER 'userTest1'@'localhost'; +** Connection default ** +SET GLOBAL automatic_sp_privileges = TRUE; +** Connecting using userTest ** +** Connection conUser ** +CREATE PROCEDURE testProc () +BEGIN +SELECT * FROM t1; +END;| +CALL testProc(); +a +Procedure Executed. +Expecting SELECT executed +** Connection default** +SET GLOBAL automatic_sp_privileges = FALSE; +** Connecting using userTest1 ** +** Connection conUser1 ** +CREATE PROCEDURE testProc1 () +BEGIN +SELECT * FROM t1; +END;| + +Expected error access denied +CALL testProc1(); +ERROR 42000: execute command denied to user 'userTest1'@'localhost' for routine 'test.testProc1' + +Expected error access denied +ALTER PROCEDURE testProc1 COMMENT 'My Comment'; +ERROR 42000: alter routine command denied to user 'userTest1'@'localhost' for routine 'test.testProc1' + +Expected error access denied +DROP PROCEDURE testProc1; +ERROR 42000: alter routine command denied to user 'userTest1'@'localhost' for routine 'test.testProc1' +** Connection default ** +GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE testProc1 TO 'userTest1'@'localhost'; +** Connection conUser1 ** +CALL testProc1(); +a +Procedure Executed. +Expecting seelect executed +ALTER PROCEDURE testProc1 COMMENT 'My Comment'; + +** Cleanup ** +** Connection default ** +disconnecting connections +SET GLOBAL automatic_sp_privileges = @global_automatic_sp_privileges; +REVOKE EXECUTE, ALTER ROUTINE ON PROCEDURE testProc FROM 'userTest'@'localhost'; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'userTest'@'localhost'; +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'userTest1'@'localhost'; +DROP PROCEDURE testProc; +DROP PROCEDURE testProc1; +DROP USER 'userTest'@'localhost'; +DROP USER 'userTest1'@'localhost'; +DROP TABLE t1; diff --git a/mysql-test/r/basedir_basic.result b/mysql-test/r/basedir_basic.result new file mode 100644 index 00000000000..9b18f08305c --- /dev/null +++ b/mysql-test/r/basedir_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_001_01----------------------#' +SELECT COUNT(@@GLOBAL.basedir); +COUNT(@@GLOBAL.basedir) +1 +1 Expected +'#---------------------BS_STVARS_001_02----------------------#' +SET @@GLOBAL.basedir=1; +ERROR HY000: Variable 'basedir' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.basedir); +COUNT(@@GLOBAL.basedir) +1 +1 Expected +'#---------------------BS_STVARS_001_03----------------------#' +SELECT @@GLOBAL.basedir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='basedir'; +@@GLOBAL.basedir = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.basedir); +COUNT(@@GLOBAL.basedir) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='basedir'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_001_04----------------------#' +SELECT @@basedir = @@GLOBAL.basedir; +@@basedir = @@GLOBAL.basedir +1 +1 Expected +'#---------------------BS_STVARS_001_05----------------------#' +SELECT COUNT(@@basedir); +COUNT(@@basedir) +1 +1 Expected +SELECT COUNT(@@local.basedir); +ERROR HY000: Variable 'basedir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.basedir); +ERROR HY000: Variable 'basedir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.basedir); +COUNT(@@GLOBAL.basedir) +1 +1 Expected +SELECT basedir = @@SESSION.basedir; +ERROR 42S22: Unknown column 'basedir' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/big_tables_basic.result b/mysql-test/r/big_tables_basic.result new file mode 100644 index 00000000000..937576a76d3 --- /dev/null +++ b/mysql-test/r/big_tables_basic.result @@ -0,0 +1,103 @@ +SET @start_value = @@big_tables; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_005_01------------------------#' +SET @@big_tables = 1; +SET @@big_tables = DEFAULT; +SELECT @@big_tables; +@@big_tables +1 +'Bug# 34829: No default value for variable and setting default does not raise error'; +'#--------------------FN_DYNVARS_005_02------------------------#' +SET @@big_tables = 0; +SELECT @@big_tables; +@@big_tables +0 +SET @@big_tables = 1; +SELECT @@big_tables; +@@big_tables +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@big_tables = 2; +ERROR 42000: Variable 'big_tables' can't be set to the value of '2' +SET @@big_tables = -1; +ERROR 42000: Variable 'big_tables' can't be set to the value of '-1' +SET @@big_tables = TRUEF; +ERROR 42000: Variable 'big_tables' can't be set to the value of 'TRUEF' +SET @@big_tables = TRUE_F; +ERROR 42000: Variable 'big_tables' can't be set to the value of 'TRUE_F' +SET @@big_tables = FALSE0; +ERROR 42000: Variable 'big_tables' can't be set to the value of 'FALSE0' +SET @@big_tables = OON; +ERROR 42000: Variable 'big_tables' can't be set to the value of 'OON' +SET @@big_tables = ONN; +ERROR 42000: Variable 'big_tables' can't be set to the value of 'ONN' +SET @@big_tables = OOFF; +ERROR 42000: Variable 'big_tables' can't be set to the value of 'OOFF' +SET @@big_tables = 0FF; +ERROR 42000: Variable 'big_tables' can't be set to the value of '0FF' +SET @@big_tables = ' '; +ERROR 42000: Variable 'big_tables' can't be set to the value of ' ' +SET @@big_tables = " "; +ERROR 42000: Variable 'big_tables' can't be set to the value of ' ' +SET @@big_tables = ''; +ERROR 42000: Variable 'big_tables' can't be set to the value of '' +'#-------------------FN_DYNVARS_005_04----------------------------#' +SET @@global.big_tables = 0; +ERROR HY000: Variable 'big_tables' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.big_tables; +ERROR HY000: Variable 'big_tables' is a SESSION variable +'#----------------------FN_DYNVARS_005_05------------------------#' +SELECT @@big_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='big_tables'; +@@big_tables = VARIABLE_VALUE +0 +Bug # 34839: Values in variable and information_schema do not match for autocommit +'#---------------------FN_DYNVARS_005_06----------------------#' +SET @@big_tables = OFF; +SELECT @@big_tables; +@@big_tables +0 +SET @@big_tables = ON; +SELECT @@big_tables; +@@big_tables +1 +'#---------------------FN_DYNVARS_005_07----------------------#' +SET @@big_tables = TRUE; +SELECT @@big_tables; +@@big_tables +1 +SET @@big_tables = FALSE; +SELECT @@big_tables; +@@big_tables +0 +'#---------------------FN_DYNVARS_005_08----------------------#' +SET @@big_tables = 0; +SELECT @@big_tables = @@session.big_tables; +@@big_tables = @@session.big_tables +1 +SET @@big_tables = 1; +SELECT @@big_tables = @@local.big_tables and @@local.big_tables = @@session.big_tables; +@@big_tables = @@local.big_tables and @@local.big_tables = @@session.big_tables +1 +'#---------------------FN_DYNVARS_005_09----------------------#' +SET big_tables = 1; +SELECT @@big_tables; +@@big_tables +1 +SET local.big_tables = 1; +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 'big_tables = 1' at line 1 +SELECT local.big_tables; +ERROR 42S02: Unknown table 'local' in field list +SET session.big_tables = 1; +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 'big_tables = 1' at line 1 +SELECT session.big_tables; +ERROR 42S02: Unknown table 'session' in field list +select big_tables; +ERROR 42S22: Unknown column 'big_tables' in 'field list' +SET @@big_tables = @start_value; +SELECT @@big_tables; +@@big_tables +0 diff --git a/mysql-test/r/binlog_format_basic.result b/mysql-test/r/binlog_format_basic.result new file mode 100644 index 00000000000..3fee9bade7e --- /dev/null +++ b/mysql-test/r/binlog_format_basic.result @@ -0,0 +1,75 @@ +'#---------------------BS_STVARS_002_01----------------------#' +SELECT COUNT(@@GLOBAL.binlog_format); +COUNT(@@GLOBAL.binlog_format) +1 +1 Expected +SELECT COUNT(@@SESSION.binlog_format); +COUNT(@@SESSION.binlog_format) +1 +1 Expected +'#---------------------BS_STVARS_002_02----------------------#' +SET @@GLOBAL.binlog_format=1; +Expected error 'Read only variable' +Bug: Writeable static variable +SELECT COUNT(@@GLOBAL.binlog_format); +COUNT(@@GLOBAL.binlog_format) +1 +1 Expected +SET @@SESSION.binlog_format=1; +Expected error 'Read only variable' +Bug: Writeable static variable +SELECT COUNT(@@SESSION.binlog_format); +COUNT(@@SESSION.binlog_format) +1 +1 Expected +'#---------------------BS_STVARS_002_03----------------------#' +SELECT @@GLOBAL.binlog_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +@@GLOBAL.binlog_format = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.binlog_format); +COUNT(@@GLOBAL.binlog_format) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_002_04----------------------#' +SELECT @@SESSION.binlog_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +@@SESSION.binlog_format = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@SESSION.binlog_format); +COUNT(@@SESSION.binlog_format) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_002_05----------------------#' +SELECT COUNT(@@binlog_format); +COUNT(@@binlog_format) +1 +1 Expected +SELECT COUNT(@@local.binlog_format); +COUNT(@@local.binlog_format) +1 +1 Expected +SELECT COUNT(@@SESSION.binlog_format); +COUNT(@@SESSION.binlog_format) +1 +1 Expected +SELECT COUNT(@@GLOBAL.binlog_format); +COUNT(@@GLOBAL.binlog_format) +1 +1 Expected diff --git a/mysql-test/r/character_set_client_basic.result b/mysql-test/r/character_set_client_basic.result new file mode 100644 index 00000000000..c946d5109a8 --- /dev/null +++ b/mysql-test/r/character_set_client_basic.result @@ -0,0 +1,509 @@ +SET @global_start_value = @@global.character_set_client; +SELECT @global_start_value; +@global_start_value +latin1 +SET @session_start_value = @@character_set_client; +SELECT @session_start_value; +@session_start_value +latin1 +SET @session_start_value = @@local.character_set_client; +SELECT @session_start_value; +@session_start_value +latin1 +SET @session_start_value = @@session.character_set_client; +SELECT @session_start_value; +@session_start_value +latin1 +'#--------------------FN_DYNVARS_010_01------------------#' +SELECT character_set_client; +ERROR 42S22: Unknown column 'character_set_client' in 'field list' +SET character_set_client=utf8; +SELECT @@session.character_set_client; +@@session.character_set_client +utf8 +SET global.character_set_client=utf8; +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 'character_set_client=utf8' at line 1 +SET session character_set_client=utf8; +SELECT session character_set_client; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global character_set_client=utf8; +SELECT global character_set_client; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_010_02-------------------------#' +SET @@character_set_client = latin5; +SET @@character_set_client = DEFAULT; +SELECT @@character_set_client AS DEFAULT_VALUE; +DEFAULT_VALUE +utf8 +SET @@global.character_set_client = latin5; +SET @@global.character_set_client = DEFAULT; +SELECT @@global.character_set_client; +@@global.character_set_client +latin1 +'#--------------------FN_DYNVARS_010_03-------------------------#' +SET @@session.character_set_client = utf8; +SELECT @@session.character_set_client; +@@session.character_set_client +utf8 +SET @@global.character_set_client = latin2; +SELECT @@global.character_set_client; +@@global.character_set_client +latin2 +SELECT @@session.character_set_client AS res_is_utf8; +res_is_utf8 +utf8 +SET @@session.character_set_client = latin5; +SELECT @@session.character_set_client; +@@session.character_set_client +latin5 +SELECT @@global.character_set_client AS res_is_latin2; +res_is_latin2 +latin2 +SELECT @@global.character_set_client=@@session.character_set_client +AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_010_04-------------------------#' +SELECT @@character_set_client = @@session.character_set_client AS res; +res +1 +SELECT @@character_set_client = @@local.character_set_client AS res; +res +1 +'#--------------------FN_DYNVARS_010_05-------------------------#' +SET @@character_set_client = utf8 + latin2; +ERROR 42S22: Unknown column 'utf8' in 'field list' +'#--------------------FN_DYNVARS_010_06-------------------------#' +SET @@character_set_client = big5; +SELECT @@character_set_client; +@@character_set_client +big5 +SET @@character_set_client = dec8; +SELECT @@character_set_client; +@@character_set_client +dec8 +SET @@character_set_client = cp850; +SELECT @@character_set_client; +@@character_set_client +cp850 +SET @@character_set_client = hp8; +SELECT @@character_set_client; +@@character_set_client +hp8 +SET @@character_set_client = koi8r; +SELECT @@character_set_client; +@@character_set_client +koi8r +SET @@character_set_client = latin1; +SELECT @@character_set_client; +@@character_set_client +latin1 +SET @@character_set_client = latin2; +SELECT @@character_set_client; +@@character_set_client +latin2 +SET @@character_set_client = swe7; +SELECT @@character_set_client; +character_set_client +swe7 +SET @@character_set_client = ascii; +SELECT @@character_set_client; +@@character_set_client +ascii +SET @@character_set_client = ujis; +SELECT @@character_set_client; +@@character_set_client +ujis +SET @@character_set_client = sjis; +SELECT @@character_set_client; +@@character_set_client +sjis +SET @@character_set_client = hebrew; +SELECT @@character_set_client; +@@character_set_client +hebrew +SET @@character_set_client = tis620; +SELECT @@character_set_client; +@@character_set_client +tis620 +SET @@character_set_client = euckr; +SELECT @@character_set_client; +@@character_set_client +euckr +SET @@character_set_client = koi8u; +SELECT @@character_set_client; +@@character_set_client +koi8u +SET @@character_set_client = gb2312; +SELECT @@character_set_client; +@@character_set_client +gb2312 +SET @@character_set_client = greek; +SELECT @@character_set_client; +@@character_set_client +greek +SET @@character_set_client = cp1250; +SELECT @@character_set_client; +@@character_set_client +cp1250 +SET @@character_set_client = gbk; +SELECT @@character_set_client; +@@character_set_client +gbk +SET @@character_set_client = latin5; +SELECT @@character_set_client; +@@character_set_client +latin5 +SET @@character_set_client = armscii8; +SELECT @@character_set_client; +@@character_set_client +armscii8 +SET @@character_set_client = utf8; +SELECT @@character_set_client; +@@character_set_client +utf8 +'Bug: Assignment of ucs2 to session character-set does not raise error'; +'but selecting variable after setting it does.'; +'Even catching this does not allow any further character-set to be set.'; +'Offending querry seems to be:'; +'SET @@character_set_client = ucs2;' +SET @@character_set_client = cp866; +SELECT @@character_set_client; +@@character_set_client +cp866 +SET @@character_set_client = keybcs2; +SELECT @@character_set_client; +@@character_set_client +keybcs2 +SET @@character_set_client = macce; +SELECT @@character_set_client; +@@character_set_client +macce +SET @@character_set_client = macroman; +SELECT @@character_set_client; +@@character_set_client +macroman +SET @@character_set_client = cp852; +SELECT @@character_set_client; +@@character_set_client +cp852 +SET @@character_set_client = latin7; +SELECT @@character_set_client; +@@character_set_client +latin7 +SET @@character_set_client = cp1251; +SELECT @@character_set_client; +@@character_set_client +cp1251 +SET @@character_set_client = cp1256; +SELECT @@character_set_client; +@@character_set_client +cp1256 +SET @@character_set_client = cp1257; +SELECT @@character_set_client; +@@character_set_client +cp1257 +SET @@character_set_client = binary; +SELECT @@character_set_client; +@@character_set_client +binary +SET @@character_set_client = geostd8; +SELECT @@character_set_client; +@@character_set_client +geostd8 +SET @@character_set_client = cp932; +SELECT @@character_set_client; +@@character_set_client +cp932 +SET @@character_set_client = eucjpms; +SELECT @@character_set_client; +@@character_set_client +eucjpms +'#--------------------FN_DYNVARS_010_07-------------------------#' +SET @@global.character_set_client = big5; +SELECT @@global.character_set_client; +@@global.character_set_client +big5 +SET @@global.character_set_client = dec8; +SELECT @@global.character_set_client; +@@global.character_set_client +dec8 +SET @@global.character_set_client = cp850; +SELECT @@global.character_set_client; +@@global.character_set_client +cp850 +SET @@global.character_set_client = hp8; +SELECT @@global.character_set_client; +@@global.character_set_client +hp8 +SET @@global.character_set_client = koi8r; +SELECT @@global.character_set_client; +@@global.character_set_client +koi8r +SET @@global.character_set_client = latin1; +SELECT @@global.character_set_client; +@@global.character_set_client +latin1 +SET @@global.character_set_client = latin2; +SELECT @@global.character_set_client; +@@global.character_set_client +latin2 +SET @@global.character_set_client = swe7; +SELECT @@global.character_set_client; +@@global.character_set_client +swe7 +SET @@global.character_set_client = ascii; +SELECT @@global.character_set_client; +@@global.character_set_client +ascii +SET @@global.character_set_client = ujis; +SELECT @@global.character_set_client; +@@global.character_set_client +ujis +SET @@global.character_set_client = sjis; +SELECT @@global.character_set_client; +@@global.character_set_client +sjis +SET @@global.character_set_client = hebrew; +SELECT @@global.character_set_client; +@@global.character_set_client +hebrew +SET @@global.character_set_client = tis620; +SELECT @@global.character_set_client; +@@global.character_set_client +tis620 +SET @@global.character_set_client = euckr; +SELECT @@global.character_set_client; +@@global.character_set_client +euckr +SET @@global.character_set_client = koi8u; +SELECT @@global.character_set_client; +@@global.character_set_client +koi8u +SET @@global.character_set_client = gb2312; +SELECT @@global.character_set_client; +@@global.character_set_client +gb2312 +SET @@global.character_set_client = greek; +SELECT @@global.character_set_client; +@@global.character_set_client +greek +SET @@global.character_set_client = cp1250; +SELECT @@global.character_set_client; +@@global.character_set_client +cp1250 +SET @@global.character_set_client = gbk; +SELECT @@global.character_set_client; +@@global.character_set_client +gbk +SET @@global.character_set_client = latin5; +SELECT @@global.character_set_client; +@@global.character_set_client +latin5 +SET @@global.character_set_client = armscii8; +SELECT @@global.character_set_client; +@@global.character_set_client +armscii8 +SET @@global.character_set_client = utf8; +SELECT @@global.character_set_client; +@@global.character_set_client +utf8 +SET @@global.character_set_client = ucs2; +SELECT @@global.character_set_client; +@@global.character_set_client +utf8 +SET @@global.character_set_client = cp866; +SELECT @@global.character_set_client; +@@global.character_set_client +cp866 +SET @@global.character_set_client = keybcs2; +SELECT @@global.character_set_client; +@@global.character_set_client +keybcs2 +SET @@global.character_set_client = macce; +SELECT @@global.character_set_client; +@@global.character_set_client +macce +SET @@global.character_set_client = macroman; +SELECT @@global.character_set_client; +@@global.character_set_client +macroman +SET @@global.character_set_client = cp852; +SELECT @@global.character_set_client; +@@global.character_set_client +cp852 +SET @@global.character_set_client = latin7; +SELECT @@global.character_set_client; +@@global.character_set_client +latin7 +SET @@global.character_set_client = cp1251; +SELECT @@global.character_set_client; +@@global.character_set_client +cp1251 +SET @@global.character_set_client = cp1256; +SELECT @@global.character_set_client; +@@global.character_set_client +cp1256 +SET @@global.character_set_client = cp1257; +SELECT @@global.character_set_client; +@@global.character_set_client +cp1257 +SET @@global.character_set_client = binary; +SELECT @@global.character_set_client; +@@global.character_set_client +binary +SET @@global.character_set_client = geostd8; +SELECT @@global.character_set_client; +@@global.character_set_client +geostd8 +SET @@global.character_set_client = cp932; +SELECT @@global.character_set_client; +@@global.character_set_client +cp932 +SET @@global.character_set_client = eucjpms; +SELECT @@global.character_set_client; +@@global.character_set_client +eucjpms +'#--------------------FN_DYNVARS_010_08-------------------------#' +SET @@character_set_client = UTF8; +SELECT @@character_set_client; +@@character_set_client +utf8 +SET @@character_set_client = utf8; +SELECT @@character_set_client; +@@character_set_client +utf8 +SET @@global.character_set_client = uTf8; +SELECT @@global.character_set_client; +@@global.character_set_client +utf8 +'#--------------------FN_DYNVARS_010_09-------------------------#' +SET @@character_set_client = 1; +SELECT @@character_set_client; +@@character_set_client +big5 +SET @@character_set_client = 2; +SELECT @@character_set_client; +@@character_set_client +latin2 +SET @@character_set_client = 3; +SELECT @@character_set_client; +@@character_set_client +dec8 +SET @@character_set_client = 36; +SELECT @@character_set_client; +@@character_set_client +cp866 +SET @@character_set_client = 99; +SELECT @@character_set_client; +@@character_set_client +cp1250 +SET @@character_set_client = 100; +ERROR 42000: Unknown character set: '100' +SET @@global.character_set_client = 1; +SELECT @@global.character_set_client; +@@global.character_set_client +big5 +SET @@global.character_set_client = 2; +SELECT @@global.character_set_client; +@@global.character_set_client +latin2 +SET @@global.character_set_client = 3; +SELECT @@global.character_set_client; +@@global.character_set_client +dec8 +SET @@global.character_set_client = 36; +SELECT @@global.character_set_client; +@@global.character_set_client +cp866 +SET @@global.character_set_client = 99; +SELECT @@global.character_set_client; +@@global.character_set_client +cp1250 +SET @@global.character_set_client = 100; +ERROR 42000: Unknown character set: '100' +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +@total_charset +36 +'Bug # 34843: character sets are mapped in such a way that 100 and following'; +'numbers gives error, and before 100 the 36 mapped wraps arround'; +'several times.'; +'#--------------------FN_DYNVARS_010_10-------------------------#' +SET @@character_set_client = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@character_set_client = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@character_set_client = 0; +ERROR 42000: Unknown character set: '0' +SET @@character_set_client = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_client' +SET @@character_set_client = -1; +ERROR 42000: Unknown character set: '-1' +SET @@character_set_client = ''; +ERROR 42000: Unknown character set: '' +SET @@character_set_client = 'utf'; +ERROR 42000: Unknown character set: 'utf' +SET @@character_set_client = true; +SELECT @@character_set_client AS res_with_true; +res_with_true +big5 +SET @@character_set_client = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_010_11-------------------------#' +SET @@global.character_set_client = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@global.character_set_client = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@global.character_set_client = 0; +ERROR 42000: Unknown character set: '0' +SET @@global.character_set_client = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_client' +SET @@global.character_set_client = -1; +ERROR 42000: Unknown character set: '-1' +SET @@global.character_set_client = ''; +ERROR 42000: Unknown character set: '' +SET @@global.character_set_client = 'utf'; +ERROR 42000: Unknown character set: 'utf' +SET @@global.character_set_client = true; +SET @@global.character_set_client = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_010_12-------------------------#' +SELECT @@global.character_set_client = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_client') AS res; +res +1 +SET @@global.character_set_client = 1; +SELECT @@global.character_set_client; +@@global.character_set_client +big5 +SELECT @@global.character_set_client = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_client') AS res; +res +1 +'#--------------------FN_DYNVARS_010_13-------------------------#' +SELECT @@character_set_client = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_client') AS res; +res +1 +SELECT @@local.character_set_client = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_client') AS res; +res +1 +SELECT @@session.character_set_client = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_client') AS res; +res +1 +SET @@global.character_set_client = @global_start_value; +SELECT @@global.character_set_client; +@@global.character_set_client +latin1 +SET @@session.character_set_client = @session_start_value; +SELECT @@session.character_set_client; +@@session.character_set_client +latin1 diff --git a/mysql-test/r/character_set_client_func.result b/mysql-test/r/character_set_client_func.result new file mode 100644 index 00000000000..087db21639b --- /dev/null +++ b/mysql-test/r/character_set_client_func.result @@ -0,0 +1,38 @@ +'#--------------------FN_DYNVARS_010_01-------------------------#' +SET @global_character_set_client = @@global.character_set_client; +SET @session_character_set_client = @@session.character_set_client; +SET @@global.character_set_client = utf8; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.character_set_client; +@@global.character_set_client +utf8 +SELECT @@session.character_set_client; +@@session.character_set_client +latin1 +'Bug# 35372: session character_set_client is not effected by global character_set_client' +'#--------------------FN_DYNVARS_010_02-------------------------#' +'connection default' +SHOW VARIABLES like 'character_set_client'; +Variable_name Value +character_set_client latin1 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a CHAR(3) character set utf8); +'---verifying character_set_client with a utf8 character----' +'For latin1 characterset'; +SET @@session.character_set_client = latin1; +INSERT INTO t1 values(''); +SELECT a,CHAR_LENGTH(a) FROM t1; +a CHAR_LENGTH(a) + 2 +DELETE FROM t1; +'For utf8 characterset'; +SET @@session.character_set_client = utf8; +INSERT INTO t1 values(''); +SELECT a,CHAR_LENGTH(a) FROM t1; +a CHAR_LENGTH(a) + 1 +DELETE FROM t1; +DROP TABLE IF EXISTS t1; +SET @@global.character_set_client = @global_character_set_client; +SET @@session.character_set_client = @session_character_set_client; diff --git a/mysql-test/r/character_set_connection_basic.result b/mysql-test/r/character_set_connection_basic.result new file mode 100644 index 00000000000..18697a20fb9 --- /dev/null +++ b/mysql-test/r/character_set_connection_basic.result @@ -0,0 +1,508 @@ +SET @global_start_value = @@global.character_set_connection; +SELECT @global_start_value; +@global_start_value +latin1 +SET @session_start_value = @@character_set_connection; +SELECT @session_start_value; +@session_start_value +latin1 +SET @session_start_value = @@local.character_set_connection; +SELECT @session_start_value; +@session_start_value +latin1 +SET @session_start_value = @@session.character_set_connection; +SELECT @session_start_value; +@session_start_value +latin1 +'#--------------------FN_DYNVARS_011_01------------------#' +SELECT character_set_connection; +ERROR 42S22: Unknown column 'character_set_connection' in 'field list' +SET character_set_connection=utf8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +utf8 +SET global.character_set_connection=utf8; +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 'character_set_connection=utf8' at line 1 +SET session character_set_connection=utf8; +SELECT session character_set_connection; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global character_set_connection=utf8; +SELECT global character_set_connection; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_011_02-------------------------#' +SET @@character_set_connection = latin5; +SET @@character_set_connection = DEFAULT; +SELECT @@character_set_connection AS DEFAULT_VALUE; +DEFAULT_VALUE +utf8 +SET @@global.character_set_connection = latin5; +SET @@global.character_set_connection = DEFAULT; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin1 +'#--------------------FN_DYNVARS_011_03-------------------------#' +SET @@session.character_set_connection = utf8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +utf8 +SET @@global.character_set_connection = latin2; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin2 +SELECT @@session.character_set_connection AS res_is_utf8; +res_is_utf8 +utf8 +SET @@session.character_set_connection = latin5; +SELECT @@session.character_set_connection; +@@session.character_set_connection +latin5 +SELECT @@global.character_set_connection AS res_is_latin2; +res_is_latin2 +latin2 +SELECT @@global.character_set_connection=@@session.character_set_connection +AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_011_04-------------------------#' +SELECT @@character_set_connection = @@session.character_set_connection AS res; +res +1 +SELECT @@character_set_connection = @@local.character_set_connection AS res; +res +1 +'#--------------------FN_DYNVARS_011_05-------------------------#' +SET @@character_set_connection = utf8 + latin2; +ERROR 42S22: Unknown column 'utf8' in 'field list' +'#--------------------FN_DYNVARS_011_06-------------------------#' +SET @@session.character_set_connection = big5; +SELECT @@session.character_set_connection; +@@session.character_set_connection +big5 +SET @@session.character_set_connection = dec8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +dec8 +SET @@session.character_set_connection = cp850; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp850 +SET @@session.character_set_connection = hp8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +hp8 +SET @@session.character_set_connection = koi8r; +SELECT @@session.character_set_connection; +@@session.character_set_connection +koi8r +SET @@session.character_set_connection = latin1; +SELECT @@session.character_set_connection; +@@session.character_set_connection +latin1 +SET @@session.character_set_connection = latin2; +SELECT @@session.character_set_connection; +@@session.character_set_connection +latin2 +SET @@session.character_set_connection = swe7; +SELECT @@session.character_set_connection; +@@session.character_set_connection +swe7 +SET @@session.character_set_connection = ascii; +SELECT @@session.character_set_connection; +@@session.character_set_connection +ascii +SET @@session.character_set_connection = ujis; +SELECT @@session.character_set_connection; +@@session.character_set_connection +ujis +SET @@session.character_set_connection = sjis; +SELECT @@session.character_set_connection; +@@session.character_set_connection +sjis +SET @@session.character_set_connection = hebrew; +SELECT @@session.character_set_connection; +@@session.character_set_connection +hebrew +SET @@session.character_set_connection = tis620; +SELECT @@session.character_set_connection; +@@session.character_set_connection +tis620 +SET @@session.character_set_connection = euckr; +SELECT @@session.character_set_connection; +@@session.character_set_connection +euckr +SET @@session.character_set_connection = koi8u; +SELECT @@session.character_set_connection; +@@session.character_set_connection +koi8u +SET @@session.character_set_connection = gb2312; +SELECT @@session.character_set_connection; +@@session.character_set_connection +gb2312 +SET @@session.character_set_connection = greek; +SELECT @@session.character_set_connection; +@@session.character_set_connection +greek +SET @@session.character_set_connection = cp1250; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp1250 +SET @@session.character_set_connection = gbk; +SELECT @@session.character_set_connection; +@@session.character_set_connection +gbk +SET @@session.character_set_connection = latin5; +SELECT @@session.character_set_connection; +@@session.character_set_connection +latin5 +SET @@session.character_set_connection = armscii8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +armscii8 +SET @@session.character_set_connection = utf8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +utf8 +SET @@session.character_set_connection = ucs2; +SELECT @@session.character_set_connection; +@@session.character_set_connection +ucs2 +SET @@session.character_set_connection = cp866; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp866 +SET @@session.character_set_connection = keybcs2; +SELECT @@session.character_set_connection; +@@session.character_set_connection +keybcs2 +SET @@session.character_set_connection = macce; +SELECT @@session.character_set_connection; +@@session.character_set_connection +macce +SET @@session.character_set_connection = macroman; +SELECT @@session.character_set_connection; +@@session.character_set_connection +macroman +SET @@session.character_set_connection = cp852; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp852 +SET @@session.character_set_connection = latin7; +SELECT @@session.character_set_connection; +@@session.character_set_connection +latin7 +SET @@session.character_set_connection = cp1251; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp1251 +SET @@session.character_set_connection = cp1256; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp1256 +SET @@session.character_set_connection = cp1257; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp1257 +SET @@session.character_set_connection = binary; +SELECT @@session.character_set_connection; +@@session.character_set_connection +binary +SET @@session.character_set_connection = geostd8; +SELECT @@session.character_set_connection; +@@session.character_set_connection +geostd8 +SET @@session.character_set_connection = cp932; +SELECT @@session.character_set_connection; +@@session.character_set_connection +cp932 +SET @@session.character_set_connection = eucjpms; +SELECT @@session.character_set_connection; +@@session.character_set_connection +eucjpms +'#--------------------FN_DYNVARS_011_07-------------------------#' +SET @@global.character_set_connection = big5; +SELECT @@global.character_set_connection; +@@global.character_set_connection +big5 +SET @@global.character_set_connection = dec8; +SELECT @@global.character_set_connection; +@@global.character_set_connection +dec8 +SET @@global.character_set_connection = cp850; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp850 +SET @@global.character_set_connection = hp8; +SELECT @@global.character_set_connection; +@@global.character_set_connection +hp8 +SET @@global.character_set_connection = koi8r; +SELECT @@global.character_set_connection; +@@global.character_set_connection +koi8r +SET @@global.character_set_connection = latin1; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin1 +SET @@global.character_set_connection = latin2; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin2 +SET @@global.character_set_connection = swe7; +SELECT @@global.character_set_connection; +@@global.character_set_connection +swe7 +SET @@global.character_set_connection = ascii; +SELECT @@global.character_set_connection; +@@global.character_set_connection +ascii +SET @@global.character_set_connection = ujis; +SELECT @@global.character_set_connection; +@@global.character_set_connection +ujis +SET @@global.character_set_connection = sjis; +SELECT @@global.character_set_connection; +@@global.character_set_connection +sjis +SET @@global.character_set_connection = hebrew; +SELECT @@global.character_set_connection; +@@global.character_set_connection +hebrew +SET @@global.character_set_connection = tis620; +SELECT @@global.character_set_connection; +@@global.character_set_connection +tis620 +SET @@global.character_set_connection = euckr; +SELECT @@global.character_set_connection; +@@global.character_set_connection +euckr +SET @@global.character_set_connection = koi8u; +SELECT @@global.character_set_connection; +@@global.character_set_connection +koi8u +SET @@global.character_set_connection = gb2312; +SELECT @@global.character_set_connection; +@@global.character_set_connection +gb2312 +SET @@global.character_set_connection = greek; +SELECT @@global.character_set_connection; +@@global.character_set_connection +greek +SET @@global.character_set_connection = cp1250; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp1250 +SET @@global.character_set_connection = gbk; +SELECT @@global.character_set_connection; +@@global.character_set_connection +gbk +SET @@global.character_set_connection = latin5; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin5 +SET @@global.character_set_connection = armscii8; +SELECT @@global.character_set_connection; +@@global.character_set_connection +armscii8 +SET @@global.character_set_connection = utf8; +SELECT @@global.character_set_connection; +@@global.character_set_connection +utf8 +SET @@global.character_set_connection = ucs2; +SELECT @@global.character_set_connection; +@@global.character_set_connection +ucs2 +SET @@global.character_set_connection = cp866; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp866 +SET @@global.character_set_connection = keybcs2; +SELECT @@global.character_set_connection; +@@global.character_set_connection +keybcs2 +SET @@global.character_set_connection = macce; +SELECT @@global.character_set_connection; +@@global.character_set_connection +macce +SET @@global.character_set_connection = macroman; +SELECT @@global.character_set_connection; +@@global.character_set_connection +macroman +SET @@global.character_set_connection = cp852; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp852 +SET @@global.character_set_connection = latin7; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin7 +SET @@global.character_set_connection = cp1251; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp1251 +SET @@global.character_set_connection = cp1256; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp1256 +SET @@global.character_set_connection = cp1257; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp1257 +SET @@global.character_set_connection = binary; +SELECT @@global.character_set_connection; +@@global.character_set_connection +binary +SET @@global.character_set_connection = geostd8; +SELECT @@global.character_set_connection; +@@global.character_set_connection +geostd8 +SET @@global.character_set_connection = cp932; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp932 +SET @@global.character_set_connection = eucjpms; +SELECT @@global.character_set_connection; +@@global.character_set_connection +eucjpms +'#--------------------FN_DYNVARS_011_08-------------------------#' +SET @@character_set_connection = UTF8; +SELECT @@character_set_connection; +@@character_set_connection +utf8 +SET @@character_set_connection = utf8; +SELECT @@character_set_connection; +@@character_set_connection +utf8 +SET @@global.character_set_connection = uTf8; +SELECT @@global.character_set_connection; +@@global.character_set_connection +utf8 +'#--------------------FN_DYNVARS_011_09-------------------------#' +SET @@character_set_connection = 1; +SELECT @@character_set_connection; +@@character_set_connection +big5 +SET @@character_set_connection = 2; +SELECT @@character_set_connection; +@@character_set_connection +latin2 +SET @@character_set_connection = 3; +SELECT @@character_set_connection; +@@character_set_connection +dec8 +SET @@character_set_connection = 36; +SELECT @@character_set_connection; +@@character_set_connection +cp866 +SET @@character_set_connection = 99; +SELECT @@character_set_connection; +@@character_set_connection +cp1250 +SET @@character_set_connection = 100; +ERROR 42000: Unknown character set: '100' +SET @@global.character_set_connection = 1; +SELECT @@global.character_set_connection; +@@global.character_set_connection +big5 +SET @@global.character_set_connection = 2; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin2 +SET @@global.character_set_connection = 3; +SELECT @@global.character_set_connection; +@@global.character_set_connection +dec8 +SET @@global.character_set_connection = 36; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp866 +SET @@global.character_set_connection = 99; +SELECT @@global.character_set_connection; +@@global.character_set_connection +cp1250 +SET @@global.character_set_connection = 100; +ERROR 42000: Unknown character set: '100' +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +@total_charset +36 +'Bug # 34843: character sets are mapped in such a way that 100 and following '; +'numbers gives error, and before 100 the 36 mapped wraps arround'; +'several times.'; +'#--------------------FN_DYNVARS_011_10-------------------------#' +SET @@character_set_connection = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@character_set_connection = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@character_set_connection = 0; +ERROR 42000: Unknown character set: '0' +SET @@character_set_connection = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_connection' +SET @@character_set_connection = -1; +ERROR 42000: Unknown character set: '-1' +SET @@character_set_connection = 'utf8 '; +ERROR 42000: Unknown character set: 'utf8 ' +SET @@character_set_connection = 'ltin2'; +ERROR 42000: Unknown character set: 'ltin2' +SET @@character_set_connection = true; +SELECT @@character_set_connection AS res_with_true; +res_with_true +big5 +SET @@character_set_connection = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_011_11-------------------------#' +SET @@global.character_set_connection = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@global.character_set_connection = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@global.character_set_connection = 0; +ERROR 42000: Unknown character set: '0' +SET @@global.character_set_connection = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_connection' +SET @@global.character_set_connection = -1; +ERROR 42000: Unknown character set: '-1' +SET @@global.character_set_connection = ''; +ERROR 42000: Unknown character set: '' +SET @@global.character_set_connection = 'utf'; +ERROR 42000: Unknown character set: 'utf' +SET @@global.character_set_connection = true; +SET @@global.character_set_connection = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_011_12-------------------------#' +SELECT @@global.character_set_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_connection') AS res; +res +1 +SET @@global.character_set_connection = 1; +SELECT @@global.character_set_connection; +@@global.character_set_connection +big5 +SELECT @@global.character_set_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_connection') AS res; +res +1 +'#--------------------FN_DYNVARS_011_13-------------------------#' +SELECT @@character_set_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_connection') AS res; +res +1 +SELECT @@local.character_set_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_connection') AS res; +res +1 +SELECT @@session.character_set_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_connection') AS res; +res +1 +SET @@global.character_set_connection = @global_start_value; +SELECT @@global.character_set_connection; +@@global.character_set_connection +latin1 +SET @@session.character_set_connection = @session_start_value; +SELECT @@session.character_set_connection; +@@session.character_set_connection +latin1 diff --git a/mysql-test/r/character_set_connection_func.result b/mysql-test/r/character_set_connection_func.result new file mode 100644 index 00000000000..2f5d28ec8af --- /dev/null +++ b/mysql-test/r/character_set_connection_func.result @@ -0,0 +1,55 @@ +'#--------------------FN_DYNVARS_011_01-------------------------#' +SET @global_character_set_connection = @@global.character_set_connection; +SET @session_character_set_connection = @@session.character_set_connection; +SET @session_character_set_client = @@session.character_set_client; +SET @session_character_set_results = @@session.character_set_results; +SET @@global.character_set_connection = utf8; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.character_set_connection; +@@global.character_set_connection +utf8 +SELECT @@session.character_set_connection; +@@session.character_set_connection +utf8 +'#--------------------FN_DYNVARS_011_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(b CHAR(40) character set utf8); +'--verify that character_set_connection converts character_set_client--' +SET @@session.character_set_client = utf8; +SET @@session.character_set_results = utf8; +SET @@session.character_set_connection = latin1; +SELECT 'ЁЂЃЄ' AS utf_text; +utf_text +???? +SET @@session.character_set_connection = utf8; +SELECT 'ЁЂЃЄ' AS utf_text; +utf_text +ЁЂЃЄ +'---now inserting utf8 string with different character_set_connection--' +SET @@session.character_set_connection = ascii; +INSERT INTO t1 VALUES('ЁЂЃЄ'); +SELECT * FROM t1; +b +???? +TRUNCATE TABLE t1; +'--now client & results charset in latin1 & connection charset in ascii-' +SET @@session.character_set_connection = ascii; +SET @@session.character_set_client = latin1; +SET @@session.character_set_results = latin1; +INSERT INTO t1 VALUES('ЁЂЃЄ'); +SELECT * FROM t1; +b +???????? +TRUNCATE TABLE t1; +SET NAMES utf8; +INSERT INTO t1 VALUES('ЁЂЃЄ'); +SELECT * FROM t1; +b +ЁЂЃЄ +TRUNCATE TABLE t1; +SET @@global.character_set_connection = @global_character_set_connection; +SET @@session.character_set_connection = @session_character_set_connection; +SET @@session.character_set_client = @session_character_set_client; +SET @@session.character_set_results = @session_character_set_results; diff --git a/mysql-test/r/character_set_database_basic.result b/mysql-test/r/character_set_database_basic.result new file mode 100644 index 00000000000..4380fea4c81 --- /dev/null +++ b/mysql-test/r/character_set_database_basic.result @@ -0,0 +1,507 @@ +SET @global_start_value = @@global.character_set_database; +SELECT @global_start_value; +@global_start_value +latin1 +SET @session_start_value = @@character_set_database; +SELECT @session_start_value; +@session_start_value +latin1 +SET @session_start_value = @@local.character_set_database; +SELECT @session_start_value; +@session_start_value +latin1 +SET @session_start_value = @@session.character_set_database; +SELECT @session_start_value; +@session_start_value +latin1 +'#--------------------FN_DYNVARS_012_01------------------#' +SELECT character_set_database; +ERROR 42S22: Unknown column 'character_set_database' in 'field list' +SET character_set_database=utf8; +SELECT @@session.character_set_database; +@@session.character_set_database +utf8 +SET global.character_set_database=utf8; +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 'character_set_database=utf8' at line 1 +SET session character_set_database=utf8; +SELECT session character_set_database; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global character_set_database=utf8; +SELECT global character_set_database; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_012_02-------------------------#' +SET @@character_set_database = latin5; +SET @@character_set_database = DEFAULT; +SELECT @@character_set_database AS DEFAULT_VALUE; +DEFAULT_VALUE +latin1 +SET @@global.character_set_database = latin5; +SET @@global.character_set_database = DEFAULT; +SELECT @@global.character_set_database; +@@global.character_set_database +latin1 +'#--------------------FN_DYNVARS_012_03-------------------------#' +SET @@session.character_set_database = utf8; +SELECT @@session.character_set_database; +@@session.character_set_database +utf8 +SET @@global.character_set_database = latin2; +SELECT @@global.character_set_database; +@@global.character_set_database +latin2 +SELECT @@session.character_set_database AS res_is_utf8; +res_is_utf8 +utf8 +SET @@session.character_set_database = latin5; +SELECT @@session.character_set_database; +@@session.character_set_database +latin5 +SELECT @@global.character_set_database AS res_is_latin2; +res_is_latin2 +latin2 +SELECT @@global.character_set_database=@@session.character_set_database +AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_012_04-------------------------#' +SELECT @@character_set_database = @@session.character_set_database AS res; +res +1 +SELECT @@character_set_database = @@local.character_set_database AS res; +res +1 +'#--------------------FN_DYNVARS_012_05-------------------------#' +SET @@character_set_database = utf8 + latin2; +ERROR 42S22: Unknown column 'utf8' in 'field list' +'#--------------------FN_DYNVARS_012_06-------------------------#' +SET @@session.character_set_database = big5; +SELECT @@session.character_set_database; +@@session.character_set_database +big5 +SET @@session.character_set_database = dec8; +SELECT @@session.character_set_database; +@@session.character_set_database +dec8 +SET @@session.character_set_database = cp850; +SELECT @@session.character_set_database; +@@session.character_set_database +cp850 +SET @@session.character_set_database = hp8; +SELECT @@session.character_set_database; +@@session.character_set_database +hp8 +SET @@session.character_set_database = koi8r; +SELECT @@session.character_set_database; +@@session.character_set_database +koi8r +SET @@session.character_set_database = latin1; +SELECT @@session.character_set_database; +@@session.character_set_database +latin1 +SET @@session.character_set_database = latin2; +SELECT @@session.character_set_database; +@@session.character_set_database +latin2 +SET @@session.character_set_database = swe7; +SELECT @@session.character_set_database; +@@session.character_set_database +swe7 +SET @@session.character_set_database = ascii; +SELECT @@session.character_set_database; +@@session.character_set_database +ascii +SET @@session.character_set_database = ujis; +SELECT @@session.character_set_database; +@@session.character_set_database +ujis +SET @@session.character_set_database = sjis; +SELECT @@session.character_set_database; +@@session.character_set_database +sjis +SET @@session.character_set_database = hebrew; +SELECT @@session.character_set_database; +@@session.character_set_database +hebrew +SET @@session.character_set_database = tis620; +SELECT @@session.character_set_database; +@@session.character_set_database +tis620 +SET @@session.character_set_database = euckr; +SELECT @@session.character_set_database; +@@session.character_set_database +euckr +SET @@session.character_set_database = koi8u; +SELECT @@session.character_set_database; +@@session.character_set_database +koi8u +SET @@session.character_set_database = gb2312; +SELECT @@session.character_set_database; +@@session.character_set_database +gb2312 +SET @@session.character_set_database = greek; +SELECT @@session.character_set_database; +@@session.character_set_database +greek +SET @@session.character_set_database = cp1250; +SELECT @@session.character_set_database; +@@session.character_set_database +cp1250 +SET @@session.character_set_database = gbk; +SELECT @@session.character_set_database; +@@session.character_set_database +gbk +SET @@session.character_set_database = latin5; +SELECT @@session.character_set_database; +@@session.character_set_database +latin5 +SET @@session.character_set_database = armscii8; +SELECT @@session.character_set_database; +@@session.character_set_database +armscii8 +SET @@session.character_set_database = utf8; +SELECT @@session.character_set_database; +@@session.character_set_database +utf8 +SET @@session.character_set_database = ucs2; +SELECT @@session.character_set_database; +@@session.character_set_database +ucs2 +SET @@session.character_set_database = cp866; +SELECT @@session.character_set_database; +@@session.character_set_database +cp866 +SET @@session.character_set_database = keybcs2; +SELECT @@session.character_set_database; +@@session.character_set_database +keybcs2 +SET @@session.character_set_database = macce; +SELECT @@session.character_set_database; +@@session.character_set_database +macce +SET @@session.character_set_database = macroman; +SELECT @@session.character_set_database; +@@session.character_set_database +macroman +SET @@session.character_set_database = cp852; +SELECT @@session.character_set_database; +@@session.character_set_database +cp852 +SET @@session.character_set_database = latin7; +SELECT @@session.character_set_database; +@@session.character_set_database +latin7 +SET @@session.character_set_database = cp1251; +SELECT @@session.character_set_database; +@@session.character_set_database +cp1251 +SET @@session.character_set_database = cp1256; +SELECT @@session.character_set_database; +@@session.character_set_database +cp1256 +SET @@session.character_set_database = cp1257; +SELECT @@session.character_set_database; +@@session.character_set_database +cp1257 +SET @@session.character_set_database = binary; +SELECT @@session.character_set_database; +@@session.character_set_database +binary +SET @@session.character_set_database = geostd8; +SELECT @@session.character_set_database; +@@session.character_set_database +geostd8 +SET @@session.character_set_database = cp932; +SELECT @@session.character_set_database; +@@session.character_set_database +cp932 +SET @@session.character_set_database = eucjpms; +SELECT @@session.character_set_database; +@@session.character_set_database +eucjpms +'#--------------------FN_DYNVARS_012_07-------------------------#' +SET @@global.character_set_database = big5; +SELECT @@global.character_set_database; +@@global.character_set_database +big5 +SET @@global.character_set_database = dec8; +SELECT @@global.character_set_database; +@@global.character_set_database +dec8 +SET @@global.character_set_database = cp850; +SELECT @@global.character_set_database; +@@global.character_set_database +cp850 +SET @@global.character_set_database = hp8; +SELECT @@global.character_set_database; +@@global.character_set_database +hp8 +SET @@global.character_set_database = koi8r; +SELECT @@global.character_set_database; +@@global.character_set_database +koi8r +SET @@global.character_set_database = latin1; +SELECT @@global.character_set_database; +@@global.character_set_database +latin1 +SET @@global.character_set_database = latin2; +SELECT @@global.character_set_database; +@@global.character_set_database +latin2 +SET @@global.character_set_database = swe7; +SELECT @@global.character_set_database; +@@global.character_set_database +swe7 +SET @@global.character_set_database = ascii; +SELECT @@global.character_set_database; +@@global.character_set_database +ascii +SET @@global.character_set_database = ujis; +SELECT @@global.character_set_database; +@@global.character_set_database +ujis +SET @@global.character_set_database = sjis; +SELECT @@global.character_set_database; +@@global.character_set_database +sjis +SET @@global.character_set_database = hebrew; +SELECT @@global.character_set_database; +@@global.character_set_database +hebrew +SET @@global.character_set_database = tis620; +SELECT @@global.character_set_database; +@@global.character_set_database +tis620 +SET @@global.character_set_database = euckr; +SELECT @@global.character_set_database; +@@global.character_set_database +euckr +SET @@global.character_set_database = koi8u; +SELECT @@global.character_set_database; +@@global.character_set_database +koi8u +SET @@global.character_set_database = gb2312; +SELECT @@global.character_set_database; +@@global.character_set_database +gb2312 +SET @@global.character_set_database = greek; +SELECT @@global.character_set_database; +@@global.character_set_database +greek +SET @@global.character_set_database = cp1250; +SELECT @@global.character_set_database; +@@global.character_set_database +cp1250 +SET @@global.character_set_database = gbk; +SELECT @@global.character_set_database; +@@global.character_set_database +gbk +SET @@global.character_set_database = latin5; +SELECT @@global.character_set_database; +@@global.character_set_database +latin5 +SET @@global.character_set_database = armscii8; +SELECT @@global.character_set_database; +@@global.character_set_database +armscii8 +SET @@global.character_set_database = utf8; +SELECT @@global.character_set_database; +@@global.character_set_database +utf8 +SET @@global.character_set_database = ucs2; +SELECT @@global.character_set_database; +@@global.character_set_database +ucs2 +SET @@global.character_set_database = cp866; +SELECT @@global.character_set_database; +@@global.character_set_database +cp866 +SET @@global.character_set_database = keybcs2; +SELECT @@global.character_set_database; +@@global.character_set_database +keybcs2 +SET @@global.character_set_database = macce; +SELECT @@global.character_set_database; +@@global.character_set_database +macce +SET @@global.character_set_database = macroman; +SELECT @@global.character_set_database; +@@global.character_set_database +macroman +SET @@global.character_set_database = cp852; +SELECT @@global.character_set_database; +@@global.character_set_database +cp852 +SET @@global.character_set_database = latin7; +SELECT @@global.character_set_database; +@@global.character_set_database +latin7 +SET @@global.character_set_database = cp1251; +SELECT @@global.character_set_database; +@@global.character_set_database +cp1251 +SET @@global.character_set_database = cp1256; +SELECT @@global.character_set_database; +@@global.character_set_database +cp1256 +SET @@global.character_set_database = cp1257; +SELECT @@global.character_set_database; +@@global.character_set_database +cp1257 +SET @@global.character_set_database = binary; +SELECT @@global.character_set_database; +@@global.character_set_database +binary +SET @@global.character_set_database = geostd8; +SELECT @@global.character_set_database; +@@global.character_set_database +geostd8 +SET @@global.character_set_database = cp932; +SELECT @@global.character_set_database; +@@global.character_set_database +cp932 +SET @@global.character_set_database = eucjpms; +SELECT @@global.character_set_database; +@@global.character_set_database +eucjpms +'#--------------------FN_DYNVARS_012_08-------------------------#' +SET @@character_set_database = UTF8; +SELECT @@character_set_database; +@@character_set_database +utf8 +SET @@character_set_database = utf8; +SELECT @@character_set_database; +@@character_set_database +utf8 +SET @@global.character_set_database = uTf8; +SELECT @@global.character_set_database; +@@global.character_set_database +utf8 +'#--------------------FN_DYNVARS_012_09-------------------------#' +SET @@character_set_database = 1; +SELECT @@character_set_database; +@@character_set_database +big5 +SET @@character_set_database = 2; +SELECT @@character_set_database; +@@character_set_database +latin2 +SET @@character_set_database = 3; +SELECT @@character_set_database; +@@character_set_database +dec8 +SET @@character_set_database = 36; +SELECT @@character_set_database; +@@character_set_database +cp866 +SET @@character_set_database = 99; +SELECT @@character_set_database; +@@character_set_database +cp1250 +SET @@character_set_database = 100; +ERROR 42000: Unknown character set: '100' +SET @@global.character_set_database = 1; +SELECT @@global.character_set_database; +@@global.character_set_database +big5 +SET @@global.character_set_database = 2; +SELECT @@global.character_set_database; +@@global.character_set_database +latin2 +SET @@global.character_set_database = 3; +SELECT @@global.character_set_database; +@@global.character_set_database +dec8 +SET @@global.character_set_database = 36; +SELECT @@global.character_set_database; +@@global.character_set_database +cp866 +SET @@global.character_set_database = 99; +SELECT @@global.character_set_database; +@@global.character_set_database +cp1250 +SET @@global.character_set_database = 100; +ERROR 42000: Unknown character set: '100' +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +@total_charset +36 +'Bug # 34843: character sets are mapped in such a way that 100 and following'; +'numbers gives error, and before 100 the 36 mapped wraps arround several times.'; +'#--------------------FN_DYNVARS_012_10-------------------------#' +SET @@character_set_database = "grek"; +ERROR 42000: Unknown character set: 'grek' +SET @@character_set_database = utf 8; +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 '8' at line 1 +SET @@character_set_database = 0; +ERROR 42000: Unknown character set: '0' +SET @@character_set_database = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_database' +SET @@character_set_database = -1; +ERROR 42000: Unknown character set: '-1' +SET @@character_set_database = ''; +ERROR 42000: Unknown character set: '' +SET @@character_set_database = 'latin 2'; +ERROR 42000: Unknown character set: 'latin 2' +SET @@character_set_database = true; +SELECT @@character_set_database AS res_with_true; +res_with_true +big5 +SET @@character_set_database = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_012_11-------------------------#' +SET @@global.character_set_database = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@global.character_set_database = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@global.character_set_database = 0; +ERROR 42000: Unknown character set: '0' +SET @@global.character_set_database = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_database' +SET @@global.character_set_database = -1; +ERROR 42000: Unknown character set: '-1' +SET @@global.character_set_database = ''; +ERROR 42000: Unknown character set: '' +SET @@global.character_set_database = 'utf'; +ERROR 42000: Unknown character set: 'utf' +SET @@global.character_set_database = true; +SET @@global.character_set_database = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_012_12-------------------------#' +SELECT @@global.character_set_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_database') AS res; +res +1 +SET @@global.character_set_database = 1; +SELECT @@global.character_set_database; +@@global.character_set_database +big5 +SELECT @@global.character_set_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_database') AS res; +res +1 +'#--------------------FN_DYNVARS_012_13-------------------------#' +SELECT @@character_set_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_database') AS res; +res +1 +SELECT @@local.character_set_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_database') AS res; +res +1 +SELECT @@session.character_set_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_database') AS res; +res +1 +SET @@global.character_set_database = @global_start_value; +SELECT @@global.character_set_database; +@@global.character_set_database +latin1 +SET @@session.character_set_database = @session_start_value; +SELECT @@session.character_set_database; +@@session.character_set_database +latin1 diff --git a/mysql-test/r/character_set_database_func.result b/mysql-test/r/character_set_database_func.result new file mode 100644 index 00000000000..69e718addf3 --- /dev/null +++ b/mysql-test/r/character_set_database_func.result @@ -0,0 +1,76 @@ +'#--------------------FN_DYNVARS_008_01-------------------------#' +SET @global_character_set_database = @@global.character_set_database; +SET @session_character_set_database = @@session.character_set_database; +SET @session_character_set_server = @@session.character_set_server; +SET @@global.character_set_database = utf8; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.character_set_database; +@@global.character_set_database +utf8 +SELECT @@session.character_set_database; +@@session.character_set_database +latin1 +'Bug#35356: session character_set_database differ from global character_set_database' +'#--------------------FN_DYNVARS_008_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1; +'--check if setting session character_set_database effects new databases' +SET @@session.character_set_server = utf8; +SELECT @@session.character_set_database; +@@session.character_set_database +latin1 +SET @@session.character_set_database = latin5; +SELECT @@session.character_set_database; +@@session.character_set_database +latin5 +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +Database Create Database +db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ +CREATE TABLE t1(a INT, b VARCHAR(40)); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `b` varchar(40) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 +DROP TABLE t1; +DROP DATABASE db1; +'Bug#35357: character_set_database does not effects CREATE DATABASE without characater set' +'--ascii character set specified--' +CREATE DATABASE db1 CHARACTER SET ascii; +USE db1; +SHOW CREATE DATABASE db1; +Database Create Database +db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET ascii */ +CREATE TABLE t1(a INT, b VARCHAR(40)); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int(11) DEFAULT NULL, + `b` varchar(40) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=ascii +DROP TABLE t1; +DROP DATABASE db1; +'------Check if load data uses character_set_database----------' +USE test; +CREATE TABLE t1 (a CHAR(4) CHARACTER SET utf8) ENGINE=MyISAM CHARACTER SET utf8; +'Verify with latin'; +SET @@session.character_set_database = latin1; +LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; +count(*) +2433 +TRUNCATE TABLE t1; +'Verify with utf8'; +SET @@session.character_set_database = utf8; +LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; +count(*) +1 +DROP TABLE IF EXISTS t1; +SET @@global.character_set_database = @global_character_set_database; +SET @@session.character_set_database = @session_character_set_database; +SET @@session.character_set_server = @session_character_set_server; diff --git a/mysql-test/r/character_set_filesystem_basic.result b/mysql-test/r/character_set_filesystem_basic.result new file mode 100644 index 00000000000..11f85528593 --- /dev/null +++ b/mysql-test/r/character_set_filesystem_basic.result @@ -0,0 +1,485 @@ +SET @global_start_value = @@global.character_set_filesystem; +SELECT @global_start_value; +@global_start_value +binary +SET @session_start_value = @@character_set_filesystem; +SELECT @session_start_value; +@session_start_value +binary +SET @session_start_value = @@local.character_set_filesystem; +SELECT @session_start_value; +@session_start_value +binary +SET @session_start_value = @@session.character_set_filesystem; +SELECT @session_start_value; +@session_start_value +binary +'#--------------------FN_DYNVARS_008_01------------------#' +SELECT character_set_filesystem; +ERROR 42S22: Unknown column 'character_set_filesystem' in 'field list' +SET character_set_filesystem=utf8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +utf8 +SET global.character_set_filesystem=utf8; +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 'character_set_filesystem=utf8' at line 1 +SET session character_set_filesystem=utf8; +SELECT session character_set_filesystem; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global character_set_filesystem=utf8; +SELECT global character_set_filesystem; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_008_02-------------------------#' +SET @@character_set_filesystem = latin5; +SET @@character_set_filesystem = DEFAULT; +SELECT @@character_set_filesystem AS DEFAULT_VALUE; +DEFAULT_VALUE +utf8 +SET @@global.character_set_filesystem = latin5; +SET @@global.character_set_filesystem = DEFAULT; +SELECT @@global.character_set_filesystem AS DEFAULT_VALUE; +DEFAULT_VALUE +binary +'#--------------------FN_DYNVARS_008_03-------------------------#' +SET @@session.character_set_filesystem = utf8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +utf8 +SET @@global.character_set_filesystem = latin2; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +latin2 +SELECT @@session.character_set_filesystem AS res_is_utf8; +res_is_utf8 +utf8 +SET @@session.character_set_filesystem = latin5; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +latin5 +SELECT @@global.character_set_filesystem AS res_is_latin2; +res_is_latin2 +latin2 +SELECT @@global.character_set_filesystem= +@@session.character_set_filesystem AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_008_04-------------------------#' +SELECT @@character_set_filesystem = @@session.character_set_filesystem AS res; +res +1 +SELECT @@character_set_filesystem = @@local.character_set_filesystem AS res; +res +1 +'#--------------------FN_DYNVARS_008_05-------------------------#' +SET @@character_set_filesystem = utf8 + latin2; +ERROR 42S22: Unknown column 'utf8' in 'field list' +'#--------------------FN_DYNVARS_008_06-------------------------#' +SET @@session.character_set_filesystem = big5; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +big5 +SET @@session.character_set_filesystem = dec8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +dec8 +SET @@session.character_set_filesystem = cp850; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp850 +SET @@session.character_set_filesystem = hp8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +hp8 +SET @@session.character_set_filesystem = koi8r; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +koi8r +SET @@session.character_set_filesystem = latin1; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +latin1 +SET @@session.character_set_filesystem = latin2; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +latin2 +SET @@session.character_set_filesystem = swe7; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +swe7 +SET @@session.character_set_filesystem = ascii; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +ascii +SET @@session.character_set_filesystem = ujis; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +ujis +SET @@session.character_set_filesystem = sjis; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +sjis +SET @@session.character_set_filesystem = hebrew; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +hebrew +SET @@session.character_set_filesystem = tis620; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +tis620 +SET @@session.character_set_filesystem = euckr; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +euckr +SET @@session.character_set_filesystem = koi8u; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +koi8u +SET @@session.character_set_filesystem = gb2312; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +gb2312 +SET @@session.character_set_filesystem = greek; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +greek +SET @@session.character_set_filesystem = cp1250; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp1250 +SET @@session.character_set_filesystem = gbk; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +gbk +SET @@session.character_set_filesystem = latin5; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +latin5 +SET @@session.character_set_filesystem = armscii8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +armscii8 +SET @@session.character_set_filesystem = utf8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +utf8 +SET @@session.character_set_filesystem = ucs2; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +ucs2 +SET @@session.character_set_filesystem = cp866; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp866 +SET @@session.character_set_filesystem = keybcs2; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +keybcs2 +SET @@session.character_set_filesystem = macce; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +macce +SET @@session.character_set_filesystem = macroman; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +macroman +SET @@session.character_set_filesystem = cp852; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp852 +SET @@session.character_set_filesystem = latin7; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +latin7 +SET @@session.character_set_filesystem = cp1251; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp1251 +SET @@session.character_set_filesystem = cp1256; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp1256 +SET @@session.character_set_filesystem = cp1257; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp1257 +SET @@session.character_set_filesystem = binary; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +binary +SET @@session.character_set_filesystem = geostd8; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +geostd8 +SET @@session.character_set_filesystem = cp932; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +cp932 +SET @@session.character_set_filesystem = eucjpms; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +eucjpms +'#--------------------FN_DYNVARS_008_07-------------------------#' +SET @@global.character_set_filesystem = big5; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +big5 +SET @@global.character_set_filesystem = dec8; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +dec8 +SET @@global.character_set_filesystem = cp850; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp850 +SET @@global.character_set_filesystem = hp8; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +hp8 +SET @@global.character_set_filesystem = koi8r; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +koi8r +SET @@global.character_set_filesystem = latin1; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +latin1 +SET @@global.character_set_filesystem = latin2; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +latin2 +SET @@global.character_set_filesystem = swe7; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +swe7 +SET @@global.character_set_filesystem = ascii; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +ascii +SET @@global.character_set_filesystem = ujis; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +ujis +SET @@global.character_set_filesystem = sjis; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +sjis +SET @@global.character_set_filesystem = hebrew; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +hebrew +SET @@global.character_set_filesystem = tis620; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +tis620 +SET @@global.character_set_filesystem = euckr; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +euckr +SET @@global.character_set_filesystem = koi8u; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +koi8u +SET @@global.character_set_filesystem = gb2312; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +gb2312 +SET @@global.character_set_filesystem = greek; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +greek +SET @@global.character_set_filesystem = cp1250; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp1250 +SET @@global.character_set_filesystem = gbk; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +gbk +SET @@global.character_set_filesystem = latin5; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +latin5 +SET @@global.character_set_filesystem = armscii8; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +armscii8 +SET @@global.character_set_filesystem = utf8; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +utf8 +SET @@global.character_set_filesystem = ucs2; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +ucs2 +SET @@global.character_set_filesystem = cp866; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp866 +SET @@global.character_set_filesystem = keybcs2; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +keybcs2 +SET @@global.character_set_filesystem = macce; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +macce +SET @@global.character_set_filesystem = macroman; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +macroman +SET @@global.character_set_filesystem = cp852; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp852 +SET @@global.character_set_filesystem = latin7; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +latin7 +SET @@global.character_set_filesystem = cp1251; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp1251 +SET @@global.character_set_filesystem = cp1256; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp1256 +SET @@global.character_set_filesystem = cp1257; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp1257 +SET @@global.character_set_filesystem = binary; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +binary +SET @@global.character_set_filesystem = geostd8; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +geostd8 +SET @@global.character_set_filesystem = cp932; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +cp932 +SET @@global.character_set_filesystem = eucjpms; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +eucjpms +'#--------------------FN_DYNVARS_008_08-------------------------#' +SET @@character_set_filesystem = UTF8; +SELECT @@character_set_filesystem; +@@character_set_filesystem +utf8 +SET @@character_set_filesystem = utf8; +SELECT @@character_set_filesystem; +@@character_set_filesystem +utf8 +SET @@character_set_filesystem = uTf8; +SELECT @@character_set_filesystem; +@@character_set_filesystem +utf8 +'#--------------------FN_DYNVARS_008_09-------------------------#' +SET @@character_set_filesystem = 1; +SELECT @@character_set_filesystem; +@@character_set_filesystem +big5 +SET @@character_set_filesystem = 2; +SELECT @@character_set_filesystem; +@@character_set_filesystem +latin2 +SET @@character_set_filesystem = 3; +SELECT @@character_set_filesystem; +@@character_set_filesystem +dec8 +SET @@character_set_filesystem = 36; +SELECT @@character_set_filesystem; +@@character_set_filesystem +cp866 +SET @@character_set_filesystem = 99; +SELECT @@character_set_filesystem; +@@character_set_filesystem +cp1250 +SET @@character_set_filesystem = 100; +ERROR 42000: Unknown character set: '100' +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +@total_charset +36 +'Bug # 34843: character sets are mapped in such a way that 100 and following ' +'numbers give error, and before 100 the 36 mapped wraps arround several times.' +'#--------------------FN_DYNVARS_008_10-------------------------#' +SET @@character_set_filesystem = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@character_set_filesystem = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@character_set_filesystem = 0; +ERROR 42000: Unknown character set: '0' +SET @@character_set_filesystem = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_filesystem' +SET @@character_set_filesystem = -1; +ERROR 42000: Unknown character set: '-1' +SET @@character_set_filesystem = ''; +ERROR 42000: Unknown character set: '' +SET @@character_set_filesystem = 'utf'; +ERROR 42000: Unknown character set: 'utf' +SET @@character_set_filesystem = true; +SELECT @@character_set_filesystem AS res_with_true; +res_with_true +big5 +SET @@character_set_filesystem = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_008_11-------------------------#' +SET @@global.character_set_filesystem = abc; +ERROR 42000: Unknown character set: 'abc' +SET @@global.character_set_filesystem = 1utf8; +ERROR 42000: Unknown character set: '1utf8' +SET @@global.character_set_filesystem = 0; +ERROR 42000: Unknown character set: '0' +SET @@global.character_set_filesystem = 1.1; +ERROR 42000: Incorrect argument type to variable 'character_set_filesystem' +SET @@global.character_set_filesystem = -1; +ERROR 42000: Unknown character set: '-1' +SET @@global.character_set_filesystem = ''; +ERROR 42000: Unknown character set: '' +SET @@global.character_set_filesystem = 'utf'; +ERROR 42000: Unknown character set: 'utf' +SET @@global.character_set_filesystem = true; +SET @@global.character_set_filesystem = ON; +ERROR 42000: Unknown character set: 'ON' +'#--------------------FN_DYNVARS_008_12-------------------------#' +SELECT @@global.character_set_filesystem = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_filesystem') AS res; +res +1 +SET @@global.character_set_filesystem = 1; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +big5 +SELECT @@global.character_set_filesystem = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_filesystem') AS res; +res +1 +'#--------------------FN_DYNVARS_008_13-------------------------#' +SELECT @@character_set_filesystem = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_filesystem') AS res; +res +1 +SELECT @@local.character_set_filesystem = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_filesystem') AS res; +res +1 +SELECT @@session.character_set_filesystem = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='character_set_filesystem') AS res; +res +1 +SET @@global.character_set_filesystem = @global_start_value; +SELECT @@global.character_set_filesystem; +@@global.character_set_filesystem +binary +SET @@session.character_set_filesystem = @session_start_value; +SELECT @@session.character_set_filesystem; +@@session.character_set_filesystem +binary diff --git a/mysql-test/r/character_set_results_basic.result b/mysql-test/r/character_set_results_basic.result new file mode 100644 index 0000000000000000000000000000000000000000..71c01a3dc0d3c966fb8a4626a4476b364b72c87d GIT binary patch literal 16478 zcmd5@+iu%95Y4l`f@mMy>}~^Jk~9|tjhi~#0J&i8q>DZovclMEWXaGa*?iLeyPX2{o!cb?)2bi)#iOGTgQsf4~D~=A=~Yay4@po=Rf+v zv(KEsOXfanm5ymK7yk6%a_^pbZWIfKTUKg%lEe=O%S_5vvMM~MxPc|mB$>+Ra+s7e z^Q+x%AF&@n!e;gpXSUCH7zUwm;U!2yHu~$5MK6AA|8op3aOaW5GtTC=pV%J!*N!0; zA#907;NM3q4%Dct7deiHPdsGsBXXTR0IV1sy3<*lf{GDI#F@|Sup*ptzAXk!p6hd_ zHc*;Jl&GSn$5s}H()CTpmanJ^GGz*wrC|nY=;{P$3Ey2!`1Ch2@1YQ#mgXf?KUuBz zL~deMUkB&?yUSZGh0F2!BbJ(uzxOZi2FF(J<1%ycqPsFLEYZPub$ZwUsB37+&x$H7 z_C0g#(P{|Of1~PvdzrwWVS@gSeDi93}g zyP2F9Xlea75#MvC!F!BABN97{gT1y^snCg2%Ga*!V#%u z`RX*st?g1=Z zJ>}vB-n_E}8j(0^lvtnsi%`}uhU>jQFv7Hkn_jp{GJLpBDJ&Vbelaj1s;)nI%(4D3Dsv=?i;)uDLkUj zb~qPxe3Sdazol1hD?=ns;LV;S(SuGr!aC6!8_e2Dww$eKOFSEiE4c|Bu50`I&Fvux zN2Gq_FO#)=Gk9aAfJFMa?KtqL_xdD-M#_9TOE@}p7=QxUD7!=?PC#7J*GMW;;3XW9 zTJHKaZh|Img-0ZpWxK)ax58V8ywSY|XU6_Iyo%-Tq+=`9$Jh;d$S!K{s}n%IKj0PBj@g4r8+b4m+_1k5W!3ubR*&dDqo5-=B4 z7R=m8tZOV75bzcy7R=nps|zd`5b&<(E112JIH#^)NP@W_u3+Y7Voh4XfPi;JS;6d$ z#0rg8qw}&#En0x0amsT+*HmiJDl{5%CVyzR@><*(9*w=Arqp55p#YJ%iGdFHxU0T6_6mL;k!A4N1bzKF+lC>)@t6=6v zYH^1rW|-Xf`on!KVueP_F(rUBRYMfo8qB(yQp;z_oM|Z-Qg%W$7H!F#2`L8V6&(e$ zHzrt4MZu83=T#8}8(^f)ODGtWjCWo^!OV@!QjVcz*s6R|i+MfqvQdXQxT&SitXTb-dK38eh}7N=FKGy;zqTRm1DIp3!ErC>fBLG7J)=e@q4r1un5xEXI z3m6~LFG8Il@#7D_ZL{;?%@w=2KED}W^=~h3uE(RZZ-cA;&e^yAuzz+t7>?l^=F#?Y zVRMM!U+%Nj+qYU@k|}%7dbi=@)HzJ6NW#_xNG)%##jR>)J5bhg z)4K3wkBbvS?5D|``!S1O7F_hMJlUaZPdr}HyJDL2$0Ai#P5#(1LA`rdm~|DD38)3Z zhHT13pbATvrq|J`XvSfpzo$@cmcGLN?8dXP8X#VnfBmR`{Z$Td!fvjKbH2H55w}W7 zyI8t;Ub|-urR`ly9WyQR;-vOjR1Nr@O*fGNckR7o!h3@~WuV+(YZ(yN-eCs34L6zr zHQR6E^(lkt8*CXv!&%ywfX~ay4s&SSyy$H%bPF#OE6N_BkS*PgW-T> zpU2nztHDV{tL8RSrDxfhLWo<_*WO<~Dzux0q2Ud0`B`_-M}yHwT 120; +@total_collations > 120 +1 +'#--------------------FN_DYNVARS_015_10-------------------------#' +SET @@collation_connection = latin7_binary; +ERROR HY000: Unknown collation: 'latin7_binary' +SET @@collation_connection = 'eucjpms_japanese_cs'; +ERROR HY000: Unknown collation: 'eucjpms_japanese_cs' +SET @@collation_connection = 0; +ERROR HY000: Unknown collation: '0' +SET @@collation_connection = 1.01; +ERROR 42000: Incorrect argument type to variable 'collation_connection' +SET @@collation_connection = -1; +ERROR HY000: Unknown collation: '-1' +SET @@collation_connection = ''; +ERROR HY000: Unknown collation: '' +SET @@collation_connection = ' eucjpms_bin'; +ERROR HY000: Unknown collation: ' eucjpms_bin' +SET @@collation_connection = true; +SELECT @@collation_connection AS res_with_true; +res_with_true +big5_chinese_ci +SET @@collation_connection = ON; +ERROR HY000: Unknown collation: 'ON' +'#--------------------FN_DYNVARS_015_11-------------------------#' +SET @@global.collation_connection = latin7_binary; +ERROR HY000: Unknown collation: 'latin7_binary' +SET @@global.collation_connection = 'eucjpms_japanese_cs'; +ERROR HY000: Unknown collation: 'eucjpms_japanese_cs' +SET @@global.collation_connection = 0; +ERROR HY000: Unknown collation: '0' +SET @@global.collation_connection = 1.1; +ERROR 42000: Incorrect argument type to variable 'collation_connection' +SET @@global.collation_connection = -1; +ERROR HY000: Unknown collation: '-1' +SET @@global.collation_connection = ""; +ERROR HY000: Unknown collation: '' +SET @@global.collation_connection = ' eucjpms_bin'; +ERROR HY000: Unknown collation: ' eucjpms_bin' +SET @@global.collation_connection = true; +SET @@global.collation_connection = ON; +ERROR HY000: Unknown collation: 'ON' +'#--------------------FN_DYNVARS_015_12-------------------------#' +SELECT @@global.collation_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='collation_connection') AS res; +res +1 +SET @@global.collation_connection = 1; +SELECT @@global.collation_connection; +@@global.collation_connection +big5_chinese_ci +SELECT @@global.collation_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='collation_connection') AS res; +res +1 +'#--------------------FN_DYNVARS_015_13-------------------------#' +SELECT @@collation_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_connection') AS res; +res +1 +SELECT @@local.collation_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_connection') AS res; +res +1 +SELECT @@session.collation_connection = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_connection') AS res; +res +1 +SET @@global.collation_connection = @global_start_value; +SELECT @@global.collation_connection; +@@global.collation_connection +latin1_swedish_ci +SET @@session.collation_connection = @session_start_value; +SELECT @@session.collation_connection; +@@session.collation_connection +latin1_swedish_ci diff --git a/mysql-test/r/collation_connection_func.result b/mysql-test/r/collation_connection_func.result new file mode 100644 index 00000000000..18f82dc60e1 --- /dev/null +++ b/mysql-test/r/collation_connection_func.result @@ -0,0 +1,60 @@ +'#--------------------FN_DYNVARS_015_01-------------------------#' +SET @global_collation_connection = @@global.collation_connection; +SET @session_collation_connection = @@session.collation_connection; +SET @@global.collation_connection = latin1_danish_ci; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.collation_connection; +@@global.collation_connection +latin1_danish_ci +SELECT @@session.collation_connection; +@@session.collation_connection +latin1_danish_ci +'#--------------------FN_DYNVARS_015_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1; +'----check if collation_connection update character_set_connection---' +SET @@session.collation_connection = utf8_spanish_ci; +SELECT @@collation_connection, @@character_set_database; +@@collation_connection @@character_set_database +utf8_spanish_ci latin1 +'---check if collation_connection works for literal string comparision--' +SET @@session.collation_connection = latin1_swedish_ci; +SELECT 'mysql'='MySql'; +'mysql'='MySql' +1 +SELECT _latin2'mysql' COLLATE latin2_general_ci='MySql'; +_latin2'mysql' COLLATE latin2_general_ci='MySql' +1 +SELECT _utf8'mysql'=_utf8'MySql' COLLATE utf8_unicode_ci; +_utf8'mysql'=_utf8'MySql' COLLATE utf8_unicode_ci +1 +SET @@session.collation_connection = latin1_general_cs; +SELECT 'mysql'='MySql'; +'mysql'='MySql' +0 +SELECT _latin2'mysql'COLLATE latin2_general_ci='MySql'; +_latin2'mysql'COLLATE latin2_general_ci='MySql' +1 +SELECT _utf8'mysql'COLLATE utf8_danish_ci=_utf8'MySql'COLLATE utf8_unicode_ci; +ERROR HY000: Illegal mix of collations (utf8_danish_ci,EXPLICIT) and (utf8_unicode_ci,EXPLICIT) for operation '=' +'---collation_connection does not effect comparision with column---' +CREATE TABLE t1(a CHAR(20)CHARACTER SET latin1 COLLATE latin1_german2_ci); +INSERT INTO t1 VALUES('Mller'); +SET @@session.collation_connection = latin2_hungarian_ci; +SELECT * FROM t1 WHERE a='Mller'; +a +Mller +SET @@session.collation_connection = latin1_general_cs; +SELECT * FROM t1 WHERE a='mller'; +a +Mller +'check if string literal collation is used'; +SELECT * FROM t1 WHERE a='mller' COLLATE latin1_general_cs; +a +SELECT * FROM t1 WHERE a='mller' COLLATE latin1_german1_ci; +a +Mller +DROP TABLE t1; +SET @@global.collation_connection = @global_collation_connection; +SET @@session.collation_connection = @session_collation_connection; diff --git a/mysql-test/r/collation_database_basic.result b/mysql-test/r/collation_database_basic.result new file mode 100644 index 00000000000..d4375b7c8e4 --- /dev/null +++ b/mysql-test/r/collation_database_basic.result @@ -0,0 +1,1224 @@ +SET @global_start_value = @@global.collation_database; +SELECT @global_start_value; +@global_start_value +latin1_swedish_ci +SET @session_start_value = @@collation_database; +SELECT @session_start_value; +@session_start_value +latin1_swedish_ci +SET @session_start_value = @@local.collation_database; +SELECT @session_start_value; +@session_start_value +latin1_swedish_ci +SET @session_start_value = @@session.collation_database; +SELECT @session_start_value; +@session_start_value +latin1_swedish_ci +'#--------------------FN_DYNVARS_016_01------------------#' +SELECT collation_database; +ERROR 42S22: Unknown column 'collation_database' in 'field list' +SET collation_database=utf8_unicode_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_unicode_ci +SET global.collation_database=utf8_unicode_ci; +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 'collation_database=utf8_unicode_ci' at line 1 +SET session collation_database=utf8_unicode_ci; +SELECT session collation_database; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global collation_database=utf8_unicode_ci; +SELECT global collation_database; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_016_02-------------------------#' +SET @@collation_database = latin1_bin; +SET @@collation_database = DEFAULT; +SELECT @@collation_database AS DEFAULT_VALUE; +DEFAULT_VALUE +utf8_unicode_ci +SET @@global.collation_database = latin1_bin; +SET @@global.collation_database = DEFAULT; +SELECT @@global.collation_database; +@@global.collation_database +latin1_swedish_ci +'#--------------------FN_DYNVARS_016_03-------------------------#' +SET @@session.collation_database = utf8_polish_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_polish_ci +SET @@global.collation_database = latin7_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin7_general_ci +SELECT @@session.collation_database AS res_is_utf8_polish_ci; +res_is_utf8_polish_ci +utf8_polish_ci +SET @@session.collation_database = latin7_bin; +SELECT @@session.collation_database; +@@session.collation_database +latin7_bin +SELECT @@global.collation_database AS res_is_latin7_general_ci; +res_is_latin7_general_ci +latin7_general_ci +SELECT @@global.collation_database=@@session.collation_database AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_016_04-------------------------#' +SELECT @@collation_database = @@session.collation_database AS res; +res +1 +SELECT @@collation_database = @@local.collation_database AS res; +res +1 +'#--------------------FN_DYNVARS_016_05-------------------------#' +SET @@collation_database = latin7_general_ci + latin7_general_cs; +ERROR 42S22: Unknown column 'latin7_general_ci' in 'field list' +'#--------------------FN_DYNVARS_016_06-------------------------#' +SET @@session.collation_database = big5_chinese_ci; +SELECT @@session.collation_database; +@@session.collation_database +big5_chinese_ci +SET @@session.collation_database = big5_bin; +SELECT @@session.collation_database; +@@session.collation_database +big5_bin +SET @@session.collation_database = dec8_swedish_ci; +SELECT @@session.collation_database; +@@session.collation_database +dec8_swedish_ci +SET @@session.collation_database = dec8_bin; +SELECT @@session.collation_database; +@@session.collation_database +dec8_bin +SET @@session.collation_database = cp850_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp850_general_ci +SET @@session.collation_database = cp850_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp850_bin +SET @@session.collation_database = hp8_english_ci; +SELECT @@session.collation_database; +@@session.collation_database +hp8_english_ci +SET @@session.collation_database = hp8_bin; +SELECT @@session.collation_database; +@@session.collation_database +hp8_bin +SET @@session.collation_database = koi8r_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +koi8r_general_ci +SET @@session.collation_database = koi8r_bin; +SELECT @@session.collation_database; +@@session.collation_database +koi8r_bin +SET @@session.collation_database = latin1_german1_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin1_german1_ci +SET @@session.collation_database = latin1_swedish_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin1_swedish_ci +SET @@session.collation_database = latin1_danish_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin1_danish_ci +SET @@session.collation_database = latin1_german2_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin1_german2_ci +SET @@session.collation_database = latin1_bin; +SELECT @@session.collation_database; +@@session.collation_database +latin1_bin +SET @@session.collation_database = latin1_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin1_general_ci +SET @@session.collation_database = latin1_general_cs; +SELECT @@session.collation_database; +@@session.collation_database +latin1_general_cs +SET @@session.collation_database = latin1_spanish_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin1_spanish_ci +SET @@session.collation_database = latin2_czech_cs; +SELECT @@session.collation_database; +@@session.collation_database +latin2_czech_cs +SET @@session.collation_database = latin2_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin2_general_ci +SET @@session.collation_database = latin2_hungarian_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin2_hungarian_ci +SET @@session.collation_database = latin2_croatian_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin2_croatian_ci +SET @@session.collation_database = latin2_bin; +SELECT @@session.collation_database; +@@session.collation_database +latin2_bin +SET @@session.collation_database = swe7_swedish_ci; +SELECT @@session.collation_database; +@@session.collation_database +swe7_swedish_ci +SET @@session.collation_database = swe7_bin; +SELECT @@session.collation_database; +@@session.collation_database +swe7_bin +SET @@session.collation_database = ascii_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +ascii_general_ci +SET @@session.collation_database = ascii_bin; +SELECT @@session.collation_database; +@@session.collation_database +ascii_bin +SET @@session.collation_database = ujis_japanese_ci; +SELECT @@session.collation_database; +@@session.collation_database +ujis_japanese_ci +SET @@session.collation_database = ujis_bin; +SELECT @@session.collation_database; +@@session.collation_database +ujis_bin +SET @@session.collation_database = sjis_japanese_ci; +SELECT @@session.collation_database; +@@session.collation_database +sjis_japanese_ci +SET @@session.collation_database = sjis_bin; +SELECT @@session.collation_database; +@@session.collation_database +sjis_bin +SET @@session.collation_database = hebrew_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +hebrew_general_ci +SET @@session.collation_database = hebrew_bin; +SELECT @@session.collation_database; +@@session.collation_database +hebrew_bin +SET @@session.collation_database = tis620_thai_ci; +SELECT @@session.collation_database; +@@session.collation_database +tis620_thai_ci +SET @@session.collation_database = tis620_bin; +SELECT @@session.collation_database; +@@session.collation_database +tis620_bin +SET @@session.collation_database = euckr_korean_ci; +SELECT @@session.collation_database; +@@session.collation_database +euckr_korean_ci +SET @@session.collation_database = euckr_bin; +SELECT @@session.collation_database; +@@session.collation_database +euckr_bin +SET @@session.collation_database = koi8u_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +koi8u_general_ci +SET @@session.collation_database = koi8u_bin; +SELECT @@session.collation_database; +@@session.collation_database +koi8u_bin +SET @@session.collation_database = gb2312_chinese_ci; +SELECT @@session.collation_database; +@@session.collation_database +gb2312_chinese_ci +SET @@session.collation_database = gb2312_bin; +SELECT @@session.collation_database; +@@session.collation_database +gb2312_bin +SET @@session.collation_database = greek_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +greek_general_ci +SET @@session.collation_database = greek_bin; +SELECT @@session.collation_database; +@@session.collation_database +greek_bin +SET @@session.collation_database = cp1250_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1250_general_ci +SET @@session.collation_database = cp1250_czech_cs; +SELECT @@session.collation_database; +@@session.collation_database +cp1250_czech_cs +SET @@session.collation_database = cp1250_croatian_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1250_croatian_ci +SET @@session.collation_database = cp1250_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp1250_bin +SET @@session.collation_database = cp1250_polish_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1250_polish_ci +SET @@session.collation_database = gbk_chinese_ci; +SELECT @@session.collation_database; +@@session.collation_database +gbk_chinese_ci +SET @@session.collation_database = gbk_bin; +SELECT @@session.collation_database; +@@session.collation_database +gbk_bin +SET @@session.collation_database = latin5_turkish_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin5_turkish_ci +SET @@session.collation_database = latin5_bin; +SELECT @@session.collation_database; +@@session.collation_database +latin5_bin +SET @@session.collation_database = armscii8_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +armscii8_general_ci +SET @@session.collation_database = armscii8_bin; +SELECT @@session.collation_database; +@@session.collation_database +armscii8_bin +SET @@session.collation_database = utf8_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_general_ci +SET @@session.collation_database = utf8_bin; +SELECT @@session.collation_database; +@@session.collation_database +utf8_bin +SET @@session.collation_database = utf8_unicode_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_unicode_ci +SET @@session.collation_database = utf8_icelandic_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_icelandic_ci +SET @@session.collation_database = utf8_latvian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_latvian_ci +SET @@session.collation_database = utf8_romanian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_romanian_ci +SET @@session.collation_database = utf8_slovenian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_slovenian_ci +SET @@session.collation_database = utf8_polish_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_polish_ci +SET @@session.collation_database = utf8_estonian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_estonian_ci +SET @@session.collation_database = utf8_spanish_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_spanish_ci +SET @@session.collation_database = utf8_swedish_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_swedish_ci +SET @@session.collation_database = utf8_turkish_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_turkish_ci +SET @@session.collation_database = utf8_czech_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_czech_ci +SET @@session.collation_database = utf8_danish_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_danish_ci +SET @@session.collation_database = utf8_lithuanian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_lithuanian_ci +SET @@session.collation_database = utf8_slovak_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_slovak_ci +SET @@session.collation_database = utf8_spanish2_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_spanish2_ci +SET @@session.collation_database = utf8_roman_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_roman_ci +SET @@session.collation_database = utf8_persian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_persian_ci +SET @@session.collation_database = utf8_esperanto_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_esperanto_ci +SET @@session.collation_database = utf8_hungarian_ci; +SELECT @@session.collation_database; +@@session.collation_database +utf8_hungarian_ci +SET @@session.collation_database = ucs2_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_general_ci +SET @@session.collation_database = ucs2_bin; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_bin +SET @@session.collation_database = ucs2_unicode_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_unicode_ci +SET @@session.collation_database = ucs2_icelandic_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_icelandic_ci +SET @@session.collation_database = ucs2_latvian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_latvian_ci +SET @@session.collation_database = ucs2_romanian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_romanian_ci +SET @@session.collation_database = ucs2_slovenian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_slovenian_ci +SET @@session.collation_database = ucs2_polish_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_polish_ci +SET @@session.collation_database = ucs2_estonian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_estonian_ci +SET @@session.collation_database = ucs2_spanish_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_spanish_ci +SET @@session.collation_database = ucs2_swedish_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_swedish_ci +SET @@session.collation_database = ucs2_turkish_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_turkish_ci +SET @@session.collation_database = ucs2_czech_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_czech_ci +SET @@session.collation_database = ucs2_danish_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_danish_ci +SET @@session.collation_database = ucs2_lithuanian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_lithuanian_ci +SET @@session.collation_database = ucs2_slovak_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_slovak_ci +SET @@session.collation_database = ucs2_spanish2_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_spanish2_ci +SET @@session.collation_database = ucs2_roman_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_roman_ci +SET @@session.collation_database = ucs2_persian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_persian_ci +SET @@session.collation_database = ucs2_esperanto_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_esperanto_ci +SET @@session.collation_database = ucs2_hungarian_ci; +SELECT @@session.collation_database; +@@session.collation_database +ucs2_hungarian_ci +SET @@session.collation_database = cp866_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp866_general_ci +SET @@session.collation_database = cp866_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp866_bin +SET @@session.collation_database = keybcs2_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +keybcs2_general_ci +SET @@session.collation_database = keybcs2_bin; +SELECT @@session.collation_database; +@@session.collation_database +keybcs2_bin +SET @@session.collation_database = macce_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +macce_general_ci +SET @@session.collation_database = macce_bin; +SELECT @@session.collation_database; +@@session.collation_database +macce_bin +SET @@session.collation_database = macroman_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +macroman_general_ci +SET @@session.collation_database = macroman_bin; +SELECT @@session.collation_database; +@@session.collation_database +macroman_bin +SET @@session.collation_database = cp852_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp852_general_ci +SET @@session.collation_database = cp852_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp852_bin +SET @@session.collation_database = latin7_estonian_cs; +SELECT @@session.collation_database; +@@session.collation_database +latin7_estonian_cs +SET @@session.collation_database = latin7_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +latin7_general_ci +SET @@session.collation_database = latin7_general_cs; +SELECT @@session.collation_database; +@@session.collation_database +latin7_general_cs +SET @@session.collation_database = latin7_bin; +SELECT @@session.collation_database; +@@session.collation_database +latin7_bin +SET @@session.collation_database = cp1251_bulgarian_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1251_bulgarian_ci +SET @@session.collation_database = cp1251_ukrainian_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1251_ukrainian_ci +SET @@session.collation_database = cp1251_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp1251_bin +SET @@session.collation_database = cp1251_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1251_general_ci +SET @@session.collation_database = cp1251_general_cs; +SELECT @@session.collation_database; +@@session.collation_database +cp1251_general_cs +SET @@session.collation_database = cp1256_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1256_general_ci +SET @@session.collation_database = cp1256_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp1256_bin +SET @@session.collation_database = cp1257_lithuanian_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1257_lithuanian_ci +SET @@session.collation_database = cp1257_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp1257_bin +SET @@session.collation_database = cp1257_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp1257_general_ci +SET @@session.collation_database = binary; +SELECT @@session.collation_database; +@@session.collation_database +binary +SET @@session.collation_database = geostd8_general_ci; +SELECT @@session.collation_database; +@@session.collation_database +geostd8_general_ci +SET @@session.collation_database = geostd8_bin; +SELECT @@session.collation_database; +@@session.collation_database +geostd8_bin +SET @@session.collation_database = cp932_japanese_ci; +SELECT @@session.collation_database; +@@session.collation_database +cp932_japanese_ci +SET @@session.collation_database = cp932_bin; +SELECT @@session.collation_database; +@@session.collation_database +cp932_bin +SET @@session.collation_database = eucjpms_japanese_ci; +SELECT @@session.collation_database; +@@session.collation_database +eucjpms_japanese_ci +SET @@session.collation_database = eucjpms_bin; +SELECT @@session.collation_database; +@@session.collation_database +eucjpms_bin +'#--------------------FN_DYNVARS_016_07-------------------------#' +SET @@global.collation_database = big5_chinese_ci; +SELECT @@global.collation_database; +@@global.collation_database +big5_chinese_ci +SET @@global.collation_database = big5_bin; +SELECT @@global.collation_database; +@@global.collation_database +big5_bin +SET @@global.collation_database = dec8_swedish_ci; +SELECT @@global.collation_database; +@@global.collation_database +dec8_swedish_ci +SET @@global.collation_database = dec8_bin; +SELECT @@global.collation_database; +@@global.collation_database +dec8_bin +SET @@global.collation_database = cp850_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp850_general_ci +SET @@global.collation_database = cp850_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp850_bin +SET @@global.collation_database = hp8_english_ci; +SELECT @@global.collation_database; +@@global.collation_database +hp8_english_ci +SET @@global.collation_database = hp8_bin; +SELECT @@global.collation_database; +@@global.collation_database +hp8_bin +SET @@global.collation_database = koi8r_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +koi8r_general_ci +SET @@global.collation_database = koi8r_bin; +SELECT @@global.collation_database; +@@global.collation_database +koi8r_bin +SET @@global.collation_database = latin1_german1_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin1_german1_ci +SET @@global.collation_database = latin1_swedish_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin1_swedish_ci +SET @@global.collation_database = latin1_danish_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin1_danish_ci +SET @@global.collation_database = latin1_german2_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin1_german2_ci +SET @@global.collation_database = latin1_bin; +SELECT @@global.collation_database; +@@global.collation_database +latin1_bin +SET @@global.collation_database = latin1_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin1_general_ci +SET @@global.collation_database = latin1_general_cs; +SELECT @@global.collation_database; +@@global.collation_database +latin1_general_cs +SET @@global.collation_database = latin1_spanish_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin1_spanish_ci +SET @@global.collation_database = latin2_czech_cs; +SELECT @@global.collation_database; +@@global.collation_database +latin2_czech_cs +SET @@global.collation_database = latin2_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin2_general_ci +SET @@global.collation_database = latin2_hungarian_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin2_hungarian_ci +SET @@global.collation_database = latin2_croatian_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin2_croatian_ci +SET @@global.collation_database = latin2_bin; +SELECT @@global.collation_database; +@@global.collation_database +latin2_bin +SET @@global.collation_database = swe7_swedish_ci; +SELECT @@global.collation_database; +@@global.collation_database +swe7_swedish_ci +SET @@global.collation_database = swe7_bin; +SELECT @@global.collation_database; +@@global.collation_database +swe7_bin +SET @@global.collation_database = ascii_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +ascii_general_ci +SET @@global.collation_database = ascii_bin; +SELECT @@global.collation_database; +@@global.collation_database +ascii_bin +SET @@global.collation_database = ujis_japanese_ci; +SELECT @@global.collation_database; +@@global.collation_database +ujis_japanese_ci +SET @@global.collation_database = ujis_bin; +SELECT @@global.collation_database; +@@global.collation_database +ujis_bin +SET @@global.collation_database = sjis_japanese_ci; +SELECT @@global.collation_database; +@@global.collation_database +sjis_japanese_ci +SET @@global.collation_database = sjis_bin; +SELECT @@global.collation_database; +@@global.collation_database +sjis_bin +SET @@global.collation_database = hebrew_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +hebrew_general_ci +SET @@global.collation_database = hebrew_bin; +SELECT @@global.collation_database; +@@global.collation_database +hebrew_bin +SET @@global.collation_database = tis620_thai_ci; +SELECT @@global.collation_database; +@@global.collation_database +tis620_thai_ci +SET @@global.collation_database = tis620_bin; +SELECT @@global.collation_database; +@@global.collation_database +tis620_bin +SET @@global.collation_database = euckr_korean_ci; +SELECT @@global.collation_database; +@@global.collation_database +euckr_korean_ci +SET @@global.collation_database = euckr_bin; +SELECT @@global.collation_database; +@@global.collation_database +euckr_bin +SET @@global.collation_database = koi8u_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +koi8u_general_ci +SET @@global.collation_database = koi8u_bin; +SELECT @@global.collation_database; +@@global.collation_database +koi8u_bin +SET @@global.collation_database = gb2312_chinese_ci; +SELECT @@global.collation_database; +@@global.collation_database +gb2312_chinese_ci +SET @@global.collation_database = gb2312_bin; +SELECT @@global.collation_database; +@@global.collation_database +gb2312_bin +SET @@global.collation_database = greek_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +greek_general_ci +SET @@global.collation_database = greek_bin; +SELECT @@global.collation_database; +@@global.collation_database +greek_bin +SET @@global.collation_database = cp1250_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1250_general_ci +SET @@global.collation_database = cp1250_czech_cs; +SELECT @@global.collation_database; +@@global.collation_database +cp1250_czech_cs +SET @@global.collation_database = cp1250_croatian_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1250_croatian_ci +SET @@global.collation_database = cp1250_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp1250_bin +SET @@global.collation_database = cp1250_polish_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1250_polish_ci +SET @@global.collation_database = gbk_chinese_ci; +SELECT @@global.collation_database; +@@global.collation_database +gbk_chinese_ci +SET @@global.collation_database = gbk_bin; +SELECT @@global.collation_database; +@@global.collation_database +gbk_bin +SET @@global.collation_database = latin5_turkish_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin5_turkish_ci +SET @@global.collation_database = latin5_bin; +SELECT @@global.collation_database; +@@global.collation_database +latin5_bin +SET @@global.collation_database = armscii8_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +armscii8_general_ci +SET @@global.collation_database = armscii8_bin; +SELECT @@global.collation_database; +@@global.collation_database +armscii8_bin +SET @@global.collation_database = utf8_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_general_ci +SET @@global.collation_database = utf8_bin; +SELECT @@global.collation_database; +@@global.collation_database +utf8_bin +SET @@global.collation_database = utf8_unicode_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_unicode_ci +SET @@global.collation_database = utf8_icelandic_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_icelandic_ci +SET @@global.collation_database = utf8_latvian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_latvian_ci +SET @@global.collation_database = utf8_romanian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_romanian_ci +SET @@global.collation_database = utf8_slovenian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_slovenian_ci +SET @@global.collation_database = utf8_polish_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_polish_ci +SET @@global.collation_database = utf8_estonian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_estonian_ci +SET @@global.collation_database = utf8_spanish_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_spanish_ci +SET @@global.collation_database = utf8_swedish_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_swedish_ci +SET @@global.collation_database = utf8_turkish_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_turkish_ci +SET @@global.collation_database = utf8_czech_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_czech_ci +SET @@global.collation_database = utf8_danish_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_danish_ci +SET @@global.collation_database = utf8_lithuanian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_lithuanian_ci +SET @@global.collation_database = utf8_slovak_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_slovak_ci +SET @@global.collation_database = utf8_spanish2_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_spanish2_ci +SET @@global.collation_database = utf8_roman_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_roman_ci +SET @@global.collation_database = utf8_persian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_persian_ci +SET @@global.collation_database = utf8_esperanto_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_esperanto_ci +SET @@global.collation_database = utf8_hungarian_ci; +SELECT @@global.collation_database; +@@global.collation_database +utf8_hungarian_ci +SET @@global.collation_database = ucs2_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_general_ci +SET @@global.collation_database = ucs2_bin; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_bin +SET @@global.collation_database = ucs2_unicode_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_unicode_ci +SET @@global.collation_database = ucs2_icelandic_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_icelandic_ci +SET @@global.collation_database = ucs2_latvian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_latvian_ci +SET @@global.collation_database = ucs2_romanian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_romanian_ci +SET @@global.collation_database = ucs2_slovenian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_slovenian_ci +SET @@global.collation_database = ucs2_polish_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_polish_ci +SET @@global.collation_database = ucs2_estonian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_estonian_ci +SET @@global.collation_database = ucs2_spanish_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_spanish_ci +SET @@global.collation_database = ucs2_swedish_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_swedish_ci +SET @@global.collation_database = ucs2_turkish_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_turkish_ci +SET @@global.collation_database = ucs2_czech_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_czech_ci +SET @@global.collation_database = ucs2_danish_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_danish_ci +SET @@global.collation_database = ucs2_lithuanian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_lithuanian_ci +SET @@global.collation_database = ucs2_slovak_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_slovak_ci +SET @@global.collation_database = ucs2_spanish2_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_spanish2_ci +SET @@global.collation_database = ucs2_roman_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_roman_ci +SET @@global.collation_database = ucs2_persian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_persian_ci +SET @@global.collation_database = ucs2_esperanto_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_esperanto_ci +SET @@global.collation_database = ucs2_hungarian_ci; +SELECT @@global.collation_database; +@@global.collation_database +ucs2_hungarian_ci +SET @@global.collation_database = cp866_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp866_general_ci +SET @@global.collation_database = cp866_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp866_bin +SET @@global.collation_database = keybcs2_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +keybcs2_general_ci +SET @@global.collation_database = keybcs2_bin; +SELECT @@global.collation_database; +@@global.collation_database +keybcs2_bin +SET @@global.collation_database = macce_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +macce_general_ci +SET @@global.collation_database = macce_bin; +SELECT @@global.collation_database; +@@global.collation_database +macce_bin +SET @@global.collation_database = macroman_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +macroman_general_ci +SET @@global.collation_database = macroman_bin; +SELECT @@global.collation_database; +@@global.collation_database +macroman_bin +SET @@global.collation_database = cp852_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp852_general_ci +SET @@global.collation_database = cp852_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp852_bin +SET @@global.collation_database = latin7_estonian_cs; +SELECT @@global.collation_database; +@@global.collation_database +latin7_estonian_cs +SET @@global.collation_database = latin7_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +latin7_general_ci +SET @@global.collation_database = latin7_general_cs; +SELECT @@global.collation_database; +@@global.collation_database +latin7_general_cs +SET @@global.collation_database = latin7_bin; +SELECT @@global.collation_database; +@@global.collation_database +latin7_bin +SET @@global.collation_database = cp1251_bulgarian_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1251_bulgarian_ci +SET @@global.collation_database = cp1251_ukrainian_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1251_ukrainian_ci +SET @@global.collation_database = cp1251_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp1251_bin +SET @@global.collation_database = cp1251_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1251_general_ci +SET @@global.collation_database = cp1251_general_cs; +SELECT @@global.collation_database; +@@global.collation_database +cp1251_general_cs +SET @@global.collation_database = cp1256_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1256_general_ci +SET @@global.collation_database = cp1256_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp1256_bin +SET @@global.collation_database = cp1257_lithuanian_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1257_lithuanian_ci +SET @@global.collation_database = cp1257_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp1257_bin +SET @@global.collation_database = cp1257_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp1257_general_ci +SET @@global.collation_database = binary; +SELECT @@global.collation_database; +@@global.collation_database +binary +SET @@global.collation_database = geostd8_general_ci; +SELECT @@global.collation_database; +@@global.collation_database +geostd8_general_ci +SET @@global.collation_database = geostd8_bin; +SELECT @@global.collation_database; +@@global.collation_database +geostd8_bin +SET @@global.collation_database = cp932_japanese_ci; +SELECT @@global.collation_database; +@@global.collation_database +cp932_japanese_ci +SET @@global.collation_database = cp932_bin; +SELECT @@global.collation_database; +@@global.collation_database +cp932_bin +SET @@global.collation_database = eucjpms_japanese_ci; +SELECT @@global.collation_database; +@@global.collation_database +eucjpms_japanese_ci +SET @@global.collation_database = eucjpms_bin; +SELECT @@global.collation_database; +@@global.collation_database +eucjpms_bin +'#--------------------FN_DYNVARS_016_08-------------------------#' +SET @@collation_database = LATIN7_GENERAL_CS; +SELECT @@collation_database; +@@collation_database +latin7_general_cs +SET @@collation_database = latin7_general_cs; +SELECT @@collation_database; +@@collation_database +latin7_general_cs +SET @@global.collation_database = Latin7_GeneRal_cS; +SELECT @@global.collation_database; +@@global.collation_database +latin7_general_cs +'#--------------------FN_DYNVARS_016_09-------------------------#' +SET @@collation_database = 1; +SELECT @@collation_database; +@@collation_database +big5_chinese_ci +SET @@collation_database = 2; +SELECT @@collation_database; +@@collation_database +latin2_czech_cs +SET @@collation_database = 3; +SELECT @@collation_database; +@@collation_database +dec8_swedish_ci +SET @@collation_database = 99; +SELECT @@collation_database; +@@collation_database +cp1250_polish_ci +SET @@collation_database = 100; +ERROR HY000: Unknown collation: '100' +SET @@global.collation_database = 1; +SELECT @@global.collation_database; +@@global.collation_database +big5_chinese_ci +SET @@global.collation_database = 2; +SELECT @@global.collation_database; +@@global.collation_database +latin2_czech_cs +SET @@global.collation_database = 3; +SELECT @@global.collation_database; +@@global.collation_database +dec8_swedish_ci +SET @@global.collation_database = 99; +SELECT @@global.collation_database; +@@global.collation_database +cp1250_polish_ci +SET @@global.collation_database = 100; +ERROR HY000: Unknown collation: '100' +SET @total_collations = (SELECT count(*) FROM INFORMATION_SCHEMA.COLLATIONS); +SELECT @total_collations > 120; +@total_collations > 120 +1 +'#--------------------FN_DYNVARS_016_10-------------------------#' +SET @@collation_database = latin7_binary; +ERROR HY000: Unknown collation: 'latin7_binary' +SET @@collation_database = 'eucjpms_japanese_cs'; +ERROR HY000: Unknown collation: 'eucjpms_japanese_cs' +SET @@collation_database = 0; +ERROR HY000: Unknown collation: '0' +SET @@collation_database = 1.01; +ERROR 42000: Incorrect argument type to variable 'collation_database' +SET @@collation_database = -1; +ERROR HY000: Unknown collation: '-1' +SET @@collation_database = ''; +ERROR HY000: Unknown collation: '' +SET @@collation_database = ' eucjpms_bin'; +ERROR HY000: Unknown collation: ' eucjpms_bin' +SET @@collation_database = true; +SELECT @@collation_database AS res_with_true; +res_with_true +big5_chinese_ci +SET @@collation_database = ON; +ERROR HY000: Unknown collation: 'ON' +'#--------------------FN_DYNVARS_016_11-------------------------#' +SET @@global.collation_database = latin7_binary; +ERROR HY000: Unknown collation: 'latin7_binary' +SET @@global.collation_database = 'eucjpms_japanese_cs'; +ERROR HY000: Unknown collation: 'eucjpms_japanese_cs' +SET @@global.collation_database = 0; +ERROR HY000: Unknown collation: '0' +SET @@global.collation_database = 1.1; +ERROR 42000: Incorrect argument type to variable 'collation_database' +SET @@global.collation_database = -1; +ERROR HY000: Unknown collation: '-1' +SET @@global.collation_database = ""; +ERROR HY000: Unknown collation: '' +SET @@global.collation_database = ' eucjpms_bin'; +ERROR HY000: Unknown collation: ' eucjpms_bin' +SET @@global.collation_database = true; +SET @@global.collation_database = ON; +ERROR HY000: Unknown collation: 'ON' +'#--------------------FN_DYNVARS_016_12-------------------------#' +SELECT @@global.collation_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='collation_database') AS res; +res +1 +SET @@global.collation_database = 1; +SELECT @@global.collation_database; +@@global.collation_database +big5_chinese_ci +SELECT @@global.collation_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='collation_database') AS res; +res +1 +'#--------------------FN_DYNVARS_016_13-------------------------#' +SELECT @@collation_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_database') AS res; +res +1 +SELECT @@local.collation_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_database') AS res; +res +1 +SELECT @@session.collation_database = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_database') AS res; +res +1 +SET @@global.collation_database = @global_start_value; +SELECT @@global.collation_database; +@@global.collation_database +latin1_swedish_ci +SET @@session.collation_database = @session_start_value; +SELECT @@session.collation_database; +@@session.collation_database +latin1_swedish_ci diff --git a/mysql-test/r/collation_database_func.result b/mysql-test/r/collation_database_func.result new file mode 100644 index 00000000000..dae8677eecf --- /dev/null +++ b/mysql-test/r/collation_database_func.result @@ -0,0 +1,111 @@ +'#--------------------FN_DYNVARS_011_01-------------------------#' +SET @global_collation_database = @@global.collation_database; +SET @session_collation_database = @@session.collation_database; +SET @session_collation_server = @@session.collation_server; +SET @@global.collation_database = latin1_danish_ci; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.collation_database; +@@global.collation_database +latin1_danish_ci +SELECT @@session.collation_database; +@@session.collation_database +latin1_swedish_ci +'Bug#35378: New session collation_database is not change by global collation_database' +'#--------------------FN_DYNVARS_011_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1,t2; +SELECT @@character_set_server,@@collation_server; +@@character_set_server @@collation_server +latin1 latin1_swedish_ci +'--check if setting collation_database update character_set_database--' +SET @@session.collation_database = utf8_spanish_ci; +SELECT @@collation_database, @@character_set_database; +@@collation_database @@character_set_database +utf8_spanish_ci utf8 +'--check if collation_database effects database/tables charset/collation' +SET @@session.collation_server = utf8_roman_ci; +SET @@session.collation_database = latin2_croatian_ci; +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +Database Create Database +db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_roman_ci */ +'Bug#35380: collation_database does not effects CREATE DATABASE without characater set' +CREATE TABLE t1(a CHAR(20)); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(20) COLLATE utf8_roman_ci DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_roman_ci +'---check if updating collation_database effects new table/column---' +SET @@session.collation_database = latin7_general_cs; +CREATE TABLE t2(a CHAR(10)); +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` char(10) COLLATE utf8_roman_ci DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_roman_ci +DROP TABLE t1,t2; +'--check value of collation and character set when current db is dropped' +DROP DATABASE db1; +SELECT @@collation_database,@@collation_server,@@character_set_database,@@character_set_server; +@@collation_database @@collation_server @@character_set_database @@character_set_server +utf8_roman_ci utf8_roman_ci utf8 utf8 +USE test; +SELECT @@collation_database,@@collation_server,@@character_set_database,@@character_set_server; +@@collation_database @@collation_server @@character_set_database @@character_set_server +utf8_roman_ci utf8_roman_ci utf8 utf8 +'fill table with some test data'; +CREATE TABLE t1(a CHAR(20))CHARACTER SET=latin1; +INSERT INTO t1 VALUES('Muffler'),('Mller'),('MX Systems'); +'---check if collation_database effects results sort order---' +SET @@session.collation_database = latin1_swedish_ci; +SELECT * FROM t1 ORDER BY a; +a +Muffler +MX Systems +Mller +SET @@session.collation_database = latin1_german1_ci; +SELECT * FROM t1 ORDER BY a; +a +Muffler +MX Systems +Mller +'explicit Collate clause should effects results sort order'; +SELECT * FROM t1 ORDER BY a COLLATE latin1_swedish_ci; +a +Muffler +MX Systems +Mller +SELECT * FROM t1 ORDER BY a COLLATE latin1_german1_ci; +a +Muffler +Mller +MX Systems +'----check if indexing is effected by collation_database---' +SET @@session.collation_database = latin1_swedish_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test.t1 repair status OK +SELECT * FROM t1 ORDER BY a; +a +Muffler +MX Systems +Mller +ALTER TABLE t1 DROP PRIMARY KEY; +SET @@session.collation_database = latin1_german1_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test.t1 repair status OK +SELECT * FROM t1 ORDER BY a; +a +Muffler +MX Systems +Mller +DROP TABLE t1; +SET @@global.collation_database = @global_collation_database; +SET @@session.collation_database = @session_collation_database; +SET @@session.collation_server = @session_collation_server; diff --git a/mysql-test/r/collation_server_basic.result b/mysql-test/r/collation_server_basic.result new file mode 100644 index 00000000000..5e36643a3c9 --- /dev/null +++ b/mysql-test/r/collation_server_basic.result @@ -0,0 +1,1224 @@ +SET @global_start_value = @@global.collation_server; +SELECT @global_start_value; +@global_start_value +latin1_swedish_ci +SET @session_start_value = @@collation_server; +SELECT @session_start_value; +@session_start_value +latin1_swedish_ci +SET @session_start_value = @@local.collation_server; +SELECT @session_start_value; +@session_start_value +latin1_swedish_ci +SET @session_start_value = @@session.collation_server; +SELECT @session_start_value; +@session_start_value +latin1_swedish_ci +'#--------------------FN_DYNVARS_014_01------------------#' +SELECT collation_server; +ERROR 42S22: Unknown column 'collation_server' in 'field list' +SET collation_server=utf8_unicode_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_unicode_ci +SET global.collation_server=utf8_unicode_ci; +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 'collation_server=utf8_unicode_ci' at line 1 +SET session collation_server=utf8_unicode_ci; +SELECT session collation_server; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global collation_server=utf8_unicode_ci; +SELECT global collation_server; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_014_02-------------------------#' +SET @@collation_server = latin1_bin; +SET @@collation_server = DEFAULT; +SELECT @@collation_server AS DEFAULT_VALUE; +DEFAULT_VALUE +utf8_unicode_ci +SET @@global.collation_server = latin1_bin; +SET @@global.collation_server = DEFAULT; +SELECT @@global.collation_server; +@@global.collation_server +latin1_swedish_ci +'#--------------------FN_DYNVARS_014_03-------------------------#' +SET @@session.collation_server = utf8_polish_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_polish_ci +SET @@global.collation_server = latin7_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin7_general_ci +SELECT @@session.collation_server AS res_is_utf8_polish_ci; +res_is_utf8_polish_ci +utf8_polish_ci +SET @@session.collation_server = latin7_bin; +SELECT @@session.collation_server; +@@session.collation_server +latin7_bin +SELECT @@global.collation_server AS res_is_latin7_general_ci; +res_is_latin7_general_ci +latin7_general_ci +SELECT @@global.collation_server=@@session.collation_server AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_014_04-------------------------#' +SELECT @@collation_server = @@session.collation_server AS res; +res +1 +SELECT @@collation_server = @@local.collation_server AS res; +res +1 +'#--------------------FN_DYNVARS_014_05-------------------------#' +SET @@collation_server = latin7_general_ci + latin7_general_cs; +ERROR 42S22: Unknown column 'latin7_general_ci' in 'field list' +'#--------------------FN_DYNVARS_014_06-------------------------#' +SET @@session.collation_server = big5_chinese_ci; +SELECT @@session.collation_server; +@@session.collation_server +big5_chinese_ci +SET @@session.collation_server = big5_bin; +SELECT @@session.collation_server; +@@session.collation_server +big5_bin +SET @@session.collation_server = dec8_swedish_ci; +SELECT @@session.collation_server; +@@session.collation_server +dec8_swedish_ci +SET @@session.collation_server = dec8_bin; +SELECT @@session.collation_server; +@@session.collation_server +dec8_bin +SET @@session.collation_server = cp850_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp850_general_ci +SET @@session.collation_server = cp850_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp850_bin +SET @@session.collation_server = hp8_english_ci; +SELECT @@session.collation_server; +@@session.collation_server +hp8_english_ci +SET @@session.collation_server = hp8_bin; +SELECT @@session.collation_server; +@@session.collation_server +hp8_bin +SET @@session.collation_server = koi8r_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +koi8r_general_ci +SET @@session.collation_server = koi8r_bin; +SELECT @@session.collation_server; +@@session.collation_server +koi8r_bin +SET @@session.collation_server = latin1_german1_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin1_german1_ci +SET @@session.collation_server = latin1_swedish_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin1_swedish_ci +SET @@session.collation_server = latin1_danish_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin1_danish_ci +SET @@session.collation_server = latin1_german2_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin1_german2_ci +SET @@session.collation_server = latin1_bin; +SELECT @@session.collation_server; +@@session.collation_server +latin1_bin +SET @@session.collation_server = latin1_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin1_general_ci +SET @@session.collation_server = latin1_general_cs; +SELECT @@session.collation_server; +@@session.collation_server +latin1_general_cs +SET @@session.collation_server = latin1_spanish_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin1_spanish_ci +SET @@session.collation_server = latin2_czech_cs; +SELECT @@session.collation_server; +@@session.collation_server +latin2_czech_cs +SET @@session.collation_server = latin2_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin2_general_ci +SET @@session.collation_server = latin2_hungarian_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin2_hungarian_ci +SET @@session.collation_server = latin2_croatian_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin2_croatian_ci +SET @@session.collation_server = latin2_bin; +SELECT @@session.collation_server; +@@session.collation_server +latin2_bin +SET @@session.collation_server = swe7_swedish_ci; +SELECT @@session.collation_server; +@@session.collation_server +swe7_swedish_ci +SET @@session.collation_server = swe7_bin; +SELECT @@session.collation_server; +@@session.collation_server +swe7_bin +SET @@session.collation_server = ascii_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +ascii_general_ci +SET @@session.collation_server = ascii_bin; +SELECT @@session.collation_server; +@@session.collation_server +ascii_bin +SET @@session.collation_server = ujis_japanese_ci; +SELECT @@session.collation_server; +@@session.collation_server +ujis_japanese_ci +SET @@session.collation_server = ujis_bin; +SELECT @@session.collation_server; +@@session.collation_server +ujis_bin +SET @@session.collation_server = sjis_japanese_ci; +SELECT @@session.collation_server; +@@session.collation_server +sjis_japanese_ci +SET @@session.collation_server = sjis_bin; +SELECT @@session.collation_server; +@@session.collation_server +sjis_bin +SET @@session.collation_server = hebrew_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +hebrew_general_ci +SET @@session.collation_server = hebrew_bin; +SELECT @@session.collation_server; +@@session.collation_server +hebrew_bin +SET @@session.collation_server = tis620_thai_ci; +SELECT @@session.collation_server; +@@session.collation_server +tis620_thai_ci +SET @@session.collation_server = tis620_bin; +SELECT @@session.collation_server; +@@session.collation_server +tis620_bin +SET @@session.collation_server = euckr_korean_ci; +SELECT @@session.collation_server; +@@session.collation_server +euckr_korean_ci +SET @@session.collation_server = euckr_bin; +SELECT @@session.collation_server; +@@session.collation_server +euckr_bin +SET @@session.collation_server = koi8u_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +koi8u_general_ci +SET @@session.collation_server = koi8u_bin; +SELECT @@session.collation_server; +@@session.collation_server +koi8u_bin +SET @@session.collation_server = gb2312_chinese_ci; +SELECT @@session.collation_server; +@@session.collation_server +gb2312_chinese_ci +SET @@session.collation_server = gb2312_bin; +SELECT @@session.collation_server; +@@session.collation_server +gb2312_bin +SET @@session.collation_server = greek_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +greek_general_ci +SET @@session.collation_server = greek_bin; +SELECT @@session.collation_server; +@@session.collation_server +greek_bin +SET @@session.collation_server = cp1250_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1250_general_ci +SET @@session.collation_server = cp1250_czech_cs; +SELECT @@session.collation_server; +@@session.collation_server +cp1250_czech_cs +SET @@session.collation_server = cp1250_croatian_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1250_croatian_ci +SET @@session.collation_server = cp1250_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp1250_bin +SET @@session.collation_server = cp1250_polish_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1250_polish_ci +SET @@session.collation_server = gbk_chinese_ci; +SELECT @@session.collation_server; +@@session.collation_server +gbk_chinese_ci +SET @@session.collation_server = gbk_bin; +SELECT @@session.collation_server; +@@session.collation_server +gbk_bin +SET @@session.collation_server = latin5_turkish_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin5_turkish_ci +SET @@session.collation_server = latin5_bin; +SELECT @@session.collation_server; +@@session.collation_server +latin5_bin +SET @@session.collation_server = armscii8_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +armscii8_general_ci +SET @@session.collation_server = armscii8_bin; +SELECT @@session.collation_server; +@@session.collation_server +armscii8_bin +SET @@session.collation_server = utf8_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_general_ci +SET @@session.collation_server = utf8_bin; +SELECT @@session.collation_server; +@@session.collation_server +utf8_bin +SET @@session.collation_server = utf8_unicode_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_unicode_ci +SET @@session.collation_server = utf8_icelandic_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_icelandic_ci +SET @@session.collation_server = utf8_latvian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_latvian_ci +SET @@session.collation_server = utf8_romanian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_romanian_ci +SET @@session.collation_server = utf8_slovenian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_slovenian_ci +SET @@session.collation_server = utf8_polish_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_polish_ci +SET @@session.collation_server = utf8_estonian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_estonian_ci +SET @@session.collation_server = utf8_spanish_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_spanish_ci +SET @@session.collation_server = utf8_swedish_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_swedish_ci +SET @@session.collation_server = utf8_turkish_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_turkish_ci +SET @@session.collation_server = utf8_czech_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_czech_ci +SET @@session.collation_server = utf8_danish_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_danish_ci +SET @@session.collation_server = utf8_lithuanian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_lithuanian_ci +SET @@session.collation_server = utf8_slovak_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_slovak_ci +SET @@session.collation_server = utf8_spanish2_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_spanish2_ci +SET @@session.collation_server = utf8_roman_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_roman_ci +SET @@session.collation_server = utf8_persian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_persian_ci +SET @@session.collation_server = utf8_esperanto_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_esperanto_ci +SET @@session.collation_server = utf8_hungarian_ci; +SELECT @@session.collation_server; +@@session.collation_server +utf8_hungarian_ci +SET @@session.collation_server = ucs2_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_general_ci +SET @@session.collation_server = ucs2_bin; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_bin +SET @@session.collation_server = ucs2_unicode_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_unicode_ci +SET @@session.collation_server = ucs2_icelandic_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_icelandic_ci +SET @@session.collation_server = ucs2_latvian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_latvian_ci +SET @@session.collation_server = ucs2_romanian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_romanian_ci +SET @@session.collation_server = ucs2_slovenian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_slovenian_ci +SET @@session.collation_server = ucs2_polish_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_polish_ci +SET @@session.collation_server = ucs2_estonian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_estonian_ci +SET @@session.collation_server = ucs2_spanish_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_spanish_ci +SET @@session.collation_server = ucs2_swedish_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_swedish_ci +SET @@session.collation_server = ucs2_turkish_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_turkish_ci +SET @@session.collation_server = ucs2_czech_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_czech_ci +SET @@session.collation_server = ucs2_danish_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_danish_ci +SET @@session.collation_server = ucs2_lithuanian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_lithuanian_ci +SET @@session.collation_server = ucs2_slovak_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_slovak_ci +SET @@session.collation_server = ucs2_spanish2_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_spanish2_ci +SET @@session.collation_server = ucs2_roman_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_roman_ci +SET @@session.collation_server = ucs2_persian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_persian_ci +SET @@session.collation_server = ucs2_esperanto_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_esperanto_ci +SET @@session.collation_server = ucs2_hungarian_ci; +SELECT @@session.collation_server; +@@session.collation_server +ucs2_hungarian_ci +SET @@session.collation_server = cp866_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp866_general_ci +SET @@session.collation_server = cp866_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp866_bin +SET @@session.collation_server = keybcs2_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +keybcs2_general_ci +SET @@session.collation_server = keybcs2_bin; +SELECT @@session.collation_server; +@@session.collation_server +keybcs2_bin +SET @@session.collation_server = macce_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +macce_general_ci +SET @@session.collation_server = macce_bin; +SELECT @@session.collation_server; +@@session.collation_server +macce_bin +SET @@session.collation_server = macroman_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +macroman_general_ci +SET @@session.collation_server = macroman_bin; +SELECT @@session.collation_server; +@@session.collation_server +macroman_bin +SET @@session.collation_server = cp852_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp852_general_ci +SET @@session.collation_server = cp852_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp852_bin +SET @@session.collation_server = latin7_estonian_cs; +SELECT @@session.collation_server; +@@session.collation_server +latin7_estonian_cs +SET @@session.collation_server = latin7_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +latin7_general_ci +SET @@session.collation_server = latin7_general_cs; +SELECT @@session.collation_server; +@@session.collation_server +latin7_general_cs +SET @@session.collation_server = latin7_bin; +SELECT @@session.collation_server; +@@session.collation_server +latin7_bin +SET @@session.collation_server = cp1251_bulgarian_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1251_bulgarian_ci +SET @@session.collation_server = cp1251_ukrainian_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1251_ukrainian_ci +SET @@session.collation_server = cp1251_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp1251_bin +SET @@session.collation_server = cp1251_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1251_general_ci +SET @@session.collation_server = cp1251_general_cs; +SELECT @@session.collation_server; +@@session.collation_server +cp1251_general_cs +SET @@session.collation_server = cp1256_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1256_general_ci +SET @@session.collation_server = cp1256_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp1256_bin +SET @@session.collation_server = cp1257_lithuanian_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1257_lithuanian_ci +SET @@session.collation_server = cp1257_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp1257_bin +SET @@session.collation_server = cp1257_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp1257_general_ci +SET @@session.collation_server = binary; +SELECT @@session.collation_server; +@@session.collation_server +binary +SET @@session.collation_server = geostd8_general_ci; +SELECT @@session.collation_server; +@@session.collation_server +geostd8_general_ci +SET @@session.collation_server = geostd8_bin; +SELECT @@session.collation_server; +@@session.collation_server +geostd8_bin +SET @@session.collation_server = cp932_japanese_ci; +SELECT @@session.collation_server; +@@session.collation_server +cp932_japanese_ci +SET @@session.collation_server = cp932_bin; +SELECT @@session.collation_server; +@@session.collation_server +cp932_bin +SET @@session.collation_server = eucjpms_japanese_ci; +SELECT @@session.collation_server; +@@session.collation_server +eucjpms_japanese_ci +SET @@session.collation_server = eucjpms_bin; +SELECT @@session.collation_server; +@@session.collation_server +eucjpms_bin +'#--------------------FN_DYNVARS_014_07-------------------------#' +SET @@global.collation_server = big5_chinese_ci; +SELECT @@global.collation_server; +@@global.collation_server +big5_chinese_ci +SET @@global.collation_server = big5_bin; +SELECT @@global.collation_server; +@@global.collation_server +big5_bin +SET @@global.collation_server = dec8_swedish_ci; +SELECT @@global.collation_server; +@@global.collation_server +dec8_swedish_ci +SET @@global.collation_server = dec8_bin; +SELECT @@global.collation_server; +@@global.collation_server +dec8_bin +SET @@global.collation_server = cp850_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp850_general_ci +SET @@global.collation_server = cp850_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp850_bin +SET @@global.collation_server = hp8_english_ci; +SELECT @@global.collation_server; +@@global.collation_server +hp8_english_ci +SET @@global.collation_server = hp8_bin; +SELECT @@global.collation_server; +@@global.collation_server +hp8_bin +SET @@global.collation_server = koi8r_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +koi8r_general_ci +SET @@global.collation_server = koi8r_bin; +SELECT @@global.collation_server; +@@global.collation_server +koi8r_bin +SET @@global.collation_server = latin1_german1_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin1_german1_ci +SET @@global.collation_server = latin1_swedish_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin1_swedish_ci +SET @@global.collation_server = latin1_danish_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin1_danish_ci +SET @@global.collation_server = latin1_german2_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin1_german2_ci +SET @@global.collation_server = latin1_bin; +SELECT @@global.collation_server; +@@global.collation_server +latin1_bin +SET @@global.collation_server = latin1_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin1_general_ci +SET @@global.collation_server = latin1_general_cs; +SELECT @@global.collation_server; +@@global.collation_server +latin1_general_cs +SET @@global.collation_server = latin1_spanish_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin1_spanish_ci +SET @@global.collation_server = latin2_czech_cs; +SELECT @@global.collation_server; +@@global.collation_server +latin2_czech_cs +SET @@global.collation_server = latin2_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin2_general_ci +SET @@global.collation_server = latin2_hungarian_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin2_hungarian_ci +SET @@global.collation_server = latin2_croatian_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin2_croatian_ci +SET @@global.collation_server = latin2_bin; +SELECT @@global.collation_server; +@@global.collation_server +latin2_bin +SET @@global.collation_server = swe7_swedish_ci; +SELECT @@global.collation_server; +@@global.collation_server +swe7_swedish_ci +SET @@global.collation_server = swe7_bin; +SELECT @@global.collation_server; +@@global.collation_server +swe7_bin +SET @@global.collation_server = ascii_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +ascii_general_ci +SET @@global.collation_server = ascii_bin; +SELECT @@global.collation_server; +@@global.collation_server +ascii_bin +SET @@global.collation_server = ujis_japanese_ci; +SELECT @@global.collation_server; +@@global.collation_server +ujis_japanese_ci +SET @@global.collation_server = ujis_bin; +SELECT @@global.collation_server; +@@global.collation_server +ujis_bin +SET @@global.collation_server = sjis_japanese_ci; +SELECT @@global.collation_server; +@@global.collation_server +sjis_japanese_ci +SET @@global.collation_server = sjis_bin; +SELECT @@global.collation_server; +@@global.collation_server +sjis_bin +SET @@global.collation_server = hebrew_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +hebrew_general_ci +SET @@global.collation_server = hebrew_bin; +SELECT @@global.collation_server; +@@global.collation_server +hebrew_bin +SET @@global.collation_server = tis620_thai_ci; +SELECT @@global.collation_server; +@@global.collation_server +tis620_thai_ci +SET @@global.collation_server = tis620_bin; +SELECT @@global.collation_server; +@@global.collation_server +tis620_bin +SET @@global.collation_server = euckr_korean_ci; +SELECT @@global.collation_server; +@@global.collation_server +euckr_korean_ci +SET @@global.collation_server = euckr_bin; +SELECT @@global.collation_server; +@@global.collation_server +euckr_bin +SET @@global.collation_server = koi8u_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +koi8u_general_ci +SET @@global.collation_server = koi8u_bin; +SELECT @@global.collation_server; +@@global.collation_server +koi8u_bin +SET @@global.collation_server = gb2312_chinese_ci; +SELECT @@global.collation_server; +@@global.collation_server +gb2312_chinese_ci +SET @@global.collation_server = gb2312_bin; +SELECT @@global.collation_server; +@@global.collation_server +gb2312_bin +SET @@global.collation_server = greek_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +greek_general_ci +SET @@global.collation_server = greek_bin; +SELECT @@global.collation_server; +@@global.collation_server +greek_bin +SET @@global.collation_server = cp1250_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1250_general_ci +SET @@global.collation_server = cp1250_czech_cs; +SELECT @@global.collation_server; +@@global.collation_server +cp1250_czech_cs +SET @@global.collation_server = cp1250_croatian_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1250_croatian_ci +SET @@global.collation_server = cp1250_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp1250_bin +SET @@global.collation_server = cp1250_polish_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1250_polish_ci +SET @@global.collation_server = gbk_chinese_ci; +SELECT @@global.collation_server; +@@global.collation_server +gbk_chinese_ci +SET @@global.collation_server = gbk_bin; +SELECT @@global.collation_server; +@@global.collation_server +gbk_bin +SET @@global.collation_server = latin5_turkish_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin5_turkish_ci +SET @@global.collation_server = latin5_bin; +SELECT @@global.collation_server; +@@global.collation_server +latin5_bin +SET @@global.collation_server = armscii8_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +armscii8_general_ci +SET @@global.collation_server = armscii8_bin; +SELECT @@global.collation_server; +@@global.collation_server +armscii8_bin +SET @@global.collation_server = utf8_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_general_ci +SET @@global.collation_server = utf8_bin; +SELECT @@global.collation_server; +@@global.collation_server +utf8_bin +SET @@global.collation_server = utf8_unicode_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_unicode_ci +SET @@global.collation_server = utf8_icelandic_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_icelandic_ci +SET @@global.collation_server = utf8_latvian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_latvian_ci +SET @@global.collation_server = utf8_romanian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_romanian_ci +SET @@global.collation_server = utf8_slovenian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_slovenian_ci +SET @@global.collation_server = utf8_polish_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_polish_ci +SET @@global.collation_server = utf8_estonian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_estonian_ci +SET @@global.collation_server = utf8_spanish_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_spanish_ci +SET @@global.collation_server = utf8_swedish_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_swedish_ci +SET @@global.collation_server = utf8_turkish_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_turkish_ci +SET @@global.collation_server = utf8_czech_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_czech_ci +SET @@global.collation_server = utf8_danish_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_danish_ci +SET @@global.collation_server = utf8_lithuanian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_lithuanian_ci +SET @@global.collation_server = utf8_slovak_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_slovak_ci +SET @@global.collation_server = utf8_spanish2_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_spanish2_ci +SET @@global.collation_server = utf8_roman_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_roman_ci +SET @@global.collation_server = utf8_persian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_persian_ci +SET @@global.collation_server = utf8_esperanto_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_esperanto_ci +SET @@global.collation_server = utf8_hungarian_ci; +SELECT @@global.collation_server; +@@global.collation_server +utf8_hungarian_ci +SET @@global.collation_server = ucs2_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_general_ci +SET @@global.collation_server = ucs2_bin; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_bin +SET @@global.collation_server = ucs2_unicode_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_unicode_ci +SET @@global.collation_server = ucs2_icelandic_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_icelandic_ci +SET @@global.collation_server = ucs2_latvian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_latvian_ci +SET @@global.collation_server = ucs2_romanian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_romanian_ci +SET @@global.collation_server = ucs2_slovenian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_slovenian_ci +SET @@global.collation_server = ucs2_polish_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_polish_ci +SET @@global.collation_server = ucs2_estonian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_estonian_ci +SET @@global.collation_server = ucs2_spanish_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_spanish_ci +SET @@global.collation_server = ucs2_swedish_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_swedish_ci +SET @@global.collation_server = ucs2_turkish_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_turkish_ci +SET @@global.collation_server = ucs2_czech_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_czech_ci +SET @@global.collation_server = ucs2_danish_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_danish_ci +SET @@global.collation_server = ucs2_lithuanian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_lithuanian_ci +SET @@global.collation_server = ucs2_slovak_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_slovak_ci +SET @@global.collation_server = ucs2_spanish2_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_spanish2_ci +SET @@global.collation_server = ucs2_roman_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_roman_ci +SET @@global.collation_server = ucs2_persian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_persian_ci +SET @@global.collation_server = ucs2_esperanto_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_esperanto_ci +SET @@global.collation_server = ucs2_hungarian_ci; +SELECT @@global.collation_server; +@@global.collation_server +ucs2_hungarian_ci +SET @@global.collation_server = cp866_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp866_general_ci +SET @@global.collation_server = cp866_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp866_bin +SET @@global.collation_server = keybcs2_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +keybcs2_general_ci +SET @@global.collation_server = keybcs2_bin; +SELECT @@global.collation_server; +@@global.collation_server +keybcs2_bin +SET @@global.collation_server = macce_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +macce_general_ci +SET @@global.collation_server = macce_bin; +SELECT @@global.collation_server; +@@global.collation_server +macce_bin +SET @@global.collation_server = macroman_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +macroman_general_ci +SET @@global.collation_server = macroman_bin; +SELECT @@global.collation_server; +@@global.collation_server +macroman_bin +SET @@global.collation_server = cp852_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp852_general_ci +SET @@global.collation_server = cp852_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp852_bin +SET @@global.collation_server = latin7_estonian_cs; +SELECT @@global.collation_server; +@@global.collation_server +latin7_estonian_cs +SET @@global.collation_server = latin7_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +latin7_general_ci +SET @@global.collation_server = latin7_general_cs; +SELECT @@global.collation_server; +@@global.collation_server +latin7_general_cs +SET @@global.collation_server = latin7_bin; +SELECT @@global.collation_server; +@@global.collation_server +latin7_bin +SET @@global.collation_server = cp1251_bulgarian_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1251_bulgarian_ci +SET @@global.collation_server = cp1251_ukrainian_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1251_ukrainian_ci +SET @@global.collation_server = cp1251_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp1251_bin +SET @@global.collation_server = cp1251_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1251_general_ci +SET @@global.collation_server = cp1251_general_cs; +SELECT @@global.collation_server; +@@global.collation_server +cp1251_general_cs +SET @@global.collation_server = cp1256_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1256_general_ci +SET @@global.collation_server = cp1256_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp1256_bin +SET @@global.collation_server = cp1257_lithuanian_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1257_lithuanian_ci +SET @@global.collation_server = cp1257_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp1257_bin +SET @@global.collation_server = cp1257_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp1257_general_ci +SET @@global.collation_server = binary; +SELECT @@global.collation_server; +@@global.collation_server +binary +SET @@global.collation_server = geostd8_general_ci; +SELECT @@global.collation_server; +@@global.collation_server +geostd8_general_ci +SET @@global.collation_server = geostd8_bin; +SELECT @@global.collation_server; +@@global.collation_server +geostd8_bin +SET @@global.collation_server = cp932_japanese_ci; +SELECT @@global.collation_server; +@@global.collation_server +cp932_japanese_ci +SET @@global.collation_server = cp932_bin; +SELECT @@global.collation_server; +@@global.collation_server +cp932_bin +SET @@global.collation_server = eucjpms_japanese_ci; +SELECT @@global.collation_server; +@@global.collation_server +eucjpms_japanese_ci +SET @@global.collation_server = eucjpms_bin; +SELECT @@global.collation_server; +@@global.collation_server +eucjpms_bin +'#--------------------FN_DYNVARS_014_08-------------------------#' +SET @@collation_server = LATIN7_GENERAL_CS; +SELECT @@collation_server; +@@collation_server +latin7_general_cs +SET @@collation_server = latin7_general_cs; +SELECT @@collation_server; +@@collation_server +latin7_general_cs +SET @@global.collation_server = Latin7_GeneRal_cS; +SELECT @@global.collation_server; +@@global.collation_server +latin7_general_cs +'#--------------------FN_DYNVARS_014_09-------------------------#' +SET @@collation_server = 1; +SELECT @@collation_server; +@@collation_server +big5_chinese_ci +SET @@collation_server = 2; +SELECT @@collation_server; +@@collation_server +latin2_czech_cs +SET @@collation_server = 3; +SELECT @@collation_server; +@@collation_server +dec8_swedish_ci +SET @@collation_server = 99; +SELECT @@collation_server; +@@collation_server +cp1250_polish_ci +SET @@collation_server = 100; +ERROR HY000: Unknown collation: '100' +SET @@global.collation_server = 1; +SELECT @@global.collation_server; +@@global.collation_server +big5_chinese_ci +SET @@global.collation_server = 2; +SELECT @@global.collation_server; +@@global.collation_server +latin2_czech_cs +SET @@global.collation_server = 3; +SELECT @@global.collation_server; +@@global.collation_server +dec8_swedish_ci +SET @@global.collation_server = 99; +SELECT @@global.collation_server; +@@global.collation_server +cp1250_polish_ci +SET @@global.collation_server = 100; +ERROR HY000: Unknown collation: '100' +SET @total_collations = (SELECT count(*) FROM INFORMATION_SCHEMA.COLLATIONS); +SELECT @total_collations > 120; +@total_collations > 120 +1 +'#--------------------FN_DYNVARS_014_10-------------------------#' +SET @@collation_server = latin7_binary; +ERROR HY000: Unknown collation: 'latin7_binary' +SET @@collation_server = 'eucjpms_japanese_cs'; +ERROR HY000: Unknown collation: 'eucjpms_japanese_cs' +SET @@collation_server = 0; +ERROR HY000: Unknown collation: '0' +SET @@collation_server = 1.01; +ERROR 42000: Incorrect argument type to variable 'collation_server' +SET @@collation_server = -1; +ERROR HY000: Unknown collation: '-1' +SET @@collation_server = ''; +ERROR HY000: Unknown collation: '' +SET @@collation_server = ' eucjpms_bin'; +ERROR HY000: Unknown collation: ' eucjpms_bin' +SET @@collation_server = true; +SELECT @@collation_server AS res_with_true; +res_with_true +big5_chinese_ci +SET @@collation_server = ON; +ERROR HY000: Unknown collation: 'ON' +'#--------------------FN_DYNVARS_014_11-------------------------#' +SET @@global.collation_server = latin7_binary; +ERROR HY000: Unknown collation: 'latin7_binary' +SET @@global.collation_server = 'eucjpms_japanese_cs'; +ERROR HY000: Unknown collation: 'eucjpms_japanese_cs' +SET @@global.collation_server = 0; +ERROR HY000: Unknown collation: '0' +SET @@global.collation_server = 1.1; +ERROR 42000: Incorrect argument type to variable 'collation_server' +SET @@global.collation_server = -1; +ERROR HY000: Unknown collation: '-1' +SET @@global.collation_server = ""; +ERROR HY000: Unknown collation: '' +SET @@global.collation_server = ' eucjpms_bin'; +ERROR HY000: Unknown collation: ' eucjpms_bin' +SET @@global.collation_server = true; +SET @@global.collation_server = ON; +ERROR HY000: Unknown collation: 'ON' +'#--------------------FN_DYNVARS_014_12-------------------------#' +SELECT @@global.collation_server = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='collation_server') AS res; +res +1 +SET @@global.collation_server = 1; +SELECT @@global.collation_server; +@@global.collation_server +big5_chinese_ci +SELECT @@global.collation_server = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='collation_server') AS res; +res +1 +'#--------------------FN_DYNVARS_014_13-------------------------#' +SELECT @@collation_server = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_server') AS res; +res +1 +SELECT @@local.collation_server = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_server') AS res; +res +1 +SELECT @@session.collation_server = +(SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='collation_server') AS res; +res +1 +SET @@global.collation_server = @global_start_value; +SELECT @@global.collation_server; +@@global.collation_server +latin1_swedish_ci +SET @@session.collation_server = @session_start_value; +SELECT @@session.collation_server; +@@session.collation_server +latin1_swedish_ci diff --git a/mysql-test/r/collation_server_func.result b/mysql-test/r/collation_server_func.result new file mode 100644 index 00000000000..98672bc452b --- /dev/null +++ b/mysql-test/r/collation_server_func.result @@ -0,0 +1,91 @@ +'#--------------------FN_DYNVARS_014_01-------------------------#' +SET @global_collation_server = @@global.collation_server; +SET @session_collation_server = @@session.collation_server; +SET @@global.collation_server = latin1_danish_ci; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.collation_server; +@@global.collation_server +latin1_danish_ci +SELECT @@session.collation_server; +@@session.collation_server +latin1_danish_ci +'#--------------------FN_DYNVARS_014_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1,t2; +'---check if setting collation_server update character_set_server---' +SET @@session.collation_server = utf8_spanish_ci; +SELECT @@collation_server, @@character_set_server; +@@collation_server @@character_set_server +utf8_spanish_ci utf8 +'--check if collation_server effects database/table charset/collation--' +SET @@session.collation_server = latin1_german1_ci; +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +Database Create Database +db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_german1_ci */ +CREATE TABLE t1(a CHAR(20)); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(20) COLLATE latin1_german1_ci DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci +'---check if updating collation_server effects new table/column---' +SET @@session.collation_server = latin1_swedish_ci; +CREATE TABLE t2(a CHAR(10)); +SHOW CREATE TABLE t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` char(10) COLLATE latin1_german1_ci DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci +INSERT INTO t1 VALUES('Muffler'),('Mller'),('MX Systems'); +'---check if collation_server effects results sort order---' +SET @@session.collation_server = latin1_swedish_ci; +SELECT * FROM t1 ORDER BY a; +a +Muffler +Mller +MX Systems +SET @@session.collation_server = latin1_german1_ci; +SELECT * FROM t1 ORDER BY a; +a +Muffler +Mller +MX Systems +SELECT * FROM t1 ORDER BY a COLLATE latin1_swedish_ci; +a +Muffler +MX Systems +Mller +SELECT * FROM t1 ORDER BY a COLLATE latin1_german1_ci; +a +Muffler +Mller +MX Systems +'---check if indexing is effected by collation_server---' +SET @@session.collation_server = latin1_swedish_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +Table Op Msg_type Msg_text +db1.t1 repair status OK +SELECT * FROM t1 ORDER BY a; +a +Muffler +Mller +MX Systems +ALTER TABLE t1 DROP PRIMARY KEY; +SET @@session.collation_server = latin1_german1_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +Table Op Msg_type Msg_text +db1.t1 repair status OK +SELECT * FROM t1 ORDER BY a; +a +Muffler +Mller +MX Systems +DROP TABLE t1,t2; +DROP DATABASE db1; +SET @@global.collation_server = @global_collation_server; +SET @@session.collation_server = @session_collation_server; diff --git a/mysql-test/r/completion_type_basic.result b/mysql-test/r/completion_type_basic.result new file mode 100644 index 00000000000..93bfe581182 --- /dev/null +++ b/mysql-test/r/completion_type_basic.result @@ -0,0 +1,122 @@ +SET @start_global_value = @@global.completion_type; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.completion_type; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_017_01-------------------------#' +SET @@global.completion_type = 2; +SET @@global.completion_type = DEFAULT; +SELECT @@global.completion_type; +@@global.completion_type +0 +SET @@session.completion_type = 1; +SET @@session.completion_type = DEFAULT; +SELECT @@session.completion_type; +@@session.completion_type +0 +'#--------------------FN_DYNVARS_017_02-------------------------#' +SET @@global.completion_type = @start_global_value; +SELECT @@global.completion_type = 0; +@@global.completion_type = 0 +1 +SET @@session.completion_type = @start_session_value; +SELECT @@session.completion_type = 0; +@@session.completion_type = 0 +1 +'#--------------------FN_DYNVARS_017_03-------------------------#' +SET @@global.completion_type = 0; +SELECT @@global.completion_type; +@@global.completion_type +0 +SET @@global.completion_type = 1; +SELECT @@global.completion_type; +@@global.completion_type +1 +SET @@global.completion_type = 2; +SELECT @@global.completion_type; +@@global.completion_type +2 +'#--------------------FN_DYNVARS_017_04-------------------------#' +SET @@session.completion_type = 0; +SELECT @@session.completion_type; +@@session.completion_type +0 +SET @@session.completion_type = 1; +SELECT @@session.completion_type; +@@session.completion_type +1 +SET @@session.completion_type = 2; +SELECT @@session.completion_type; +@@session.completion_type +2 +'#------------------FN_DYNVARS_017_05-----------------------#' +SET @@global.completion_type = 10; +ERROR 42000: Variable 'completion_type' can't be set to the value of '10' +SET @@global.completion_type = -1024; +ERROR 42000: Variable 'completion_type' can't be set to the value of '-1024' +SET @@global.completion_type = 2.4; +ERROR 42000: Incorrect argument type to variable 'completion_type' +SET @@global.completion_type = OFF; +ERROR 42000: Incorrect argument type to variable 'completion_type' +SET @@session.completion_type = 10; +ERROR 42000: Variable 'completion_type' can't be set to the value of '10' +SET @@session.completion_type = -2; +ERROR 42000: Variable 'completion_type' can't be set to the value of '-2' +SET @@session.completion_type = 1.2; +ERROR 42000: Incorrect argument type to variable 'completion_type' +SET @@session.completion_type = ON; +ERROR 42000: Incorrect argument type to variable 'completion_type' +'#------------------FN_DYNVARS_017_06-----------------------#' +SELECT @@global.completion_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='completion_type'; +@@global.completion_type = VARIABLE_VALUE +1 +SELECT @@session.completion_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='completion_type'; +@@session.completion_type = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_017_07-----------------------#' +SET @@global.completion_type = TRUE; +SELECT @@global.completion_type; +@@global.completion_type +1 +SET @@global.completion_type = FALSE; +SELECT @@global.completion_type; +@@global.completion_type +0 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@completion_type = 1; +SELECT @@completion_type = @@local.completion_type; +@@completion_type = @@local.completion_type +1 +SELECT @@local.completion_type = @@session.completion_type; +@@local.completion_type = @@session.completion_type +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET completion_type = 1; +SELECT @@completion_type; +@@completion_type +1 +SET local.completion_type = 1; +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 'completion_type = 1' at line 1 +SELECT local.completion_type; +ERROR 42S02: Unknown table 'local' in field list +SET session.completion_type = 1; +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 'completion_type = 1' at line 1 +SELECT session.completion_type; +ERROR 42S02: Unknown table 'session' in field list +SELECT completion_type = @@session.completion_type; +ERROR 42S22: Unknown column 'completion_type' in 'field list' +SET @@global.completion_type = @start_global_value; +SELECT @@global.completion_type; +@@global.completion_type +0 +SET @@session.completion_type = @start_session_value; +SELECT @@session.completion_type; +@@session.completion_type +0 diff --git a/mysql-test/r/completion_type_func.result b/mysql-test/r/completion_type_func.result new file mode 100644 index 00000000000..282bd1006cd --- /dev/null +++ b/mysql-test/r/completion_type_func.result @@ -0,0 +1,76 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name varchar(30) +) ENGINE = INNODB; +'#--------------------FN_DYNVARS_017_01-------------------------#' +## Creating new connection ## +INSERT into t1(name) values('Record_1'); +SET @@autocommit = 0; +SELECT * from t1; +id name +1 Record_1 +## Setting value of variable to 0 ## +SET @@session.completion_type = 0; +## Here commit & rollback should work normally ## +START TRANSACTION; +SELECT * from t1; +id name +1 Record_1 +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +3 Record_3 +DELETE FROM t1 where id = 2; +SELECT * from t1; +id name +1 Record_1 +3 Record_3 +START TRANSACTION; +SELECT * from t1; +id name +1 Record_1 +3 Record_3 +INSERT into t1(name) values('Record_4'); +INSERT into t1(name) values('Record_5'); +COMMIT; +'#--------------------FN_DYNVARS_017_02-------------------------#' +SET @@session.completion_type = 2; +## Here commit should work as COMMIT RELEASE ## +START TRANSACTION; +SELECT * from t1; +id name +1 Record_1 +3 Record_3 +4 Record_4 +5 Record_5 +INSERT into t1(name) values('Record_6'); +INSERT into t1(name) values('Record_7'); +COMMIT; +## Inserting rows should give error here because connection should ## +## disconnect after using COMMIT ## +INSERT into t1(name) values('Record_4'); +Got one of the listed errors +## Creating new connection test_con2 ## +SET @@session.completion_type = 2; +## Inserting rows and using Rollback which should Rollback & release ## +START TRANSACTION; +SELECT * from t1; +id name +1 Record_1 +3 Record_3 +4 Record_4 +5 Record_5 +6 Record_6 +7 Record_7 +INSERT into t1(name) values('Record_8'); +INSERT into t1(name) values('Record_9'); +ROLLBACK; +INSERT into t1(name) values('Record_4'); +Got one of the listed errors diff --git a/mysql-test/r/concurrent_insert_basic.result b/mysql-test/r/concurrent_insert_basic.result new file mode 100644 index 00000000000..e6614ea6abb --- /dev/null +++ b/mysql-test/r/concurrent_insert_basic.result @@ -0,0 +1,106 @@ +SET @start_value = @@global.concurrent_insert; +SELECT @start_value; +@start_value +1 +'#--------------------FN_DYNVARS_018_01------------------------#' +SET @@global.concurrent_insert = 0; +SET @@global.concurrent_insert = DEFAULT; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +1 +'#---------------------FN_DYNVARS_018_02-------------------------#' +SET @@global.concurrent_insert = DEFAULT; +SELECT @@global.concurrent_insert = 1; +@@global.concurrent_insert = 1 +1 +'#--------------------FN_DYNVARS_018_03------------------------#' +SET @@global.concurrent_insert = 0; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +0 +SET @@global.concurrent_insert = 1; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +1 +SET @@global.concurrent_insert = 2; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +2 +'#--------------------FN_DYNVARS_018_04-------------------------#' +SET @@global.concurrent_insert = -1; +Select @@global.concurrent_insert; +@@global.concurrent_insert +0 +SET @@global.concurrent_insert = 100; +Warnings: +Warning 1292 Truncated incorrect concurrent-insert value: '100' +Select @@global.concurrent_insert; +@@global.concurrent_insert +2 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.concurrent_insert = TRUEF; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = TRUE_F; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = FALSE0; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = OON; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = ONN; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = OOFF; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = 0FF; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = ' '; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = " "; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = ''; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +'#-------------------FN_DYNVARS_018_05----------------------------#' +SET @@session.concurrent_insert = 1; +ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.concurrent_insert = 1; +ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable +'#----------------------FN_DYNVARS_018_06------------------------#' +SELECT @@global.concurrent_insert = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='concurrent_insert'; +@@global.concurrent_insert = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_018_07----------------------#' +SET @@global.concurrent_insert = OFF; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +SET @@global.concurrent_insert = ON; +ERROR 42000: Incorrect argument type to variable 'concurrent_insert' +'#---------------------FN_DYNVARS_018_08----------------------#' +SET @@global.concurrent_insert = TRUE; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +1 +SET @@global.concurrent_insert = FALSE; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +0 +'#---------------------FN_DYNVARS_018_09----------------------#' +SET @@global.concurrent_insert = 1; +SELECT @@concurrent_insert = @@global.concurrent_insert; +@@concurrent_insert = @@global.concurrent_insert +1 +'#---------------------FN_DYNVARS_018_10----------------------#' +SET concurrent_insert = 1; +ERROR HY000: Variable 'concurrent_insert' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@concurrent_insert; +@@concurrent_insert +1 +SET global.concurrent_insert = 1; +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 'concurrent_insert = 1' at line 1 +SELECT global.concurrent_insert; +ERROR 42S02: Unknown table 'global' in field list +SELECT concurrent_insert = @@session.concurrent_insert; +ERROR 42S22: Unknown column 'concurrent_insert' in 'field list' +SET @@global.concurrent_insert = @start_value; +SELECT @@global.concurrent_insert; +@@global.concurrent_insert +1 diff --git a/mysql-test/r/concurrent_insert_func.result b/mysql-test/r/concurrent_insert_func.result new file mode 100644 index 00000000000..87573bb2873 --- /dev/null +++ b/mysql-test/r/concurrent_insert_func.result @@ -0,0 +1,73 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +name varchar(30) +); +'#--------------------FN_DYNVARS_018_01-------------------------#' +## Setting initial value of variable to 1 ## +SET @@global.concurrent_insert = 1; +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); +## locking table ## +lock table t1 read local; +## Creating new connection to insert some rows in table ## +## New records should come at the end of all rows ## +INSERT into t1(name) values('Record_4'); +SELECT * from t1; +name +Record_1 +Record_2 +Record_3 +Record_4 +## unlocking tables ## +unlock tables; +## deleting record to create hole in table ## +DELETE from t1 where name ='Record_2'; +'#--------------------FN_DYNVARS_018_02-------------------------#' +'#--------------------FN_DYNVARS_018_03-------------------------#' +## lock table and connect with connection1 ## +lock table t1 read local; +## setting value of concurrent_insert to 2 ## +SET @@global.concurrent_insert=2; +## Inserting record in table, record should go at the end of the table ## +INSERT into t1(name) values('Record_5'); +SELECT * from t1; +name +Record_1 +Record_3 +Record_4 +Record_5 +SELECT @@concurrent_insert; +@@concurrent_insert +2 +## Switching to default connection ## +## Unlocking table ## +unlock tables; +SELECT * from t1; +name +Record_1 +Record_3 +Record_4 +Record_5 +## Inserting new row, this should go in the hole ## +INSERT into t1(name) values('Record_6'); +SELECT * from t1; +name +Record_1 +Record_6 +Record_3 +Record_4 +Record_5 +## connection test_con1 ## +DELETE from t1 where name ='Record_3'; +SELECT * from t1; +name +Record_1 +Record_6 +Record_4 +Record_5 +## Dropping table ## +DROP table t1; +## Disconnecting connection ## diff --git a/mysql-test/r/connect_timeout_basic.result b/mysql-test/r/connect_timeout_basic.result new file mode 100644 index 00000000000..7cdd747fc15 --- /dev/null +++ b/mysql-test/r/connect_timeout_basic.result @@ -0,0 +1,94 @@ +SET @start_value = @@global.connect_timeout; +SELECT @start_value; +@start_value +60 +'#--------------------FN_DYNVARS_019_01------------------------#' +SET @@global.connect_timeout = 100; +SET @@global.connect_timeout = DEFAULT; +SELECT @@global.connect_timeout; +@@global.connect_timeout +10 +'#---------------------FN_DYNVARS_019_02-------------------------#' +SET @@global.connect_timeout = @start_value; +SELECT @@global.connect_timeout = 5; +@@global.connect_timeout = 5 +0 +'#--------------------FN_DYNVARS_019_03------------------------#' +SET @@global.connect_timeout = 2; +SELECT @@global.connect_timeout; +@@global.connect_timeout +2 +SET @@global.connect_timeout = 10000; +SELECT @@global.connect_timeout; +@@global.connect_timeout +10000 +SET @@global.connect_timeout = 21221204; +SELECT @@global.connect_timeout; +@@global.connect_timeout +21221204 +'#--------------------FN_DYNVARS_019_04-------------------------#' +SET @@global.connect_timeout = 1; +Warnings: +Warning 1292 Truncated incorrect connect_timeout value: '1' +SELECT @@global.connect_timeout; +@@global.connect_timeout +2 +SET @@global.connect_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect connect_timeout value: '0' +SELECT @@global.connect_timeout; +@@global.connect_timeout +2 +SET @@global.connect_timeout = 42949672950; +Warnings: +Warning 1292 Truncated incorrect connect_timeout value: '42949672950' +SELECT @@global.connect_timeout; +@@global.connect_timeout +31536000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.connect_timeout = 21221204.10; +ERROR 42000: Incorrect argument type to variable 'connect_timeout' +SET @@global.connect_timeout = ON; +ERROR 42000: Incorrect argument type to variable 'connect_timeout' +'#-------------------FN_DYNVARS_019_05----------------------------#' +SET @@session.connect_timeout = 0; +ERROR HY000: Variable 'connect_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.connect_timeout; +ERROR HY000: Variable 'connect_timeout' is a GLOBAL variable +'#----------------------FN_DYNVARS_019_06------------------------#' +SELECT @@global.connect_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='connect_timeout'; +@@global.connect_timeout = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_019_07----------------------#' +SET @@global.connect_timeout = TRUE; +Warnings: +Warning 1292 Truncated incorrect connect_timeout value: '1' +SELECT @@global.connect_timeout; +@@global.connect_timeout +2 +SET @@global.connect_timeout = FALSE; +Warnings: +Warning 1292 Truncated incorrect connect_timeout value: '0' +SELECT @@global.connect_timeout; +@@global.connect_timeout +2 +'#---------------------FN_DYNVARS_019_08----------------------#' +SET @@global.connect_timeout = 5; +SELECT @@connect_timeout = @@global.connect_timeout; +@@connect_timeout = @@global.connect_timeout +1 +'#---------------------FN_DYNVARS_019_09----------------------#' +SET connect_timeout = 1; +ERROR HY000: Variable 'connect_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SET global.connect_timeout = 1; +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 'connect_timeout = 1' at line 1 +SELECT global.connect_timeout; +ERROR 42S02: Unknown table 'global' in field list +SELECT connect_timeout = @@session.connect_timeout; +ERROR 42S22: Unknown column 'connect_timeout' in 'field list' +SET @@global.connect_timeout = @start_value; +SELECT @@global.connect_timeout; +@@global.connect_timeout +60 diff --git a/mysql-test/r/datadir_basic.result b/mysql-test/r/datadir_basic.result new file mode 100644 index 00000000000..ade6f2873e8 --- /dev/null +++ b/mysql-test/r/datadir_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_004_01----------------------#' +SELECT COUNT(@@GLOBAL.datadir); +COUNT(@@GLOBAL.datadir) +1 +1 Expected +'#---------------------BS_STVARS_004_02----------------------#' +SET @@GLOBAL.datadir=1; +ERROR HY000: Variable 'datadir' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.datadir); +COUNT(@@GLOBAL.datadir) +1 +1 Expected +'#---------------------BS_STVARS_004_03----------------------#' +SELECT @@GLOBAL.datadir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='datadir'; +@@GLOBAL.datadir = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.datadir); +COUNT(@@GLOBAL.datadir) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='datadir'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_004_04----------------------#' +SELECT @@datadir = @@GLOBAL.datadir; +@@datadir = @@GLOBAL.datadir +1 +1 Expected +'#---------------------BS_STVARS_004_05----------------------#' +SELECT COUNT(@@datadir); +COUNT(@@datadir) +1 +1 Expected +SELECT COUNT(@@local.datadir); +ERROR HY000: Variable 'datadir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.datadir); +ERROR HY000: Variable 'datadir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.datadir); +COUNT(@@GLOBAL.datadir) +1 +1 Expected +SELECT datadir = @@SESSION.datadir; +ERROR 42S22: Unknown column 'datadir' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/default_week_format_basic.result b/mysql-test/r/default_week_format_basic.result new file mode 100644 index 00000000000..d513ef1c41e --- /dev/null +++ b/mysql-test/r/default_week_format_basic.result @@ -0,0 +1,168 @@ +SET @start_global_value = @@global.default_week_format; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.default_week_format; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_022_01-------------------------#' +SET @@global.default_week_format = 100; +Warnings: +Warning 1292 Truncated incorrect default_week_format value: '100' +SET @@global.default_week_format = DEFAULT; +SELECT @@global.default_week_format; +@@global.default_week_format +0 +SET @@session.default_week_format = 200; +Warnings: +Warning 1292 Truncated incorrect default_week_format value: '200' +SET @@session.default_week_format = DEFAULT; +SELECT @@session.default_week_format; +@@session.default_week_format +0 +'#--------------------FN_DYNVARS_022_02-------------------------#' +SET @@global.default_week_format = @start_global_value; +SELECT @@global.default_week_format = 0; +@@global.default_week_format = 0 +1 +SET @@session.default_week_format = @start_global_value; +SELECT @@session.default_week_format = 0; +@@session.default_week_format = 0 +1 +'#--------------------FN_DYNVARS_022_03-------------------------#' +SET @@global.default_week_format = 1; +SELECT @@global.default_week_format; +@@global.default_week_format +1 +SET @@global.default_week_format = 0; +SELECT @@global.default_week_format; +@@global.default_week_format +0 +SET @@global.default_week_format = 7; +SELECT @@global.default_week_format; +@@global.default_week_format +7 +'#--------------------FN_DYNVARS_022_04-------------------------#' +SET @@session.default_week_format = 1; +SELECT @@session.default_week_format; +@@session.default_week_format +1 +SET @@session.default_week_format = 0; +SELECT @@session.default_week_format; +@@session.default_week_format +0 +SET @@session.default_week_format = 7; +SELECT @@session.default_week_format; +@@session.default_week_format +7 +'#------------------FN_DYNVARS_022_05-----------------------#' +SET @@global.default_week_format = 8; +Warnings: +Warning 1292 Truncated incorrect default_week_format value: '8' +SELECT @@global.default_week_format; +@@global.default_week_format +7 +SET @@global.default_week_format = -1024; +SELECT @@global.default_week_format; +@@global.default_week_format +0 +SET @@global.default_week_format = 65536; +Warnings: +Warning 1292 Truncated incorrect default_week_format value: '65536' +SELECT @@global.default_week_format; +@@global.default_week_format +7 +SET @@global.default_week_format = 65530.30; +ERROR 42000: Incorrect argument type to variable 'default_week_format' +SELECT @@global.default_week_format; +@@global.default_week_format +7 +SET @@global.default_week_format = OFF; +ERROR 42000: Incorrect argument type to variable 'default_week_format' +SELECT @@global.default_week_format; +@@global.default_week_format +7 +SET @@session.default_week_format = ON; +ERROR 42000: Incorrect argument type to variable 'default_week_format' +SELECT @@session.default_week_format; +@@session.default_week_format +7 +SET @@session.default_week_format = 65530.30; +ERROR 42000: Incorrect argument type to variable 'default_week_format' +SELECT @@session.default_week_format; +@@session.default_week_format +7 +SET @@session.default_week_format = 10; +Warnings: +Warning 1292 Truncated incorrect default_week_format value: '10' +SELECT @@session.default_week_format; +@@session.default_week_format +7 +SET @@session.default_week_format = -2; +SELECT @@session.default_week_format; +@@session.default_week_format +0 +SET @@session.default_week_format = 65550; +Warnings: +Warning 1292 Truncated incorrect default_week_format value: '65550' +SELECT @@session.default_week_format; +@@session.default_week_format +7 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +'#------------------FN_DYNVARS_022_06-----------------------#' +SELECT @@global.default_week_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='default_week_format'; +@@global.default_week_format = VARIABLE_VALUE +1 +SELECT @@session.default_week_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='default_week_format'; +@@session.default_week_format = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_022_07-----------------------#' +SET @@global.default_week_format = TRUE; +SELECT @@global.default_week_format; +@@global.default_week_format +1 +SET @@global.default_week_format = FALSE; +SELECT @@global.default_week_format; +@@global.default_week_format +0 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@global.default_week_format = 0; +SELECT @@default_week_format = @@global.default_week_format; +@@default_week_format = @@global.default_week_format +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@default_week_format = 1; +SELECT @@default_week_format = @@local.default_week_format; +@@default_week_format = @@local.default_week_format +1 +SELECT @@local.default_week_format = @@session.default_week_format; +@@local.default_week_format = @@session.default_week_format +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET default_week_format = 1; +SELECT @@default_week_format; +@@default_week_format +1 +SET local.default_week_format = 1; +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 'default_week_format = 1' at line 1 +SELECT local.default_week_format; +ERROR 42S02: Unknown table 'local' in field list +SET session.default_week_format = 1; +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 'default_week_format = 1' at line 1 +SELECT session.default_week_format; +ERROR 42S02: Unknown table 'session' in field list +SELECT default_week_format = @@session.default_week_format; +ERROR 42S22: Unknown column 'default_week_format' in 'field list' +SET @@global.default_week_format = @start_global_value; +SELECT @@global.default_week_format; +@@global.default_week_format +0 +SET @@session.default_week_format = @start_session_value; +SELECT @@session.default_week_format; +@@session.default_week_format +0 diff --git a/mysql-test/r/default_week_format_func.result b/mysql-test/r/default_week_format_func.result new file mode 100644 index 00000000000..279a1785255 --- /dev/null +++ b/mysql-test/r/default_week_format_func.result @@ -0,0 +1,65 @@ +'#--------------------FN_DYNVARS_022_01-------------------------#' +## Setting variable's value to 0 ## +SET @@session.default_week_format = 0; +SELECT @@session.default_week_format; +@@session.default_week_format +0 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +3 +## Setting variable's value to 1 ## +SET @@session.default_week_format = 1; +SELECT @@session.default_week_format; +@@session.default_week_format +1 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +3 +## Setting variable's value to 2 ## +SET @@session.default_week_format = 2; +SELECT @@session.default_week_format; +@@session.default_week_format +2 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +3 +## Setting variable's value to 3 ## +SET @@session.default_week_format = 3; +SELECT @@session.default_week_format; +@@session.default_week_format +3 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +3 +## Setting variable's value to 4 ## +SET @@session.default_week_format = 4; +SELECT @@session.default_week_format; +@@session.default_week_format +4 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +4 +## Setting variable's value to 5 ## +SET @@session.default_week_format = 5; +SELECT @@session.default_week_format; +@@session.default_week_format +5 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +2 +## Setting variable's value to 6 ## +SET @@session.default_week_format = 6; +SELECT @@session.default_week_format; +@@session.default_week_format +6 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +4 +## Setting variable's value to 7 ## +SET @@session.default_week_format = 7; +SELECT @@session.default_week_format; +@@session.default_week_format +7 +SELECT WEEK('2008-01-20'); +WEEK('2008-01-20') +2 diff --git a/mysql-test/r/delay_key_write_basic.result b/mysql-test/r/delay_key_write_basic.result new file mode 100644 index 00000000000..100c62ac47e --- /dev/null +++ b/mysql-test/r/delay_key_write_basic.result @@ -0,0 +1,98 @@ +SET @start_value = @@global.delay_key_write; +SELECT @start_value; +@start_value +ON +'#--------------------FN_DYNVARS_023_01------------------------#' +SET @@global.delay_key_write = OFF; +SET @@global.delay_key_write = DEFAULT; +ERROR 42000: Variable 'delay_key_write' doesn't have a default value +'Bug # 34878: Documentation specifies a DEFAULT value of ON for variable but'; +'its not supported'; +SELECT @@global.delay_key_write; +@@global.delay_key_write +OFF +'#---------------------FN_DYNVARS_023_02-------------------------#' +SET @@global.delay_key_write = NULL; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'NULL' +'#--------------------FN_DYNVARS_023_03------------------------#' +SET @@global.delay_key_write = ON; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ON +SET @@global.delay_key_write = OFF; +SELECT @@global.delay_key_write; +@@global.delay_key_write +OFF +SET @@global.delay_key_write = ALL; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ALL +'#--------------------FN_DYNVARS_023_04-------------------------#' +SET @@global.delay_key_write = 3; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of '3' +SET @@global.delay_key_write = -1; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of '-1' +SET @@global.delay_key_write = TRU; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'TRU' +SET @@global.delay_key_write = ERROR; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'ERROR' +SET @@global.delay_key_write = FALSE0; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'FALSE0' +SET @@global.delay_key_write = ONN; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of 'ONN' +SET @@global.delay_key_write = OF; +SELECT @@global.delay_key_write; +@@global.delay_key_write +OFF +'Bug# 34828: Variable is incorrectly accepting OF as a value' +SET @@global.delay_key_write = ' '; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of ' ' +SET @@global.delay_key_write = ""; +ERROR 42000: Variable 'delay_key_write' can't be set to the value of '' +'#-------------------FN_DYNVARS_023_05----------------------------#' +SET @@delay_key_write = 0; +ERROR HY000: Variable 'delay_key_write' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.delay_key_write; +ERROR HY000: Variable 'delay_key_write' is a GLOBAL variable +'#----------------------FN_DYNVARS_023_06------------------------#' +SELECT @@delay_key_write = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delay_key_write'; +@@delay_key_write = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_023_07-------------------------#' +SET @@global.delay_key_write = 0; +SELECT @@global.delay_key_write; +@@global.delay_key_write +OFF +SET @@global.delay_key_write = 1; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ON +SET @@global.delay_key_write = 2; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ALL +'#---------------------FN_DYNVARS_023_08----------------------#' +SET @@global.delay_key_write = TRUE; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ON +SET @@global.delay_key_write = FALSE; +SELECT @@global.delay_key_write; +@@global.delay_key_write +OFF +'#---------------------FN_DYNVARS_023_09----------------------#' +SET delay_key_write = ON; +ERROR HY000: Variable 'delay_key_write' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@delay_key_write; +@@delay_key_write +OFF +SET GLOBAL delay_key_write = OFF; +SELECT @@global.delay_key_write; +@@global.delay_key_write +OFF +SET @@global.delay_key_write = @start_value; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ON diff --git a/mysql-test/r/delay_key_write_func.result b/mysql-test/r/delay_key_write_func.result new file mode 100644 index 00000000000..fdeaece3457 --- /dev/null +++ b/mysql-test/r/delay_key_write_func.result @@ -0,0 +1,66 @@ +'#--------------------FN_DYNVARS_023_01-------------------------#' +SET @@global.delay_key_write = ON; +SELECT @@global.delay_key_write; +@@global.delay_key_write +ON +'connect (user1,localhost,root,,,,)' +'connection user1' +SELECT @@global.delay_key_write AS res_is_ON; +res_is_ON +ON +SET @@global.delay_key_write = ALL; +'connect (user1,localhost,root,,,,)' +'connection user1' +SELECT @@global.delay_key_write AS res_is_ALL; +res_is_ALL +ALL +'#--------------------FN_DYNVARS_023_02-------------------------#' +'---check when delay_key_write is OFF---' +SET @@global.delay_key_write = OFF; +FLUSH STATUS; +CALL sp_addRecords(1,10); +SHOW STATUS LIKE 'Key_reads'; +Variable_name Value +Key_reads 0 +SHOW STATUS LIKE 'Key_writes'; +Variable_name Value +Key_writes 9 +SHOW STATUS LIKE 'Key_write_requests'; +Variable_name Value +Key_write_requests 9 +select count(*) from t1; +count(*) +9 +'----check when delay_key_write is ON---' +SET @@global.delay_key_write = ON; +FLUSH STATUS; +CALL sp_addRecords(1,10); +SHOW STATUS LIKE 'Key_reads'; +Variable_name Value +Key_reads 0 +SHOW STATUS LIKE 'Key_writes'; +Variable_name Value +Key_writes 0 +SHOW STATUS LIKE 'Key_write_requests'; +Variable_name Value +Key_write_requests 9 +select count(*) from t1; +count(*) +9 +'----check when delay_key_write is ALL---' +SET @@global.delay_key_write = ALL; +FLUSH STATUS; +CALL sp_addRecords(1,10); +SHOW STATUS LIKE 'Key_reads'; +Variable_name Value +Key_reads 0 +SHOW STATUS LIKE 'Key_writes'; +Variable_name Value +Key_writes 0 +SHOW STATUS LIKE 'Key_write_requests'; +Variable_name Value +Key_write_requests 9 +select count(*) from t1; +count(*) +9 +DROP TABLE t1; diff --git a/mysql-test/r/delayed_insert_limit_func.result b/mysql-test/r/delayed_insert_limit_func.result new file mode 100644 index 00000000000..d7129d24498 --- /dev/null +++ b/mysql-test/r/delayed_insert_limit_func.result @@ -0,0 +1,186 @@ +** Setup ** + +Creating connection con0 +Creating connection con1 +SET @global_delayed_insert_limit = @@GLOBAL.delayed_insert_limit; +CREATE TABLE t1 (a varchar(100)); +'#--------------------FN_DYNVARS_25_01-------------------------#' +SET GLOBAL delayed_insert_limit = 9; +** Connection con0 ** +SET GLOBAL delayed_insert_limit = 9; +** Connection con1 ** +SET GLOBAL delayed_insert_limit = 9; +** Connection default ** +SET GLOBAL delayed_insert_limit = 9; +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); +LOCK TABLE t1 WRITE; +** Connection con1 ** +INSERT DELAYED INTO t1 VALUES('7'); +INSERT DELAYED INTO t1 VALUES('8'); +INSERT DELAYED INTO t1 VALUES('9'); +INSERT DELAYED INTO t1 VALUES('10'); +INSERT DELAYED INTO t1 VALUES('11'); +INSERT DELAYED INTO t1 VALUES('12'); +INSERT DELAYED INTO t1 VALUES('13'); +INSERT DELAYED INTO t1 VALUES('14'); +INSERT DELAYED INTO t1 VALUES('15'); +INSERT DELAYED INTO t1 VALUES('16'); +INSERT DELAYED INTO t1 VALUES('17'); +INSERT DELAYED INTO t1 VALUES('18'); +INSERT DELAYED INTO t1 VALUES('19'); +INSERT DELAYED INTO t1 VALUES('20'); +INSERT DELAYED INTO t1 VALUES('21'); +INSERT DELAYED INTO t1 VALUES('22');| +** Connection con0 ** +SELECT * FROM t1;| +** Connection default ** +Waiting for 1 sec +UNLOCK TABLES; +** Connection con0 ** +a +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +'Bug#35386: insert delayed inserts 1 + limit rows instead of just limit rows' +** Connection default ** +Waiting for 1 sec +Checking if the delayed insert continued afterwards +SELECT * FROM t1; +a +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +DELETE FROM t1; +'#--------------------FN_DYNVARS_25_02-------------------------#' +SET GLOBAL delayed_insert_limit = 20; +** Connection con0 ** +SET GLOBAL delayed_insert_limit = 20; +** Connection con1 ** +SET GLOBAL delayed_insert_limit = 20; +** Connection default ** +SET GLOBAL delayed_insert_limit = 20; +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); +LOCK TABLE t1 WRITE; +** Connection con1 ** +Asynchronous execute +INSERT DELAYED INTO t1 VALUES('7'); +INSERT DELAYED INTO t1 VALUES('8'); +INSERT DELAYED INTO t1 VALUES('9'); +INSERT DELAYED INTO t1 VALUES('10'); +INSERT DELAYED INTO t1 VALUES('11'); +INSERT DELAYED INTO t1 VALUES('12'); +INSERT DELAYED INTO t1 VALUES('13'); +INSERT DELAYED INTO t1 VALUES('14'); +INSERT DELAYED INTO t1 VALUES('15'); +INSERT DELAYED INTO t1 VALUES('16'); +INSERT DELAYED INTO t1 VALUES('17'); +INSERT DELAYED INTO t1 VALUES('18'); +INSERT DELAYED INTO t1 VALUES('19'); +INSERT DELAYED INTO t1 VALUES('20'); +INSERT DELAYED INTO t1 VALUES('21'); +INSERT DELAYED INTO t1 VALUES('22');| +** Connection con0 ** +Asynchronous execute +SELECT * FROM t1;| +** Connection default ** +Waiting for 1 sec +UNLOCK TABLES; +** Connection con0 ** +Asynchronous execute result +a +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +** Connection default** +Waiting for 1 sec +Checking if the delayed insert gives the same result afterwards +SELECT * FROM t1; +a +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +DELETE FROM t1; +Switching to default +Disconnecting from con1, con0 +DROP TABLE t1; +SET @@GLOBAL.delayed_insert_limit = @global_delayed_insert_limit; diff --git a/mysql-test/r/delayed_insert_timeout_basic.result b/mysql-test/r/delayed_insert_timeout_basic.result new file mode 100644 index 00000000000..4049907eb80 --- /dev/null +++ b/mysql-test/r/delayed_insert_timeout_basic.result @@ -0,0 +1,114 @@ +SET @start_value = @@global.delayed_insert_timeout; +SELECT @start_value; +@start_value +300 +'#--------------------FN_DYNVARS_025_01------------------------#' +SET @@global.delayed_insert_timeout = 100; +SET @@global.delayed_insert_timeout = DEFAULT; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +300 +'#---------------------FN_DYNVARS_025_02-------------------------#' +SET @@global.delayed_insert_timeout = @start_value; +SELECT @@global.delayed_insert_timeout = 300; +@@global.delayed_insert_timeout = 300 +1 +'#--------------------FN_DYNVARS_025_03------------------------#' +SET @@global.delayed_insert_timeout = 10000; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +10000 +SET @@global.delayed_insert_timeout = 429; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +429 +SET @@global.delayed_insert_timeout = 1; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +1 +'#--------------------FN_DYNVARS_025_04-------------------------#' +SET @@global.delayed_insert_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_timeout value: '0' +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +1 +SET @@global.delayed_insert_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_timeout value: '0' +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +1 +SET @@global.delayed_insert_timeout = 42949672950; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_timeout value: '42949672950' +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +31536000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.delayed_insert_timeout = 429496729.5; +ERROR 42000: Incorrect argument type to variable 'delayed_insert_timeout' +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +31536000 +SET @@global.delayed_insert_timeout = ON; +ERROR 42000: Incorrect argument type to variable 'delayed_insert_timeout' +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +31536000 +'#-------------------FN_DYNVARS_025_05----------------------------#' +SET @@session.delayed_insert_timeout = 0; +ERROR HY000: Variable 'delayed_insert_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.dalayed_insert_timeout; +ERROR HY000: Unknown system variable 'dalayed_insert_timeout' +'#----------------------FN_DYNVARS_025_06------------------------#' +SELECT @@global.delayed_insert_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_timeout'; +@@global.delayed_insert_timeout = VARIABLE_VALUE +1 +SELECT @@delayed_insert_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_timeout'; +@@delayed_insert_timeout = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_025_07----------------------#' +SET @@global.delayed_insert_timeout = TRUE; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +1 +SET @@global.delayed_insert_timeout = FALSE; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_timeout value: '0' +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +1 +'#---------------------FN_DYNVARS_025_08----------------------#' +SET @@global.delayed_insert_timeout = 1; +SELECT @@delayed_insert_timeout = @@global.delayed_insert_timeout; +@@delayed_insert_timeout = @@global.delayed_insert_timeout +1 +'#---------------------FN_DYNVARS_025_09----------------------#' +SET delayed_insert_timeout = 1; +ERROR HY000: Variable 'delayed_insert_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@delayed_insert_timeout; +@@delayed_insert_timeout +1 +SET local.delayed_insert_timeout = 1; +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 'delayed_insert_timeout = 1' at line 1 +SELECT local.delayed_insert_timeout; +ERROR 42S02: Unknown table 'local' in field list +SET global.delayed_insert_timeout = 1; +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 'delayed_insert_timeout = 1' at line 1 +SELECT global.delayed_insert_timeout; +ERROR 42S02: Unknown table 'global' in field list +SELECT delayed_insert_timeout = @@session.delayed_insert_timeout; +ERROR 42S22: Unknown column 'delayed_insert_timeout' in 'field list' +SET @@global.delayed_insert_timeout = @start_value; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +300 +SET @@global.delayed_insert_timeout = @start_value; +SELECT @@global.delayed_insert_timeout; +@@global.delayed_insert_timeout +300 diff --git a/mysql-test/r/div_precision_increment_basic.result b/mysql-test/r/div_precision_increment_basic.result new file mode 100644 index 00000000000..d0311afa681 --- /dev/null +++ b/mysql-test/r/div_precision_increment_basic.result @@ -0,0 +1,186 @@ +SET @start_global_value = @@global.div_precision_increment; +SELECT @start_global_value; +@start_global_value +4 +SET @start_session_value = @@session.div_precision_increment; +SELECT @start_session_value; +@start_session_value +4 +'#--------------------FN_DYNVARS_027_01-------------------------#' +SET @@global.div_precision_increment = 100; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '100' +SET @@global.div_precision_increment = DEFAULT; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +4 +SET @@session.div_precision_increment = 200; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '200' +SET @@session.div_precision_increment = DEFAULT; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +4 +'#--------------------FN_DYNVARS_027_02-------------------------#' +SET @@global.div_precision_increment = @start_global_value; +SELECT @@global.div_precision_increment = 4; +@@global.div_precision_increment = 4 +1 +SET @@session.div_precision_increment = @start_session_value; +SELECT @@session.div_precision_increment = 4; +@@session.div_precision_increment = 4 +1 +'#--------------------FN_DYNVARS_027_03-------------------------#' +SET @@global.div_precision_increment = 1; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +1 +SET @@global.div_precision_increment = 0; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +0 +SET @@global.div_precision_increment = 10; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +10 +SET @@global.div_precision_increment = 30; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +30 +'#--------------------FN_DYNVARS_027_04-------------------------#' +SET @@session.div_precision_increment = 1; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +1 +SET @@session.div_precision_increment = 0; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +0 +SET @@session.div_precision_increment = 7; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +7 +SET @@session.div_precision_increment = 30; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +30 +'#------------------FN_DYNVARS_027_05-----------------------#' +SET @@global.div_precision_increment = 31; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '31' +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +30 +SET @@global.div_precision_increment = 40; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '40' +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +30 +SET @@global.div_precision_increment = -1024; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +0 +SET @@global.div_precision_increment = 65536; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '65536' +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +30 +SET @@session.div_precision_increment = 40; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '40' +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +30 +SET @@session.div_precision_increment = 31; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '31' +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +30 +SET @@session.div_precision_increment = -2; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +0 +SET @@session.div_precision_increment = 65550; +Warnings: +Warning 1292 Truncated incorrect div_precision_increment value: '65550' +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +30 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.div_precision_increment = 65530.30; +ERROR 42000: Incorrect argument type to variable 'div_precision_increment' +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +30 +SET @@global.div_precision_increment = OFF; +ERROR 42000: Incorrect argument type to variable 'div_precision_increment' +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +30 +SET @@session.div_precision_increment = ON; +ERROR 42000: Incorrect argument type to variable 'div_precision_increment' +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +30 +SET @@session.div_precision_increment = 65530.30; +ERROR 42000: Incorrect argument type to variable 'div_precision_increment' +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +30 +'#------------------FN_DYNVARS_027_06-----------------------#' +SELECT @@global.div_precision_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='div_precision_increment'; +@@global.div_precision_increment = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_027_07-----------------------#' +SELECT @@session.div_precision_increment = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='div_precision_increment'; +@@session.div_precision_increment = VARIABLE_VALUE +1 +SET @@global.div_precision_increment = TRUE; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +1 +SET @@global.div_precision_increment = FALSE; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +0 +'#---------------------FN_DYNVARS_027_08----------------------#' +SET @@global.div_precision_increment = 0; +SELECT @@div_precision_increment = @@global.div_precision_increment; +@@div_precision_increment = @@global.div_precision_increment +0 +'#---------------------FN_DYNVARS_027_09----------------------#' +SET @@div_precision_increment = 1; +SELECT @@div_precision_increment = @@local.div_precision_increment; +@@div_precision_increment = @@local.div_precision_increment +1 +SELECT @@local.div_precision_increment = @@session.div_precision_increment; +@@local.div_precision_increment = @@session.div_precision_increment +1 +'#---------------------FN_DYNVARS_027_10----------------------#' +SET div_precision_increment = 1; +SELECT @@div_precision_increment; +@@div_precision_increment +1 +SET local.div_precision_increment = 1; +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 'div_precision_increment = 1' at line 1 +SELECT local.div_precision_increment; +ERROR 42S02: Unknown table 'local' in field list +SET session.div_precision_increment = 1; +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 'div_precision_increment = 1' at line 1 +SELECT session.div_precision_increment; +ERROR 42S02: Unknown table 'session' in field list +SELECT div_precision_increment = @@session.div_precision_increment; +ERROR 42S22: Unknown column 'div_precision_increment' in 'field list' +SET @@global.div_precision_increment = @start_global_value; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +4 +SET @@session.div_precision_increment = @start_session_value; +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +4 diff --git a/mysql-test/r/div_precision_increment_func.result b/mysql-test/r/div_precision_increment_func.result new file mode 100644 index 00000000000..aaabcf901d8 --- /dev/null +++ b/mysql-test/r/div_precision_increment_func.result @@ -0,0 +1,79 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30), +salary LONG +); +'#--------------------FN_DYNVARS_027_01-------------------------#' +## Setting initial session value of variable to 3 ## +SET @@session.div_precision_increment = 3; +## Inserting some rows in table ## +INSERT into t1(name, salary) values('Record_1', 100011); +INSERT into t1(name, salary) values('Record_2', 501); +INSERT into t1(name, salary) values('Record_3', 210); +SELECT name, salary, ((salary * 2.5)/1000) AS INCOME from t1; +name salary INCOME +Record_1 100011 250.0275 +Record_2 501 1.2525 +Record_3 210 0.525 +'Bug#35374: div_precision is not working with table column' +## Verifying variable's behavior with direct division ## +SELECT 1/7; +1/7 +0.143 +'#--------------------FN_DYNVARS_027_02-------------------------#' +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30), +salary LONG, +income_tax FLOAT +); +## Creating new connection test_con1 ## +## Setting global & session scope value of variable ## +SET @@global.div_precision_increment = 2; +SET @@session.div_precision_increment = 1; +SELECT @@global.div_precision_increment; +@@global.div_precision_increment +2 +SELECT @@session.div_precision_increment; +@@session.div_precision_increment +1 +## Inserting some data and verifying behavior of variable ## +INSERT into t1(name, salary, income_tax) values('Record_1', 100011, 100011*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_2', 501, 501*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_3', 210, 210*2.5/1000); +SELECT * from t1; +id name salary income_tax +1 Record_1 100011 250.027 +2 Record_2 501 1.2525 +3 Record_3 210 0.525 +## Creating new connection ## +## Verifying session & global value of variable ## +SELECT @@global.div_precision_increment = 2; +@@global.div_precision_increment = 2 +1 +SELECT @@session.div_precision_increment = 2; +@@session.div_precision_increment = 2 +1 +## Verifying behavior of variable by inserting some rows in table ## +INSERT into t1(name, salary, income_tax) values('Record_4', 100011, 100011*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_5', 501, 501*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_6', 210, 210*2.5/1000); +SELECT * from t1; +id name salary income_tax +1 Record_1 100011 250.027 +2 Record_2 501 1.2525 +3 Record_3 210 0.525 +4 Record_4 100011 250.027 +5 Record_5 501 1.2525 +6 Record_6 210 0.525 +## Dropping table t1 ## +drop table t1; +## Disconnection both the connections ## diff --git a/mysql-test/r/engine_condition_pushdown_basic.result b/mysql-test/r/engine_condition_pushdown_basic.result new file mode 100644 index 00000000000..7073066c2f1 --- /dev/null +++ b/mysql-test/r/engine_condition_pushdown_basic.result @@ -0,0 +1,174 @@ +SET @session_start_value = @@session.engine_condition_pushdown; +SELECT @session_start_value; +@session_start_value +1 +SET @global_start_value = @@global.engine_condition_pushdown; +SELECT @global_start_value; +@global_start_value +1 +'#--------------------FN_DYNVARS_028_01------------------------#' +SET @@session.engine_condition_pushdown = 0; +SET @@session.engine_condition_pushdown = DEFAULT; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +1 +SET @@global.engine_condition_pushdown = 0; +SET @@global.engine_condition_pushdown = DEFAULT; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +1 +'#---------------------FN_DYNVARS_028_02-------------------------#' +SET engine_condition_pushdown = 1; +SELECT @@engine_condition_pushdown; +@@engine_condition_pushdown +1 +SELECT session.engine_condition_pushdown; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.engine_condition_pushdown; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.engine_condition_pushdown; +ERROR 42S02: Unknown table 'global' in field list +SET session engine_condition_pushdown = 0; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +0 +SET global engine_condition_pushdown = 0; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +0 +'#--------------------FN_DYNVARS_028_03------------------------#' +SET @@session.engine_condition_pushdown = 0; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +0 +SET @@session.engine_condition_pushdown = 1; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +1 +SET @@global.engine_condition_pushdown = 0; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +0 +SET @@global.engine_condition_pushdown = 1; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +1 +'#--------------------FN_DYNVARS_028_04-------------------------#' +SET @@session.engine_condition_pushdown = -1; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '-1' +SET @@session.engine_condition_pushdown = 1.6; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '2' +SET @@session.engine_condition_pushdown = "T"; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'T' +SET @@session.engine_condition_pushdown = "Y"; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'Y' +SET @@session.engine_condition_pushdown = TRE; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'TRÜE' +SET @@session.engine_condition_pushdown = N; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÕN' +SET @@session.engine_condition_pushdown = OF; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.engine_condition_pushdown = FF; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF' +SET @@global.engine_condition_pushdown = -1; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '-1' +SET @@global.engine_condition_pushdown = 2; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of '2' +SET @@global.engine_condition_pushdown = "T"; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'T' +SET @@global.engine_condition_pushdown = "Y"; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'Y' +SET @@global.engine_condition_pushdown = TRE; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'TRÜE' +SET @@global.engine_condition_pushdown = N; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÕN' +SET @@global.engine_condition_pushdown = OF; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@global.engine_condition_pushdown = FF; +ERROR 42000: Variable 'engine_condition_pushdown' can't be set to the value of 'ÓFF' +'#-------------------FN_DYNVARS_028_05----------------------------#' +SET @@global.engine_condition_pushdown = 0; +SET @@session.engine_condition_pushdown = 1; +SELECT @@global.engine_condition_pushdown AS res_is_0; +res_is_0 +0 +SET @@global.engine_condition_pushdown = 0; +SELECT @@session.engine_condition_pushdown AS res_is_1; +res_is_1 +1 +'#----------------------FN_DYNVARS_028_06------------------------#' +SELECT @@global.engine_condition_pushdown = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; +@@global.engine_condition_pushdown = VARIABLE_VALUE +1 +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; +VARIABLE_VALUE +OFF +'#----------------------FN_DYNVARS_028_07------------------------#' +SELECT @@session.engine_condition_pushdown = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; +@@session.engine_condition_pushdown = VARIABLE_VALUE +0 +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_028_08-------------------------#' +SET @@session.engine_condition_pushdown = OFF; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +0 +SET @@session.engine_condition_pushdown = ON; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +1 +SET @@global.engine_condition_pushdown = OFF; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +0 +SET @@global.engine_condition_pushdown = ON; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +1 +'#---------------------FN_DYNVARS_028_09----------------------#' +SET @@session.engine_condition_pushdown = TRUE; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +1 +SET @@session.engine_condition_pushdown = FALSE; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +0 +SET @@global.engine_condition_pushdown = TRUE; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +1 +SET @@global.engine_condition_pushdown = FALSE; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +0 +SET @@session.engine_condition_pushdown = @session_start_value; +SELECT @@session.engine_condition_pushdown; +@@session.engine_condition_pushdown +1 +SET @@global.engine_condition_pushdown = @global_start_value; +SELECT @@global.engine_condition_pushdown; +@@global.engine_condition_pushdown +1 diff --git a/mysql-test/r/error_count_basic.result b/mysql-test/r/error_count_basic.result new file mode 100644 index 00000000000..ea48b7d5b73 --- /dev/null +++ b/mysql-test/r/error_count_basic.result @@ -0,0 +1,54 @@ +'#---------------------BS_STVARS_005_01----------------------#' +SELECT COUNT(@@SESSION.error_count); +COUNT(@@SESSION.error_count) +1 +1 Expected +'#---------------------BS_STVARS_005_02----------------------#' +SET @@SESSION.error_count=1; +ERROR HY000: Variable 'error_count' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@SESSION.error_count); +COUNT(@@SESSION.error_count) +1 +1 Expected +'#---------------------BS_STVARS_005_03----------------------#' +SELECT @@SESSION.error_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='error_count'; +@@SESSION.error_count = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@SESSION.error_count); +COUNT(@@SESSION.error_count) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='error_count'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_005_04----------------------#' +SELECT @@error_count = @@SESSION.error_count; +@@error_count = @@SESSION.error_count +1 +1 Expected +'#---------------------BS_STVARS_005_05----------------------#' +SELECT COUNT(@@error_count); +COUNT(@@error_count) +1 +1 Expected +SELECT COUNT(@@local.error_count); +COUNT(@@local.error_count) +1 +1 Expected +SELECT COUNT(@@SESSION.error_count); +COUNT(@@SESSION.error_count) +1 +1 Expected +SELECT COUNT(@@GLOBAL.error_count); +ERROR HY000: Variable 'error_count' is a SESSION variable +Expected error 'Variable is a SESSION variable' +SELECT COUNT(error_count = @@GLOBAL.error_count); +ERROR 42S22: Unknown column 'error_count' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/event_scheduler_basic.result b/mysql-test/r/event_scheduler_basic.result new file mode 100644 index 00000000000..8042187d39d --- /dev/null +++ b/mysql-test/r/event_scheduler_basic.result @@ -0,0 +1,98 @@ +SET @start_value = @@global.event_scheduler; +SELECT @start_value; +@start_value +OFF +'#---------------------FN_DYNVARS_004_01-------------------------#' +SET @@global.event_scheduler = DEFAULT; +ERROR 42000: Variable 'event_scheduler' doesn't have a default value +'Bug# 34878: According to documentation the default value of variable is OFF'; +'#--------------------FN_DYNVARS_004_02------------------------#' +SET @@global.event_scheduler = ON; +SELECT @@global.event_scheduler; +@@global.event_scheduler +ON +SET @@global.event_scheduler = OFF; +SELECT @@global.event_scheduler; +@@global.event_scheduler +OFF +SET @@global.event_scheduler = DISABLED; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'DISABLED' +SELECT @@global.event_scheduler; +@@global.event_scheduler +OFF +'#--------------------FN_DYNVARS_004_03-------------------------#' +SET @@global.event_scheduler = 2; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of '2' +SET @@global.event_scheduler = -1; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of '-1' +SET @@global.event_scheduler = TRUEF; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'TRUEF' +SET @@global.event_scheduler = TRUE_F; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'TRUE_F' +SET @@global.event_scheduler = FALSE0; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'FALSE0' +SET @@global.event_scheduler = OON; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'OON' +SET @@global.event_scheduler = ONN; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'ONN' +SET @@global.event_scheduler = OOFF; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of 'OOFF' +SET @@global.event_scheduler = 0FF; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of '0FF' +SET @@global.event_scheduler = ' '; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of ' ' +SET @@global.event_scheduler = " "; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of ' ' +SET @@global.event_scheduler = ''; +ERROR 42000: Variable 'event_scheduler' can't be set to the value of '' +'#-------------------FN_DYNVARS_004_04----------------------------#' +SET @@session.event_scheduler = OFF; +ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.event_scheduler; +ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable +'#----------------------FN_DYNVARS_004_05------------------------#' +SELECT @@global.event_scheduler = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='event_scheduler'; +@@global.event_scheduler = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_004_06----------------------#' +SET @@global.event_scheduler = 0; +SELECT @@global.event_scheduler; +@@global.event_scheduler +OFF +SET @@global.event_scheduler = 1; +SELECT @@global.event_scheduler; +@@global.event_scheduler +ON +'#---------------------FN_DYNVARS_004_07----------------------#' +SET @@global.event_scheduler = TRUE; +SELECT @@global.event_scheduler; +@@global.event_scheduler +ON +SET @@global.event_scheduler = FALSE; +SELECT @@global.event_scheduler; +@@global.event_scheduler +OFF +'#---------------------FN_DYNVARS_004_08----------------------#' +SET @@global.event_scheduler = ON; +SELECT @@event_scheduler = @@global.event_scheduler; +@@event_scheduler = @@global.event_scheduler +1 +'#---------------------FN_DYNVARS_004_09----------------------#' +SET event_scheduler = ON; +ERROR HY000: Variable 'event_scheduler' is a GLOBAL variable and should be set with SET GLOBAL +SET local.event_scheduler = OFF; +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 'event_scheduler = OFF' at line 1 +SELECT local.event_scheduler; +ERROR 42S02: Unknown table 'local' in field list +SET global.event_scheduler = ON; +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 'event_scheduler = ON' at line 1 +SELECT global.event_scheduler; +ERROR 42S02: Unknown table 'global' in field list +SELECT event_scheduler = @@session.event_scheduler; +ERROR 42S22: Unknown column 'event_scheduler' in 'field list' +SET @@global.event_scheduler = @start_value; +SELECT @@global.event_scheduler; +@@global.event_scheduler +OFF diff --git a/mysql-test/r/event_scheduler_func.result b/mysql-test/r/event_scheduler_func.result new file mode 100644 index 00000000000..8da942e919c --- /dev/null +++ b/mysql-test/r/event_scheduler_func.result @@ -0,0 +1,44 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_018_01-------------------------#' +## Setting initial value of variable to ON ## +SET @@global.event_scheduler = ON; +SELECT @@event_scheduler; +@@event_scheduler +ON +## Creating new event ## +CREATE EVENT test_event_1 +ON SCHEDULE EVERY 3 SECOND +DO +INSERT into t1(name) values('Record_1'); +SELECT * from t1; +id name +1 Record_1 +2 Record_1 +DROP EVENT test_event_1; +DELETE from t1; +select * from t1; +id name +'#--------------------FN_DYNVARS_018_02-------------------------#' +## Setting value of variable to OFF ## +SET @@global.event_scheduler = OFF; +SELECT @@event_scheduler; +@@event_scheduler +OFF +## Creating new event ## +CREATE EVENT test_event_1 +ON SCHEDULE EVERY 3 SECOND +DO +INSERT into t1(name) values('Record_2'); +## Table should be empty ## +SELECT * from t1; +id name +DROP EVENT test_event_1; +## Dropping table ## +DROP table t1; diff --git a/mysql-test/r/expire_logs_days_basic.result b/mysql-test/r/expire_logs_days_basic.result new file mode 100644 index 00000000000..66aa5fa42a5 --- /dev/null +++ b/mysql-test/r/expire_logs_days_basic.result @@ -0,0 +1,126 @@ +SET @start_value = @@global.expire_logs_days; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_029_01------------------------#' +SET @@global.expire_logs_days = 99; +SET @@global.expire_logs_days = DEFAULT; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +0 +'#---------------------FN_DYNVARS_029_02-------------------------#' +SET @@global.expire_logs_days = @start_value; +SELECT @@global.expire_logs_days = 0; +@@global.expire_logs_days = 0 +1 +'#--------------------FN_DYNVARS_029_03------------------------#' +SET @@global.expire_logs_days = 0; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +0 +SET @@global.expire_logs_days = 99; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +SET @@global.expire_logs_days = 10; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +10 +SET @@global.expire_logs_days = 21; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +21 +'#--------------------FN_DYNVARS_029_04-------------------------#' +SET @@global.expire_logs_days = -1; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +0 +SET @@global.expire_logs_days = 100; +Warnings: +Warning 1292 Truncated incorrect expire_logs_days value: '100' +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +SET @@global.expire_logs_days = 1024; +Warnings: +Warning 1292 Truncated incorrect expire_logs_days value: '1024' +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +SET @@global.expire_logs_days = 10000.01; +ERROR 42000: Incorrect argument type to variable 'expire_logs_days' +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +SET @@global.expire_logs_days = -1024; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +0 +SET @@global.expire_logs_days = 42949672950; +Warnings: +Warning 1292 Truncated incorrect expire_logs_days value: '42949672950' +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.expire_logs_days = ON; +ERROR 42000: Incorrect argument type to variable 'expire_logs_days' +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +SET @@global.expire_logs_days = 'test'; +ERROR 42000: Incorrect argument type to variable 'expire_logs_days' +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +99 +'#-------------------FN_DYNVARS_029_05----------------------------#' +SET @@session.expire_logs_days = 0; +ERROR HY000: Variable 'expire_logs_days' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@expire_logs_days; +@@expire_logs_days +99 +'#----------------------FN_DYNVARS_029_06------------------------#' +SELECT @@global.expire_logs_days = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='expire_logs_days'; +@@global.expire_logs_days = VARIABLE_VALUE +1 +SELECT @@expire_logs_days = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='expire_logs_days'; +@@expire_logs_days = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_029_07----------------------#' +SET @@global.expire_logs_days = TRUE; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +1 +SET @@global.expire_logs_days = FALSE; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +0 +'#---------------------FN_DYNVARS_029_08----------------------#' +SET @@global.expire_logs_days = 1; +SELECT @@expire_logs_days = @@global.expire_logs_days; +@@expire_logs_days = @@global.expire_logs_days +1 +'#---------------------FN_DYNVARS_029_09----------------------#' +SET expire_logs_days = 1; +ERROR HY000: Variable 'expire_logs_days' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@expire_logs_days; +@@expire_logs_days +1 +SET local.expire_logs_days = 1; +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 'expire_logs_days = 1' at line 1 +SELECT local.expire_logs_days; +ERROR 42S02: Unknown table 'local' in field list +SET global.expire_logs_days = 1; +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 'expire_logs_days = 1' at line 1 +SELECT global.expire_logs_days; +ERROR 42S02: Unknown table 'global' in field list +SELECT expire_logs_days = @@session.expire_logs_days; +ERROR 42S22: Unknown column 'expire_logs_days' in 'field list' +SET @@global.expire_logs_days = @start_value; +SELECT @@global.expire_logs_days; +@@global.expire_logs_days +0 diff --git a/mysql-test/r/flush_basic.result b/mysql-test/r/flush_basic.result new file mode 100644 index 00000000000..259f8f929a1 --- /dev/null +++ b/mysql-test/r/flush_basic.result @@ -0,0 +1,97 @@ +SET @start_value = @@global.flush; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_030_01------------------------#' +SET @@global.flush = ON; +SET @@global.flush = DEFAULT; +ERROR 42000: Variable 'flush' doesn't have a default value +'Bug# 34878: FN_DYNVARS_002_01 - Default value is off according to Documentation of MySQL'; +SELECT @@global.flush; +@@global.flush +1 +'#---------------------FN_DYNVARS_030_02-------------------------#' +SET @@global.flush = @start_value; +SELECT @@global.flush; +@@global.flush +0 +'#--------------------FN_DYNVARS_030_03------------------------#' +SET @@global.flush = ON; +SELECT @@global.flush; +@@global.flush +1 +SET @@global.flush = OFF; +SELECT @@global.flush; +@@global.flush +0 +SET @@global.flush = 0; +SELECT @@global.flush; +@@global.flush +0 +SET @@global.flush = 1; +SELECT @@global.flush; +@@global.flush +1 +'#--------------------FN_DYNVARS_030_04-------------------------#' +SET @@global.flush = 2; +ERROR 42000: Variable 'flush' can't be set to the value of '2' +SET @@global.flush = -1; +ERROR 42000: Variable 'flush' can't be set to the value of '-1' +SET @@global.flush = TRUEF; +ERROR 42000: Variable 'flush' can't be set to the value of 'TRUEF' +SET @@global.flush = TRUE_F; +ERROR 42000: Variable 'flush' can't be set to the value of 'TRUE_F' +SET @@global.flush = FALSE0; +ERROR 42000: Variable 'flush' can't be set to the value of 'FALSE0' +SET @@global.flush = OON; +ERROR 42000: Variable 'flush' can't be set to the value of 'OON' +SET @@global.flush = ONN; +ERROR 42000: Variable 'flush' can't be set to the value of 'ONN' +SET @@global.flush = OOFF; +ERROR 42000: Variable 'flush' can't be set to the value of 'OOFF' +SET @@global.flush = 0FF; +ERROR 42000: Variable 'flush' can't be set to the value of '0FF' +SET @@global.flush = ' '; +ERROR 42000: Variable 'flush' can't be set to the value of ' ' +SET @@global.flush = " "; +ERROR 42000: Variable 'flush' can't be set to the value of ' ' +SET @@global.flush = ''; +ERROR 42000: Variable 'flush' can't be set to the value of '' +'#-------------------FN_DYNVARS_030_05----------------------------#' +SET @@session.flush = 1; +ERROR HY000: Variable 'flush' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.flush; +ERROR HY000: Variable 'flush' is a GLOBAL variable +'#----------------------FN_DYNVARS_030_06------------------------#' +SELECT @@global.flush = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='flush'; +@@global.flush = VARIABLE_VALUE +0 +'#---------------------FN_DYNVARS_030_07----------------------#' +SET @@global.flush = TRUE; +SELECT @@global.flush; +@@global.flush +1 +SET @@global.flush = FALSE; +SELECT @@global.flush; +@@global.flush +0 +'#---------------------FN_DYNVARS_030_08----------------------#' +SET @@global.flush = 1; +SELECT @@flush = @@global.flush; +@@flush = @@global.flush +1 +'#---------------------FN_DYNVARS_030_09----------------------#' +SET flush = 1; +ERROR HY000: Variable 'flush' is a GLOBAL variable and should be set with SET GLOBAL +SET global.flush = 1; +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 'flush = 1' at line 1 +SELECT global.flush; +ERROR 42S02: Unknown table 'global' in field list +SELECT flush = @@session.flush; +ERROR 42S22: Unknown column 'flush' in 'field list' +SET @@global.flush = @start_value; +SELECT @@global.flush; +@@global.flush +0 diff --git a/mysql-test/r/foreign_key_checks_basic.result b/mysql-test/r/foreign_key_checks_basic.result new file mode 100644 index 00000000000..e09e680fe99 --- /dev/null +++ b/mysql-test/r/foreign_key_checks_basic.result @@ -0,0 +1,102 @@ +SET @session_start_value = @@session.foreign_key_checks; +SELECT @session_start_value; +@session_start_value +1 +'#--------------------FN_DYNVARS_032_01------------------------#' +SET @@session.foreign_key_checks = 1; +SET @@session.foreign_key_checks = DEFAULT; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 +'Bug# 34878: No DEFAULT value for variable. Also setting DEFAULT does not give error' +'#---------------------FN_DYNVARS_032_02-------------------------#' +SET foreign_key_checks = 1; +SELECT @@foreign_key_checks; +@@foreign_key_checks +1 +SELECT session.foreign_key_checks; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.foreign_key_checks; +ERROR 42S02: Unknown table 'local' in field list +SET session foreign_key_checks = 0; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +0 +'#--------------------FN_DYNVARS_032_03------------------------#' +SET @@session.foreign_key_checks = 0; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +0 +SET @@session.foreign_key_checks = 1; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 +'#--------------------FN_DYNVARS_032_04-------------------------#' +SET @@session.foreign_key_checks = -1; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of '-1' +SET @@session.foreign_key_checks = 2; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of '2' +SET @@session.foreign_key_checks = "T"; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'T' +SET @@session.foreign_key_checks = "Y"; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'Y' +SET @@session.foreign_key_checks = TRE; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'TRÜE' +SET @@session.foreign_key_checks = N; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'ÕN' +SET @@session.foreign_key_checks = OF; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.foreign_key_checks = FF; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'ÓFF' +SET @@session.foreign_key_checks = ''; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of '' +SET @@session.foreign_key_checks = NO; +ERROR 42000: Variable 'foreign_key_checks' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_032_05----------------------------#' +SET @@global.foreign_key_checks = 0; +ERROR HY000: Variable 'foreign_key_checks' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.foreign_key_checks; +ERROR HY000: Variable 'foreign_key_checks' is a SESSION variable +'#----------------------FN_DYNVARS_032_06------------------------#' +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='foreign_key_checks'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_032_07------------------------#' +SELECT @@session.foreign_key_checks = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='foreign_key_checks'; +@@session.foreign_key_checks = VARIABLE_VALUE +1 +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='foreign_key_checks'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_032_08-------------------------#' +SET @@session.foreign_key_checks = OFF; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +0 +SET @@session.foreign_key_checks = ON; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 +'#---------------------FN_DYNVARS_032_09----------------------#' +SET @@session.foreign_key_checks = TRUE; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 +SET @@session.foreign_key_checks = FALSE; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +0 +SET @@session.foreign_key_checks = @session_start_value; +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 diff --git a/mysql-test/r/foreign_key_checks_func.result b/mysql-test/r/foreign_key_checks_func.result new file mode 100644 index 00000000000..c2898293f83 --- /dev/null +++ b/mysql-test/r/foreign_key_checks_func.result @@ -0,0 +1,59 @@ +'#--------------------FN_DYNVARS_032_01-------------------------#' +SET @@session.foreign_key_checks = 0; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 +SET @@session.foreign_key_checks = 1; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@session.foreign_key_checks; +@@session.foreign_key_checks +1 +'#--------------------FN_DYNVARS_032_02-------------------------#' +'connection con1' +DROP TABLE IF EXISTS t1,t2; +CREATE TABLE t1(a INT PRIMARY KEY)ENGINE = INNODB; +CREATE TABLE t2(a INT PRIMARY KEY,b INT)ENGINE = INNODB; +ALTER TABLE t2 +ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); +'---Check when foreign_key_checks is enabled---' +SET @@session.foreign_key_checks = 1; +INSERT INTO t1 values (1),(2),(3); +INSERT INTO t2 values (10,1); +INSERT INTO t2 values (20,22); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`a`)) +'---Check when foreign_key_checks is disabled---' +TRUNCATE t1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (`test`.`t2`, CONSTRAINT `fk` FOREIGN KEY (`b`) REFERENCES `t1` (`a`)) +SET @@session.foreign_key_checks = 0; +TRUNCATE t1; +TRUNCATE t2; +INSERT INTO t1 values (1),(2),(3); +INSERT INTO t2 values (10,1); +INSERT INTO t2 values (20,4); +'try enabling foreign_key_checks again'; +SET @@session.foreign_key_checks = 1; +UPDATE t2 SET b=4 where a=20; +'Bug#35358: Updating an incorrect foreign key(inserted by disabling ' +'foreign_key_checks)to the same value does not raise error after ' +'enabling foreign_key_checks' +'Check when foreign_key_checks is enabled and FK constraint is re-created' +SET @@session.foreign_key_checks = 0; +TRUNCATE t2; +TRUNCATE t1; +INSERT INTO t1 values (1),(2),(3); +INSERT INTO t2 values (10,1),(20,4); +ALTER TABLE t2 DROP FOREIGN KEY fk; +SET @@session.foreign_key_checks = 1; +DELETE FROM t2 WHERE b not in (SELECT a from t1); +ALTER TABLE t2 +ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); +INSERT INTO t2 values (20,2); +SELECT * from t2; +a b +10 1 +20 2 +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/r/ft_boolean_syntax_basic.result b/mysql-test/r/ft_boolean_syntax_basic.result new file mode 100644 index 00000000000..94a052172bb --- /dev/null +++ b/mysql-test/r/ft_boolean_syntax_basic.result @@ -0,0 +1,102 @@ +SET @global_start_value = @@global.ft_boolean_syntax; +SELECT @global_start_value; +@global_start_value ++ -><()~*:""&| +'#--------------------FN_DYNVARS_033_01------------------#' +SELECT ft_boolean_syntax; +ERROR 42S22: Unknown column 'ft_boolean_syntax' in 'field list' +SELECT @@ft_boolean_syntax; +@@ft_boolean_syntax ++ -><()~*:""&| +SET @@global.ft_boolean_syntax='+ -><()~*:""&|'; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax ++ -><()~*:""&| +SET global ft_boolean_syntax='$ -><()`*:""&|'; +SELECT global ft_boolean_syntax; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_033_02-------------------------#' +SET @@global.ft_boolean_syntax = '# -><()!*:""&|'; +SET @@global.ft_boolean_syntax = DEFAULT; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax ++ -><()~*:""&| +'#--------------------FN_DYNVARS_033_03-------------------------#' +SET @@session.ft_boolean_syntax = '# -><()!*:""&|'; +ERROR HY000: Variable 'ft_boolean_syntax' is a GLOBAL variable and should be set with SET GLOBAL +SET @@ft_boolean_syntax = '# -><()!*:""&|'; +ERROR HY000: Variable 'ft_boolean_syntax' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.ft_boolean_syntax; +ERROR HY000: Variable 'ft_boolean_syntax' is a GLOBAL variable +SELECT @@local.ft_boolean_syntax; +ERROR HY000: Variable 'ft_boolean_syntax' is a GLOBAL variable +'#--------------------FN_DYNVARS_033_04-------------------------#' +SET @@global.ft_boolean_syntax='+ -><()~*:""&|'; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax ++ -><()~*:""&| +SET @@global.ft_boolean_syntax=' +-><()~*:""&|'; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax + +-><()~*:""&| +SET @@global.ft_boolean_syntax=' -+()<>~*:``&|'; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax + -+()<>~*:``&| +SET @@global.ft_boolean_syntax='+ -><()~*:""@!'; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax ++ -><()~*:""@! +SET @@global.ft_boolean_syntax=" +-><()~*:''&|"; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax + +-><()~*:''&| +SET @@global.ft_boolean_syntax=' ~/!@#$%^&*()-'; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax + ~/!@#$%^&*()- +'#--------------------FN_DYNVARS_033_05-------------------------#' +SET @@global.ft_boolean_syntax = '+-> <()~*:""&|'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '+-> <()~*:""&|' +SET @@global.ft_boolean_syntax = '0'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '0' +SET @@global.ft_boolean_syntax = '1 -><()~*:11&|'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '1 -><()~*:11&|' +SET @@global.ft_boolean_syntax = '# -><()~*:11&1'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '# -><()~*:11&1' +SET @@global.ft_boolean_syntax = '1234567890ABCD'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '1234567890ABCD' +SET @@global.ft_boolean_syntax = -1; +ERROR 42000: Incorrect argument type to variable 'ft_boolean_syntax' +SET @@global.ft_boolean_syntax = '+-> <((~*:".&|'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '+-> <((~*:".&|' +SET @@global.ft_boolean_syntax = ' '; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of ' ' +SET @@global.ft_boolean_syntax = ON; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of 'ON' +SET @@global.ft_boolean_syntax = true; +ERROR 42000: Incorrect argument type to variable 'ft_boolean_syntax' +SET @@global.ft_boolean_syntax = + -><()~*:""&|; +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 @@global.ft_boolean_syntax = ENABLE; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of 'ENABLE' +SET @@global.ft_boolean_syntax = 'IGNORE'; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of 'IGNORE' +'#--------------------FN_DYNVARS_033_06-------------------------#' +SELECT @@global.ft_boolean_syntax = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ft_boolean_syntax') AS res; +res +1 +'#--------------------FN_DYNVARS_033_07-------------------------#' +SELECT @global_start_value; +@global_start_value ++ -><()~*:""&| +SET @@global.ft_boolean_syntax = @global_start_value; +ERROR 42000: Variable 'ft_boolean_syntax' can't be set to the value of '' +'Bug# 34883: ft_boolean_syntax cant be assigned values from session temporary'; +'variables'; +SET @@global.ft_boolean_syntax = DEFAULT; +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax ++ -><()~*:""&| diff --git a/mysql-test/r/ft_boolean_syntax_func.result b/mysql-test/r/ft_boolean_syntax_func.result new file mode 100644 index 00000000000..de127d7a38d --- /dev/null +++ b/mysql-test/r/ft_boolean_syntax_func.result @@ -0,0 +1,107 @@ +'#--------------------FN_DYNVARS_033_01-------------------------#' +SET @@global.ft_boolean_syntax = ' -+()<>~*:``&|'; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax + -+()<>~*:``&| +SET @@global.ft_boolean_syntax = '+ -><()~*:""&|'; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@global.ft_boolean_syntax; +@@global.ft_boolean_syntax ++ -><()~*:""&| +'#--------------------FN_DYNVARS_033_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1; +CREATE TABLE articles ( +id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, +title VARCHAR(200), +body TEXT, +FULLTEXT (title,body) +); +INSERT INTO articles (title,body) VALUES +('MySQL Tutorial','DBMS stands for DataBase ...'), +('How To',''), +('How To Use MySQL Well','After you went through a ...'), +('Optimizing MySQL','In this tutorial we will show .... Run command line ...'), +('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'), +('100 Tips for Myisam','1. Myisam is faster than innodb 2. Tricks and Tips for Myisam...'), +('MySQL vs. YourSQL','In the following database comparison ...'), +('MySQL Security','When configured properly, MySQL ...'), +('Database Security','Configuring MySQL for ...'); +SET @@global.ft_boolean_syntax = DEFAULT; +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('+mySQL -yourSQL' IN BOOLEAN MODE); +id title body +1 MySQL Tutorial DBMS stands for DataBase ... +3 How To Use MySQL Well After you went through a ... +4 Optimizing MySQL In this tutorial we will show .... Run command line ... +5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... +8 MySQL Security When configured properly, MySQL ... +9 Database Security Configuring MySQL for ... +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('+MySQL +YourSQL' IN BOOLEAN MODE); +id title body +7 MySQL vs. YourSQL In the following database comparison ... +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('MySQL' IN BOOLEAN MODE); +id title body +1 MySQL Tutorial DBMS stands for DataBase ... +3 How To Use MySQL Well After you went through a ... +4 Optimizing MySQL In this tutorial we will show .... Run command line ... +5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... +7 MySQL vs. YourSQL In the following database comparison ... +8 MySQL Security When configured properly, MySQL ... +9 Database Security Configuring MySQL for ... +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('mysql tutorial dbms' IN BOOLEAN MODE); +id title body +1 MySQL Tutorial DBMS stands for DataBase ... +3 How To Use MySQL Well After you went through a ... +4 Optimizing MySQL In this tutorial we will show .... Run command line ... +5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... +7 MySQL vs. YourSQL In the following database comparison ... +8 MySQL Security When configured properly, MySQL ... +9 Database Security Configuring MySQL for ... +SELECT id,title,body, (MATCH (title,body) +AGAINST ('+security configuring' IN BOOLEAN MODE)) AS relevance +FROM articles WHERE MATCH (title,body) +AGAINST ('+security configuring' IN BOOLEAN MODE); +id title body relevance +8 MySQL Security When configured properly, MySQL ... 1 +9 Database Security Configuring MySQL for ... 1.3333333730698 +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('"faster than"' IN BOOLEAN MODE); +id title body +6 100 Tips for Myisam 1. Myisam is faster than innodb 2. Tricks and Tips for Myisam... +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('+run ~line' IN BOOLEAN MODE); +id title body +'Bug#35359: ~ is not working correctly. Its behaving like -' +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('10*' IN BOOLEAN MODE); +id title body +5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... +'Bug#35360: * is not working correctly. Not all rows are returned' +SELECT id,title,body, (MATCH (title,body) +AGAINST ('+MySQL +(>show show <()~*:""&|'--' +SET @@global.ft_boolean_syntax='~ /!@#$%^&*()-'; +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('~mySQL /yourSQL' IN BOOLEAN MODE); +id title body +1 MySQL Tutorial DBMS stands for DataBase ... +3 How To Use MySQL Well After you went through a ... +4 Optimizing MySQL In this tutorial we will show .... Run command line ... +5 1001 MySQL Tricks 1. Never run mysqld as root. 2. ... +8 MySQL Security When configured properly, MySQL ... +9 Database Security Configuring MySQL for ... +'Bug#35361: Different syntax does not produce result as default operators' +SET @@global.ft_boolean_syntax=DEFAULT; diff --git a/mysql-test/r/general_log_basic.result b/mysql-test/r/general_log_basic.result new file mode 100644 index 00000000000..18a5fde45c0 --- /dev/null +++ b/mysql-test/r/general_log_basic.result @@ -0,0 +1,94 @@ +SET @start_value = @@global.general_log; +SELECT @start_value; +@start_value +1 +'#---------------------FN_DYNVARS_004_01-------------------------#' +SET @@global.general_log = DEFAULT; +SELECT @@global.general_log = 0; +@@global.general_log = 0 +1 +'#--------------------FN_DYNVARS_004_02------------------------#' +SET @@global.general_log = ON; +SELECT @@global.general_log; +@@global.general_log +1 +SET @@global.general_log = OFF; +SELECT @@global.general_log; +@@global.general_log +0 +'#--------------------FN_DYNVARS_004_03-------------------------#' +SET @@global.general_log = 2; +ERROR 42000: Variable 'general_log' can't be set to the value of '2' +SET @@global.general_log = -1; +ERROR 42000: Variable 'general_log' can't be set to the value of '-1' +SET @@global.general_log = TRUEF; +ERROR 42000: Variable 'general_log' can't be set to the value of 'TRUEF' +SET @@global.general_log = TRUE_F; +ERROR 42000: Variable 'general_log' can't be set to the value of 'TRUE_F' +SET @@global.general_log = FALSE0; +ERROR 42000: Variable 'general_log' can't be set to the value of 'FALSE0' +SET @@global.general_log = OON; +ERROR 42000: Variable 'general_log' can't be set to the value of 'OON' +SET @@global.general_log = ONN; +ERROR 42000: Variable 'general_log' can't be set to the value of 'ONN' +SET @@global.general_log = OOFF; +ERROR 42000: Variable 'general_log' can't be set to the value of 'OOFF' +SET @@global.general_log = 0FF; +ERROR 42000: Variable 'general_log' can't be set to the value of '0FF' +SET @@global.general_log = ' '; +ERROR 42000: Variable 'general_log' can't be set to the value of ' ' +SET @@global.general_log = " "; +ERROR 42000: Variable 'general_log' can't be set to the value of ' ' +SET @@global.general_log = ''; +ERROR 42000: Variable 'general_log' can't be set to the value of '' +'#-------------------FN_DYNVARS_004_04----------------------------#' +SET @@session.general_log = OFF; +ERROR HY000: Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.general_log; +ERROR HY000: Variable 'general_log' is a GLOBAL variable +'#----------------------FN_DYNVARS_004_05------------------------#' +SELECT @@global.general_log = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='general_log'; +@@global.general_log = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_004_06----------------------#' +SET @@global.general_log = 0; +SELECT @@global.general_log; +@@global.general_log +0 +SET @@global.general_log = 1; +SELECT @@global.general_log; +@@global.general_log +1 +'#---------------------FN_DYNVARS_004_07----------------------#' +SET @@global.general_log = TRUE; +SELECT @@global.general_log; +@@global.general_log +1 +SET @@global.general_log = FALSE; +SELECT @@global.general_log; +@@global.general_log +0 +'#---------------------FN_DYNVARS_004_08----------------------#' +SET @@global.general_log = ON; +SELECT @@general_log = @@global.general_log; +@@general_log = @@global.general_log +1 +'#---------------------FN_DYNVARS_004_09----------------------#' +SET general_log = ON; +ERROR HY000: Variable 'general_log' is a GLOBAL variable and should be set with SET GLOBAL +SET local.general_log = OFF; +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 'general_log = OFF' at line 1 +SELECT local.general_log; +ERROR 42S02: Unknown table 'local' in field list +SET global.general_log = ON; +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 'general_log = ON' at line 1 +SELECT global.general_log; +ERROR 42S02: Unknown table 'global' in field list +SELECT general_log = @@session.general_log; +ERROR 42S22: Unknown column 'general_log' in 'field list' +SET @@global.general_log = @start_value; +SELECT @@global.general_log; +@@global.general_log +1 diff --git a/mysql-test/r/general_log_file_basic.result b/mysql-test/r/general_log_file_basic.result new file mode 100644 index 00000000000..0c1cb9b64f4 --- /dev/null +++ b/mysql-test/r/general_log_file_basic.result @@ -0,0 +1,18 @@ +SET @start_value = @@global.general_log_file; +SELECT @start_value; +@start_value +test.log +'#---------------------FN_DYNVARS_004_01-------------------------#' +SET @@global.general_log_file = DEFAULT; +SELECT RIGHT(@@global.general_log_file,10) AS log_file; +log_file +master.log +'#--------------------FN_DYNVARS_004_02------------------------#' +SET @@global.general_log_file = mytest.log; +ERROR 42000: Variable 'general_log_file' can't be set to the value of 'log' +'#----------------------FN_DYNVARS_004_03------------------------#' +SELECT @@global.general_log_file = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='general_log_file'; +@@global.general_log_file = VARIABLE_VALUE +1 diff --git a/mysql-test/r/general_log_file_func.result b/mysql-test/r/general_log_file_func.result new file mode 100644 index 00000000000..42ef723e644 --- /dev/null +++ b/mysql-test/r/general_log_file_func.result @@ -0,0 +1,19 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_018_01-------------------------#' +SELECT @@general_log_file; +@@general_log_file +mysql-test.log +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); +INSERT into t1(name) values('Record_4'); +## Verifying general log file ## +## Dropping table ## +DROP TABLE t1; diff --git a/mysql-test/r/general_log_func.result b/mysql-test/r/general_log_func.result new file mode 100644 index 00000000000..3bbd93f7207 --- /dev/null +++ b/mysql-test/r/general_log_func.result @@ -0,0 +1,32 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_018_01-------------------------#' +## Setting initial value of variable to OFF ## +SET @@global.general_log = OFF; +SELECT @@general_log; +@@general_log +0 +## Inserting some Records & Verifying output in log ## +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +## There should be no difference, case should pass ## +'#--------------------FN_DYNVARS_018_01-------------------------#' +## Setting initial value of variable to OFF ## +SET @@global.general_log = ON; +SELECT @@general_log; +@@general_log +1 +## Inserting some Records & Verifying output in log ## +INSERT into t1(name) values('Record_3'); +INSERT into t1(name) values('Record_4'); +## There should be no difference, case should pass ## +## This case is failing which shows that mysql is writing in general ## +## log when we set general_log to ON ## +## Dropping tables ## +DROP TABLE t1; diff --git a/mysql-test/r/group_concat_max_len_basic.result b/mysql-test/r/group_concat_max_len_basic.result new file mode 100644 index 00000000000..5704f00c014 --- /dev/null +++ b/mysql-test/r/group_concat_max_len_basic.result @@ -0,0 +1,168 @@ +SET @start_global_value = @@global.group_concat_max_len; +SELECT @start_global_value; +@start_global_value +1024 +SET @start_session_value = @@session.group_concat_max_len; +SELECT @start_session_value; +@start_session_value +1024 +'#--------------------FN_DYNVARS_034_01-------------------------#' +SET @@global.group_concat_max_len = 100; +SET @@global.group_concat_max_len = DEFAULT; +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +1024 +SET @@session.group_concat_max_len = 200; +SET @@session.group_concat_max_len = DEFAULT; +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +1024 +'#--------------------FN_DYNVARS_034_02-------------------------#' +SET @@global.group_concat_max_len = DEFAULT; +SELECT @@global.group_concat_max_len = 1; +@@global.group_concat_max_len = 1 +0 +SET @@session.group_concat_max_len = DEFAULT; +SELECT @@session.group_concat_max_len = 1; +@@session.group_concat_max_len = 1 +0 +'#--------------------FN_DYNVARS_034_03-------------------------#' +SET @@global.group_concat_max_len = 1; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '1' +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +4 +SET @@global.group_concat_max_len = 60020; +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +60020 +SET @@global.group_concat_max_len = 65535; +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +65535 +'#--------------------FN_DYNVARS_034_04-------------------------#' +SET @@session.group_concat_max_len = 1; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '1' +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +4 +SET @@session.group_concat_max_len = 50050; +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +50050 +SET @@session.group_concat_max_len = 65535; +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +65535 +'#------------------FN_DYNVARS_034_05-----------------------#' +SET @@global.group_concat_max_len = 0; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '0' +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +4 +SET @@global.group_concat_max_len = -1024; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '0' +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +4 +SET @@global.group_concat_max_len = 65536; +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +65536 +SET @@global.group_concat_max_len = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +65536 +SET @@global.group_concat_max_len = test; +ERROR 42000: Incorrect argument type to variable 'group_concat_max_len' +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +65536 +SET @@session.group_concat_max_len = 0; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '0' +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +4 +SET @@session.group_concat_max_len = -2; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '0' +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +4 +SET @@session.group_concat_max_len = 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.group_concat_max_len = 65550; +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +65550 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.group_concat_max_len = test; +ERROR 42000: Incorrect argument type to variable 'group_concat_max_len' +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +65550 +'#------------------FN_DYNVARS_034_06-----------------------#' +SELECT @@global.group_concat_max_len = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='group_concat_max_len'; +@@global.group_concat_max_len = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_034_07-----------------------#' +SELECT @@session.group_concat_max_len = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='group_concat_max_len'; +@@session.group_concat_max_len = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_034_08-----------------------#' +SET @@global.group_concat_max_len = TRUE; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '1' +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +4 +SET @@global.group_concat_max_len = FALSE; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '0' +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +4 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.group_concat_max_len = 10; +SELECT @@group_concat_max_len = @@global.group_concat_max_len; +@@group_concat_max_len = @@global.group_concat_max_len +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@group_concat_max_len = 100; +SELECT @@group_concat_max_len = @@local.group_concat_max_len; +@@group_concat_max_len = @@local.group_concat_max_len +1 +SELECT @@local.group_concat_max_len = @@session.group_concat_max_len; +@@local.group_concat_max_len = @@session.group_concat_max_len +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET group_concat_max_len = 1; +Warnings: +Warning 1292 Truncated incorrect group_concat_max_len value: '1' +SELECT @@group_concat_max_len; +@@group_concat_max_len +4 +SELECT local.group_concat_max_len; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.group_concat_max_len; +ERROR 42S02: Unknown table 'session' in field list +SELECT group_concat_max_len = @@session.group_concat_max_len; +ERROR 42S22: Unknown column 'group_concat_max_len' in 'field list' +SET @@global.group_concat_max_len = @start_global_value; +SELECT @@global.group_concat_max_len; +@@global.group_concat_max_len +1024 +SET @@session.group_concat_max_len = @start_session_value; +SELECT @@session.group_concat_max_len; +@@session.group_concat_max_len +1024 diff --git a/mysql-test/r/group_concat_max_len_func.result b/mysql-test/r/group_concat_max_len_func.result new file mode 100644 index 00000000000..877ec025b7b --- /dev/null +++ b/mysql-test/r/group_concat_max_len_func.result @@ -0,0 +1,77 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +rollno int NOT NULL, +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_034_01-------------------------#' +## Setting initial value of variable to 4 ## +SET @@global.group_concat_max_len = 4; +## Inserting some rows in table ## +INSERT into t1(rollno, name) values(1, 'Record_1'); +INSERT into t1(rollno, name) values(2, 'Record_2'); +INSERT into t1(rollno, name) values(1, 'Record_3'); +INSERT into t1(rollno, name) values(3, 'Record_4'); +INSERT into t1(rollno, name) values(1, 'Record_5'); +INSERT into t1(rollno, name) values(3, 'Record_6'); +INSERT into t1(rollno, name) values(4, 'Record_7'); +INSERT into t1(rollno, name) values(4, 'Record_8'); +## Creating two new connections ## +'#--------------------FN_DYNVARS_034_02-------------------------#' +## Connecting with test_con1 ## +## Accessing data and using group_concat on column whose value is greater than 4 ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Reco +2 2 Reco +4 3 Reco +7 4 Reco +Warnings: +Warning 1260 4 line(s) were cut by GROUP_CONCAT() +## Changing session value of variable and verifying its behavior, ## +## warning should come here ## +SET @@session.group_concat_max_len = 10; +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Record_1,R +2 2 Record_2 +4 3 Record_4,R +7 4 Record_7,R +Warnings: +Warning 1260 3 line(s) were cut by GROUP_CONCAT() +'#--------------------FN_DYNVARS_034_03-------------------------#' +## Connecting with new connection test_con2 ## +## Verifying initial value of variable. It should be 4 ## +SELECT @@session.group_concat_max_len = 4; +@@session.group_concat_max_len = 4 +1 +## Setting session value of variable to 20 and verifying variable is concating ## +## column's value to 20 or not ## +SET @@session.group_concat_max_len = 20; +## Verifying value of name column, it should not me more than 20 characters ## +## Warning should come here ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Record_1,Record_3,Re +2 2 Record_2 +4 3 Record_4,Record_6 +7 4 Record_7,Record_8 +Warnings: +Warning 1260 1 line(s) were cut by GROUP_CONCAT() +'#--------------------FN_DYNVARS_034_04-------------------------#' +## Setting session value of variable to 26. No warning should appear here ## +## because the value after concatination is less than 30 ## +SET @@session.group_concat_max_len = 26; +## Verifying value of name column, it should not give warning now ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Record_1,Record_3,Record_5 +2 2 Record_2 +4 3 Record_4,Record_6 +7 4 Record_7,Record_8 +## Dropping table t1 ## +DROP table t1; +## Disconnecting both the connection ## diff --git a/mysql-test/r/have_compress_basic.result b/mysql-test/r/have_compress_basic.result new file mode 100644 index 00000000000..9b48d0c4dff --- /dev/null +++ b/mysql-test/r/have_compress_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_006_01----------------------#' +SELECT COUNT(@@GLOBAL.have_compress); +COUNT(@@GLOBAL.have_compress) +1 +1 Expected +'#---------------------BS_STVARS_006_02----------------------#' +SET @@GLOBAL.have_compress=1; +ERROR HY000: Variable 'have_compress' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_compress); +COUNT(@@GLOBAL.have_compress) +1 +1 Expected +'#---------------------BS_STVARS_006_03----------------------#' +SELECT @@GLOBAL.have_compress = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_compress'; +@@GLOBAL.have_compress = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_compress); +COUNT(@@GLOBAL.have_compress) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_compress'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_006_04----------------------#' +SELECT @@have_compress = @@GLOBAL.have_compress; +@@have_compress = @@GLOBAL.have_compress +1 +1 Expected +'#---------------------BS_STVARS_006_05----------------------#' +SELECT COUNT(@@have_compress); +COUNT(@@have_compress) +1 +1 Expected +SELECT COUNT(@@local.have_compress); +ERROR HY000: Variable 'have_compress' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_compress); +ERROR HY000: Variable 'have_compress' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_compress); +COUNT(@@GLOBAL.have_compress) +1 +1 Expected +SELECT have_compress = @@SESSION.have_compress; +ERROR 42S22: Unknown column 'have_compress' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_crypt_basic.result b/mysql-test/r/have_crypt_basic.result new file mode 100644 index 00000000000..3a3c221290b --- /dev/null +++ b/mysql-test/r/have_crypt_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_007_01----------------------#' +SELECT COUNT(@@GLOBAL.have_crypt); +COUNT(@@GLOBAL.have_crypt) +1 +1 Expected +'#---------------------BS_STVARS_007_02----------------------#' +SET @@GLOBAL.have_crypt=1; +ERROR HY000: Variable 'have_crypt' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_crypt); +COUNT(@@GLOBAL.have_crypt) +1 +1 Expected +'#---------------------BS_STVARS_007_03----------------------#' +SELECT @@GLOBAL.have_crypt = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_crypt'; +@@GLOBAL.have_crypt = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_crypt); +COUNT(@@GLOBAL.have_crypt) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_crypt'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_007_04----------------------#' +SELECT @@have_crypt = @@GLOBAL.have_crypt; +@@have_crypt = @@GLOBAL.have_crypt +1 +1 Expected +'#---------------------BS_STVARS_007_05----------------------#' +SELECT COUNT(@@have_crypt); +COUNT(@@have_crypt) +1 +1 Expected +SELECT COUNT(@@local.have_crypt); +ERROR HY000: Variable 'have_crypt' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_crypt); +ERROR HY000: Variable 'have_crypt' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_crypt); +COUNT(@@GLOBAL.have_crypt) +1 +1 Expected +SELECT have_crypt = @@SESSION.have_crypt; +ERROR 42S22: Unknown column 'have_crypt' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_csv_basic.result b/mysql-test/r/have_csv_basic.result new file mode 100644 index 00000000000..3427d633f98 --- /dev/null +++ b/mysql-test/r/have_csv_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_008_01----------------------#' +SELECT COUNT(@@GLOBAL.have_csv); +COUNT(@@GLOBAL.have_csv) +1 +1 Expected +'#---------------------BS_STVARS_008_02----------------------#' +SET @@GLOBAL.have_csv=1; +ERROR HY000: Variable 'have_csv' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_csv); +COUNT(@@GLOBAL.have_csv) +1 +1 Expected +'#---------------------BS_STVARS_008_03----------------------#' +SELECT @@GLOBAL.have_csv = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_csv'; +@@GLOBAL.have_csv = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_csv); +COUNT(@@GLOBAL.have_csv) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_csv'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_008_04----------------------#' +SELECT @@have_csv = @@GLOBAL.have_csv; +@@have_csv = @@GLOBAL.have_csv +1 +1 Expected +'#---------------------BS_STVARS_008_05----------------------#' +SELECT COUNT(@@have_csv); +COUNT(@@have_csv) +1 +1 Expected +SELECT COUNT(@@local.have_csv); +ERROR HY000: Variable 'have_csv' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_csv); +ERROR HY000: Variable 'have_csv' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_csv); +COUNT(@@GLOBAL.have_csv) +1 +1 Expected +SELECT have_csv = @@SESSION.have_csv; +ERROR 42S22: Unknown column 'have_csv' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_dynamic_loading_basic.result b/mysql-test/r/have_dynamic_loading_basic.result new file mode 100644 index 00000000000..fba43958a69 --- /dev/null +++ b/mysql-test/r/have_dynamic_loading_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_009_01----------------------#' +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +COUNT(@@GLOBAL.have_dynamic_loading) +1 +1 Expected +'#---------------------BS_STVARS_009_02----------------------#' +SET @@GLOBAL.have_dynamic_loading=1; +ERROR HY000: Variable 'have_dynamic_loading' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +COUNT(@@GLOBAL.have_dynamic_loading) +1 +1 Expected +'#---------------------BS_STVARS_009_03----------------------#' +SELECT @@GLOBAL.have_dynamic_loading = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_dynamic_loading'; +@@GLOBAL.have_dynamic_loading = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +COUNT(@@GLOBAL.have_dynamic_loading) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_dynamic_loading'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_009_04----------------------#' +SELECT @@have_dynamic_loading = @@GLOBAL.have_dynamic_loading; +@@have_dynamic_loading = @@GLOBAL.have_dynamic_loading +1 +1 Expected +'#---------------------BS_STVARS_009_05----------------------#' +SELECT COUNT(@@have_dynamic_loading); +COUNT(@@have_dynamic_loading) +1 +1 Expected +SELECT COUNT(@@local.have_dynamic_loading); +ERROR HY000: Variable 'have_dynamic_loading' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_dynamic_loading); +ERROR HY000: Variable 'have_dynamic_loading' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +COUNT(@@GLOBAL.have_dynamic_loading) +1 +1 Expected +SELECT have_dynamic_loading = @@SESSION.have_dynamic_loading; +ERROR 42S22: Unknown column 'have_dynamic_loading' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_geometry_basic.result b/mysql-test/r/have_geometry_basic.result new file mode 100644 index 00000000000..1d5a379c7bc --- /dev/null +++ b/mysql-test/r/have_geometry_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_010_01----------------------#' +SELECT COUNT(@@GLOBAL.have_geometry); +COUNT(@@GLOBAL.have_geometry) +1 +1 Expected +'#---------------------BS_STVARS_010_02----------------------#' +SET @@GLOBAL.have_geometry=1; +ERROR HY000: Variable 'have_geometry' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_geometry); +COUNT(@@GLOBAL.have_geometry) +1 +1 Expected +'#---------------------BS_STVARS_010_03----------------------#' +SELECT @@GLOBAL.have_geometry = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_geometry'; +@@GLOBAL.have_geometry = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_geometry); +COUNT(@@GLOBAL.have_geometry) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_geometry'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_010_04----------------------#' +SELECT @@have_geometry = @@GLOBAL.have_geometry; +@@have_geometry = @@GLOBAL.have_geometry +1 +1 Expected +'#---------------------BS_STVARS_010_05----------------------#' +SELECT COUNT(@@have_geometry); +COUNT(@@have_geometry) +1 +1 Expected +SELECT COUNT(@@local.have_geometry); +ERROR HY000: Variable 'have_geometry' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_geometry); +ERROR HY000: Variable 'have_geometry' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_geometry); +COUNT(@@GLOBAL.have_geometry) +1 +1 Expected +SELECT have_geometry = @@SESSION.have_geometry; +ERROR 42S22: Unknown column 'have_geometry' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_innodb_basic.result b/mysql-test/r/have_innodb_basic.result new file mode 100644 index 00000000000..017512f3ae0 --- /dev/null +++ b/mysql-test/r/have_innodb_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_011_01----------------------#' +SELECT COUNT(@@GLOBAL.have_innodb); +COUNT(@@GLOBAL.have_innodb) +1 +1 Expected +'#---------------------BS_STVARS_011_02----------------------#' +SET @@GLOBAL.have_innodb=1; +ERROR HY000: Variable 'have_innodb' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_innodb); +COUNT(@@GLOBAL.have_innodb) +1 +1 Expected +'#---------------------BS_STVARS_011_03----------------------#' +SELECT @@GLOBAL.have_innodb = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_innodb'; +@@GLOBAL.have_innodb = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_innodb); +COUNT(@@GLOBAL.have_innodb) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_innodb'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_011_04----------------------#' +SELECT @@have_innodb = @@GLOBAL.have_innodb; +@@have_innodb = @@GLOBAL.have_innodb +1 +1 Expected +'#---------------------BS_STVARS_011_05----------------------#' +SELECT COUNT(@@have_innodb); +COUNT(@@have_innodb) +1 +1 Expected +SELECT COUNT(@@local.have_innodb); +ERROR HY000: Variable 'have_innodb' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_innodb); +ERROR HY000: Variable 'have_innodb' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_innodb); +COUNT(@@GLOBAL.have_innodb) +1 +1 Expected +SELECT have_innodb = @@SESSION.have_innodb; +ERROR 42S22: Unknown column 'have_innodb' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_ndbcluster_basic.result b/mysql-test/r/have_ndbcluster_basic.result new file mode 100644 index 00000000000..1b662311072 --- /dev/null +++ b/mysql-test/r/have_ndbcluster_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_012_01----------------------#' +SELECT COUNT(@@GLOBAL.have_ndbcluster); +COUNT(@@GLOBAL.have_ndbcluster) +1 +1 Expected +'#---------------------BS_STVARS_012_02----------------------#' +SET @@GLOBAL.have_ndbcluster=1; +ERROR HY000: Variable 'have_ndbcluster' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_ndbcluster); +COUNT(@@GLOBAL.have_ndbcluster) +1 +1 Expected +'#---------------------BS_STVARS_012_03----------------------#' +SELECT @@GLOBAL.have_ndbcluster = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ndbcluster'; +@@GLOBAL.have_ndbcluster = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_ndbcluster); +COUNT(@@GLOBAL.have_ndbcluster) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ndbcluster'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_012_04----------------------#' +SELECT @@have_ndbcluster = @@GLOBAL.have_ndbcluster; +@@have_ndbcluster = @@GLOBAL.have_ndbcluster +1 +1 Expected +'#---------------------BS_STVARS_012_05----------------------#' +SELECT COUNT(@@have_ndbcluster); +COUNT(@@have_ndbcluster) +1 +1 Expected +SELECT COUNT(@@local.have_ndbcluster); +ERROR HY000: Variable 'have_ndbcluster' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_ndbcluster); +ERROR HY000: Variable 'have_ndbcluster' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_ndbcluster); +COUNT(@@GLOBAL.have_ndbcluster) +1 +1 Expected +SELECT have_ndbcluster = @@SESSION.have_ndbcluster; +ERROR 42S22: Unknown column 'have_ndbcluster' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_openssl_basic.result b/mysql-test/r/have_openssl_basic.result new file mode 100644 index 00000000000..1fce883a02f --- /dev/null +++ b/mysql-test/r/have_openssl_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_013_01----------------------#' +SELECT COUNT(@@GLOBAL.have_openssl); +COUNT(@@GLOBAL.have_openssl) +1 +1 Expected +'#---------------------BS_STVARS_013_02----------------------#' +SET @@GLOBAL.have_openssl=1; +ERROR HY000: Variable 'have_openssl' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_openssl); +COUNT(@@GLOBAL.have_openssl) +1 +1 Expected +'#---------------------BS_STVARS_013_03----------------------#' +SELECT @@GLOBAL.have_openssl = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_openssl'; +@@GLOBAL.have_openssl = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_openssl); +COUNT(@@GLOBAL.have_openssl) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_openssl'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_013_04----------------------#' +SELECT @@have_openssl = @@GLOBAL.have_openssl; +@@have_openssl = @@GLOBAL.have_openssl +1 +1 Expected +'#---------------------BS_STVARS_013_05----------------------#' +SELECT COUNT(@@have_openssl); +COUNT(@@have_openssl) +1 +1 Expected +SELECT COUNT(@@local.have_openssl); +ERROR HY000: Variable 'have_openssl' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_openssl); +ERROR HY000: Variable 'have_openssl' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_openssl); +COUNT(@@GLOBAL.have_openssl) +1 +1 Expected +SELECT have_openssl = @@SESSION.have_openssl; +ERROR 42S22: Unknown column 'have_openssl' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_partitioning_basic.result b/mysql-test/r/have_partitioning_basic.result new file mode 100644 index 00000000000..8a18288a3ec --- /dev/null +++ b/mysql-test/r/have_partitioning_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_014_01----------------------#' +SELECT COUNT(@@GLOBAL.have_partitioning); +COUNT(@@GLOBAL.have_partitioning) +1 +1 Expected +'#---------------------BS_STVARS_014_02----------------------#' +SET @@GLOBAL.have_partitioning=1; +ERROR HY000: Variable 'have_partitioning' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_partitioning); +COUNT(@@GLOBAL.have_partitioning) +1 +1 Expected +'#---------------------BS_STVARS_014_03----------------------#' +SELECT @@GLOBAL.have_partitioning = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_partitioning'; +@@GLOBAL.have_partitioning = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_partitioning); +COUNT(@@GLOBAL.have_partitioning) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_partitioning'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_014_04----------------------#' +SELECT @@have_partitioning = @@GLOBAL.have_partitioning; +@@have_partitioning = @@GLOBAL.have_partitioning +1 +1 Expected +'#---------------------BS_STVARS_014_05----------------------#' +SELECT COUNT(@@have_partitioning); +COUNT(@@have_partitioning) +1 +1 Expected +SELECT COUNT(@@local.have_partitioning); +ERROR HY000: Variable 'have_partitioning' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_partitioning); +ERROR HY000: Variable 'have_partitioning' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_partitioning); +COUNT(@@GLOBAL.have_partitioning) +1 +1 Expected +SELECT have_partitioning = @@SESSION.have_partitioning; +ERROR 42S22: Unknown column 'have_partitioning' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_query_cache_basic.result b/mysql-test/r/have_query_cache_basic.result new file mode 100644 index 00000000000..4baca716698 --- /dev/null +++ b/mysql-test/r/have_query_cache_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_015_01----------------------#' +SELECT COUNT(@@GLOBAL.have_query_cache); +COUNT(@@GLOBAL.have_query_cache) +1 +1 Expected +'#---------------------BS_STVARS_015_02----------------------#' +SET @@GLOBAL.have_query_cache=1; +ERROR HY000: Variable 'have_query_cache' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_query_cache); +COUNT(@@GLOBAL.have_query_cache) +1 +1 Expected +'#---------------------BS_STVARS_015_03----------------------#' +SELECT @@GLOBAL.have_query_cache = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_query_cache'; +@@GLOBAL.have_query_cache = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_query_cache); +COUNT(@@GLOBAL.have_query_cache) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_query_cache'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_015_04----------------------#' +SELECT @@have_query_cache = @@GLOBAL.have_query_cache; +@@have_query_cache = @@GLOBAL.have_query_cache +1 +1 Expected +'#---------------------BS_STVARS_015_05----------------------#' +SELECT COUNT(@@have_query_cache); +COUNT(@@have_query_cache) +1 +1 Expected +SELECT COUNT(@@local.have_query_cache); +ERROR HY000: Variable 'have_query_cache' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_query_cache); +ERROR HY000: Variable 'have_query_cache' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_query_cache); +COUNT(@@GLOBAL.have_query_cache) +1 +1 Expected +SELECT have_query_cache = @@SESSION.have_query_cache; +ERROR 42S22: Unknown column 'have_query_cache' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_rtree_keys_basic.result b/mysql-test/r/have_rtree_keys_basic.result new file mode 100644 index 00000000000..7d34f1faaed --- /dev/null +++ b/mysql-test/r/have_rtree_keys_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_016_01----------------------#' +SELECT COUNT(@@GLOBAL.have_rtree_keys); +COUNT(@@GLOBAL.have_rtree_keys) +1 +1 Expected +'#---------------------BS_STVARS_016_02----------------------#' +SET @@GLOBAL.have_rtree_keys=1; +ERROR HY000: Variable 'have_rtree_keys' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_rtree_keys); +COUNT(@@GLOBAL.have_rtree_keys) +1 +1 Expected +'#---------------------BS_STVARS_016_03----------------------#' +SELECT @@GLOBAL.have_rtree_keys = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_rtree_keys'; +@@GLOBAL.have_rtree_keys = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_rtree_keys); +COUNT(@@GLOBAL.have_rtree_keys) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_rtree_keys'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_016_04----------------------#' +SELECT @@have_rtree_keys = @@GLOBAL.have_rtree_keys; +@@have_rtree_keys = @@GLOBAL.have_rtree_keys +1 +1 Expected +'#---------------------BS_STVARS_016_05----------------------#' +SELECT COUNT(@@have_rtree_keys); +COUNT(@@have_rtree_keys) +1 +1 Expected +SELECT COUNT(@@local.have_rtree_keys); +ERROR HY000: Variable 'have_rtree_keys' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_rtree_keys); +ERROR HY000: Variable 'have_rtree_keys' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_rtree_keys); +COUNT(@@GLOBAL.have_rtree_keys) +1 +1 Expected +SELECT have_rtree_keys = @@SESSION.have_rtree_keys; +ERROR 42S22: Unknown column 'have_rtree_keys' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_ssl_basic.result b/mysql-test/r/have_ssl_basic.result new file mode 100644 index 00000000000..a425363c03c --- /dev/null +++ b/mysql-test/r/have_ssl_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_017_01----------------------#' +SELECT COUNT(@@GLOBAL.have_ssl); +COUNT(@@GLOBAL.have_ssl) +1 +1 Expected +'#---------------------BS_STVARS_017_02----------------------#' +SET @@GLOBAL.have_ssl=1; +ERROR HY000: Variable 'have_ssl' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_ssl); +COUNT(@@GLOBAL.have_ssl) +1 +1 Expected +'#---------------------BS_STVARS_017_03----------------------#' +SELECT @@GLOBAL.have_ssl = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ssl'; +@@GLOBAL.have_ssl = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_ssl); +COUNT(@@GLOBAL.have_ssl) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ssl'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_017_04----------------------#' +SELECT @@have_ssl = @@GLOBAL.have_ssl; +@@have_ssl = @@GLOBAL.have_ssl +1 +1 Expected +'#---------------------BS_STVARS_017_05----------------------#' +SELECT COUNT(@@have_ssl); +COUNT(@@have_ssl) +1 +1 Expected +SELECT COUNT(@@local.have_ssl); +ERROR HY000: Variable 'have_ssl' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_ssl); +ERROR HY000: Variable 'have_ssl' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_ssl); +COUNT(@@GLOBAL.have_ssl) +1 +1 Expected +SELECT have_ssl = @@SESSION.have_ssl; +ERROR 42S22: Unknown column 'have_ssl' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/have_symlink_basic.result b/mysql-test/r/have_symlink_basic.result new file mode 100644 index 00000000000..999cbb66519 --- /dev/null +++ b/mysql-test/r/have_symlink_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_018_01----------------------#' +SELECT COUNT(@@GLOBAL.have_symlink); +COUNT(@@GLOBAL.have_symlink) +1 +1 Expected +'#---------------------BS_STVARS_018_02----------------------#' +SET @@GLOBAL.have_symlink=1; +ERROR HY000: Variable 'have_symlink' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.have_symlink); +COUNT(@@GLOBAL.have_symlink) +1 +1 Expected +'#---------------------BS_STVARS_018_03----------------------#' +SELECT @@GLOBAL.have_symlink = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_symlink'; +@@GLOBAL.have_symlink = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.have_symlink); +COUNT(@@GLOBAL.have_symlink) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_symlink'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_018_04----------------------#' +SELECT @@have_symlink = @@GLOBAL.have_symlink; +@@have_symlink = @@GLOBAL.have_symlink +1 +1 Expected +'#---------------------BS_STVARS_018_05----------------------#' +SELECT COUNT(@@have_symlink); +COUNT(@@have_symlink) +1 +1 Expected +SELECT COUNT(@@local.have_symlink); +ERROR HY000: Variable 'have_symlink' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.have_symlink); +ERROR HY000: Variable 'have_symlink' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.have_symlink); +COUNT(@@GLOBAL.have_symlink) +1 +1 Expected +SELECT have_symlink = @@SESSION.have_symlink; +ERROR 42S22: Unknown column 'have_symlink' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/hostname_basic.result b/mysql-test/r/hostname_basic.result new file mode 100644 index 00000000000..c4357a4fbb4 --- /dev/null +++ b/mysql-test/r/hostname_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_019_01----------------------#' +SELECT COUNT(@@GLOBAL.hostname); +COUNT(@@GLOBAL.hostname) +1 +1 Expected +'#---------------------BS_STVARS_019_02----------------------#' +SET @@GLOBAL.hostname=1; +ERROR HY000: Variable 'hostname' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.hostname); +COUNT(@@GLOBAL.hostname) +1 +1 Expected +'#---------------------BS_STVARS_019_03----------------------#' +SELECT @@GLOBAL.hostname = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='hostname'; +@@GLOBAL.hostname = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.hostname); +COUNT(@@GLOBAL.hostname) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='hostname'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_019_04----------------------#' +SELECT @@hostname = @@GLOBAL.hostname; +@@hostname = @@GLOBAL.hostname +1 +1 Expected +'#---------------------BS_STVARS_019_05----------------------#' +SELECT COUNT(@@hostname); +COUNT(@@hostname) +1 +1 Expected +SELECT COUNT(@@local.hostname); +ERROR HY000: Variable 'hostname' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.hostname); +ERROR HY000: Variable 'hostname' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.hostname); +COUNT(@@GLOBAL.hostname) +1 +1 Expected +SELECT hostname = @@SESSION.hostname; +ERROR 42S22: Unknown column 'hostname' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/identity_basic.result b/mysql-test/r/identity_basic.result new file mode 100644 index 00000000000..60f3edcc030 --- /dev/null +++ b/mysql-test/r/identity_basic.result @@ -0,0 +1,121 @@ +SET @start_value = @@session.identity; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_035_01------------------------#' +SET @@session.identity = 99; +'Variable is giving error on assigning Default value'; +SELECT @@session.identity; +@@session.identity +99 +'#---------------------FN_DYNVARS_035_02-------------------------#' +SET @@session.identity = @start_value; +SELECT @@session.identity = 0; +@@session.identity = 0 +1 +'#--------------------FN_DYNVARS_035_03------------------------#' +SET @@session.identity = 0; +SELECT @@session.identity; +@@session.identity +0 +SET @@session.identity = 1099; +SELECT @@session.identity; +@@session.identity +1099 +SET @@session.identity = 1800; +SELECT @@session.identity; +@@session.identity +1800 +SET @@session.identity = 65535; +SELECT @@session.identity; +@@session.identity +65535 +'#--------------------FN_DYNVARS_035_04-------------------------#' +SET @@session.identity = -1; +SELECT @@session.identity; +@@session.identity +-1 +SET @@session.identity = 100000000000; +SELECT @@session.identity; +@@session.identity +100000000000 +SET @@session.identity = 10000.01; +ERROR 42000: Incorrect argument type to variable 'identity' +SELECT @@session.identity; +@@session.identity +100000000000 +SET @@session.identity = -1024; +SELECT @@session.identity; +@@session.identity +-1024 +SET @@session.identity = 42949672950; +SELECT @@session.identity; +@@session.identity +42949672950 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.identity = ON; +ERROR 42000: Incorrect argument type to variable 'identity' +SELECT @@session.identity; +@@session.identity +42949672950 +SET @@session.identity = 'test'; +ERROR 42000: Incorrect argument type to variable 'identity' +SELECT @@session.identity; +@@session.identity +42949672950 +'#-------------------FN_DYNVARS_035_05----------------------------#' +SET @@global.identity = 0; +ERROR HY000: Variable 'identity' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.identity; +ERROR HY000: Variable 'identity' is a SESSION variable +'#----------------------FN_DYNVARS_035_06------------------------#' +SELECT @@global.identity = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='identity'; +ERROR HY000: Variable 'identity' is a SESSION variable +SELECT @@session.identity = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='identity'; +@@session.identity = VARIABLE_VALUE +1 +'#-------------------FN_DYNVARS_035_07----------------------------#' +SET @@global.identity = 0; +ERROR HY000: Variable 'identity' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.identity; +ERROR HY000: Variable 'identity' is a SESSION variable +'#---------------------FN_DYNVARS_035_08----------------------#' +SET @@session.identity = TRUE; +SELECT @@session.identity; +@@session.identity +1 +SET @@session.identity = FALSE; +SELECT @@session.identity; +@@session.identity +0 +'#---------------------FN_DYNVARS_035_09----------------------#' +SET @@session.identity = 1; +SELECT @@identity = @@session.identity; +@@identity = @@session.identity +1 +SELECT @@session.identity = @@local.identity; +@@session.identity = @@local.identity +1 +'#---------------------FN_DYNVARS_035_10----------------------#' +SET identity = 1; +SELECT @@identity; +@@identity +1 +SET local.identity = 1; +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 'identity = 1' at line 1 +SELECT local.identity; +ERROR 42S02: Unknown table 'local' in field list +SET session.identity = 1; +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 'identity = 1' at line 1 +SELECT session.identity; +ERROR 42S02: Unknown table 'session' in field list +SELECT identity = @@session.identity; +ERROR 42S22: Unknown column 'identity' in 'field list' +SET @@session.identity = @start_value; +SELECT @@session.identity; +@@session.identity +0 diff --git a/mysql-test/r/identity_func.result b/mysql-test/r/identity_func.result new file mode 100644 index 00000000000..ba430e72a1f --- /dev/null +++ b/mysql-test/r/identity_func.result @@ -0,0 +1,105 @@ +drop table if exists t1; +drop table if exists t2; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +) ENGINE = INNODB; +## Creating another new table t2 ## +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +) ENGINE = INNODB; +'#--------------------FN_DYNVARS_035_01-------------------------#' +## It should be zero ## +SELECT @@identity = 0; +@@identity = 0 +1 +## Creating and connecting with new connection test_con1 ## +SET @@autocommit = 0; +## Inserting rows in table t1 ## +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); +## Verifying total values in t1 ## +SELECT @@identity from t1; +@@identity +3 +3 +3 +## Now inserting some data in table t2 ## +INSERT into t2(name) values('Record_1'); +## Verifying total values in t2 ## +SELECT @@identity from t2; +@@identity +1 +'#--------------------FN_DYNVARS_035_02-------------------------#' +## Creating and connecting with new connection test_con2 ## +SELECT * from t1; +id name +## Verifying total values in t1 ## +SELECT @@identity from t1; +@@identity +## Verifying total values in t2 ## +SELECT @@identity from t2; +@@identity +## Inserting some more records in table t1 ## +INSERT into t1(name) values('Record_1_1'); +INSERT into t1(name) values('Record_1_2'); +## Verifying total values in t1 ## +SELECT @@identity from t1; +@@identity +5 +5 +## Inserting row in table t2 ## +INSERT into t2(name) values('Record_1_3'); +## Verifying total values in t2 ## +SELECT @@identity from t2; +@@identity +2 +'#--------------------FN_DYNVARS_035_03-------------------------#' +## Switching to connection test_con1 ## +## Commiting rows added in test_con1 ## +COMMIT; +## Verifying records in both tables ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +3 Record_3 +4 Record_1_1 +5 Record_1_2 +SELECT * from t2; +id name +1 Record_1 +2 Record_1_3 +## Verifying total values in t1 after commiting data ## +SELECT @@identity from t1; +@@identity +1 +1 +1 +1 +1 +## Verifying total values in t2 after commiting data ## +SELECT @@identity from t2; +@@identity +1 +1 +INSERT into t1(name) values('Record_4'); +## Now verifying value of variable after inserting 1 row in this connection ## +SELECT @@identity from t1; +@@identity +6 +6 +6 +6 +6 +6 +## Dropping tables t1 & t2 ## +drop table t1, t2; +## Disconnecting both the connections ## diff --git a/mysql-test/r/init_connect_basic.result b/mysql-test/r/init_connect_basic.result new file mode 100644 index 00000000000..58f7a9d2ccd --- /dev/null +++ b/mysql-test/r/init_connect_basic.result @@ -0,0 +1,98 @@ +SET @global_start_value = @@global.init_connect; +SELECT @global_start_value AS INIT_VALUE; +INIT_VALUE + +'#--------------------FN_DYNVARS_036_01------------------#' +SELECT init_connect; +ERROR 42S22: Unknown column 'init_connect' in 'field list' +SELECT @@init_connect; +@@init_connect + +SET @@global.init_connect='SET autocomit=0'; +SELECT @@global.init_connect; +@@global.init_connect +SET autocomit=0 +SET global init_connect='SET autocomit=0'; +SELECT global init_connect; +ERROR 42S22: Unknown column 'global' in 'field list' +SELECT @@global init_connect; +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 'init_connect' at line 1 +'#--------------------FN_DYNVARS_036_02-------------------------#' +SET @@global.init_connect = 'SET join_buffer_size=8200'; +SET @@global.init_connect = DEFAULT; +SELECT @@global.init_connect; +@@global.init_connect + +'#--------------------FN_DYNVARS_036_03-------------------------#' +SET @@session.init_connect = ''; +ERROR HY000: Variable 'init_connect' is a GLOBAL variable and should be set with SET GLOBAL +SET @@init_connect = ''; +ERROR HY000: Variable 'init_connect' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.init_connect; +ERROR HY000: Variable 'init_connect' is a GLOBAL variable +SELECT @@local.init_connect; +ERROR HY000: Variable 'init_connect' is a GLOBAL variable +'#--------------------FN_DYNVARS_036_04-------------------------#' +SET @@global.init_connect=""; +SELECT @@global.init_connect; +@@global.init_connect + +SET @@global.init_connect='SELECT 1,"abc"'; +SELECT @@global.init_connect; +@@global.init_connect +SELECT 1,"abc" +SET @@global.init_connect='SET @yoursql="mysql"'; +SELECT @@global.init_connect; +@@global.init_connect +SET @yoursql="mysql" +SET @@global.init_connect="SET autocomit=0;REVOKE ALL ON INFORMATION_SCHEMA.*"; +SELECT @@global.init_connect; +@@global.init_connect +SET autocomit=0;REVOKE ALL ON INFORMATION_SCHEMA.* +SET @@global.init_connect='SHOW VARIABLES'; +SELECT @@global.init_connect; +@@global.init_connect +SHOW VARIABLES +SET @@global.init_connect = NULL; +SELECT @@global.init_connect; +@@global.init_connect + +SET @@global.init_connect='abc 123 +-*/'; +SELECT @@global.init_connect; +@@global.init_connect +abc 123 +-*/ +SET @@global.init_connect=this_will_give_syntax_error; +SELECT @@global.init_connect; +@@global.init_connect +this_will_give_syntax_error +SET @@global.init_connect = init_slave; +SELECT @@global.init_connect; +@@global.init_connect +init_slave +'#--------------------FN_DYNVARS_036_05-------------------------#' +SET @@global.init_connect = true; +ERROR 42000: Incorrect argument type to variable 'init_connect' +SET @@global.init_connect = false; +ERROR 42000: Incorrect argument type to variable 'init_connect' +SET @@global.init_connect = 1.1; +ERROR 42000: Incorrect argument type to variable 'init_connect' +SET @@global.init_connect = 0; +ERROR 42000: Incorrect argument type to variable 'init_connect' +SET @@global.init_connect = 1; +ERROR 42000: Incorrect argument type to variable 'init_connect' +SET @@global.init_connect = -1; +ERROR 42000: Incorrect argument type to variable 'init_connect' +SET @@global.init_connect = ON; +SELECT @@global.init_connect; +@@global.init_connect +ON +'#--------------------FN_DYNVARS_036_06-------------------------#' +SELECT @@global.init_connect = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='init_connect') AS res; +res +1 +SET @@global.init_connect = @global_start_value; +SELECT @@global.init_connect; +@@global.init_connect + diff --git a/mysql-test/r/init_slave_basic.result b/mysql-test/r/init_slave_basic.result new file mode 100644 index 00000000000..87272f1489b --- /dev/null +++ b/mysql-test/r/init_slave_basic.result @@ -0,0 +1,98 @@ +SET @global_start_value = @@global.init_slave; +SELECT @global_start_value AS INIT_VALUE; +INIT_VALUE + +'#--------------------FN_DYNVARS_037_01------------------#' +SELECT init_slave; +ERROR 42S22: Unknown column 'init_slave' in 'field list' +SELECT @@init_slave; +@@init_slave + +SET @@global.init_slave='SET autocomit=0'; +SELECT @@global.init_slave; +@@global.init_slave +SET autocomit=0 +SET global init_slave='SET autocomit=0'; +SELECT global init_slave; +ERROR 42S22: Unknown column 'global' in 'field list' +SELECT @@global init_slave; +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 'init_slave' at line 1 +'#--------------------FN_DYNVARS_037_02-------------------------#' +SET @@global.init_slave = 'SET join_buffer_size=8200'; +SET @@global.init_slave = DEFAULT; +SELECT @@global.init_slave; +@@global.init_slave + +'#--------------------FN_DYNVARS_037_03-------------------------#' +SET @@session.init_slave = ''; +ERROR HY000: Variable 'init_slave' is a GLOBAL variable and should be set with SET GLOBAL +SET @@init_slave = ""; +ERROR HY000: Variable 'init_slave' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.init_slave; +ERROR HY000: Variable 'init_slave' is a GLOBAL variable +SELECT @@local.init_slave; +ERROR HY000: Variable 'init_slave' is a GLOBAL variable +'#--------------------FN_DYNVARS_037_04-------------------------#' +SET @@global.init_slave=""; +SELECT @@global.init_slave; +@@global.init_slave + +SET @@global.init_slave='SELECT 1,"abc"'; +SELECT @@global.init_slave; +@@global.init_slave +SELECT 1,"abc" +SET @@global.init_slave='SET @a="b"'; +SELECT @@global.init_slave; +@@global.init_slave +SET @a="b" +SET @@global.init_slave="SET autocomit=1;REVOKE ALL ON INFORMATION_SCHEMA.*"; +SELECT @@global.init_slave; +@@global.init_slave +SET autocomit=1;REVOKE ALL ON INFORMATION_SCHEMA.* +SET @@global.init_slave='SHOW VARIABLES'; +SELECT @@global.init_slave; +@@global.init_slave +SHOW VARIABLES +SET @@global.init_slave = NULL; +SELECT @@global.init_slave; +@@global.init_slave + +SET @@global.init_slave='abc 123 +-*/'; +SELECT @@global.init_slave; +@@global.init_slave +abc 123 +-*/ +SET @@global.init_slave=this_will_give_syntax_error; +SELECT @@global.init_slave; +@@global.init_slave +this_will_give_syntax_error +SET @@global.init_slave = init_slave; +SELECT @@global.init_slave; +@@global.init_slave +init_slave +'#--------------------FN_DYNVARS_037_05-------------------------#' +SET @@global.init_slave = true; +ERROR 42000: Incorrect argument type to variable 'init_slave' +SET @@global.init_slave = false; +ERROR 42000: Incorrect argument type to variable 'init_slave' +SET @@global.init_slave = 1.1; +ERROR 42000: Incorrect argument type to variable 'init_slave' +SET @@global.init_slave = 0; +ERROR 42000: Incorrect argument type to variable 'init_slave' +SET @@global.init_slave = 1; +ERROR 42000: Incorrect argument type to variable 'init_slave' +SET @@global.init_slave = -1; +ERROR 42000: Incorrect argument type to variable 'init_slave' +SET @@global.init_slave = ON; +SELECT @@global.init_slave; +@@global.init_slave +ON +'#--------------------FN_DYNVARS_037_06-------------------------#' +SELECT @@global.init_slave = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='init_slave') AS res; +res +1 +SET @@global.init_slave = @global_start_value; +SELECT @@global.init_slave; +@@global.init_slave + diff --git a/mysql-test/r/innodb_additional_mem_pool_size_basic.result b/mysql-test/r/innodb_additional_mem_pool_size_basic.result new file mode 100644 index 00000000000..fb062d62bc6 --- /dev/null +++ b/mysql-test/r/innodb_additional_mem_pool_size_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_020_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +COUNT(@@GLOBAL.innodb_additional_mem_pool_size) +1 +1 Expected +'#---------------------BS_STVARS_020_02----------------------#' +SET @@GLOBAL.innodb_additional_mem_pool_size=1; +ERROR HY000: Variable 'innodb_additional_mem_pool_size' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +COUNT(@@GLOBAL.innodb_additional_mem_pool_size) +1 +1 Expected +'#---------------------BS_STVARS_020_03----------------------#' +SELECT @@GLOBAL.innodb_additional_mem_pool_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_additional_mem_pool_size'; +@@GLOBAL.innodb_additional_mem_pool_size = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +COUNT(@@GLOBAL.innodb_additional_mem_pool_size) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_additional_mem_pool_size'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_020_04----------------------#' +SELECT @@innodb_additional_mem_pool_size = @@GLOBAL.innodb_additional_mem_pool_size; +@@innodb_additional_mem_pool_size = @@GLOBAL.innodb_additional_mem_pool_size +1 +1 Expected +'#---------------------BS_STVARS_020_05----------------------#' +SELECT COUNT(@@innodb_additional_mem_pool_size); +COUNT(@@innodb_additional_mem_pool_size) +1 +1 Expected +SELECT COUNT(@@local.innodb_additional_mem_pool_size); +ERROR HY000: Variable 'innodb_additional_mem_pool_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_additional_mem_pool_size); +ERROR HY000: Variable 'innodb_additional_mem_pool_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +COUNT(@@GLOBAL.innodb_additional_mem_pool_size) +1 +1 Expected +SELECT innodb_additional_mem_pool_size = @@SESSION.innodb_additional_mem_pool_size; +ERROR 42S22: Unknown column 'innodb_additional_mem_pool_size' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_autoextend_increment_basic.result b/mysql-test/r/innodb_autoextend_increment_basic.result new file mode 100644 index 00000000000..dafc71fd25d --- /dev/null +++ b/mysql-test/r/innodb_autoextend_increment_basic.result @@ -0,0 +1,94 @@ +SET @global_start_value = @@global.innodb_autoextend_increment ; +SELECT @global_start_value; +@global_start_value +8 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_autoextend_increment = 0; +Warnings: +Warning 1292 Truncated incorrect autoextend_increment value: '0' +SET @@global.innodb_autoextend_increment = DEFAULT; +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +8 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_autoextend_increment = 1; +ERROR HY000: Variable 'innodb_autoextend_increment' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_autoextend_increment ; +@@innodb_autoextend_increment +8 +SELECT local.innodb_autoextend_increment ; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_autoextend_increment = 0; +Warnings: +Warning 1292 Truncated incorrect autoextend_increment value: '0' +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_autoextend_increment = 1; +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1 +SET @@global.innodb_autoextend_increment = 1000; +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1000 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_autoextend_increment = -1; +Warnings: +Warning 1292 Truncated incorrect autoextend_increment value: '18446744073709551615' +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +1000 +SET @@global.innodb_autoextend_increment = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_autoextend_increment' +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +1000 +SET @@global.innodb_autoextend_increment = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_autoextend_increment' +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +1000 +SET @@global.innodb_autoextend_increment = 1001; +Warnings: +Warning 1292 Truncated incorrect autoextend_increment value: '1001' +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +1000 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_autoextend_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoextend_increment '; +@@global.innodb_autoextend_increment = VARIABLE_VALUE +1 +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1000 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoextend_increment '; +VARIABLE_VALUE +1000 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_autoextend_increment = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_autoextend_increment' +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1000 +SET @@global.innodb_autoextend_increment = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_autoextend_increment' +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1000 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_autoextend_increment = TRUE; +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1 +SET @@global.innodb_autoextend_increment = FALSE; +Warnings: +Warning 1292 Truncated incorrect autoextend_increment value: '0' +SELECT @@global.innodb_autoextend_increment ; +@@global.innodb_autoextend_increment +1 diff --git a/mysql-test/r/innodb_autoinc_lock_mode_basic.result b/mysql-test/r/innodb_autoinc_lock_mode_basic.result new file mode 100644 index 00000000000..9188cf07417 --- /dev/null +++ b/mysql-test/r/innodb_autoinc_lock_mode_basic.result @@ -0,0 +1,35 @@ +SET @global_start_value = @@global.innodb_autoinc_lock_mode; +SELECT @global_start_value; +@global_start_value +1 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_autoinc_lock_mode = 0; +ERROR HY000: Variable 'innodb_autoinc_lock_mode' is a read only variable +SET @@global.innodb_autoinc_lock_mode = DEFAULT; +ERROR HY000: Variable 'innodb_autoinc_lock_mode' is a read only variable +SELECT @@global.innodb_autoinc_lock_mode; +@@global.innodb_autoinc_lock_mode +1 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SELECT @@innodb_autoinc_lock_mode; +@@innodb_autoinc_lock_mode +1 +SELECT local.innodb_autoinc_lock_mode; +ERROR 42S02: Unknown table 'local' in field list +SELECT @@global.innodb_autoinc_lock_mode; +@@global.innodb_autoinc_lock_mode +1 +'#----------------------FN_DYNVARS_046_03------------------------#' +SELECT @@global.innodb_autoinc_lock_mode = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoinc_lock_mode'; +@@global.innodb_autoinc_lock_mode = VARIABLE_VALUE +1 +SELECT @@global.innodb_autoinc_lock_mode; +@@global.innodb_autoinc_lock_mode +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoinc_lock_mode'; +VARIABLE_VALUE +1 diff --git a/mysql-test/r/innodb_autoinc_lock_mode_func.result b/mysql-test/r/innodb_autoinc_lock_mode_func.result new file mode 100644 index 00000000000..4c594558a6f --- /dev/null +++ b/mysql-test/r/innodb_autoinc_lock_mode_func.result @@ -0,0 +1,22 @@ +'#--------------------FN_DYNVARS_039_01-------------------------#' +SET global innodb_autoinc_lock_mode = 1; +ERROR HY000: Variable 'innodb_autoinc_lock_mode' is a read only variable +'--innodb_autoinc_lock_mode is 1 (consecutive)--' +SELECT @@global.innodb_autoinc_lock_mode; +@@global.innodb_autoinc_lock_mode +1 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1( +a INT AUTO_INCREMENT PRIMARY KEY, +b CHAR +)ENGINE=INNODB, AUTO_INCREMENT=100; +INSERT INTO t1 (a,b) VALUES (5,'a'), (NULL,'b'), (1,'c'), (NULL,'d'); +INSERT INTO t1 (a,b) VALUES (NULL,'e'); +'the new auto incremented value should be 104' +SELECT * from t1; +a b +1 c +5 a +100 b +101 d +104 e diff --git a/mysql-test/r/innodb_buffer_pool_size_basic.result b/mysql-test/r/innodb_buffer_pool_size_basic.result new file mode 100644 index 00000000000..27e6cae41ef --- /dev/null +++ b/mysql-test/r/innodb_buffer_pool_size_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_022_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +COUNT(@@GLOBAL.innodb_buffer_pool_size) +1 +1 Expected +'#---------------------BS_STVARS_022_02----------------------#' +SET @@GLOBAL.innodb_buffer_pool_size=1; +ERROR HY000: Variable 'innodb_buffer_pool_size' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +COUNT(@@GLOBAL.innodb_buffer_pool_size) +1 +1 Expected +'#---------------------BS_STVARS_022_03----------------------#' +SELECT @@GLOBAL.innodb_buffer_pool_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_buffer_pool_size'; +@@GLOBAL.innodb_buffer_pool_size = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +COUNT(@@GLOBAL.innodb_buffer_pool_size) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_buffer_pool_size'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_022_04----------------------#' +SELECT @@innodb_buffer_pool_size = @@GLOBAL.innodb_buffer_pool_size; +@@innodb_buffer_pool_size = @@GLOBAL.innodb_buffer_pool_size +1 +1 Expected +'#---------------------BS_STVARS_022_05----------------------#' +SELECT COUNT(@@innodb_buffer_pool_size); +COUNT(@@innodb_buffer_pool_size) +1 +1 Expected +SELECT COUNT(@@local.innodb_buffer_pool_size); +ERROR HY000: Variable 'innodb_buffer_pool_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_buffer_pool_size); +ERROR HY000: Variable 'innodb_buffer_pool_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +COUNT(@@GLOBAL.innodb_buffer_pool_size) +1 +1 Expected +SELECT innodb_buffer_pool_size = @@SESSION.innodb_buffer_pool_size; +ERROR 42S22: Unknown column 'innodb_buffer_pool_size' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_checksums_basic.result b/mysql-test/r/innodb_checksums_basic.result new file mode 100644 index 00000000000..ac4bed60eb5 --- /dev/null +++ b/mysql-test/r/innodb_checksums_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_023_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_checksums); +COUNT(@@GLOBAL.innodb_checksums) +1 +1 Expected +'#---------------------BS_STVARS_023_02----------------------#' +SET @@GLOBAL.innodb_checksums=1; +ERROR HY000: Variable 'innodb_checksums' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_checksums); +COUNT(@@GLOBAL.innodb_checksums) +1 +1 Expected +'#---------------------BS_STVARS_023_03----------------------#' +SELECT @@GLOBAL.innodb_checksums = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_checksums'; +@@GLOBAL.innodb_checksums = VARIABLE_VALUE +0 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_checksums); +COUNT(@@GLOBAL.innodb_checksums) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_checksums'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_023_04----------------------#' +SELECT @@innodb_checksums = @@GLOBAL.innodb_checksums; +@@innodb_checksums = @@GLOBAL.innodb_checksums +1 +1 Expected +'#---------------------BS_STVARS_023_05----------------------#' +SELECT COUNT(@@innodb_checksums); +COUNT(@@innodb_checksums) +1 +1 Expected +SELECT COUNT(@@local.innodb_checksums); +ERROR HY000: Variable 'innodb_checksums' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_checksums); +ERROR HY000: Variable 'innodb_checksums' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_checksums); +COUNT(@@GLOBAL.innodb_checksums) +1 +1 Expected +SELECT innodb_checksums = @@SESSION.innodb_checksums; +ERROR 42S22: Unknown column 'innodb_checksums' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_commit_concurrency_basic.result b/mysql-test/r/innodb_commit_concurrency_basic.result new file mode 100644 index 00000000000..301016d4362 --- /dev/null +++ b/mysql-test/r/innodb_commit_concurrency_basic.result @@ -0,0 +1,96 @@ +SET @global_start_value = @@global.innodb_commit_concurrency; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_commit_concurrency = 0; +SET @@global.innodb_commit_concurrency = DEFAULT; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +0 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_commit_concurrency = 1; +ERROR HY000: Variable 'innodb_commit_concurrency' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_commit_concurrency; +@@innodb_commit_concurrency +0 +SELECT local.innodb_commit_concurrency; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_commit_concurrency = 0; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_commit_concurrency = 0; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +0 +SET @@global.innodb_commit_concurrency = 1; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1 +SET @@global.innodb_commit_concurrency = 1000; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_commit_concurrency = -1; +Warnings: +Warning 1292 Truncated incorrect commit_concurrency value: '18446744073709551615' +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +SET @@global.innodb_commit_concurrency = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency' +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +SET @@global.innodb_commit_concurrency = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency' +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +SET @@global.innodb_commit_concurrency = 1001; +Warnings: +Warning 1292 Truncated incorrect commit_concurrency value: '1001' +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_commit_concurrency = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_commit_concurrency'; +@@global.innodb_commit_concurrency = +VARIABLE_VALUE +1 +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_commit_concurrency'; +VARIABLE_VALUE +1000 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_commit_concurrency = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency' +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +SET @@global.innodb_commit_concurrency = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_commit_concurrency' +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1000 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_commit_concurrency = TRUE; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +1 +SET @@global.innodb_commit_concurrency = FALSE; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +0 +SET @@global.innodb_commit_concurrency = @global_start_value; +SELECT @@global.innodb_commit_concurrency; +@@global.innodb_commit_concurrency +0 diff --git a/mysql-test/r/innodb_data_file_path_basic.result b/mysql-test/r/innodb_data_file_path_basic.result new file mode 100644 index 00000000000..8904c0dcac4 --- /dev/null +++ b/mysql-test/r/innodb_data_file_path_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_024_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +COUNT(@@GLOBAL.innodb_data_file_path) +1 +1 Expected +'#---------------------BS_STVARS_024_02----------------------#' +SET @@GLOBAL.innodb_data_file_path=1; +ERROR HY000: Variable 'innodb_data_file_path' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +COUNT(@@GLOBAL.innodb_data_file_path) +1 +1 Expected +'#---------------------BS_STVARS_024_03----------------------#' +SELECT @@GLOBAL.innodb_data_file_path = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_file_path'; +@@GLOBAL.innodb_data_file_path = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +COUNT(@@GLOBAL.innodb_data_file_path) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_file_path'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_024_04----------------------#' +SELECT @@innodb_data_file_path = @@GLOBAL.innodb_data_file_path; +@@innodb_data_file_path = @@GLOBAL.innodb_data_file_path +1 +1 Expected +'#---------------------BS_STVARS_024_05----------------------#' +SELECT COUNT(@@innodb_data_file_path); +COUNT(@@innodb_data_file_path) +1 +1 Expected +SELECT COUNT(@@local.innodb_data_file_path); +ERROR HY000: Variable 'innodb_data_file_path' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_data_file_path); +ERROR HY000: Variable 'innodb_data_file_path' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +COUNT(@@GLOBAL.innodb_data_file_path) +1 +1 Expected +SELECT innodb_data_file_path = @@SESSION.innodb_data_file_path; +ERROR 42S22: Unknown column 'innodb_data_file_path' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_data_home_dir_basic.result b/mysql-test/r/innodb_data_home_dir_basic.result new file mode 100644 index 00000000000..fb9a0b0bca5 --- /dev/null +++ b/mysql-test/r/innodb_data_home_dir_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_025_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +COUNT(@@GLOBAL.innodb_data_home_dir) +0 +1 Expected +'#---------------------BS_STVARS_025_02----------------------#' +SET @@GLOBAL.innodb_data_home_dir=1; +ERROR HY000: Variable 'innodb_data_home_dir' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +COUNT(@@GLOBAL.innodb_data_home_dir) +0 +1 Expected +'#---------------------BS_STVARS_025_03----------------------#' +SELECT @@GLOBAL.innodb_data_home_dir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_home_dir'; +@@GLOBAL.innodb_data_home_dir = VARIABLE_VALUE +NULL +1 Expected +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +COUNT(@@GLOBAL.innodb_data_home_dir) +0 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_home_dir'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_025_04----------------------#' +SELECT @@innodb_data_home_dir = @@GLOBAL.innodb_data_home_dir; +@@innodb_data_home_dir = @@GLOBAL.innodb_data_home_dir +NULL +1 Expected +'#---------------------BS_STVARS_025_05----------------------#' +SELECT COUNT(@@innodb_data_home_dir); +COUNT(@@innodb_data_home_dir) +0 +1 Expected +SELECT COUNT(@@local.innodb_data_home_dir); +ERROR HY000: Variable 'innodb_data_home_dir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_data_home_dir); +ERROR HY000: Variable 'innodb_data_home_dir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +COUNT(@@GLOBAL.innodb_data_home_dir) +0 +1 Expected +SELECT innodb_data_home_dir = @@SESSION.innodb_data_home_dir; +ERROR 42S22: Unknown column 'innodb_data_home_dir' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_doublewrite_basic.result b/mysql-test/r/innodb_doublewrite_basic.result new file mode 100644 index 00000000000..6062399e8b8 --- /dev/null +++ b/mysql-test/r/innodb_doublewrite_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_026_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +COUNT(@@GLOBAL.innodb_doublewrite) +1 +1 Expected +'#---------------------BS_STVARS_026_02----------------------#' +SET @@GLOBAL.innodb_doublewrite=1; +ERROR HY000: Variable 'innodb_doublewrite' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +COUNT(@@GLOBAL.innodb_doublewrite) +1 +1 Expected +'#---------------------BS_STVARS_026_03----------------------#' +SELECT @@GLOBAL.innodb_doublewrite = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_doublewrite'; +@@GLOBAL.innodb_doublewrite = VARIABLE_VALUE +0 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +COUNT(@@GLOBAL.innodb_doublewrite) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_doublewrite'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_026_04----------------------#' +SELECT @@innodb_doublewrite = @@GLOBAL.innodb_doublewrite; +@@innodb_doublewrite = @@GLOBAL.innodb_doublewrite +1 +1 Expected +'#---------------------BS_STVARS_026_05----------------------#' +SELECT COUNT(@@innodb_doublewrite); +COUNT(@@innodb_doublewrite) +1 +1 Expected +SELECT COUNT(@@local.innodb_doublewrite); +ERROR HY000: Variable 'innodb_doublewrite' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_doublewrite); +ERROR HY000: Variable 'innodb_doublewrite' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +COUNT(@@GLOBAL.innodb_doublewrite) +1 +1 Expected +SELECT innodb_doublewrite = @@SESSION.innodb_doublewrite; +ERROR 42S22: Unknown column 'innodb_doublewrite' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_fast_shutdown_basic.result b/mysql-test/r/innodb_fast_shutdown_basic.result new file mode 100644 index 00000000000..adbfb6ec867 --- /dev/null +++ b/mysql-test/r/innodb_fast_shutdown_basic.result @@ -0,0 +1,127 @@ +SET @global_start_value = @@global.innodb_fast_shutdown; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +1 +'#--------------------FN_DYNVARS_042_01------------------------#' +SET @@global.innodb_fast_shutdown = 0; +SET @@global.innodb_fast_shutdown = DEFAULT; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +1 +'#---------------------FN_DYNVARS_042_02-------------------------#' +SET innodb_fast_shutdown = 1; +ERROR HY000: Variable 'innodb_fast_shutdown' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_fast_shutdown; +@@innodb_fast_shutdown +1 +SELECT global.innodb_fast_shutdown; +ERROR 42S02: Unknown table 'global' in field list +SET global innodb_fast_shutdown = 1; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +1 +'#--------------------FN_DYNVARS_042_03------------------------#' +SET @@global.innodb_fast_shutdown = 0; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +0 +SET @@global.innodb_fast_shutdown = 1; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +1 +SET @@global.innodb_fast_shutdown = 2; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +'#--------------------FN_DYNVARS_042_04-------------------------#' +SET @@global.innodb_fast_shutdown = -1; +Warnings: +Warning 1292 Truncated incorrect fast_shutdown value: '18446744073709551615' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = TRU; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = TRUE_F; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = FALS; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = OON; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = ONN; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = OOFF; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = 0FF; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = '1'; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = "0"; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +'#-------------------FN_DYNVARS_042_05----------------------------#' +SET @@session.innodb_fast_shutdown = 0; +ERROR HY000: Variable 'innodb_fast_shutdown' is a GLOBAL variable and should be set with SET GLOBAL +SET @@innodb_fast_shutdown = 0; +ERROR HY000: Variable 'innodb_fast_shutdown' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.innodb_fast_shutdown = 0; +ERROR HY000: Variable 'innodb_fast_shutdown' is a GLOBAL variable and should be set with SET GLOBAL +'#----------------------FN_DYNVARS_042_06------------------------#' +SELECT count(VARIABLE_VALUE) AS res_is_0 +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='innodb_fast_shutdown'; +res_is_0 +1 +'#----------------------FN_DYNVARS_042_07------------------------#' +SELECT @@global.innodb_fast_shutdown = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_fast_shutdown'; +@@global.innodb_fast_shutdown = +VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_042_08-------------------------#' +SET @@global.innodb_fast_shutdown = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +SET @@global.innodb_fast_shutdown = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_fast_shutdown' +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +2 +'#---------------------FN_DYNVARS_042_09----------------------#' +SET @@global.innodb_fast_shutdown = TRUE; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +1 +SET @@global.innodb_fast_shutdown = FALSE; +SELECT @@global.innodb_fast_shutdown; +@@global.innodb_fast_shutdown +0 diff --git a/mysql-test/r/innodb_file_io_threads_basic.result b/mysql-test/r/innodb_file_io_threads_basic.result new file mode 100644 index 00000000000..4c1c3ae8d54 --- /dev/null +++ b/mysql-test/r/innodb_file_io_threads_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_027_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +COUNT(@@GLOBAL.innodb_file_io_threads) +1 +1 Expected +'#---------------------BS_STVARS_027_02----------------------#' +SET @@GLOBAL.innodb_file_io_threads=1; +ERROR HY000: Variable 'innodb_file_io_threads' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +COUNT(@@GLOBAL.innodb_file_io_threads) +1 +1 Expected +'#---------------------BS_STVARS_027_03----------------------#' +SELECT @@GLOBAL.innodb_file_io_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_io_threads'; +@@GLOBAL.innodb_file_io_threads = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +COUNT(@@GLOBAL.innodb_file_io_threads) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_io_threads'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_027_04----------------------#' +SELECT @@innodb_file_io_threads = @@GLOBAL.innodb_file_io_threads; +@@innodb_file_io_threads = @@GLOBAL.innodb_file_io_threads +1 +1 Expected +'#---------------------BS_STVARS_027_05----------------------#' +SELECT COUNT(@@innodb_file_io_threads); +COUNT(@@innodb_file_io_threads) +1 +1 Expected +SELECT COUNT(@@local.innodb_file_io_threads); +ERROR HY000: Variable 'innodb_file_io_threads' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_file_io_threads); +ERROR HY000: Variable 'innodb_file_io_threads' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +COUNT(@@GLOBAL.innodb_file_io_threads) +1 +1 Expected +SELECT innodb_file_io_threads = @@SESSION.innodb_file_io_threads; +ERROR 42S22: Unknown column 'innodb_file_io_threads' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_file_per_table_basic.result b/mysql-test/r/innodb_file_per_table_basic.result new file mode 100644 index 00000000000..77595639400 --- /dev/null +++ b/mysql-test/r/innodb_file_per_table_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_028_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +COUNT(@@GLOBAL.innodb_file_per_table) +1 +1 Expected +'#---------------------BS_STVARS_028_02----------------------#' +SET @@GLOBAL.innodb_file_per_table=1; +ERROR HY000: Variable 'innodb_file_per_table' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +COUNT(@@GLOBAL.innodb_file_per_table) +1 +1 Expected +'#---------------------BS_STVARS_028_03----------------------#' +SELECT @@GLOBAL.innodb_file_per_table = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_per_table'; +@@GLOBAL.innodb_file_per_table = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +COUNT(@@GLOBAL.innodb_file_per_table) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_per_table'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_028_04----------------------#' +SELECT @@innodb_file_per_table = @@GLOBAL.innodb_file_per_table; +@@innodb_file_per_table = @@GLOBAL.innodb_file_per_table +1 +1 Expected +'#---------------------BS_STVARS_028_05----------------------#' +SELECT COUNT(@@innodb_file_per_table); +COUNT(@@innodb_file_per_table) +1 +1 Expected +SELECT COUNT(@@local.innodb_file_per_table); +ERROR HY000: Variable 'innodb_file_per_table' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_file_per_table); +ERROR HY000: Variable 'innodb_file_per_table' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +COUNT(@@GLOBAL.innodb_file_per_table) +1 +1 Expected +SELECT innodb_file_per_table = @@SESSION.innodb_file_per_table; +ERROR 42S22: Unknown column 'innodb_file_per_table' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_flush_log_at_trx_commit_basic.result b/mysql-test/r/innodb_flush_log_at_trx_commit_basic.result new file mode 100644 index 00000000000..da9f5ad3994 --- /dev/null +++ b/mysql-test/r/innodb_flush_log_at_trx_commit_basic.result @@ -0,0 +1,96 @@ +SET @global_start_value = @@global.innodb_flush_log_at_trx_commit; +SELECT @global_start_value; +@global_start_value +1 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_flush_log_at_trx_commit = 0; +SET @@global.innodb_flush_log_at_trx_commit = DEFAULT; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +1 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_flush_log_at_trx_commit = 1; +ERROR HY000: Variable 'innodb_flush_log_at_trx_commit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_flush_log_at_trx_commit; +@@innodb_flush_log_at_trx_commit +1 +SELECT local.innodb_flush_log_at_trx_commit; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_flush_log_at_trx_commit = 0; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_flush_log_at_trx_commit = 0; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +0 +SET @@global.innodb_flush_log_at_trx_commit = 1; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +1 +SET @@global.innodb_flush_log_at_trx_commit = 2; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_flush_log_at_trx_commit = -1; +Warnings: +Warning 1292 Truncated incorrect flush_log_at_trx_commit value: '18446744073709551615' +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +SET @@global.innodb_flush_log_at_trx_commit = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_flush_log_at_trx_commit' +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +SET @@global.innodb_flush_log_at_trx_commit = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_flush_log_at_trx_commit' +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +SET @@global.innodb_flush_log_at_trx_commit = 1001; +Warnings: +Warning 1292 Truncated incorrect flush_log_at_trx_commit value: '1001' +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_flush_log_at_trx_commit = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_flush_log_at_trx_commit'; +@@global.innodb_flush_log_at_trx_commit = +VARIABLE_VALUE +1 +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_flush_log_at_trx_commit'; +VARIABLE_VALUE +2 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_flush_log_at_trx_commit = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_flush_log_at_trx_commit' +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +SET @@global.innodb_flush_log_at_trx_commit = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_flush_log_at_trx_commit' +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +2 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_flush_log_at_trx_commit = TRUE; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +1 +SET @@global.innodb_flush_log_at_trx_commit = FALSE; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +0 +SET @@global.innodb_flush_log_at_trx_commit = @global_start_value; +SELECT @@global.innodb_flush_log_at_trx_commit; +@@global.innodb_flush_log_at_trx_commit +1 diff --git a/mysql-test/r/innodb_flush_method_basic.result b/mysql-test/r/innodb_flush_method_basic.result new file mode 100644 index 00000000000..836328c5c9b --- /dev/null +++ b/mysql-test/r/innodb_flush_method_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_029_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_flush_method); +COUNT(@@GLOBAL.innodb_flush_method) +0 +1 Expected +'#---------------------BS_STVARS_029_02----------------------#' +SET @@GLOBAL.innodb_flush_method=1; +ERROR HY000: Variable 'innodb_flush_method' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_flush_method); +COUNT(@@GLOBAL.innodb_flush_method) +0 +1 Expected +'#---------------------BS_STVARS_029_03----------------------#' +SELECT @@GLOBAL.innodb_flush_method = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_flush_method'; +@@GLOBAL.innodb_flush_method = VARIABLE_VALUE +NULL +1 Expected +SELECT COUNT(@@GLOBAL.innodb_flush_method); +COUNT(@@GLOBAL.innodb_flush_method) +0 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_flush_method'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_029_04----------------------#' +SELECT @@innodb_flush_method = @@GLOBAL.innodb_flush_method; +@@innodb_flush_method = @@GLOBAL.innodb_flush_method +NULL +1 Expected +'#---------------------BS_STVARS_029_05----------------------#' +SELECT COUNT(@@innodb_flush_method); +COUNT(@@innodb_flush_method) +0 +1 Expected +SELECT COUNT(@@local.innodb_flush_method); +ERROR HY000: Variable 'innodb_flush_method' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_flush_method); +ERROR HY000: Variable 'innodb_flush_method' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_flush_method); +COUNT(@@GLOBAL.innodb_flush_method) +0 +1 Expected +SELECT innodb_flush_method = @@SESSION.innodb_flush_method; +ERROR 42S22: Unknown column 'innodb_flush_method' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_force_recovery_basic.result b/mysql-test/r/innodb_force_recovery_basic.result new file mode 100644 index 00000000000..d3dcb525c7f --- /dev/null +++ b/mysql-test/r/innodb_force_recovery_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_030_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +COUNT(@@GLOBAL.innodb_force_recovery) +1 +1 Expected +'#---------------------BS_STVARS_030_02----------------------#' +SET @@GLOBAL.innodb_force_recovery=1; +ERROR HY000: Variable 'innodb_force_recovery' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +COUNT(@@GLOBAL.innodb_force_recovery) +1 +1 Expected +'#---------------------BS_STVARS_030_03----------------------#' +SELECT @@GLOBAL.innodb_force_recovery = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_force_recovery'; +@@GLOBAL.innodb_force_recovery = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +COUNT(@@GLOBAL.innodb_force_recovery) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_force_recovery'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_030_04----------------------#' +SELECT @@innodb_force_recovery = @@GLOBAL.innodb_force_recovery; +@@innodb_force_recovery = @@GLOBAL.innodb_force_recovery +1 +1 Expected +'#---------------------BS_STVARS_030_05----------------------#' +SELECT COUNT(@@innodb_force_recovery); +COUNT(@@innodb_force_recovery) +1 +1 Expected +SELECT COUNT(@@local.innodb_force_recovery); +ERROR HY000: Variable 'innodb_force_recovery' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_force_recovery); +ERROR HY000: Variable 'innodb_force_recovery' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +COUNT(@@GLOBAL.innodb_force_recovery) +1 +1 Expected +SELECT innodb_force_recovery = @@SESSION.innodb_force_recovery; +ERROR 42S22: Unknown column 'innodb_force_recovery' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_lock_wait_timeout_basic.result b/mysql-test/r/innodb_lock_wait_timeout_basic.result new file mode 100644 index 00000000000..ce46861b760 --- /dev/null +++ b/mysql-test/r/innodb_lock_wait_timeout_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_032_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +COUNT(@@GLOBAL.innodb_lock_wait_timeout) +1 +1 Expected +'#---------------------BS_STVARS_032_02----------------------#' +SET @@GLOBAL.innodb_lock_wait_timeout=1; +ERROR HY000: Variable 'innodb_lock_wait_timeout' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +COUNT(@@GLOBAL.innodb_lock_wait_timeout) +1 +1 Expected +'#---------------------BS_STVARS_032_03----------------------#' +SELECT @@GLOBAL.innodb_lock_wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_lock_wait_timeout'; +@@GLOBAL.innodb_lock_wait_timeout = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +COUNT(@@GLOBAL.innodb_lock_wait_timeout) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_lock_wait_timeout'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_032_04----------------------#' +SELECT @@innodb_lock_wait_timeout = @@GLOBAL.innodb_lock_wait_timeout; +@@innodb_lock_wait_timeout = @@GLOBAL.innodb_lock_wait_timeout +1 +1 Expected +'#---------------------BS_STVARS_032_05----------------------#' +SELECT COUNT(@@innodb_lock_wait_timeout); +COUNT(@@innodb_lock_wait_timeout) +1 +1 Expected +SELECT COUNT(@@local.innodb_lock_wait_timeout); +ERROR HY000: Variable 'innodb_lock_wait_timeout' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_lock_wait_timeout); +ERROR HY000: Variable 'innodb_lock_wait_timeout' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +COUNT(@@GLOBAL.innodb_lock_wait_timeout) +1 +1 Expected +SELECT innodb_lock_wait_timeout = @@SESSION.innodb_lock_wait_timeout; +ERROR 42S22: Unknown column 'innodb_lock_wait_timeout' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_locks_unsafe_for_binlog_basic.result b/mysql-test/r/innodb_locks_unsafe_for_binlog_basic.result new file mode 100644 index 00000000000..a5967d28913 --- /dev/null +++ b/mysql-test/r/innodb_locks_unsafe_for_binlog_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_031_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog) +1 +1 Expected +'#---------------------BS_STVARS_031_02----------------------#' +SET @@GLOBAL.innodb_locks_unsafe_for_binlog=1; +ERROR HY000: Variable 'innodb_locks_unsafe_for_binlog' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog) +1 +1 Expected +'#---------------------BS_STVARS_031_03----------------------#' +SELECT @@GLOBAL.innodb_locks_unsafe_for_binlog = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_locks_unsafe_for_binlog'; +@@GLOBAL.innodb_locks_unsafe_for_binlog = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_locks_unsafe_for_binlog'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_031_04----------------------#' +SELECT @@innodb_locks_unsafe_for_binlog = @@GLOBAL.innodb_locks_unsafe_for_binlog; +@@innodb_locks_unsafe_for_binlog = @@GLOBAL.innodb_locks_unsafe_for_binlog +1 +1 Expected +'#---------------------BS_STVARS_031_05----------------------#' +SELECT COUNT(@@innodb_locks_unsafe_for_binlog); +COUNT(@@innodb_locks_unsafe_for_binlog) +1 +1 Expected +SELECT COUNT(@@local.innodb_locks_unsafe_for_binlog); +ERROR HY000: Variable 'innodb_locks_unsafe_for_binlog' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_locks_unsafe_for_binlog); +ERROR HY000: Variable 'innodb_locks_unsafe_for_binlog' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog) +1 +1 Expected +SELECT innodb_locks_unsafe_for_binlog = @@SESSION.innodb_locks_unsafe_for_binlog; +ERROR 42S22: Unknown column 'innodb_locks_unsafe_for_binlog' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_log_buffer_size_basic.result b/mysql-test/r/innodb_log_buffer_size_basic.result new file mode 100644 index 00000000000..d926addd1bd --- /dev/null +++ b/mysql-test/r/innodb_log_buffer_size_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_033_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +COUNT(@@GLOBAL.innodb_log_buffer_size) +1 +1 Expected +'#---------------------BS_STVARS_033_02----------------------#' +SET @@GLOBAL.innodb_log_buffer_size=1; +ERROR HY000: Variable 'innodb_log_buffer_size' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +COUNT(@@GLOBAL.innodb_log_buffer_size) +1 +1 Expected +'#---------------------BS_STVARS_033_03----------------------#' +SELECT @@GLOBAL.innodb_log_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_buffer_size'; +@@GLOBAL.innodb_log_buffer_size = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +COUNT(@@GLOBAL.innodb_log_buffer_size) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_buffer_size'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_033_04----------------------#' +SELECT @@innodb_log_buffer_size = @@GLOBAL.innodb_log_buffer_size; +@@innodb_log_buffer_size = @@GLOBAL.innodb_log_buffer_size +1 +1 Expected +'#---------------------BS_STVARS_033_05----------------------#' +SELECT COUNT(@@innodb_log_buffer_size); +COUNT(@@innodb_log_buffer_size) +1 +1 Expected +SELECT COUNT(@@local.innodb_log_buffer_size); +ERROR HY000: Variable 'innodb_log_buffer_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_log_buffer_size); +ERROR HY000: Variable 'innodb_log_buffer_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +COUNT(@@GLOBAL.innodb_log_buffer_size) +1 +1 Expected +SELECT innodb_log_buffer_size = @@SESSION.innodb_log_buffer_size; +ERROR 42S22: Unknown column 'innodb_log_buffer_size' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_log_file_size_basic.result b/mysql-test/r/innodb_log_file_size_basic.result new file mode 100644 index 00000000000..119e95df1e1 --- /dev/null +++ b/mysql-test/r/innodb_log_file_size_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_035_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +COUNT(@@GLOBAL.innodb_log_file_size) +1 +1 Expected +'#---------------------BS_STVARS_035_02----------------------#' +SET @@GLOBAL.innodb_log_file_size=1; +ERROR HY000: Variable 'innodb_log_file_size' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +COUNT(@@GLOBAL.innodb_log_file_size) +1 +1 Expected +'#---------------------BS_STVARS_035_03----------------------#' +SELECT @@GLOBAL.innodb_log_file_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_file_size'; +@@GLOBAL.innodb_log_file_size = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +COUNT(@@GLOBAL.innodb_log_file_size) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_file_size'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_035_04----------------------#' +SELECT @@innodb_log_file_size = @@GLOBAL.innodb_log_file_size; +@@innodb_log_file_size = @@GLOBAL.innodb_log_file_size +1 +1 Expected +'#---------------------BS_STVARS_035_05----------------------#' +SELECT COUNT(@@innodb_log_file_size); +COUNT(@@innodb_log_file_size) +1 +1 Expected +SELECT COUNT(@@local.innodb_log_file_size); +ERROR HY000: Variable 'innodb_log_file_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_log_file_size); +ERROR HY000: Variable 'innodb_log_file_size' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +COUNT(@@GLOBAL.innodb_log_file_size) +1 +1 Expected +SELECT innodb_log_file_size = @@SESSION.innodb_log_file_size; +ERROR 42S22: Unknown column 'innodb_log_file_size' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_log_files_in_group_basic.result b/mysql-test/r/innodb_log_files_in_group_basic.result new file mode 100644 index 00000000000..1191ef010f8 --- /dev/null +++ b/mysql-test/r/innodb_log_files_in_group_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_034_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +COUNT(@@GLOBAL.innodb_log_files_in_group) +1 +1 Expected +'#---------------------BS_STVARS_034_02----------------------#' +SET @@GLOBAL.innodb_log_files_in_group=1; +ERROR HY000: Variable 'innodb_log_files_in_group' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +COUNT(@@GLOBAL.innodb_log_files_in_group) +1 +1 Expected +'#---------------------BS_STVARS_034_03----------------------#' +SELECT @@GLOBAL.innodb_log_files_in_group = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_files_in_group'; +@@GLOBAL.innodb_log_files_in_group = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +COUNT(@@GLOBAL.innodb_log_files_in_group) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_files_in_group'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_034_04----------------------#' +SELECT @@innodb_log_files_in_group = @@GLOBAL.innodb_log_files_in_group; +@@innodb_log_files_in_group = @@GLOBAL.innodb_log_files_in_group +1 +1 Expected +'#---------------------BS_STVARS_034_05----------------------#' +SELECT COUNT(@@innodb_log_files_in_group); +COUNT(@@innodb_log_files_in_group) +1 +1 Expected +SELECT COUNT(@@local.innodb_log_files_in_group); +ERROR HY000: Variable 'innodb_log_files_in_group' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_log_files_in_group); +ERROR HY000: Variable 'innodb_log_files_in_group' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +COUNT(@@GLOBAL.innodb_log_files_in_group) +1 +1 Expected +SELECT innodb_log_files_in_group = @@SESSION.innodb_log_files_in_group; +ERROR 42S22: Unknown column 'innodb_log_files_in_group' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_log_group_home_dir_basic.result b/mysql-test/r/innodb_log_group_home_dir_basic.result new file mode 100644 index 00000000000..c7fbd2d958f --- /dev/null +++ b/mysql-test/r/innodb_log_group_home_dir_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_036_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +COUNT(@@GLOBAL.innodb_log_group_home_dir) +1 +1 Expected +'#---------------------BS_STVARS_036_02----------------------#' +SET @@GLOBAL.innodb_log_group_home_dir=1; +ERROR HY000: Variable 'innodb_log_group_home_dir' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +COUNT(@@GLOBAL.innodb_log_group_home_dir) +1 +1 Expected +'#---------------------BS_STVARS_036_03----------------------#' +SELECT @@GLOBAL.innodb_log_group_home_dir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_group_home_dir'; +@@GLOBAL.innodb_log_group_home_dir = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +COUNT(@@GLOBAL.innodb_log_group_home_dir) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_group_home_dir'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_036_04----------------------#' +SELECT @@innodb_log_group_home_dir = @@GLOBAL.innodb_log_group_home_dir; +@@innodb_log_group_home_dir = @@GLOBAL.innodb_log_group_home_dir +1 +1 Expected +'#---------------------BS_STVARS_036_05----------------------#' +SELECT COUNT(@@innodb_log_group_home_dir); +COUNT(@@innodb_log_group_home_dir) +1 +1 Expected +SELECT COUNT(@@local.innodb_log_group_home_dir); +ERROR HY000: Variable 'innodb_log_group_home_dir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_log_group_home_dir); +ERROR HY000: Variable 'innodb_log_group_home_dir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +COUNT(@@GLOBAL.innodb_log_group_home_dir) +1 +1 Expected +SELECT innodb_log_group_home_dir = @@SESSION.innodb_log_group_home_dir; +ERROR 42S22: Unknown column 'innodb_log_group_home_dir' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_max_dirty_pages_pct_basic.result b/mysql-test/r/innodb_max_dirty_pages_pct_basic.result new file mode 100644 index 00000000000..6c52f79f9ad --- /dev/null +++ b/mysql-test/r/innodb_max_dirty_pages_pct_basic.result @@ -0,0 +1,96 @@ +SET @global_start_value = @@global.innodb_max_dirty_pages_pct; +SELECT @global_start_value; +@global_start_value +90 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_max_dirty_pages_pct = 0; +SET @@global.innodb_max_dirty_pages_pct = DEFAULT; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +90 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_max_dirty_pages_pct = 1; +ERROR HY000: Variable 'innodb_max_dirty_pages_pct' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_max_dirty_pages_pct; +@@innodb_max_dirty_pages_pct +90 +SELECT local.innodb_max_dirty_pages_pct; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_max_dirty_pages_pct = 0; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_max_dirty_pages_pct = 0; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +0 +SET @@global.innodb_max_dirty_pages_pct = 1; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +1 +SET @@global.innodb_max_dirty_pages_pct = 100; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_max_dirty_pages_pct = -1; +Warnings: +Warning 1292 Truncated incorrect max_dirty_pages_pct value: '18446744073709551615' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +SET @@global.innodb_max_dirty_pages_pct = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +SET @@global.innodb_max_dirty_pages_pct = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +SET @@global.innodb_max_dirty_pages_pct = 1001; +Warnings: +Warning 1292 Truncated incorrect max_dirty_pages_pct value: '1001' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_max_dirty_pages_pct = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_max_dirty_pages_pct'; +@@global.innodb_max_dirty_pages_pct = +VARIABLE_VALUE +1 +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_max_dirty_pages_pct'; +VARIABLE_VALUE +100 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_max_dirty_pages_pct = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +SET @@global.innodb_max_dirty_pages_pct = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_max_dirty_pages_pct' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +100 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_max_dirty_pages_pct = TRUE; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +1 +SET @@global.innodb_max_dirty_pages_pct = FALSE; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +0 +SET @@global.innodb_max_dirty_pages_pct = @global_start_value; +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +90 diff --git a/mysql-test/r/innodb_max_dirty_pages_pct_func.result b/mysql-test/r/innodb_max_dirty_pages_pct_func.result new file mode 100644 index 00000000000..4f6d42fb716 --- /dev/null +++ b/mysql-test/r/innodb_max_dirty_pages_pct_func.result @@ -0,0 +1,30 @@ +'#--------------------FN_DYNVARS_044_02-------------------------#' +SET @@global.innodb_max_dirty_pages_pct = 80; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +80 +SET @@global.innodb_max_dirty_pages_pct = 70; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@global.innodb_max_dirty_pages_pct; +@@global.innodb_max_dirty_pages_pct +70 +'#--------------------FN_DYNVARS_044_02-------------------------#' +'connection default' +'---Check when innodb_max_dirty_pages_pct is 10---' +SET @@global.innodb_max_dirty_pages_pct = 10; +FLUSH STATUS; +CALL add_until(10); +FLUSH TABLES; +CALL add_records(500); +'--sleep 5' +'We expect dirty pages pct to be BELOW_MAX' +CALL check_pct(10); +PCT_VALUE +BELOW_MAX +DROP PROCEDURE add_records; +DROP PROCEDURE add_until; +DROP PROCEDURE check_pct; +DROP FUNCTION dirty_pct; diff --git a/mysql-test/r/innodb_mirrored_log_groups_basic.result b/mysql-test/r/innodb_mirrored_log_groups_basic.result new file mode 100644 index 00000000000..1645d8163ae --- /dev/null +++ b/mysql-test/r/innodb_mirrored_log_groups_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_037_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_mirrored_log_groups); +COUNT(@@GLOBAL.innodb_mirrored_log_groups) +1 +1 Expected +'#---------------------BS_STVARS_037_02----------------------#' +SET @@GLOBAL.innodb_mirrored_log_groups=1; +ERROR HY000: Variable 'innodb_mirrored_log_groups' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_mirrored_log_groups); +COUNT(@@GLOBAL.innodb_mirrored_log_groups) +1 +1 Expected +'#---------------------BS_STVARS_037_03----------------------#' +SELECT @@GLOBAL.innodb_mirrored_log_groups = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_mirrored_log_groups'; +@@GLOBAL.innodb_mirrored_log_groups = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_mirrored_log_groups); +COUNT(@@GLOBAL.innodb_mirrored_log_groups) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_mirrored_log_groups'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_037_04----------------------#' +SELECT @@innodb_mirrored_log_groups = @@GLOBAL.innodb_mirrored_log_groups; +@@innodb_mirrored_log_groups = @@GLOBAL.innodb_mirrored_log_groups +1 +1 Expected +'#---------------------BS_STVARS_037_05----------------------#' +SELECT COUNT(@@innodb_mirrored_log_groups); +COUNT(@@innodb_mirrored_log_groups) +1 +1 Expected +SELECT COUNT(@@local.innodb_mirrored_log_groups); +ERROR HY000: Variable 'innodb_mirrored_log_groups' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_mirrored_log_groups); +ERROR HY000: Variable 'innodb_mirrored_log_groups' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_mirrored_log_groups); +COUNT(@@GLOBAL.innodb_mirrored_log_groups) +1 +1 Expected +SELECT innodb_mirrored_log_groups = @@SESSION.innodb_mirrored_log_groups; +ERROR 42S22: Unknown column 'innodb_mirrored_log_groups' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_open_files_basic.result b/mysql-test/r/innodb_open_files_basic.result new file mode 100644 index 00000000000..eac2234270a --- /dev/null +++ b/mysql-test/r/innodb_open_files_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_038_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_open_files); +COUNT(@@GLOBAL.innodb_open_files) +1 +1 Expected +'#---------------------BS_STVARS_038_02----------------------#' +SET @@GLOBAL.innodb_open_files=1; +ERROR HY000: Variable 'innodb_open_files' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_open_files); +COUNT(@@GLOBAL.innodb_open_files) +1 +1 Expected +'#---------------------BS_STVARS_038_03----------------------#' +SELECT @@GLOBAL.innodb_open_files = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_open_files'; +@@GLOBAL.innodb_open_files = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_open_files); +COUNT(@@GLOBAL.innodb_open_files) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_open_files'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_038_04----------------------#' +SELECT @@innodb_open_files = @@GLOBAL.innodb_open_files; +@@innodb_open_files = @@GLOBAL.innodb_open_files +1 +1 Expected +'#---------------------BS_STVARS_038_05----------------------#' +SELECT COUNT(@@innodb_open_files); +COUNT(@@innodb_open_files) +1 +1 Expected +SELECT COUNT(@@local.innodb_open_files); +ERROR HY000: Variable 'innodb_open_files' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_open_files); +ERROR HY000: Variable 'innodb_open_files' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_open_files); +COUNT(@@GLOBAL.innodb_open_files) +1 +1 Expected +SELECT innodb_open_files = @@SESSION.innodb_open_files; +ERROR 42S22: Unknown column 'innodb_open_files' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_rollback_on_timeout_basic.result b/mysql-test/r/innodb_rollback_on_timeout_basic.result new file mode 100644 index 00000000000..6887166fae6 --- /dev/null +++ b/mysql-test/r/innodb_rollback_on_timeout_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_039_01----------------------#' +SELECT COUNT(@@GLOBAL.innodb_rollback_on_timeout); +COUNT(@@GLOBAL.innodb_rollback_on_timeout) +1 +1 Expected +'#---------------------BS_STVARS_039_02----------------------#' +SET @@GLOBAL.innodb_rollback_on_timeout=1; +ERROR HY000: Variable 'innodb_rollback_on_timeout' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.innodb_rollback_on_timeout); +COUNT(@@GLOBAL.innodb_rollback_on_timeout) +1 +1 Expected +'#---------------------BS_STVARS_039_03----------------------#' +SELECT @@GLOBAL.innodb_rollback_on_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_rollback_on_timeout'; +@@GLOBAL.innodb_rollback_on_timeout = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.innodb_rollback_on_timeout); +COUNT(@@GLOBAL.innodb_rollback_on_timeout) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_rollback_on_timeout'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_039_04----------------------#' +SELECT @@innodb_rollback_on_timeout = @@GLOBAL.innodb_rollback_on_timeout; +@@innodb_rollback_on_timeout = @@GLOBAL.innodb_rollback_on_timeout +1 +1 Expected +'#---------------------BS_STVARS_039_05----------------------#' +SELECT COUNT(@@innodb_rollback_on_timeout); +COUNT(@@innodb_rollback_on_timeout) +1 +1 Expected +SELECT COUNT(@@local.innodb_rollback_on_timeout); +ERROR HY000: Variable 'innodb_rollback_on_timeout' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.innodb_rollback_on_timeout); +ERROR HY000: Variable 'innodb_rollback_on_timeout' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.innodb_rollback_on_timeout); +COUNT(@@GLOBAL.innodb_rollback_on_timeout) +1 +1 Expected +SELECT innodb_rollback_on_timeout = @@SESSION.innodb_rollback_on_timeout; +ERROR 42S22: Unknown column 'innodb_rollback_on_timeout' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/innodb_support_xa_basic.result b/mysql-test/r/innodb_support_xa_basic.result new file mode 100644 index 00000000000..dcd6f498d56 --- /dev/null +++ b/mysql-test/r/innodb_support_xa_basic.result @@ -0,0 +1,176 @@ +SET @session_start_value = @@session.innodb_support_xa; +SELECT @session_start_value; +@session_start_value +1 +SET @global_start_value = @@global.innodb_support_xa; +SELECT @global_start_value; +@global_start_value +1 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@session.innodb_support_xa = 0; +SET @@session.innodb_support_xa = DEFAULT; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +1 +SET @@global.innodb_support_xa = 0; +SET @@global.innodb_support_xa = DEFAULT; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +1 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_support_xa = 1; +SELECT @@innodb_support_xa; +@@innodb_support_xa +1 +SELECT session.innodb_support_xa; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.innodb_support_xa; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.innodb_support_xa; +ERROR 42S02: Unknown table 'global' in field list +SET session innodb_support_xa = 0; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +0 +SET global innodb_support_xa = 0; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@session.innodb_support_xa = 0; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +0 +SET @@session.innodb_support_xa = 1; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +1 +SET @@global.innodb_support_xa = 0; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +SET @@global.innodb_support_xa = 1; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +1 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@session.innodb_support_xa = -0.6; +ERROR 42000: Variable 'support_xa' can't be set to the value of '-0.6' +SET @@session.innodb_support_xa = 1.6; +ERROR 42000: Variable 'support_xa' can't be set to the value of '1.6' +SET @@session.innodb_support_xa = "T"; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'T' +SET @@session.innodb_support_xa = "Y"; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'Y' +SET @@session.innodb_support_xa = TRE; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'TRÜE' +SET @@session.innodb_support_xa = N; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÕN' +SET @@session.innodb_support_xa = OF; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.innodb_support_xa = FF; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÓFF' +SET @@global.innodb_support_xa = -1; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +1 +SET @@global.innodb_support_xa = 2; +ERROR 42000: Variable 'support_xa' can't be set to the value of '2' +SET @@global.innodb_support_xa = "T"; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'T' +SET @@global.innodb_support_xa = "Y"; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'Y' +SET @@global.innodb_support_xa = TRE; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'TRÜE' +SET @@global.innodb_support_xa = N; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÕN' +SET @@global.innodb_support_xa = OF; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +'Bug# 34828 : OF is taken as OFF and a value of 0 is set.' +SET @@global.innodb_support_xa = FF; +ERROR 42000: Variable 'support_xa' can't be set to the value of 'ÓFF' +'#-------------------FN_DYNVARS_046_05----------------------------#' +SET @@global.innodb_support_xa = 0; +SET @@session.innodb_support_xa = 1; +SELECT @@global.innodb_support_xa AS res_is_0; +res_is_0 +0 +SET @@global.innodb_support_xa = 0; +SELECT @@session.innodb_support_xa AS res_is_1; +res_is_1 +1 +'#----------------------FN_DYNVARS_046_06------------------------#' +SELECT @@global.innodb_support_xa = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_support_xa'; +@@global.innodb_support_xa = +VARIABLE_VALUE +1 +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_support_xa'; +VARIABLE_VALUE +OFF +'#----------------------FN_DYNVARS_046_07------------------------#' +SELECT @@session.innodb_support_xa = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='innodb_support_xa'; +@@session.innodb_support_xa = +VARIABLE_VALUE +0 +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +1 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='innodb_support_xa'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_046_08-------------------------#' +SET @@session.innodb_support_xa = OFF; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +0 +SET @@session.innodb_support_xa = ON; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +1 +SET @@global.innodb_support_xa = OFF; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +SET @@global.innodb_support_xa = ON; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +1 +'#---------------------FN_DYNVARS_046_09----------------------#' +SET @@session.innodb_support_xa = TRUE; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +1 +SET @@session.innodb_support_xa = FALSE; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +0 +SET @@global.innodb_support_xa = TRUE; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +1 +SET @@global.innodb_support_xa = FALSE; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +SET @@session.innodb_support_xa = @session_start_value; +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +1 +SET @@global.innodb_support_xa = @global_start_value; +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +1 diff --git a/mysql-test/r/innodb_support_xa_func.result b/mysql-test/r/innodb_support_xa_func.result new file mode 100644 index 00000000000..9036794d636 --- /dev/null +++ b/mysql-test/r/innodb_support_xa_func.result @@ -0,0 +1,75 @@ +'#--------------------FN_DYNVARS_046_01-------------------------#' +SET @@global.innodb_support_xa = OFF; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.innodb_support_xa; +@@global.innodb_support_xa +0 +SELECT @@session.innodb_support_xa; +@@session.innodb_support_xa +0 +'#--------------------FN_DYNVARS_046_01-------------------------#' +'connection default' +SET @@global.innodb_support_xa = 1; +drop table if exists t1, t2; +create table t1 (a int) engine=innodb; +'---check when innodb_support_xa is 1---' +SET @@innodb_support_xa = 1; +xa start 'test1'; +INSERT t1 values (10); +xa end 'test1'; +xa prepare 'test1'; +xa rollback 'test1'; +SELECT * from t1; +a +'---check when innodb_support_xa is 0---' +SET @@innodb_support_xa = 0; +xa start 'test1'; +INSERT t1 values (10); +xa end 'test1'; +xa prepare 'test1'; +xa rollback 'test1'; +SELECT * from t1; +a +'------general xa testing--------' +SET @@global.innodb_support_xa = 1; +SET @@innodb_support_xa = 1; +xa start 'testa','testb'; +INSERT t1 values (30); +COMMIT; +ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the ACTIVE state +xa end 'testa','testb'; +BEGIN; +ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state +CREATE table t2 (a int); +ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the IDLE state +'connect (con1,localhost,root,,,,)' +'connection con1' +xa start 'testa','testb'; +ERROR XAE08: XAER_DUPID: The XID already exists +xa start 'testa','testb', 123; +ERROR XAE08: XAER_DUPID: The XID already exists +xa start 0x7465737462, 0x2030405060, 0xb; +INSERT t1 values (40); +xa end 'testb',' 0@P`',11; +xa prepare 'testb',0x2030405060,11; +START TRANSACTION; +ERROR XAE07: XAER_RMFAIL: The command cannot be executed when global transaction is in the PREPARED state +xa recover; +formatID gtrid_length bqual_length data +11 5 5 testb 0@P` +'connection default' +xa prepare 'testa','testb'; +xa recover; +formatID gtrid_length bqual_length data +11 5 5 testb 0@P` +1 5 5 testatestb +xa commit 'testb',0x2030405060,11; +ERROR XAE04: XAER_NOTA: Unknown XID +xa commit 'testa','testb'; +'connection con1' +xa rollback 'testb',0x2030405060,11; +SELECT * from t1; +a +30 +DROP table t1; diff --git a/mysql-test/r/innodb_table_locks_basic.result b/mysql-test/r/innodb_table_locks_basic.result new file mode 100644 index 00000000000..14aa995273b --- /dev/null +++ b/mysql-test/r/innodb_table_locks_basic.result @@ -0,0 +1,170 @@ +SET @session_start_value = @@session.innodb_table_locks; +SELECT @session_start_value; +@session_start_value +1 +SET @global_start_value = @@global.innodb_table_locks; +SELECT @global_start_value; +@global_start_value +1 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@session.innodb_table_locks = 0; +SET @@session.innodb_table_locks = DEFAULT; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +1 +SET @@global.innodb_table_locks = 0; +SET @@global.innodb_table_locks = DEFAULT; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +1 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_table_locks = 1; +SELECT @@innodb_table_locks; +@@innodb_table_locks +1 +SELECT session.innodb_table_locks; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.innodb_table_locks; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.innodb_table_locks; +ERROR 42S02: Unknown table 'global' in field list +SET session innodb_table_locks = 0; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +0 +SET global innodb_table_locks = 0; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@session.innodb_table_locks = 0; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +0 +SET @@session.innodb_table_locks = 1; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +1 +SET @@global.innodb_table_locks = 0; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +SET @@global.innodb_table_locks = 1; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +1 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@session.innodb_table_locks = -6; +SET @@session.innodb_table_locks = 1.6; +ERROR 42000: Variable 'table_locks' can't be set to the value of '1.6' +SET @@session.innodb_table_locks = "T"; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'T' +SET @@session.innodb_table_locks = "Y"; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'Y' +SET @@session.innodb_table_locks = TRE; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'TRÜE' +SET @@session.innodb_table_locks = N; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'ÕN' +SET @@session.innodb_table_locks = OF; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.innodb_table_locks = FF; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'ÓFF' +SET @@global.innodb_table_locks = -1; +SET @@global.innodb_table_locks = 2; +ERROR 42000: Variable 'table_locks' can't be set to the value of '2' +SET @@global.innodb_table_locks = "T"; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'T' +SET @@global.innodb_table_locks = "Y"; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'Y' +SET @@global.innodb_table_locks = TRE; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'TRÜE' +SET @@global.innodb_table_locks = QN; +ERROR 42000: Variable 'table_locks' can't be set to the value of 'QN' +SET @@global.innodb_table_locks = OF; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +'#-------------------FN_DYNVARS_046_05----------------------------#' +SET @@global.innodb_table_locks = 0; +SET @@session.innodb_table_locks = 1; +SELECT @@global.innodb_table_locks AS res_is_0; +res_is_0 +0 +SET @@global.innodb_table_locks = 0; +SELECT @@session.innodb_table_locks AS res_is_1; +res_is_1 +1 +'#----------------------FN_DYNVARS_046_06------------------------#' +SELECT @@global.innodb_table_locks = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_table_locks'; +@@global.innodb_table_locks = +VARIABLE_VALUE +1 +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_table_locks'; +VARIABLE_VALUE +OFF +'#----------------------FN_DYNVARS_046_07------------------------#' +SELECT @@session.innodb_table_locks = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='innodb_table_locks'; +@@session.innodb_table_locks = +VARIABLE_VALUE +0 +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +1 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='innodb_table_locks'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_046_08-------------------------#' +SET @@session.innodb_table_locks = OFF; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +0 +SET @@session.innodb_table_locks = ON; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +1 +SET @@global.innodb_table_locks = OFF; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +SET @@global.innodb_table_locks = ON; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +1 +'#---------------------FN_DYNVARS_046_09----------------------#' +SET @@session.innodb_table_locks = TRUE; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +1 +SET @@session.innodb_table_locks = FALSE; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +0 +SET @@global.innodb_table_locks = TRUE; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +1 +SET @@global.innodb_table_locks = FALSE; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +SET @@session.innodb_table_locks = @session_start_value; +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +1 +SET @@global.innodb_table_locks = @global_start_value; +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +1 diff --git a/mysql-test/r/innodb_table_locks_func.result b/mysql-test/r/innodb_table_locks_func.result new file mode 100644 index 00000000000..22a52ce17fd --- /dev/null +++ b/mysql-test/r/innodb_table_locks_func.result @@ -0,0 +1,32 @@ +'#--------------------FN_DYNVARS_048_01-------------------------#' +SET @@global.innodb_table_locks = OFF; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.innodb_table_locks; +@@global.innodb_table_locks +0 +SELECT @@session.innodb_table_locks; +@@session.innodb_table_locks +0 +'#--------------------FN_DYNVARS_048_02-------------------------#' +'----check when innodb_table_locks = ON and autocommit = OFF---' +'connect (con2,localhost,root,,,,)' +'connection default' +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a INT) ENGINE=INNODB; +SET @@autocommit = OFF; +SET @@innodb_table_locks = ON; +BEGIN; +INSERT INTO t1 VALUES(1); +SELECT * FROM t1 FOR UPDATE; +a +1 +'CONNECTION con2' +SET @@innodb_table_locks = ON; +SET @@autocommit = OFF; +LOCK TABLES t1 WRITE; +'CONNECTION default' +COMMIT; +'CONNECTION con2' +UNLOCK tables; +DROP TABLE t1; diff --git a/mysql-test/r/innodb_thread_concurrency_basic.result b/mysql-test/r/innodb_thread_concurrency_basic.result new file mode 100644 index 00000000000..65a79fecd97 --- /dev/null +++ b/mysql-test/r/innodb_thread_concurrency_basic.result @@ -0,0 +1,96 @@ +SET @global_start_value = @@global.innodb_thread_concurrency; +SELECT @global_start_value; +@global_start_value +8 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_thread_concurrency = 0; +SET @@global.innodb_thread_concurrency = DEFAULT; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +8 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_thread_concurrency = 1; +ERROR HY000: Variable 'innodb_thread_concurrency' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_thread_concurrency; +@@innodb_thread_concurrency +8 +SELECT local.innodb_thread_concurrency; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_thread_concurrency = 0; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_thread_concurrency = 0; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +0 +SET @@global.innodb_thread_concurrency = 1; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1 +SET @@global.innodb_thread_concurrency = 1000; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_thread_concurrency = -1; +Warnings: +Warning 1292 Truncated incorrect thread_concurrency value: '18446744073709551615' +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +SET @@global.innodb_thread_concurrency = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_concurrency' +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +SET @@global.innodb_thread_concurrency = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_concurrency' +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +SET @@global.innodb_thread_concurrency = 1001; +Warnings: +Warning 1292 Truncated incorrect thread_concurrency value: '1001' +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_thread_concurrency = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_thread_concurrency'; +@@global.innodb_thread_concurrency = +VARIABLE_VALUE +1 +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_thread_concurrency'; +VARIABLE_VALUE +1000 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_thread_concurrency = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_concurrency' +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +SET @@global.innodb_thread_concurrency = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_concurrency' +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1000 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_thread_concurrency = TRUE; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +1 +SET @@global.innodb_thread_concurrency = FALSE; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +0 +SET @@global.innodb_thread_concurrency = @global_start_value; +SELECT @@global.innodb_thread_concurrency; +@@global.innodb_thread_concurrency +8 diff --git a/mysql-test/r/innodb_thread_sleep_delay_basic.result b/mysql-test/r/innodb_thread_sleep_delay_basic.result new file mode 100644 index 00000000000..979bfd930ca --- /dev/null +++ b/mysql-test/r/innodb_thread_sleep_delay_basic.result @@ -0,0 +1,84 @@ +SET @global_start_value = @@global.innodb_thread_sleep_delay; +SELECT @global_start_value; +@global_start_value +10000 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_thread_sleep_delay = 0; +SET @@global.innodb_thread_sleep_delay = DEFAULT; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +10000 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_thread_sleep_delay = 1; +ERROR HY000: Variable 'innodb_thread_sleep_delay' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_thread_sleep_delay; +@@innodb_thread_sleep_delay +10000 +SELECT local.innodb_thread_sleep_delay; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_thread_sleep_delay = 0; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_thread_sleep_delay = 0; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +0 +SET @@global.innodb_thread_sleep_delay = 1; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +1 +SET @@global.innodb_thread_sleep_delay = 4294967295; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +4294967295 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_thread_sleep_delay = -1; +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +8 +SET @@global.innodb_thread_sleep_delay = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay' +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +8 +SET @@global.innodb_thread_sleep_delay = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay' +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +8 +SET @@global.innodb_thread_sleep_delay = 1001; +SELECT @@global.innodb_autoextend_increment; +@@global.innodb_autoextend_increment +8 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_thread_sleep_delay = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_thread_sleep_delay'; +@@global.innodb_thread_sleep_delay = VARIABLE_VALUE +1 +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='innodb_thread_sleep_delay'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_thread_sleep_delay = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay' +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +1001 +SET @@global.innodb_thread_sleep_delay = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_thread_sleep_delay' +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_thread_sleep_delay = TRUE; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +1 +SET @@global.innodb_thread_sleep_delay = FALSE; +SELECT @@global.innodb_thread_sleep_delay; +@@global.innodb_thread_sleep_delay +0 diff --git a/mysql-test/r/insert_id_basic.result b/mysql-test/r/insert_id_basic.result new file mode 100644 index 00000000000..47dd759ff44 --- /dev/null +++ b/mysql-test/r/insert_id_basic.result @@ -0,0 +1,121 @@ +SET @start_value = @@session.insert_id; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_051_01------------------------#' +SET @@session.insert_id = 99; +'Variable is giving error on assigning Default value'; +SELECT @@session.insert_id; +@@session.insert_id +99 +'#---------------------FN_DYNVARS_051_02-------------------------#' +SET @@session.insert_id = @start_value; +SELECT @@session.insert_id = 0; +@@session.insert_id = 0 +1 +'#--------------------FN_DYNVARS_051_03------------------------#' +SET @@session.insert_id = 0; +SELECT @@session.insert_id; +@@session.insert_id +0 +SET @@session.insert_id = 1099; +SELECT @@session.insert_id; +@@session.insert_id +1099 +SET @@session.insert_id = 1800; +SELECT @@session.insert_id; +@@session.insert_id +1800 +SET @@session.insert_id = 65535; +SELECT @@session.insert_id; +@@session.insert_id +65535 +'#--------------------FN_DYNVARS_051_04-------------------------#' +SET @@session.insert_id = -1; +SELECT @@session.insert_id; +@@session.insert_id +-1 +SET @@session.insert_id = 100000000000; +SELECT @@session.insert_id; +@@session.insert_id +100000000000 +SET @@session.insert_id = 10000.01; +ERROR 42000: Incorrect argument type to variable 'insert_id' +SELECT @@session.insert_id; +@@session.insert_id +100000000000 +SET @@session.insert_id = -1024; +SELECT @@session.insert_id; +@@session.insert_id +-1024 +SET @@session.insert_id = 42949672950; +SELECT @@session.insert_id; +@@session.insert_id +42949672950 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.insert_id = ON; +ERROR 42000: Incorrect argument type to variable 'insert_id' +SELECT @@session.insert_id; +@@session.insert_id +42949672950 +SET @@session.insert_id = 'test'; +ERROR 42000: Incorrect argument type to variable 'insert_id' +SELECT @@session.insert_id; +@@session.insert_id +42949672950 +'#-------------------FN_DYNVARS_051_05----------------------------#' +SET @@global.insert_id = 0; +ERROR HY000: Variable 'insert_id' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.insert_id; +ERROR HY000: Variable 'insert_id' is a SESSION variable +'#----------------------FN_DYNVARS_051_06------------------------#' +SELECT @@global.insert_id = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='insert_id'; +ERROR HY000: Variable 'insert_id' is a SESSION variable +SELECT @@session.insert_id = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='insert_id'; +@@session.insert_id = VARIABLE_VALUE +1 +'#-------------------FN_DYNVARS_051_07----------------------------#' +SET @@global.insert_id = 0; +ERROR HY000: Variable 'insert_id' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.insert_id; +ERROR HY000: Variable 'insert_id' is a SESSION variable +'#---------------------FN_DYNVARS_051_08----------------------#' +SET @@session.insert_id = TRUE; +SELECT @@session.insert_id; +@@session.insert_id +1 +SET @@session.insert_id = FALSE; +SELECT @@session.insert_id; +@@session.insert_id +0 +'#---------------------FN_DYNVARS_051_09----------------------#' +SET @@session.insert_id = 1; +SELECT @@insert_id = @@session.insert_id; +@@insert_id = @@session.insert_id +1 +SELECT @@session.insert_id = @@local.insert_id; +@@session.insert_id = @@local.insert_id +1 +'#---------------------FN_DYNVARS_051_10----------------------#' +SET insert_id = 1; +SELECT @@insert_id; +@@insert_id +1 +SET local.insert_id = 1; +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 'insert_id = 1' at line 1 +SELECT local.insert_id; +ERROR 42S02: Unknown table 'local' in field list +SET session.insert_id = 1; +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 'insert_id = 1' at line 1 +SELECT session.insert_id; +ERROR 42S02: Unknown table 'session' in field list +SELECT insert_id = @@session.insert_id; +ERROR 42S22: Unknown column 'insert_id' in 'field list' +SET @@session.insert_id = @start_value; +SELECT @@session.insert_id; +@@session.insert_id +0 diff --git a/mysql-test/r/insert_id_func.result b/mysql-test/r/insert_id_func.result new file mode 100644 index 00000000000..f03b3ea4851 --- /dev/null +++ b/mysql-test/r/insert_id_func.result @@ -0,0 +1,68 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_051_01-------------------------#' +## Setting value of variable to 100 ## +SET @@session.insert_id = 100; +SELECT @@session.insert_id; +@@session.insert_id +100 +## Inserting some rows in table ## +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +## Verifying rows in table ## +SELECT * from t1; +id name +100 Record_1 +101 Record_2 +SELECT @@session.insert_id; +@@session.insert_id +0 +INSERT into t1(name) values('Record_3'); +'#--------------------FN_DYNVARS_051_02-------------------------#' +## Creating & Connecting new connection test_con1 ## +## Setting value of insert_id to 50 ## +SET @@session.insert_id = 50; +SELECT @@session.insert_id; +@@session.insert_id +50 +## Inserting rows in table t1 ## +INSERT into t1(name) values('Record_4'); +INSERT into t1(name) values('Record_5'); +INSERT into t1(name) values('Record_6'); +SELECT * from t1; +id name +100 Record_1 +101 Record_2 +102 Record_3 +50 Record_4 +103 Record_5 +104 Record_6 +'Bug#35376 Value of insert_id automatically resets to 0 after inserting +' 1st row' +'#--------------------FN_DYNVARS_051_03-------------------------#' +## Creating and switching to new connection test_con2 ## +## Setting session value of variable to 25 ## +SET @@session.insert_id = 25; +## Inserting some rows in table ## +INSERT into t1(name) values('Record_7'); +INSERT into t1(name) values('Record_8'); +## Verifying data in table t1 ## +SELECT * from t1; +id name +100 Record_1 +101 Record_2 +102 Record_3 +50 Record_4 +103 Record_5 +104 Record_6 +25 Record_7 +105 Record_8 +## Dropping table t1 ## +drop table t1; +## Disconnecting connections ## diff --git a/mysql-test/r/interactive_timeout_basic.result b/mysql-test/r/interactive_timeout_basic.result new file mode 100644 index 00000000000..0777596db07 --- /dev/null +++ b/mysql-test/r/interactive_timeout_basic.result @@ -0,0 +1,164 @@ +SET @start_global_value = @@global.interactive_timeout; +SELECT @start_global_value; +@start_global_value +28800 +SET @start_session_value = @@session.interactive_timeout; +SELECT @start_session_value; +@start_session_value +28800 +'#--------------------FN_DYNVARS_052_01-------------------------#' +SET @@global.interactive_timeout = 100; +SET @@global.interactive_timeout = DEFAULT; +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +28800 +SET @@session.interactive_timeout = 200; +SET @@session.interactive_timeout = DEFAULT; +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +28800 +'#--------------------FN_DYNVARS_052_02-------------------------#' +SET @@global.interactive_timeout = DEFAULT; +SELECT @@global.interactive_timeout = 28800; +@@global.interactive_timeout = 28800 +1 +SET @@session.interactive_timeout = DEFAULT; +SELECT @@session.interactive_timeout = 28800; +@@session.interactive_timeout = 28800 +1 +'#--------------------FN_DYNVARS_052_03-------------------------#' +SET @@global.interactive_timeout = 1; +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +1 +SET @@global.interactive_timeout = 60020; +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +60020 +SET @@global.interactive_timeout = 65535; +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +65535 +'#--------------------FN_DYNVARS_052_04-------------------------#' +SET @@session.interactive_timeout = 1; +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +1 +SET @@session.interactive_timeout = 50050; +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +50050 +SET @@session.interactive_timeout = 65535; +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +65535 +'#------------------FN_DYNVARS_052_05-----------------------#' +SET @@global.interactive_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '0' +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +1 +SET @@global.interactive_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '0' +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +1 +SET @@global.interactive_timeout = 1000000000; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '1000000000' +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +31536000 +SET @@global.interactive_timeout = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +31536000 +SET @@global.interactive_timeout = test; +ERROR 42000: Incorrect argument type to variable 'interactive_timeout' +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +31536000 +SET @@session.interactive_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '0' +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +1 +SET @@session.interactive_timeout = -2; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '0' +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +1 +SET @@session.interactive_timeout = 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.interactive_timeout = 100000000; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '100000000' +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +31536000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.interactive_timeout = test; +ERROR 42000: Incorrect argument type to variable 'interactive_timeout' +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +31536000 +'#------------------FN_DYNVARS_052_06-----------------------#' +SELECT @@global.interactive_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='interactive_timeout'; +@@global.interactive_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_052_07-----------------------#' +SELECT @@session.interactive_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='interactive_timeout'; +@@session.interactive_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_052_08-----------------------#' +SET @@global.interactive_timeout = TRUE; +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +1 +SET @@global.interactive_timeout = FALSE; +Warnings: +Warning 1292 Truncated incorrect interactive_timeout value: '0' +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +1 +'#---------------------FN_DYNVARS_052_09----------------------#' +SET @@global.interactive_timeout = 10; +SELECT @@interactive_timeout = @@global.interactive_timeout; +@@interactive_timeout = @@global.interactive_timeout +0 +'#---------------------FN_DYNVARS_052_10----------------------#' +SET @@interactive_timeout = 100; +SELECT @@interactive_timeout = @@local.interactive_timeout; +@@interactive_timeout = @@local.interactive_timeout +1 +SELECT @@local.interactive_timeout = @@session.interactive_timeout; +@@local.interactive_timeout = @@session.interactive_timeout +1 +'#---------------------FN_DYNVARS_052_11----------------------#' +SET interactive_timeout = 1; +SELECT @@interactive_timeout; +@@interactive_timeout +1 +SELECT local.interactive_timeout; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.interactive_timeout; +ERROR 42S02: Unknown table 'session' in field list +SELECT interactive_timeout = @@session.interactive_timeout; +ERROR 42S22: Unknown column 'interactive_timeout' in 'field list' +SET @@global.interactive_timeout = @start_global_value; +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +28800 +SET @@session.interactive_timeout = @start_session_value; +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +28800 diff --git a/mysql-test/r/interactive_timeout_func.result b/mysql-test/r/interactive_timeout_func.result new file mode 100644 index 00000000000..b97f7c90908 --- /dev/null +++ b/mysql-test/r/interactive_timeout_func.result @@ -0,0 +1,30 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_052_01-------------------------#' +## Setting initial value of variable to 1 ## +SET @@global.interactive_timeout = 1; +## Creating new interactive connection test_con1 ## +## Inserting record in table ## +INSERT into t1(name) values('Record_1'); +## Setting session value of interactive_timeout ## +SET @@session.interactive_timeout = 1; +## Verifying values of variable ## +SELECT @@session.interactive_timeout; +@@session.interactive_timeout +1 +SELECT @@global.interactive_timeout; +@@global.interactive_timeout +1 +## Using sleep to check timeout ## +SELECT * from t1; +id name +1 Record_1 +'Bug#35377: Error should appear here because interactive_timeout value'; +'is 1 and connection remains idle for 5 secs'; +INSERT into t1(name) values('Record_2'); diff --git a/mysql-test/r/keep_files_on_create_basic.result b/mysql-test/r/keep_files_on_create_basic.result new file mode 100644 index 00000000000..f782ee3b078 --- /dev/null +++ b/mysql-test/r/keep_files_on_create_basic.result @@ -0,0 +1,166 @@ +SET @start_global_value = @@global.keep_files_on_create; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.keep_files_on_create; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_054_01-------------------------#' +SET @@global.keep_files_on_create = ON; +SET @@global.keep_files_on_create = DEFAULT; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +0 +SET @@session.keep_files_on_create = ON; +SET @@session.keep_files_on_create = DEFAULT; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 +'#--------------------FN_DYNVARS_054_02-------------------------#' +SET @@global.keep_files_on_create = DEFAULT; +SELECT @@global.keep_files_on_create = 'OFF'; +@@global.keep_files_on_create = 'OFF' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'OFF' +SET @@session.keep_files_on_create = DEFAULT; +SELECT @@session.keep_files_on_create = 'OFF'; +@@session.keep_files_on_create = 'OFF' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'OFF' +'#--------------------FN_DYNVARS_054_03-------------------------#' +SET @@global.keep_files_on_create = ON; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +1 +SET @@global.keep_files_on_create = OFF; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +0 +SET @@global.keep_files_on_create = 0; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +0 +SET @@global.keep_files_on_create = 1; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +1 +SET @@global.keep_files_on_create = TRUE; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +1 +SET @@global.keep_files_on_create = FALSE; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +0 +'#--------------------FN_DYNVARS_054_04-------------------------#' +SET @@session.keep_files_on_create = ON; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +1 +SET @@session.keep_files_on_create = OFF; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 +SET @@session.keep_files_on_create = 0; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 +SET @@session.keep_files_on_create = 1; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +1 +SET @@session.keep_files_on_create = TRUE; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +1 +SET @@session.keep_files_on_create = FALSE; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 +'#------------------FN_DYNVARS_054_05-----------------------#' +SET @@global.keep_files_on_create = 'ONN'; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'ONN' +SET @@global.keep_files_on_create = "OFFF"; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'OFFF' +SET @@global.keep_files_on_create = TTRUE; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'TTRUE' +SET @@global.keep_files_on_create = FELSE; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'FELSE' +SET @@global.keep_files_on_create = -1024; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '-1024' +SET @@global.keep_files_on_create = 65536; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '65536' +SET @@global.keep_files_on_create = 65530.34; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '65530' +SET @@global.keep_files_on_create = test; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'test' +SET @@session.keep_files_on_create = ONN; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'ONN' +SET @@session.keep_files_on_create = ONF; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'ONF' +SET @@session.keep_files_on_create = OF; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 +'Bug# 34828: FN_DYNVARS_054_05 - OF is also working as OFF and no error is coming'; +SET @@session.keep_files_on_create = 'OFN'; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'OFN' +SET @@session.keep_files_on_create = -2; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '-2' +SET @@session.keep_files_on_create = 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.keep_files_on_create = 65550; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of '65550' +SET @@session.keep_files_on_create = test; +ERROR 42000: Variable 'keep_files_on_create' can't be set to the value of 'test' +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 +'#------------------FN_DYNVARS_054_06-----------------------#' +SELECT @@global.keep_files_on_create = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='keep_files_on_create'; +@@global.keep_files_on_create = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_054_07-----------------------#' +SELECT @@session.keep_files_on_create = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='keep_files_on_create'; +@@session.keep_files_on_create = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@keep_files_on_create = OFF; +SET @@global.keep_files_on_create = ON; +SELECT @@keep_files_on_create = @@global.keep_files_on_create; +@@keep_files_on_create = @@global.keep_files_on_create +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@keep_files_on_create = ON; +SELECT @@keep_files_on_create = @@local.keep_files_on_create; +@@keep_files_on_create = @@local.keep_files_on_create +1 +SELECT @@local.keep_files_on_create = @@session.keep_files_on_create; +@@local.keep_files_on_create = @@session.keep_files_on_create +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET keep_files_on_create = 1; +SELECT @@keep_files_on_create; +@@keep_files_on_create +1 +SELECT local.keep_files_on_create; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.keep_files_on_create; +ERROR 42S02: Unknown table 'session' in field list +SELECT keep_files_on_create = @@session.keep_files_on_create; +ERROR 42S22: Unknown column 'keep_files_on_create' in 'field list' +SET @@global.keep_files_on_create = @start_global_value; +SELECT @@global.keep_files_on_create; +@@global.keep_files_on_create +0 +SET @@session.keep_files_on_create = @start_session_value; +SELECT @@session.keep_files_on_create; +@@session.keep_files_on_create +0 diff --git a/mysql-test/r/key_buffer_size_func.result b/mysql-test/r/key_buffer_size_func.result new file mode 100644 index 00000000000..e2eff04f030 --- /dev/null +++ b/mysql-test/r/key_buffer_size_func.result @@ -0,0 +1,36 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +rollno int NOT NULL, +name VARCHAR(30) +); +FLUSH STATUS; +'#--------------------FN_DYNVARS_055_01-------------------------#' +## Setting initial value of variable to 131072 ## +SET @@global.key_buffer_size = 131072; +## Creating two new connections ## +'#--------------------FN_DYNVARS_055_02-------------------------#' +## Connecting with connection test_con1 ## +SELECT @@global.key_buffer_size; +@@global.key_buffer_size +131072 +## Inserting some rows in table ## +INSERT into t1(rollno, name) values(1, 'Record_1'); +INSERT into t1(rollno, name) values(2, 'Record_2'); +INSERT into t1(rollno, name) values(1, 'Record_3'); +INSERT into t1(rollno, name) values(3, 'Record_4'); +INSERT into t1(rollno, name) values(1, 'Record_5'); +INSERT into t1(rollno, name) values(3, 'Record_6'); +INSERT into t1(rollno, name) values(4, 'Record_7'); +INSERT into t1(rollno, name) values(4, 'Record_8'); +INSERT into t1(rollno, name) values(4, 'Record_9'); +INSERT into t1(rollno, name) values(4, 'Record_10'); +## Verifying status of reading & writing variables ## +## Switching to connection test_con2 ## +## Verifying status of reading & writing variables ## +## Dropping table ## +DROP table if exists t1; +## Disconnecting both the connections ## diff --git a/mysql-test/r/last_insert_id_func.result b/mysql-test/r/last_insert_id_func.result new file mode 100644 index 00000000000..2f07aeeec05 --- /dev/null +++ b/mysql-test/r/last_insert_id_func.result @@ -0,0 +1,93 @@ +drop table if exists t1; +## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +) ENGINE = INNODB; +'#--------------------FN_DYNVARS_059_01-------------------------#' +## Verifying initial value of ## +SELECT @@session.last_insert_id; +@@session.last_insert_id +0 +## Inserting records in table t1 ## +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +## Verifying value of variable after inserting some rows ## +SELECT @@session.last_insert_id = 2; +@@session.last_insert_id = 2 +1 +'#--------------------FN_DYNVARS_059_02-------------------------#' +## Creating & connecting to new connection test_con1 ## +SET @@autocommit = 0; +## Verifying initial value of variable in new connection ## +SELECT @@session.last_insert_id; +@@session.last_insert_id +0 +## Inserting rows in table t1 ## +START TRANSACTION; +INSERT into t1(name) values('Record_3'); +INSERT into t1(name) values('Record_4'); +INSERT into t1(name) values('Record_5'); +## Verifying value of variable without committing rows ## +SELECT @@session.last_insert_id; +@@session.last_insert_id +5 +'#--------------------FN_DYNVARS_059_03-------------------------#' +## Creating & connecting to new connection test_con2 ## +## Inserting values through new connection ## +INSERT into t1(name) values('Record_6'); +INSERT into t1(name) values('Record_7'); +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +6 Record_6 +7 Record_7 +## Verifying value of variable in second connection ## +SELECT @@last_insert_id; +@@last_insert_id +7 +'#--------------------FN_DYNVARS_059_04-------------------------#' +## Switching to test_con1 ## +## Verifying all records in table & value of variable ## +SELECT * from t1; +id name +1 Record_1 +2 Record_2 +3 Record_3 +4 Record_4 +5 Record_5 +6 Record_6 +7 Record_7 +SELECT @@session.last_insert_id; +@@session.last_insert_id +5 +## Commiting records in table ## +COMMIT; +SELECT @@session.last_insert_id; +@@session.last_insert_id +5 +## Switching to test_con2 & verifying value of variable in it ## +SELECT @@session.last_insert_id; +@@session.last_insert_id +7 +'#--------------------FN_DYNVARS_059_05-------------------------#' +## Setting value of variable ## +SET @@session.last_insert_id = 100; +SELECT @@session.last_insert_id; +@@session.last_insert_id +100 +## Inserting new record and verifying variable's effect on it ## +INSERT into t1(name) values('Record_8'); +SELECT @@session.last_insert_id; +@@session.last_insert_id +8 +## Dropping table t1 ## +drop table t1; +## Disconnecting both the connections ## diff --git a/mysql-test/r/lc_time_names_basic.result b/mysql-test/r/lc_time_names_basic.result new file mode 100644 index 00000000000..36f3c45f0da --- /dev/null +++ b/mysql-test/r/lc_time_names_basic.result @@ -0,0 +1,1094 @@ +SET @global_start_value = @@global.lc_time_names; +SELECT @global_start_value; +@global_start_value +en_US +SET @session_start_value = @@lc_time_names; +SELECT @session_start_value; +@session_start_value +en_US +SET @session_start_value = @@local.lc_time_names; +SELECT @session_start_value; +@session_start_value +en_US +SET @session_start_value = @@session.lc_time_names; +SELECT @session_start_value; +@session_start_value +en_US +'#--------------------FN_DYNVARS_060_01------------------#' +SELECT lc_time_names; +ERROR 42S22: Unknown column 'lc_time_names' in 'field list' +SET lc_time_names=ar_AE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_AE +SET global.lc_time_names=ar_AE; +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 'lc_time_names=ar_AE' at line 1 +SET session lc_time_names=ar_AE; +SELECT session lc_time_names; +ERROR 42S22: Unknown column 'session' in 'field list' +SET global lc_time_names=ar_AE; +SELECT global lc_time_names; +ERROR 42S22: Unknown column 'global' in 'field list' +'#--------------------FN_DYNVARS_060_02-------------------------#' +SET @@lc_time_names = en_ZA; +SET @@lc_time_names = DEFAULT; +SELECT @@lc_time_names AS DEFAULT_VALUE; +DEFAULT_VALUE +ar_AE +SET @@global.lc_time_names = en_ZA; +SET @@global.lc_time_names = DEFAULT; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_US +'#--------------------FN_DYNVARS_060_03-------------------------#' +SET @@session.lc_time_names = en_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_IN +SET @@global.lc_time_names = en_NZ; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_NZ +SELECT @@session.lc_time_names AS res_is_en_IN; +res_is_en_IN +en_IN +SET @@session.lc_time_names = en_AU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_AU +SELECT @@global.lc_time_names AS res_is_en_NZ; +res_is_en_NZ +en_NZ +SELECT @@global.lc_time_names=@@session.lc_time_names AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_060_04-------------------------#' +SELECT @@lc_time_names = @@session.lc_time_names AS res; +res +1 +SELECT @@lc_time_names = @@local.lc_time_names AS res; +res +1 +'#--------------------FN_DYNVARS_060_05-------------------------#' +SET @@lc_time_names = en_US | en_GB ; +ERROR 42S22: Unknown column 'en_US' in 'field list' +'#--------------------FN_DYNVARS_060_06-------------------------#' +SET @@session.lc_time_names=ar_AE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_AE +SET @@session.lc_time_names=ar_BH; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_BH +SET @@session.lc_time_names=ar_DZ; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_DZ +SET @@session.lc_time_names=ar_EG; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_EG +SET @@session.lc_time_names=ar_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_IN +SET @@session.lc_time_names=ar_IQ; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_IQ +SET @@session.lc_time_names=ar_JO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_JO +SET @@session.lc_time_names=ar_KW; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_KW +SET @@session.lc_time_names=ar_LB; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_LB +SET @@session.lc_time_names=ar_LY; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_LY +SET @@session.lc_time_names=ar_MA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_MA +SET @@session.lc_time_names=ar_OM; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_OM +SET @@session.lc_time_names=ar_QA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_QA +SET @@session.lc_time_names=ar_SA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_SA +SET @@session.lc_time_names=ar_SD; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_SD +SET @@session.lc_time_names=ar_SY; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_SY +SET @@session.lc_time_names=ar_TN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_TN +SET @@session.lc_time_names=ar_YE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ar_YE +SET @@session.lc_time_names=be_BY; +SELECT @@session.lc_time_names; +@@session.lc_time_names +be_BY +SET @@session.lc_time_names=bg_BG; +SELECT @@session.lc_time_names; +@@session.lc_time_names +bg_BG +SET @@session.lc_time_names=ca_ES; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ca_ES +SET @@session.lc_time_names=cs_CZ; +SELECT @@session.lc_time_names; +@@session.lc_time_names +cs_CZ +SET @@session.lc_time_names=da_DK; +SELECT @@session.lc_time_names; +@@session.lc_time_names +da_DK +SET @@session.lc_time_names=de_AT; +SELECT @@session.lc_time_names; +@@session.lc_time_names +de_AT +SET @@session.lc_time_names=de_BE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +de_BE +SET @@session.lc_time_names=de_CH; +SELECT @@session.lc_time_names; +@@session.lc_time_names +de_CH +SET @@session.lc_time_names=de_DE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +de_DE +SET @@session.lc_time_names=de_LU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +de_LU +SET @@session.lc_time_names=EE; +ERROR HY000: Unknown locale: 'EE' +'Bug: The locale for Estonian - Estonia is not supported. It is present'; +'in manual'; +'See http://dev.mysql.com/doc/refman/5.1/en/locale-support.html' +SET @@session.lc_time_names=en_AU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_AU +SET @@session.lc_time_names=en_CA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_CA +SET @@session.lc_time_names=en_GB; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_GB +SET @@session.lc_time_names=en_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_IN +SET @@session.lc_time_names=en_NZ; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_NZ +SET @@session.lc_time_names=en_PH; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_PH +SET @@session.lc_time_names=en_US; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_US +SET @@session.lc_time_names=en_ZA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_ZA +SET @@session.lc_time_names=en_ZW; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_ZW +SET @@session.lc_time_names=es_AR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_AR +SET @@session.lc_time_names=es_BO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_BO +SET @@session.lc_time_names=es_CL; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_CL +SET @@session.lc_time_names=es_CO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_CO +SET @@session.lc_time_names=es_CR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_CR +SET @@session.lc_time_names=es_DO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_DO +SET @@session.lc_time_names=es_EC; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_EC +SET @@session.lc_time_names=es_ES; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_ES +SET @@session.lc_time_names=es_GT; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_GT +SET @@session.lc_time_names=es_HN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_HN +SET @@session.lc_time_names=es_MX; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_MX +SET @@session.lc_time_names=es_NI; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_NI +SET @@session.lc_time_names=es_PA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_PA +SET @@session.lc_time_names=es_PE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_PE +SET @@session.lc_time_names=es_PR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_PR +SET @@session.lc_time_names=es_PY; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_PY +SET @@session.lc_time_names=es_SV; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_SV +SET @@session.lc_time_names=es_US; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_US +SET @@session.lc_time_names=es_UY; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_UY +SET @@session.lc_time_names=es_VE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +es_VE +SET @@session.lc_time_names=eu_ES; +SELECT @@session.lc_time_names; +@@session.lc_time_names +eu_ES +SET @@session.lc_time_names=fi_FI; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fi_FI +SET @@session.lc_time_names=fo_FO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fo_FO +SET @@session.lc_time_names=fr_BE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fr_BE +SET @@session.lc_time_names=fr_CA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fr_CA +SET @@session.lc_time_names=fr_CH; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fr_CH +SET @@session.lc_time_names=fr_FR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fr_FR +SET @@session.lc_time_names=fr_LU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +fr_LU +SET @@session.lc_time_names=gl_ES; +SELECT @@session.lc_time_names; +@@session.lc_time_names +gl_ES +SET @@session.lc_time_names=gu_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +gu_IN +SET @@session.lc_time_names=he_IL; +SELECT @@session.lc_time_names; +@@session.lc_time_names +he_IL +SET @@session.lc_time_names=hi_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +hi_IN +SET @@session.lc_time_names=hr_HR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +hr_HR +SET @@session.lc_time_names=hu_HU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +hu_HU +SET @@session.lc_time_names=id_ID; +SELECT @@session.lc_time_names; +@@session.lc_time_names +id_ID +SET @@session.lc_time_names=is_IS; +SELECT @@session.lc_time_names; +@@session.lc_time_names +is_IS +SET @@session.lc_time_names=it_CH; +SELECT @@session.lc_time_names; +@@session.lc_time_names +it_CH +SET @@session.lc_time_names=it_IT; +SELECT @@session.lc_time_names; +@@session.lc_time_names +it_IT +SET @@session.lc_time_names=ja_JP; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ja_JP +SET @@session.lc_time_names=ko_KR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ko_KR +SET @@session.lc_time_names=lt_LT; +SELECT @@session.lc_time_names; +@@session.lc_time_names +lt_LT +SET @@session.lc_time_names=lv_LV; +SELECT @@session.lc_time_names; +@@session.lc_time_names +lv_LV +SET @@session.lc_time_names=mk_MK; +SELECT @@session.lc_time_names; +@@session.lc_time_names +mk_MK +SET @@session.lc_time_names=mn_MN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +mn_MN +SET @@session.lc_time_names=ms_MY; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ms_MY +SET @@session.lc_time_names=nb_NO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +nb_NO +SET @@session.lc_time_names=nl_BE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +nl_BE +SET @@session.lc_time_names=nl_NL; +SELECT @@session.lc_time_names; +@@session.lc_time_names +nl_NL +SET @@session.lc_time_names=no_NO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +no_NO +SET @@session.lc_time_names=pl_PL; +SELECT @@session.lc_time_names; +@@session.lc_time_names +pl_PL +SET @@session.lc_time_names=pt_BR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +pt_BR +SET @@session.lc_time_names=pt_PT; +SELECT @@session.lc_time_names; +@@session.lc_time_names +pt_PT +SET @@session.lc_time_names=ro_RO; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ro_RO +SET @@session.lc_time_names=ru_RU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ru_RU +SET @@session.lc_time_names=ru_UA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ru_UA +SET @@session.lc_time_names=sk_SK; +SELECT @@session.lc_time_names; +@@session.lc_time_names +sk_SK +SET @@session.lc_time_names=sl_SI; +SELECT @@session.lc_time_names; +@@session.lc_time_names +sl_SI +SET @@session.lc_time_names=sq_AL; +SELECT @@session.lc_time_names; +@@session.lc_time_names +sq_AL +SET @@session.lc_time_names=sr_YU; +SELECT @@session.lc_time_names; +@@session.lc_time_names +sr_YU +SET @@session.lc_time_names=sv_FI; +SELECT @@session.lc_time_names; +@@session.lc_time_names +sv_FI +SET @@session.lc_time_names=sv_SE; +SELECT @@session.lc_time_names; +@@session.lc_time_names +sv_SE +SET @@session.lc_time_names=ta_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ta_IN +SET @@session.lc_time_names=te_IN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +te_IN +SET @@session.lc_time_names=th_TH; +SELECT @@session.lc_time_names; +@@session.lc_time_names +th_TH +SET @@session.lc_time_names=tr_TR; +SELECT @@session.lc_time_names; +@@session.lc_time_names +tr_TR +SET @@session.lc_time_names=uk_UA; +SELECT @@session.lc_time_names; +@@session.lc_time_names +uk_UA +SET @@session.lc_time_names=ur_PK; +SELECT @@session.lc_time_names; +@@session.lc_time_names +ur_PK +SET @@session.lc_time_names=vi_VN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +vi_VN +SET @@session.lc_time_names=zh_CN; +SELECT @@session.lc_time_names; +@@session.lc_time_names +zh_CN +SET @@session.lc_time_names=zh_HK; +SELECT @@session.lc_time_names; +@@session.lc_time_names +zh_HK +SET @@session.lc_time_names=zh_TW; +SELECT @@session.lc_time_names; +@@session.lc_time_names +zh_TW +'#--------------------FN_DYNVARS_060_07-------------------------#' +SET @@global.lc_time_names=ar_AE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_AE +SET @@global.lc_time_names=ar_BH; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_BH +SET @@global.lc_time_names=ar_DZ; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_DZ +SET @@global.lc_time_names=ar_EG; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_EG +SET @@global.lc_time_names=ar_IN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_IN +SET @@global.lc_time_names=ar_IQ; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_IQ +SET @@global.lc_time_names=ar_JO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_JO +SET @@global.lc_time_names=ar_KW; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_KW +SET @@global.lc_time_names=ar_LB; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_LB +SET @@global.lc_time_names=ar_LY; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_LY +SET @@global.lc_time_names=ar_MA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_MA +SET @@global.lc_time_names=ar_OM; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_OM +SET @@global.lc_time_names=ar_QA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_QA +SET @@global.lc_time_names=ar_SA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_SA +SET @@global.lc_time_names=ar_SD; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_SD +SET @@global.lc_time_names=ar_SY; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_SY +SET @@global.lc_time_names=ar_TN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_TN +SET @@global.lc_time_names=ar_YE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ar_YE +SET @@global.lc_time_names=be_BY; +SELECT @@global.lc_time_names; +@@global.lc_time_names +be_BY +SET @@global.lc_time_names=bg_BG; +SELECT @@global.lc_time_names; +@@global.lc_time_names +bg_BG +SET @@global.lc_time_names=ca_ES; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ca_ES +SET @@global.lc_time_names=cs_CZ; +SELECT @@global.lc_time_names; +@@global.lc_time_names +cs_CZ +SET @@global.lc_time_names=da_DK; +SELECT @@global.lc_time_names; +@@global.lc_time_names +da_DK +SET @@global.lc_time_names=de_AT; +SELECT @@global.lc_time_names; +@@global.lc_time_names +de_AT +SET @@global.lc_time_names=de_BE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +de_BE +SET @@global.lc_time_names=de_CH; +SELECT @@global.lc_time_names; +@@global.lc_time_names +de_CH +SET @@global.lc_time_names=de_DE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +de_DE +SET @@global.lc_time_names=de_LU; +SELECT @@global.lc_time_names; +@@global.lc_time_names +de_LU +SET @@global.lc_time_names=EE; +ERROR HY000: Unknown locale: 'EE' +'Bug: The locale for Estonian - Estonia is not supported. It is'; +'present in manual'; +'See http://dev.mysql.com/doc/refman/5.1/en/locale-support.html'; +SELECT @@global.lc_time_names; +@@global.lc_time_names +de_LU +SET @@global.lc_time_names=en_AU; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_AU +SET @@global.lc_time_names=en_CA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_CA +SET @@global.lc_time_names=en_GB; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_GB +SET @@global.lc_time_names=en_IN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_IN +SET @@global.lc_time_names=en_NZ; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_NZ +SET @@global.lc_time_names=en_PH; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_PH +SET @@global.lc_time_names=en_US; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_US +SET @@global.lc_time_names=en_ZA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_ZA +SET @@global.lc_time_names=en_ZW; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_ZW +SET @@global.lc_time_names=es_AR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_AR +SET @@global.lc_time_names=es_BO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_BO +SET @@global.lc_time_names=es_CL; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_CL +SET @@global.lc_time_names=es_CO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_CO +SET @@global.lc_time_names=es_CR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_CR +SET @@global.lc_time_names=es_DO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_DO +SET @@global.lc_time_names=es_EC; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_EC +SET @@global.lc_time_names=es_ES; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_ES +SET @@global.lc_time_names=es_GT; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_GT +SET @@global.lc_time_names=es_HN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_HN +SET @@global.lc_time_names=es_MX; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_MX +SET @@global.lc_time_names=es_NI; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_NI +SET @@global.lc_time_names=es_PA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_PA +SET @@global.lc_time_names=es_PE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_PE +SET @@global.lc_time_names=es_PR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_PR +SET @@global.lc_time_names=es_PY; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_PY +SET @@global.lc_time_names=es_SV; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_SV +SET @@global.lc_time_names=es_US; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_US +SET @@global.lc_time_names=es_UY; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_UY +SET @@global.lc_time_names=es_VE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +es_VE +SET @@global.lc_time_names=eu_ES; +SELECT @@global.lc_time_names; +@@global.lc_time_names +eu_ES +SET @@global.lc_time_names=fi_FI; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fi_FI +SET @@global.lc_time_names=fo_FO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fo_FO +SET @@global.lc_time_names=fr_BE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fr_BE +SET @@global.lc_time_names=fr_CA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fr_CA +SET @@global.lc_time_names=fr_CH; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fr_CH +SET @@global.lc_time_names=fr_FR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fr_FR +SET @@global.lc_time_names=fr_LU; +SELECT @@global.lc_time_names; +@@global.lc_time_names +fr_LU +SET @@global.lc_time_names=gl_ES; +SELECT @@global.lc_time_names; +@@global.lc_time_names +gl_ES +SET @@global.lc_time_names=gu_IN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +gu_IN +SET @@global.lc_time_names=he_IL; +SELECT @@global.lc_time_names; +@@global.lc_time_names +he_IL +SET @@global.lc_time_names=hi_IN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +hi_IN +SET @@global.lc_time_names=hr_HR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +hr_HR +SET @@global.lc_time_names=hu_HU; +SELECT @@global.lc_time_names; +@@global.lc_time_names +hu_HU +SET @@global.lc_time_names=id_ID; +SELECT @@global.lc_time_names; +@@global.lc_time_names +id_ID +SET @@global.lc_time_names=is_IS; +SELECT @@global.lc_time_names; +@@global.lc_time_names +is_IS +SET @@global.lc_time_names=it_CH; +SELECT @@global.lc_time_names; +@@global.lc_time_names +it_CH +SET @@global.lc_time_names=it_IT; +SELECT @@global.lc_time_names; +@@global.lc_time_names +it_IT +SET @@global.lc_time_names=ja_JP; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ja_JP +SET @@global.lc_time_names=ko_KR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ko_KR +SET @@global.lc_time_names=lt_LT; +SELECT @@global.lc_time_names; +@@global.lc_time_names +lt_LT +SET @@global.lc_time_names=lv_LV; +SELECT @@global.lc_time_names; +@@global.lc_time_names +lv_LV +SET @@global.lc_time_names=mk_MK; +SELECT @@global.lc_time_names; +@@global.lc_time_names +mk_MK +SET @@global.lc_time_names=mn_MN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +mn_MN +SET @@global.lc_time_names=ms_MY; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ms_MY +SET @@global.lc_time_names=nb_NO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +nb_NO +SET @@global.lc_time_names=nl_BE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +nl_BE +SET @@global.lc_time_names=nl_NL; +SELECT @@global.lc_time_names; +@@global.lc_time_names +nl_NL +SET @@global.lc_time_names=no_NO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +no_NO +SET @@global.lc_time_names=pl_PL; +SELECT @@global.lc_time_names; +@@global.lc_time_names +pl_PL +SET @@global.lc_time_names=pt_BR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +pt_BR +SET @@global.lc_time_names=pt_PT; +SELECT @@global.lc_time_names; +@@global.lc_time_names +pt_PT +SET @@global.lc_time_names=ro_RO; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ro_RO +SET @@global.lc_time_names=ru_RU; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ru_RU +SET @@global.lc_time_names=ru_UA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ru_UA +SET @@global.lc_time_names=sk_SK; +SELECT @@global.lc_time_names; +@@global.lc_time_names +sk_SK +SET @@global.lc_time_names=sl_SI; +SELECT @@global.lc_time_names; +@@global.lc_time_names +sl_SI +SET @@global.lc_time_names=sq_AL; +SELECT @@global.lc_time_names; +@@global.lc_time_names +sq_AL +SET @@global.lc_time_names=sr_YU; +SELECT @@global.lc_time_names; +@@global.lc_time_names +sr_YU +SET @@global.lc_time_names=sv_FI; +SELECT @@global.lc_time_names; +@@global.lc_time_names +sv_FI +SET @@global.lc_time_names=sv_SE; +SELECT @@global.lc_time_names; +@@global.lc_time_names +sv_SE +SET @@global.lc_time_names=ta_IN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ta_IN +SET @@global.lc_time_names=te_IN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +te_IN +SET @@global.lc_time_names=th_TH; +SELECT @@global.lc_time_names; +@@global.lc_time_names +th_TH +SET @@global.lc_time_names=tr_TR; +SELECT @@global.lc_time_names; +@@global.lc_time_names +tr_TR +SET @@global.lc_time_names=uk_UA; +SELECT @@global.lc_time_names; +@@global.lc_time_names +uk_UA +SET @@global.lc_time_names=ur_PK; +SELECT @@global.lc_time_names; +@@global.lc_time_names +ur_PK +SET @@global.lc_time_names=vi_VN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +vi_VN +SET @@global.lc_time_names=zh_CN; +SELECT @@global.lc_time_names; +@@global.lc_time_names +zh_CN +SET @@global.lc_time_names=zh_HK; +SELECT @@global.lc_time_names; +@@global.lc_time_names +zh_HK +SET @@global.lc_time_names=zh_TW; +SELECT @@global.lc_time_names; +@@global.lc_time_names +zh_TW +'#--------------------FN_DYNVARS_060_08-------------------------#' +SET @@lc_time_names = ur_pk; +SELECT @@lc_time_names; +@@lc_time_names +ur_PK +SET @@lc_time_names = UR_PK; +SELECT @@lc_time_names; +@@lc_time_names +ur_PK +SET @@lc_time_names = uR_pK; +SELECT @@lc_time_names; +@@lc_time_names +ur_PK +'#--------------------FN_DYNVARS_060_09-------------------------#' +SET @@lc_time_names = 0; +SELECT @@lc_time_names; +@@lc_time_names +en_US +SET @@lc_time_names = 1; +SELECT @@lc_time_names; +@@lc_time_names +en_GB +SET @@lc_time_names = 2; +SELECT @@lc_time_names; +@@lc_time_names +ja_JP +SET @@lc_time_names = 3; +SELECT @@lc_time_names; +@@lc_time_names +sv_SE +SET @@lc_time_names = 10; +SELECT @@lc_time_names; +@@lc_time_names +ar_SY +SET @@lc_time_names = 50; +SELECT @@lc_time_names; +@@lc_time_names +te_IN +SET @@lc_time_names = 100; +SELECT @@lc_time_names; +@@lc_time_names +fr_BE +SET @@lc_time_names = 101; +SELECT @@lc_time_names; +@@lc_time_names +fr_CA +SET @@lc_time_names = 107; +SELECT @@lc_time_names; +@@lc_time_names +sv_FI +SET @@lc_time_names = 108; +SELECT @@lc_time_names; +@@lc_time_names +zh_HK +SET @@lc_time_names = 109; +ERROR HY000: Unknown locale: '109' +'#--------------------FN_DYNVARS_060_10-------------------------#' +SET @@lc_time_names = en_EN; +ERROR HY000: Unknown locale: 'en_EN' +SET @@lc_time_names = US_en; +ERROR HY000: Unknown locale: 'US_en' +SET @@lc_time_names = 1.1; +ERROR 42000: Incorrect argument type to variable 'lc_time_names' +SET @@lc_time_names = -1; +ERROR HY000: Unknown locale: '-1' +SET @@lc_time_names = 'en US'; +ERROR HY000: Unknown locale: 'en US' +SET @@lc_time_names = 'enUS'; +ERROR HY000: Unknown locale: 'enUS' +SET @@lc_time_names = true; +SELECT @@lc_time_names AS res_with_true; +res_with_true +en_GB +SET @@lc_time_names = false; +SELECT @@lc_time_names AS res_with_false; +res_with_false +en_US +SET @@lc_time_names = ON; +ERROR HY000: Unknown locale: 'ON' +'#--------------------FN_DYNVARS_060_11-------------------------#' +SET @@global.lc_time_names = en_EN; +ERROR HY000: Unknown locale: 'en_EN' +SET @@global.lc_time_names = US_en; +ERROR HY000: Unknown locale: 'US_en' +SET @@global.lc_time_names = 1.1; +ERROR 42000: Incorrect argument type to variable 'lc_time_names' +SET @@global.lc_time_names = -1; +ERROR HY000: Unknown locale: '-1' +SET @@global.lc_time_names = NULL; +ERROR 42000: Variable 'lc_time_names' can't be set to the value of 'NULL' +SET @@global.lc_time_names = 'enUS'; +ERROR HY000: Unknown locale: 'enUS' +SET @@global.lc_time_names = true; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_GB +SET @@global.lc_time_names = false; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_US +SET @@global.lc_time_names = ON; +ERROR HY000: Unknown locale: 'ON' +'#--------------------FN_DYNVARS_060_12-------------------------#' +SELECT @@global.lc_time_names = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='lc_time_names') AS res; +res +1 +SET @@global.lc_time_names = 1; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_GB +SELECT @@global.lc_time_names = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='lc_time_names') AS res; +res +1 +'#--------------------FN_DYNVARS_060_13-------------------------#' +SELECT @@lc_time_names = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='lc_time_names') AS res; +res +1 +SELECT @@local.lc_time_names = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='lc_time_names') AS res; +res +1 +SELECT @@session.lc_time_names = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='lc_time_names') AS res; +res +1 +SET @@global.lc_time_names = @global_start_value; +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_US +SET @@session.lc_time_names = @session_start_value; +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_US diff --git a/mysql-test/r/lc_time_names_func.result b/mysql-test/r/lc_time_names_func.result new file mode 100644 index 00000000000..703aa65a6be --- /dev/null +++ b/mysql-test/r/lc_time_names_func.result @@ -0,0 +1,55 @@ +'#--------------------FN_DYNVARS_060_01-------------------------#' +SET @@global.lc_time_names = "en_CA"; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_CA +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_CA +SET @@global.lc_time_names = "en_IN"; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@global.lc_time_names; +@@global.lc_time_names +en_IN +SELECT @@session.lc_time_names; +@@session.lc_time_names +en_IN +'#--------------------FN_DYNVARS_060_02-------------------------#' +'connection default' +SET NAMES 'utf8'; +SET @@session.lc_time_names = 'en_US'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +Friday Fri January Jan Wednesday December +SET @@session.lc_time_names = 'ar_AE'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +الجمعة ج يناير ينا الأربعاء ديسمبر +SET @@session.lc_time_names = 'es_ES'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +viernes vie enero ene miércoles diciembre +SET @@session.lc_time_names = 'fi_FI'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +perjantai pe tammikuu tammi  keskiviikko joulukuu +SET @@session.lc_time_names = 'gu_IN'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +શુક્રવાર શુક્ર જાન્યુઆરી જાન બુધવાર ડિસેમ્બર +SET @@session.lc_time_names = 'it_IT'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +venerdì ven gennaio gen mercoledì dicembre +SET @@session.lc_time_names = 'pt_BR'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +sexta Sex janeiro Jan quarta dezembro +SET @@session.lc_time_names = 'ur_PK'; +SELECT DATE_FORMAT('2010-01-01','%W %a %M %b'), DAYNAME('2010-05-05'),MONTHNAME('2010-12-12'); +DATE_FORMAT('2010-01-01','%W %a %M %b') DAYNAME('2010-05-05') MONTHNAME('2010-12-12') +جمعه جمعه جنوري جنوري بدھ دسمبر +SET @@global.lc_time_names = "en_US"; diff --git a/mysql-test/r/license_basic.result b/mysql-test/r/license_basic.result new file mode 100644 index 00000000000..1f92e595020 --- /dev/null +++ b/mysql-test/r/license_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_040_01----------------------#' +SELECT COUNT(@@GLOBAL.license); +COUNT(@@GLOBAL.license) +1 +1 Expected +'#---------------------BS_STVARS_040_02----------------------#' +SET @@GLOBAL.license=1; +ERROR HY000: Variable 'license' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.license); +COUNT(@@GLOBAL.license) +1 +1 Expected +'#---------------------BS_STVARS_040_03----------------------#' +SELECT @@GLOBAL.license = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='license'; +@@GLOBAL.license = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.license); +COUNT(@@GLOBAL.license) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='license'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_040_04----------------------#' +SELECT @@license = @@GLOBAL.license; +@@license = @@GLOBAL.license +1 +1 Expected +'#---------------------BS_STVARS_040_05----------------------#' +SELECT COUNT(@@license); +COUNT(@@license) +1 +1 Expected +SELECT COUNT(@@local.license); +ERROR HY000: Variable 'license' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.license); +ERROR HY000: Variable 'license' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.license); +COUNT(@@GLOBAL.license) +1 +1 Expected +SELECT license = @@SESSION.license; +ERROR 42S22: Unknown column 'license' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/local_infile_basic.result b/mysql-test/r/local_infile_basic.result new file mode 100644 index 00000000000..5f4c215719a --- /dev/null +++ b/mysql-test/r/local_infile_basic.result @@ -0,0 +1,99 @@ +SET @start_value = @@global.local_infile; +SELECT @start_value; +@start_value +1 +'#--------------------FN_DYNVARS_018_01------------------------#' +SET @@global.local_infile = 0; +SET @@global.local_infile = DEFAULT; +SELECT @@global.local_infile; +@@global.local_infile +1 +'#---------------------FN_DYNVARS_018_02-------------------------#' +SET @@global.local_infile = DEFAULT; +SELECT @@global.local_infile = 1; +@@global.local_infile = 1 +1 +'#--------------------FN_DYNVARS_018_03------------------------#' +SET @@global.local_infile = 0; +SELECT @@global.local_infile; +@@global.local_infile +0 +SET @@global.local_infile = 1; +SELECT @@global.local_infile; +@@global.local_infile +1 +'#--------------------FN_DYNVARS_018_04-------------------------#' +SET @@global.local_infile = -1; +ERROR 42000: Variable 'local_infile' can't be set to the value of '-1' +SET @@global.local_infile = 2; +ERROR 42000: Variable 'local_infile' can't be set to the value of '2' +SET @@global.local_infile = 100; +ERROR 42000: Variable 'local_infile' can't be set to the value of '100' +SET @@global.local_infile = TRUEF; +ERROR 42000: Variable 'local_infile' can't be set to the value of 'TRUEF' +SET @@global.local_infile = TRUE_F; +ERROR 42000: Variable 'local_infile' can't be set to the value of 'TRUE_F' +SET @@global.local_infile = FALSE0; +ERROR 42000: Variable 'local_infile' can't be set to the value of 'FALSE0' +SET @@global.local_infile = OON; +ERROR 42000: Variable 'local_infile' can't be set to the value of 'OON' +SET @@global.local_infile = ONN; +ERROR 42000: Variable 'local_infile' can't be set to the value of 'ONN' +SET @@global.local_infile = OOFF; +ERROR 42000: Variable 'local_infile' can't be set to the value of 'OOFF' +SET @@global.local_infile = 0FF; +ERROR 42000: Variable 'local_infile' can't be set to the value of '0FF' +SET @@global.local_infile = ' '; +ERROR 42000: Variable 'local_infile' can't be set to the value of ' ' +SET @@global.local_infile = " "; +ERROR 42000: Variable 'local_infile' can't be set to the value of ' ' +'#-------------------FN_DYNVARS_018_05----------------------------#' +SET @@session.local_infile = 1; +ERROR HY000: Variable 'local_infile' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.local_infile = 1; +ERROR HY000: Variable 'local_infile' is a GLOBAL variable +'#----------------------FN_DYNVARS_018_06------------------------#' +SELECT @@global.local_infile = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='local_infile'; +@@global.local_infile = VARIABLE_VALUE +0 +'#---------------------FN_DYNVARS_018_07----------------------#' +SET @@global.local_infile = OFF; +SELECT @@global.local_infile; +@@global.local_infile +0 +SET @@global.local_infile = ON; +SELECT @@global.local_infile; +@@global.local_infile +1 +'#---------------------FN_DYNVARS_018_08----------------------#' +SET @@global.local_infile = TRUE; +SELECT @@global.local_infile; +@@global.local_infile +1 +SET @@global.local_infile = FALSE; +SELECT @@global.local_infile; +@@global.local_infile +0 +'#---------------------FN_DYNVARS_018_09----------------------#' +SET @@global.local_infile = 1; +SELECT @@local_infile = @@global.local_infile; +@@local_infile = @@global.local_infile +1 +'#---------------------FN_DYNVARS_018_10----------------------#' +SET local_infile = 1; +ERROR HY000: Variable 'local_infile' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@local_infile; +@@local_infile +1 +SET global.local_infile = 1; +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 'local_infile = 1' at line 1 +SELECT global.local_infile; +ERROR 42S02: Unknown table 'global' in field list +SELECT local_infile = @@session.local_infile; +ERROR 42S22: Unknown column 'local_infile' in 'field list' +SET @@global.local_infile = @start_value; +SELECT @@global.local_infile; +@@global.local_infile +1 diff --git a/mysql-test/r/local_infile_func.result b/mysql-test/r/local_infile_func.result new file mode 100644 index 00000000000..bed373bb0c9 --- /dev/null +++ b/mysql-test/r/local_infile_func.result @@ -0,0 +1,36 @@ +'#--------------------FN_DYNVARS_037_01-------------------------#' +SET @@global.local_infile = 0; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.local_infile; +@@global.local_infile +0 +SET @@global.local_infile = 1; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@global.local_infile; +@@global.local_infile +1 +'#--------------------FN_DYNVARS_037_02-------------------------#' +'connection con1' +'-----Checking LOAD DATA when local_infile is 1-------' +SET @@global.local_infile = 1; +DROP TABLE IF EXISTS t1; +create table t1(a int); +LOAD DATA LOCAL INFILE +'MYSQL_TEST_DIR/std_data/numbers.txt' INTO TABLE test.t1; +SELECT count(*) from t1; +count(*) +9 +'-----Checking LOAD DATA when local_infile is 0-------' +SET @@global.local_infile = 0; +DROP TABLE IF EXISTS t1; +create table t1(a int); +LOAD DATA LOCAL INFILE +'MYSQL_TEST_DIR/std_data/numbers.txt' INTO TABLE test.t1; +ERROR 42000: The used command is not allowed with this MySQL version +SELECT count(*) from t1; +count(*) +0 +DROP TABLE t1; +SET @@global.local_infile = 1; diff --git a/mysql-test/r/log_basic.result b/mysql-test/r/log_basic.result new file mode 100644 index 00000000000..44d0ff48f1d --- /dev/null +++ b/mysql-test/r/log_basic.result @@ -0,0 +1,17 @@ +'#--------------------FN_DYNVARS_062_01------------------#' +SELECT @@global.log AS INIT_VALUE; +INIT_VALUE +1 +SELECT @@log AS INIT_VALUE; +INIT_VALUE +1 +SET @@global.log = ON; +SET global log = 0; +'Bug# 34832: log is a system but it is not accessible using SET @@global.log;' +'SET GLOBAL log; and SELECT @@global.log. SHOW VARIABLES shows the value of log.' +'#--------------------FN_DYNVARS_062_02-------------------------#' +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log'; +VARIABLE_VALUE +OFF diff --git a/mysql-test/r/log_bin_trust_function_creators_basic.result b/mysql-test/r/log_bin_trust_function_creators_basic.result new file mode 100644 index 00000000000..40dc0e217c4 --- /dev/null +++ b/mysql-test/r/log_bin_trust_function_creators_basic.result @@ -0,0 +1,100 @@ +SET @start_global_value = @@global.log_bin_trust_function_creators; +SELECT @start_global_value; +@start_global_value +1 +'Bug# 34876: TRUE value is coming as Default' +SET @start_session_value = @@session.log_bin_trust_function_creators; +ERROR HY000: Variable 'log_bin_trust_function_creators' is a GLOBAL variable +'Bug# 34881: According to documentation the scope of this variable is GLOBAL as well as SESSION too'; +'#--------------------FN_DYNVARS_063_01-------------------------#' +SET @@global.log_bin_trust_function_creators = TRUE; +SET @@global.log_bin_trust_function_creators = DEFAULT; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +0 +'#--------------------FN_DYNVARS_063_02-------------------------#' +SET @@global.log_bin_trust_function_creators = DEFAULT; +SELECT @@global.log_bin_trust_function_creators = 'FALSE'; +@@global.log_bin_trust_function_creators = 'FALSE' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'FALSE' +'#--------------------FN_DYNVARS_063_03-------------------------#' +SET @@global.log_bin_trust_function_creators = ON; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +1 +SET @@global.log_bin_trust_function_creators = OFF; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +0 +SET @@global.log_bin_trust_function_creators = 0; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +0 +SET @@global.log_bin_trust_function_creators = 1; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +1 +SET @@global.log_bin_trust_function_creators = TRUE; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +1 +SET @@global.log_bin_trust_function_creators = FALSE; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +0 +'#-------------------FN_DYNVARS_063_04----------------------------#' +SET @@session.log_bin_trust_function_creators = 0; +ERROR HY000: Variable 'log_bin_trust_function_creators' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.log_bin_trust_function_creators; +ERROR HY000: Variable 'log_bin_trust_function_creators' is a GLOBAL variable +'#------------------FN_DYNVARS_063_05-----------------------#' +SET @@global.log_bin_trust_function_creators = 'ONN'; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'ONN' +SET @@global.log_bin_trust_function_creators = "OFFF"; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'OFFF' +SET @@global.log_bin_trust_function_creators = OF; +'Bug# 34828: OF is also working as OFF and no error is coming'; +SET @@global.log_bin_trust_function_creators = TTRUE; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'TTRUE' +SET @@global.log_bin_trust_function_creators = FELSE; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'FELSE' +SET @@global.log_bin_trust_function_creators = -1024; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of '-1024' +SET @@global.log_bin_trust_function_creators = 65536; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of '65536' +SET @@global.log_bin_trust_function_creators = 65530.34; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of '65530' +SET @@global.log_bin_trust_function_creators = test; +ERROR 42000: Variable 'log_bin_trust_function_creators' can't be set to the value of 'test' +'#------------------FN_DYNVARS_063_06-----------------------#' +SELECT @@global.log_bin_trust_function_creators = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_bin_trust_function_creators'; +@@global.log_bin_trust_function_creators = VARIABLE_VALUE +1 +SELECT @@session.log_bin_trust_function_creators = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='log_bin_trust_function_creators'; +ERROR HY000: Variable 'log_bin_trust_function_creators' is a GLOBAL variable +'#---------------------FN_DYNVARS_063_07----------------------#' +SET @@global.log_bin_trust_function_creators = TRUE; +SELECT @@log_bin_trust_function_creators = @@global.log_bin_trust_function_creators; +@@log_bin_trust_function_creators = @@global.log_bin_trust_function_creators +1 +'#---------------------FN_DYNVARS_063_08----------------------#' +SET @@global.log_bin_trust_function_creators = TRUE; +SELECT @@log_bin_trust_function_creators; +@@log_bin_trust_function_creators +1 +SELECT local.log_bin_trust_function_creators; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.log_bin_trust_function_creators; +ERROR 42S02: Unknown table 'session' in field list +SELECT log_bin_trust_function_creators = @@session.log_bin_trust_function_creators; +ERROR 42S22: Unknown column 'log_bin_trust_function_creators' in 'field list' +SET @@global.log_bin_trust_function_creators = @start_global_value; +SELECT @@global.log_bin_trust_function_creators; +@@global.log_bin_trust_function_creators +1 diff --git a/mysql-test/r/log_bin_trust_function_creators_func.result b/mysql-test/r/log_bin_trust_function_creators_func.result new file mode 100644 index 00000000000..e109b53a8e7 --- /dev/null +++ b/mysql-test/r/log_bin_trust_function_creators_func.result @@ -0,0 +1,71 @@ +drop table if exists t1; +'#--------------------FN_DYNVARS_063_01-------------------------#' +## Creating new user tt ## +CREATE user tt@localhost; +## Setting value of variable to 0 ## +SET @@global.log_bin_trust_function_creators = 0; +## Creating new table t2 ## +create table t2 (a INT); +## Creating & connecting with new connection test_con1 ## +SELECT @@log_bin_trust_function_creators; +@@log_bin_trust_function_creators +0 +SELECT @@sql_log_bin; +@@sql_log_bin +1 +## Creating new function f1 ## +CREATE FUNCTION f1(a INT) RETURNS INT +BEGIN +IF (a < 3) THEN +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'; +## Creating new table t1 ## +CREATE TABLE t1 (a INT); +## Inserting some records in t1 ## +INSERT INTO t1 VALUES (1),(2),(3); +SELECT f1(a) FROM t1; +f1(a) +1 +1 +1 +## Dropping function f1 & table t1 ## +drop function f1; +drop table t1; +'#--------------------FN_DYNVARS_063_02-------------------------#' +## Switching to default connection ## +## Setting value of variable to 1 ## +SET @@global.log_bin_trust_function_creators = 1; +## Creating and connecting to new connection test_con2 ## +## Verifying value of variable ## +SELECT @@log_bin_trust_function_creators; +@@log_bin_trust_function_creators +1 +SELECT @@sql_log_bin; +@@sql_log_bin +1 +## Creating new function f1 ## +CREATE FUNCTION f1(a INT) RETURNS INT +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 values in table t1 ## +INSERT INTO t1 VALUES (1),(2),(3); +SELECT f1(a) FROM t1; +f1(a) +1 +1 +1 +## Dropping function f1 ## +drop function f1; +## Dropping table t1 & t2 ## +drop table t1,t2; +## Disconnecting both the connections ## diff --git a/mysql-test/r/log_bin_trust_routine_creators_basic.result b/mysql-test/r/log_bin_trust_routine_creators_basic.result new file mode 100644 index 00000000000..2b7fb548f36 --- /dev/null +++ b/mysql-test/r/log_bin_trust_routine_creators_basic.result @@ -0,0 +1,121 @@ +SET @start_global_value = @@global.log_bin_trust_routine_creators; +SELECT @start_global_value; +@start_global_value +1 +'#--------------------FN_DYNVARS_064_01-------------------------#' +SET @@global.log_bin_trust_routine_creators = TRUE; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SET @@global.log_bin_trust_routine_creators = DEFAULT; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +0 +'#--------------------FN_DYNVARS_064_02-------------------------#' +SET @@global.log_bin_trust_routine_creators = DEFAULT; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators = 'FALSE'; +@@global.log_bin_trust_routine_creators = 'FALSE' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'FALSE' +'#--------------------FN_DYNVARS_064_03-------------------------#' +SET @@global.log_bin_trust_routine_creators = ON; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +1 +SET @@global.log_bin_trust_routine_creators = OFF; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +0 +SET @@global.log_bin_trust_routine_creators = 0; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +0 +SET @@global.log_bin_trust_routine_creators = 1; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +1 +SET @@global.log_bin_trust_routine_creators = TRUE; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +1 +SET @@global.log_bin_trust_routine_creators = FALSE; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +0 +'#-------------------FN_DYNVARS_064_04----------------------------#' +SET @@session.log_bin_trust_routine_creators = 0; +ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.log_bin_trust_routine_creators; +ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable +'#------------------FN_DYNVARS_064_05-----------------------#' +SET @@global.log_bin_trust_routine_creators = 'ONN'; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'ONN' +SET @@global.log_bin_trust_routine_creators = "OFFF"; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'OFFF' +SET @@global.log_bin_trust_routine_creators = OF; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +0 +'Bug# 34828: OF is also working as OFF and no error is coming'; +SET @@global.log_bin_trust_routine_creators = TTRUE; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'TTRUE' +SET @@global.log_bin_trust_routine_creators = FELSE; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'FELSE' +SET @@global.log_bin_trust_routine_creators = -1024; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of '-1024' +SET @@global.log_bin_trust_routine_creators = 65536; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of '65536' +SET @@global.log_bin_trust_routine_creators = 65530.34; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of '65530' +SET @@global.log_bin_trust_routine_creators = test; +ERROR 42000: Variable 'log_bin_trust_routine_creators' can't be set to the value of 'test' +'#------------------FN_DYNVARS_064_06-----------------------#' +SELECT @@global.log_bin_trust_routine_creators = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='log_bin_trust_routine_creators'; +@@global.log_bin_trust_routine_creators = VARIABLE_VALUE +1 +SELECT @@session.log_bin_trust_routine_creators = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='log_bin_trust_routine_creators'; +ERROR HY000: Variable 'log_bin_trust_routine_creators' is a GLOBAL variable +'#---------------------FN_DYNVARS_064_07----------------------#' +SET @@global.log_bin_trust_routine_creators = TRUE; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators; +@@log_bin_trust_routine_creators = @@global.log_bin_trust_routine_creators +1 +'#---------------------FN_DYNVARS_064_08----------------------#' +SET @@global.log_bin_trust_routine_creators = TRUE; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@log_bin_trust_routine_creators; +@@log_bin_trust_routine_creators +1 +SELECT local.log_bin_trust_routine_creators; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.log_bin_trust_routine_creators; +ERROR 42S02: Unknown table 'session' in field list +SELECT log_bin_trust_routine_creators = @@session.log_bin_trust_routine_creators; +ERROR 42S22: Unknown column 'log_bin_trust_routine_creators' in 'field list' +SET @@global.log_bin_trust_routine_creators = @start_global_value; +Warnings: +Warning 1287 The syntax 'log_bin_trust_routine_creators' is deprecated and will be removed in MySQL 5.2. Please use 'log_bin_trust_function_creators' instead +SELECT @@global.log_bin_trust_routine_creators; +@@global.log_bin_trust_routine_creators +1 diff --git a/mysql-test/r/log_output_basic.result b/mysql-test/r/log_output_basic.result new file mode 100644 index 00000000000..2b0c2409c41 --- /dev/null +++ b/mysql-test/r/log_output_basic.result @@ -0,0 +1,172 @@ +SET @start_value = @@global.log_output; +SELECT @start_value; +@start_value +FILE,TABLE +'#--------------------FN_DYNVARS_065_01------------------------#' +SET @@global.log_output = FILE; +SET @@global.log_output = DEFAULT; +SELECT @@global.log_output; +@@global.log_output +FILE +'Bug# 34876: Documentation specifies a DEFAULT value of TABLE whereas'; +'DEFAULT value is FILE. Also note that initial value is different'; +'from DEFAULT'; +'#---------------------FN_DYNVARS_065_02-------------------------#' +SET @@global.log_output = NULL; +ERROR 42000: Variable 'log_output' can't be set to the value of 'NULL' +SET @@global.log_output = ""; +SELECT @@global.log_output; +@@global.log_output + +'Bug# 34838: Empty value is allowed where as it is not specified in'; +'documentation'; +'#--------------------FN_DYNVARS_065_03------------------------#' +SET @@global.log_output = 'TABLE'; +SELECT @@global.log_output; +@@global.log_output +TABLE +SET @@global.log_output = 'FILE'; +SELECT @@global.log_output; +@@global.log_output +FILE +SET @@global.log_output = 'NONE'; +SELECT @@global.log_output; +@@global.log_output +NONE +SET @@global.log_output = 'FILE,TABLE'; +SELECT @@global.log_output; +@@global.log_output +FILE,TABLE +SET @@global.log_output = 'TABLE,FILE'; +SELECT @@global.log_output; +@@global.log_output +FILE,TABLE +SET @@global.log_output = 'NONE,TABLE'; +SELECT @@global.log_output; +@@global.log_output +NONE,TABLE +SET @@global.log_output = 'NONE,FILE'; +SELECT @@global.log_output; +@@global.log_output +NONE,FILE +SET @@global.log_output = 'FILE,TABLE,NONE'; +SELECT @@global.log_output; +@@global.log_output +NONE,FILE,TABLE +SET @@global.log_output = 'TABLE,NONE'; +SELECT @@global.log_output; +@@global.log_output +NONE,TABLE +SET @@global.log_output = 'TABLE,TABLE'; +SELECT @@global.log_output; +@@global.log_output +TABLE +SET @@global.log_output = ',TABLE'; +SELECT @@global.log_output; +@@global.log_output +TABLE +SET @@global.log_output = ','; +SELECT @@global.log_output; +@@global.log_output + +SET @@global.log_output = 'TABLE,,FILE,,,'; +SELECT @@global.log_output; +@@global.log_output +FILE,TABLE +'#--------------------FN_DYNVARS_065_04-------------------------#' +SET @@global.log_output = -1; +ERROR 42000: Variable 'log_output' can't be set to the value of '-1' +SET @@global.log_output = TAB; +ERROR 42000: Variable 'log_output' can't be set to the value of 'TAB' +SET @@global.log_output = NIL; +ERROR 42000: Variable 'log_output' can't be set to the value of 'NIL' +SET @@global.log_output = 'FIL'; +ERROR 42000: Variable 'log_output' can't be set to the value of 'FIL' +SET @@global.log_output = 'T'; +ERROR 42000: Variable 'log_output' can't be set to the value of 'T' +SET @@global.log_output = 'TABLE, FILE'; +ERROR 42000: Variable 'log_output' can't be set to the value of ' FILE' +SET @@global.log_output = ' TABLE,FILE'; +ERROR 42000: Variable 'log_output' can't be set to the value of ' TABLE' +SET @@global.log_output = ', '; +SELECT @@global.log_output; +@@global.log_output + +SET @@global.log_output = ' '; +SELECT @@global.log_output; +@@global.log_output + +SET @@global.log_output = ' '; +SELECT @@global.log_output; +@@global.log_output + +'Bug: The behavior of space in value is not consistent.'; +'Some times it is trimmed and some times not.'; +'The space before and after value is not accepted where as space'; +'between comma is accepted.'; +'#-------------------FN_DYNVARS_065_05----------------------------#' +SET @@log_output = 0; +ERROR HY000: Variable 'log_output' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.log_output; +ERROR HY000: Variable 'log_output' is a GLOBAL variable +'#----------------------FN_DYNVARS_065_06------------------------#' +SELECT @@log_output = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_output'; +@@log_output = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_065_07-------------------------#' +SET @@global.log_output = 0; +SELECT @@global.log_output; +@@global.log_output + +SET @@global.log_output = 1; +SELECT @@global.log_output; +@@global.log_output +NONE +SET @@global.log_output = 2; +SELECT @@global.log_output; +@@global.log_output +FILE +SET @@global.log_output = 3; +SELECT @@global.log_output; +@@global.log_output +NONE,FILE +SET @@global.log_output = 4; +SELECT @@global.log_output; +@@global.log_output +TABLE +SET @@global.log_output = 5; +SELECT @@global.log_output; +@@global.log_output +NONE,TABLE +SET @@global.log_output = 6; +SELECT @@global.log_output; +@@global.log_output +FILE,TABLE +SET @@global.log_output = 7; +SELECT @@global.log_output; +@@global.log_output +NONE,FILE,TABLE +SET @@global.log_output = 8; +ERROR 42000: Variable 'log_output' can't be set to the value of '8' +'#---------------------FN_DYNVARS_065_08----------------------#' +SET @@global.log_output = TRUE; +SELECT @@global.log_output; +@@global.log_output +NONE +SET @@global.log_output = FALSE; +SELECT @@global.log_output; +@@global.log_output + +'#---------------------FN_DYNVARS_065_09----------------------#' +SET log_output = ON; +ERROR HY000: Variable 'log_output' is a GLOBAL variable and should be set with SET GLOBAL +SET global log_output = 'TABLE'; +SELECT @@global.log_output; +@@global.log_output +TABLE +SET @@global.log_output = @start_value; +SELECT @@global.log_output; +@@global.log_output +FILE,TABLE diff --git a/mysql-test/r/log_output_func.result b/mysql-test/r/log_output_func.result new file mode 100644 index 00000000000..8af7f471195 --- /dev/null +++ b/mysql-test/r/log_output_func.result @@ -0,0 +1,53 @@ +'#--------------------FN_DYNVARS_065_01-------------------------#' +SET @@global.log_output = 'NONE'; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.log_output; +@@global.log_output +NONE +SET @@global.log_output = 'TABLE,FILE'; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@global.log_output; +@@global.log_output +FILE,TABLE +'#--------------------FN_DYNVARS_065_02-------------------------#' +'connection con1' +'---Checking general_log when log_output is NONE---' +SET @@global.log_output = 'NONE'; +TRUNCATE TABLE mysql.general_log; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a INT); +INSERT INTO t1 value(1); +SELECT 'abc'; +abc +abc +SELECT count(*) FROM mysql.general_log; +count(*) +0 +'---Checking general_log when log_output is TABLE---' +SET @@global.log_output = 'TABLE'; +TRUNCATE TABLE mysql.general_log; +DROP TABLE IF EXISTS t1; +create table t1(a int); +INSERT INTO t1 value(1); +SELECT 'abc'; +abc +abc +SELECT count(*) from mysql.general_log; +count(*) +5 +'Bug#35371: Changing general_log file is crashing server' +'SET @@global.general_log_file = @log_file;' +SET @@global.log_output = 'FILE'; +TRUNCATE TABLE mysql.general_log; +DROP TABLE IF EXISTS t1; +create table t1(a int); +INSERT INTO t1 value(1); +SELECT 'abc'; +abc +abc +SELECT count(*) from mysql.general_log; +count(*) +0 +DROP TABLE t1; diff --git a/mysql-test/r/log_queries_not_using_indexes_basic.result b/mysql-test/r/log_queries_not_using_indexes_basic.result new file mode 100644 index 00000000000..d05437e3f66 --- /dev/null +++ b/mysql-test/r/log_queries_not_using_indexes_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_041_01----------------------#' +SELECT COUNT(@@GLOBAL.log_queries_not_using_indexes); +COUNT(@@GLOBAL.log_queries_not_using_indexes) +1 +1 Expected +'#---------------------BS_STVARS_041_02----------------------#' +SET @@GLOBAL.log_queries_not_using_indexes=1; +Expected error 'Read only variable' +"BUG:It should give error on setting this variable as it is readonly variable" +SELECT COUNT(@@GLOBAL.log_queries_not_using_indexes); +COUNT(@@GLOBAL.log_queries_not_using_indexes) +1 +1 Expected +'#---------------------BS_STVARS_041_03----------------------#' +SELECT @@GLOBAL.log_queries_not_using_indexes = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_queries_not_using_indexes'; +@@GLOBAL.log_queries_not_using_indexes = VARIABLE_VALUE +0 +1 Expected +SELECT COUNT(@@GLOBAL.log_queries_not_using_indexes); +COUNT(@@GLOBAL.log_queries_not_using_indexes) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_queries_not_using_indexes'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_041_04----------------------#' +SELECT @@log_queries_not_using_indexes = @@GLOBAL.log_queries_not_using_indexes; +@@log_queries_not_using_indexes = @@GLOBAL.log_queries_not_using_indexes +1 +1 Expected +'#---------------------BS_STVARS_041_05----------------------#' +SELECT COUNT(@@log_queries_not_using_indexes); +COUNT(@@log_queries_not_using_indexes) +1 +1 Expected +SELECT COUNT(@@local.log_queries_not_using_indexes); +ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.log_queries_not_using_indexes); +ERROR HY000: Variable 'log_queries_not_using_indexes' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.log_queries_not_using_indexes); +COUNT(@@GLOBAL.log_queries_not_using_indexes) +1 +1 Expected +SELECT log_queries_not_using_indexes = @@SESSION.log_queries_not_using_indexes; +ERROR 42S22: Unknown column 'log_queries_not_using_indexes' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/long_query_time_basic.result b/mysql-test/r/long_query_time_basic.result new file mode 100644 index 00000000000..b44500dc1e2 --- /dev/null +++ b/mysql-test/r/long_query_time_basic.result @@ -0,0 +1,158 @@ +SET @start_global_value = @@global.long_query_time; +SELECT @start_global_value; +@start_global_value +10 +SET @start_session_value = @@session.long_query_time; +SELECT @start_session_value; +@start_session_value +10 +'#--------------------FN_DYNVARS_068_01-------------------------#' +SET @@global.long_query_time = 100; +SET @@global.long_query_time = DEFAULT; +SELECT @@global.long_query_time; +@@global.long_query_time +10.000000 +SET @@session.long_query_time = 200; +SET @@session.long_query_time = DEFAULT; +SELECT @@session.long_query_time; +@@session.long_query_time +10.000000 +'#--------------------FN_DYNVARS_068_02-------------------------#' +SET @@global.long_query_time = DEFAULT; +SELECT @@global.long_query_time = 10; +@@global.long_query_time = 10 +1 +SET @@session.long_query_time = DEFAULT; +SELECT @@session.long_query_time = 10; +@@session.long_query_time = 10 +1 +'#--------------------FN_DYNVARS_068_03-------------------------#' +SET @@global.long_query_time = 0; +SELECT @@global.long_query_time; +@@global.long_query_time +0.000000 +SET @@global.long_query_time = 1; +SELECT @@global.long_query_time; +@@global.long_query_time +1.000000 +SET @@global.long_query_time = 60020; +SELECT @@global.long_query_time; +@@global.long_query_time +60020.000000 +SET @@global.long_query_time = 31536000; +SELECT @@global.long_query_time; +@@global.long_query_time +31536000.000000 +SET @@global.long_query_time = 65536; +SELECT @@global.long_query_time; +@@global.long_query_time +65536.000000 +'#--------------------FN_DYNVARS_068_04-------------------------#' +SET @@session.long_query_time = 0; +SELECT @@session.long_query_time; +@@session.long_query_time +0.000000 +SET @@session.long_query_time = 1; +SELECT @@session.long_query_time; +@@session.long_query_time +1.000000 +SET @@session.long_query_time = 50050; +SELECT @@session.long_query_time; +@@session.long_query_time +50050.000000 +SET @@session.long_query_time = 31536000; +SELECT @@session.long_query_time; +@@session.long_query_time +31536000.000000 +SET @@session.long_query_time = 65550; +SELECT @@session.long_query_time; +@@session.long_query_time +65550.000000 +'#------------------FN_DYNVARS_068_05-----------------------#' +SET @@global.long_query_time = 100000000000; +SELECT @@global.long_query_time; +@@global.long_query_time +31536000.000000 +SET @@global.long_query_time = -1; +SELECT @@global.long_query_time; +@@global.long_query_time +0.000000 +SET @@global.long_query_time = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.long_query_time; +@@global.long_query_time +0.000000 +SET @@global.long_query_time = test; +ERROR 42000: Incorrect argument type to variable 'long_query_time' +SELECT @@global.long_query_time; +@@global.long_query_time +0.000000 +SET @@session.long_query_time = 100000000000; +SELECT @@session.long_query_time; +@@session.long_query_time +31536000.000000 +SET @@session.long_query_time = -2; +SELECT @@session.long_query_time; +@@session.long_query_time +0.000000 +SET @@session.long_query_time = 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 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.long_query_time = test; +ERROR 42000: Incorrect argument type to variable 'long_query_time' +SELECT @@session.long_query_time; +@@session.long_query_time +0.000000 +'#------------------FN_DYNVARS_068_06-----------------------#' +SELECT @@global.long_query_time = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='long_query_time'; +@@global.long_query_time = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_068_07-----------------------#' +SELECT @@session.long_query_time = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='long_query_time'; +@@session.long_query_time = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_068_08-----------------------#' +SET @@global.long_query_time = TRUE; +SELECT @@global.long_query_time; +@@global.long_query_time +1.000000 +SET @@global.long_query_time = FALSE; +SELECT @@global.long_query_time; +@@global.long_query_time +0.000000 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.long_query_time = 10; +SELECT @@long_query_time = @@global.long_query_time; +@@long_query_time = @@global.long_query_time +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@long_query_time = 100; +SELECT @@long_query_time = @@local.long_query_time; +@@long_query_time = @@local.long_query_time +1 +SELECT @@local.long_query_time = @@session.long_query_time; +@@local.long_query_time = @@session.long_query_time +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET long_query_time = 1; +SELECT @@long_query_time; +@@long_query_time +1.000000 +SELECT local.long_query_time; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.long_query_time; +ERROR 42S02: Unknown table 'session' in field list +SELECT long_query_time = @@session.long_query_time; +ERROR 42S22: Unknown column 'long_query_time' in 'field list' +SET @@global.long_query_time = @start_global_value; +SELECT @@global.long_query_time; +@@global.long_query_time +10.000000 +SET @@session.long_query_time = @start_session_value; +SELECT @@session.long_query_time; +@@session.long_query_time +10.000000 diff --git a/mysql-test/r/low_priority_updates_basic.result b/mysql-test/r/low_priority_updates_basic.result new file mode 100644 index 00000000000..87b30814837 --- /dev/null +++ b/mysql-test/r/low_priority_updates_basic.result @@ -0,0 +1,164 @@ +SET @start_global_value = @@global.low_priority_updates; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.low_priority_updates; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_069_01-------------------------#' +SET @@global.low_priority_updates = ON; +SET @@global.low_priority_updates = DEFAULT; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +0 +SET @@session.low_priority_updates = ON; +SET @@session.low_priority_updates = DEFAULT; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +0 +'#--------------------FN_DYNVARS_069_02-------------------------#' +SET @@global.low_priority_updates = DEFAULT; +SELECT @@global.low_priority_updates = 'FALSE'; +@@global.low_priority_updates = 'FALSE' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'FALSE' +SET @@session.low_priority_updates = DEFAULT; +SELECT @@session.low_priority_updates = 'FALSE'; +@@session.low_priority_updates = 'FALSE' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'FALSE' +'#--------------------FN_DYNVARS_069_03-------------------------#' +SET @@global.low_priority_updates = ON; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +1 +SET @@global.low_priority_updates = OFF; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +0 +SET @@global.low_priority_updates = 0; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +0 +SET @@global.low_priority_updates = 1; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +1 +SET @@global.low_priority_updates = TRUE; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +1 +SET @@global.low_priority_updates = FALSE; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +0 +'#--------------------FN_DYNVARS_069_04-------------------------#' +SET @@session.low_priority_updates = ON; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +1 +SET @@session.low_priority_updates = OFF; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +0 +SET @@session.low_priority_updates = 0; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +0 +SET @@session.low_priority_updates = 1; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +1 +SET @@session.low_priority_updates = TRUE; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +1 +SET @@session.low_priority_updates = FALSE; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +0 +'#------------------FN_DYNVARS_069_05-----------------------#' +SET @@global.low_priority_updates = 'ONN'; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'ONN' +SET @@global.low_priority_updates = "OFFF"; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'OFFF' +SET @@global.low_priority_updates = TTRUE; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'TTRUE' +SET @@global.low_priority_updates = FELSE; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'FELSE' +SET @@global.low_priority_updates = -1024; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '-1024' +SET @@global.low_priority_updates = 65536; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '65536' +SET @@global.low_priority_updates = 65530.34; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '65530' +SET @@global.low_priority_updates = test; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'test' +SET @@session.low_priority_updates = ONN; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'ONN' +SET @@session.low_priority_updates = ONF; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'ONF' +SET @@session.low_priority_updates = OF; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +0 +'Bug# 34828: OF is also working as OFF and no error is coming'; +SET @@session.low_priority_updates = 'OFN'; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'OFN' +SET @@session.low_priority_updates = -2; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '-2' +SET @@session.low_priority_updates = 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.low_priority_updates = 65550; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of '65550' +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.low_priority_updates = test; +ERROR 42000: Variable 'low_priority_updates' can't be set to the value of 'test' +'#------------------FN_DYNVARS_069_06-----------------------#' +SELECT @@global.low_priority_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='low_priority_updates'; +@@global.low_priority_updates = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_069_07-----------------------#' +SELECT @@session.low_priority_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='low_priority_updates'; +@@session.low_priority_updates = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_069_08----------------------#' +SET @@low_priority_updates = FALSE; +SET @@global.low_priority_updates = TRUE; +SELECT @@low_priority_updates = @@global.low_priority_updates; +@@low_priority_updates = @@global.low_priority_updates +0 +'#---------------------FN_DYNVARS_069_09----------------------#' +SET @@low_priority_updates = ON; +SELECT @@low_priority_updates = @@local.low_priority_updates; +@@low_priority_updates = @@local.low_priority_updates +1 +SELECT @@local.low_priority_updates = @@session.low_priority_updates; +@@local.low_priority_updates = @@session.low_priority_updates +1 +'#---------------------FN_DYNVARS_069_10----------------------#' +SET low_priority_updates = 1; +SELECT @@low_priority_updates; +@@low_priority_updates +1 +SELECT local.low_priority_updates; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.low_priority_updates; +ERROR 42S02: Unknown table 'session' in field list +SELECT low_priority_updates = @@session.low_priority_updates; +ERROR 42S22: Unknown column 'low_priority_updates' in 'field list' +SET @@global.low_priority_updates = @start_global_value; +SELECT @@global.low_priority_updates; +@@global.low_priority_updates +0 +SET @@session.low_priority_updates = @start_session_value; +SELECT @@session.low_priority_updates; +@@session.low_priority_updates +0 diff --git a/mysql-test/r/max_allowed_packet_basic.result b/mysql-test/r/max_allowed_packet_basic.result new file mode 100644 index 00000000000..3940cc1b2f2 --- /dev/null +++ b/mysql-test/r/max_allowed_packet_basic.result @@ -0,0 +1,193 @@ +SET @start_global_value = @@global.max_allowed_packet; +SELECT @start_global_value; +@start_global_value +1048576 +SET @start_session_value = @@session.max_allowed_packet; +SELECT @start_session_value; +@start_session_value +1048576 +'#--------------------FN_DYNVARS_070_01-------------------------#' +SET @@global.max_allowed_packet = 1000; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '1000' +SET @@global.max_allowed_packet = DEFAULT; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1048576 +SET @@session.max_allowed_packet = 20000; +SET @@session.max_allowed_packet = DEFAULT; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1048576 +'#--------------------FN_DYNVARS_070_02-------------------------#' +SET @@global.max_allowed_packet = DEFAULT; +SELECT @@global.max_allowed_packet = 1048576; +@@global.max_allowed_packet = 1048576 +1 +SET @@session.max_allowed_packet = DEFAULT; +SELECT @@session.max_allowed_packet = 1048576; +@@session.max_allowed_packet = 1048576 +1 +'#--------------------FN_DYNVARS_070_03-------------------------#' +SET @@global.max_allowed_packet = 1024; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +SET @@global.max_allowed_packet = 1025; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +: 'Bug# 34841: "Invalid values are coming in variable on assigning valid value'; +SET @@global.max_allowed_packet = 1073741824; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1073741824 +SET @@global.max_allowed_packet = 1073741823; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1073740800 +'#--------------------FN_DYNVARS_070_04-------------------------#' +SET @@session.max_allowed_packet = 1024; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1024 +SET @@session.max_allowed_packet = 1025; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1024 +SET @@session.max_allowed_packet = 65535; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +64512 +SET @@session.max_allowed_packet = 1073741824; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1073741824 +SET @@session.max_allowed_packet = 1073741823; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1073740800 +'#------------------FN_DYNVARS_070_05-----------------------#' +SET @@global.max_allowed_packet = 0; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '0' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +SET @@global.max_allowed_packet = -1024; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '0' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +SET @@global.max_allowed_packet = 1023; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '1023' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +SET @@global.max_allowed_packet = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '10737418241' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1073741824 +SET @@global.max_allowed_packet = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1073741824 +SET @@global.max_allowed_packet = test; +ERROR 42000: Incorrect argument type to variable 'max_allowed_packet' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1073741824 +SET @@session.max_allowed_packet = 0; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '0' +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1024 +SET @@session.max_allowed_packet = 1023; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '1023' +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1024 +SET @@session.max_allowed_packet = -2; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '0' +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1024 +SET @@session.max_allowed_packet = 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.max_allowed_packet = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '10737418241' +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1073741824 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.max_allowed_packet = test; +ERROR 42000: Incorrect argument type to variable 'max_allowed_packet' +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1073741824 +'#------------------FN_DYNVARS_070_06-----------------------#' +SELECT @@global.max_allowed_packet = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_allowed_packet'; +@@global.max_allowed_packet = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_070_07-----------------------#' +SELECT @@session.max_allowed_packet = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_allowed_packet'; +@@session.max_allowed_packet = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_070_08-----------------------#' +SET @@global.max_allowed_packet = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '1' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +SET @@global.max_allowed_packet = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_allowed_packet value: '0' +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +'#---------------------FN_DYNVARS_070_09----------------------#' +SET @@global.max_allowed_packet = 2048; +SELECT @@max_allowed_packet = @@global.max_allowed_packet; +@@max_allowed_packet = @@global.max_allowed_packet +0 +'#---------------------FN_DYNVARS_070_10----------------------#' +SET @@max_allowed_packet = 100000; +SELECT @@max_allowed_packet = @@local.max_allowed_packet; +@@max_allowed_packet = @@local.max_allowed_packet +1 +SELECT @@local.max_allowed_packet = @@session.max_allowed_packet; +@@local.max_allowed_packet = @@session.max_allowed_packet +1 +'#---------------------FN_DYNVARS_070_11----------------------#' +SET max_allowed_packet = 1024; +SELECT @@max_allowed_packet; +@@max_allowed_packet +1024 +SELECT local.max_allowed_packet; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_allowed_packet; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_allowed_packet = @@session.max_allowed_packet; +ERROR 42S22: Unknown column 'max_allowed_packet' in 'field list' +SET @@global.max_allowed_packet = @start_global_value; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1048576 +SET @@session.max_allowed_packet = @start_session_value; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1048576 diff --git a/mysql-test/r/max_allowed_packet_func.result b/mysql-test/r/max_allowed_packet_func.result new file mode 100644 index 00000000000..4d595b92e9f --- /dev/null +++ b/mysql-test/r/max_allowed_packet_func.result @@ -0,0 +1,45 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); +'#--------------------FN_DYNVARS_070_01-------------------------#' +## Setting value of max_allowed packet and net_buffer_length to 1024 ## +SET @@session.max_allowed_packet = 1024; +SET @@session.net_buffer_length = 1024; +SELECT @@session.max_allowed_packet; +@@session.max_allowed_packet +1024 +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1024 +## Inserting and fetching data of length greater than 1024 ## +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len; +len +1470 +## Verifying record in table t1 ## +SELECT * from t1; +id name +1 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +'Bug#35381: Error is not coming on inserting and fetching data of length' +'greater than max_allowed_packet size at session level'; +'#--------------------FN_DYNVARS_070_02-------------------------#' +## Setting value of max_allowed packet and net_buffer_length to 1024 ## +SET @@global.max_allowed_packet = 1024; +SET @@global.net_buffer_length = 1024; +SELECT @@global.max_allowed_packet; +@@global.max_allowed_packet +1024 +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +## Creating new connection test_con1 ## +## Inserting and fetching data of length greater than 1024 ## +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +ERROR 08S01: Got a packet bigger than 'max_allowed_packet' bytes +## Server disconnects after this case and error occurs that Server ## +## has gone away ## diff --git a/mysql-test/r/max_binlog_cache_size_func.result b/mysql-test/r/max_binlog_cache_size_func.result new file mode 100644 index 00000000000..50c9e8e935d --- /dev/null +++ b/mysql-test/r/max_binlog_cache_size_func.result @@ -0,0 +1,350 @@ +drop table if exists t1; +## Setting value of log_warning to 1 ## +SET @@global.log_warnings = 1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +) engine = innodb; +'#--------------------FN_DYNVARS_071_01-------------------------#' +## Setting initial value of variable to 4096 ## +SET @@global.max_binlog_cache_size = 4096; +## Creating & connecting with new connection test_con1 ## +SET @@autocommit = 0; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +## Inserting and fetching data of length greater than 4096 ## +START TRANSACTION; +'Bug: According to documentation, if multistatement transcation'; +'requires more than 4096 bytes, an error should occur, but no error'; +'is coming'; +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +COMMIT; +START TRANSACTION; +INSERT into t1(name) values("1111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("11111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +ROLLBACK; +START TRANSACTION; +INSERT into t1(name) values("21111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("211111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +COMMIT; +START TRANSACTION; +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +COMMIT; +START TRANSACTION; +INSERT into t1(name) values("1111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("11111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +ROLLBACK; +START TRANSACTION; +INSERT into t1(name) values("21111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("211111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +COMMIT; +START TRANSACTION; +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +COMMIT; +START TRANSACTION; +INSERT into t1(name) values("1111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("11111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +ROLLBACK; +START TRANSACTION; +INSERT into t1(name) values("21111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("211111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +INSERT into t1(name) values("2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +COMMIT; +SELECT * from t1; +id name +1 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +2 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +3 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +4 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +5 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +6 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +7 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +8 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +9 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +10 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +11 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +12 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +13 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +14 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +15 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +16 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +17 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +18 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +19 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +20 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +21 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +22 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +23 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +24 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +25 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +26 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +27 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +28 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +29 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +30 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +31 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +32 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +33 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +34 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +35 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +36 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +37 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +38 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +39 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +40 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +41 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +42 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +43 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +44 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +45 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +46 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +47 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +48 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +49 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +50 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +51 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +52 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +53 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +54 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +55 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +56 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +57 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +58 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +59 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +60 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +61 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +62 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +63 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +64 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +65 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +66 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +67 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +68 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +69 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +70 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +71 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +72 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +73 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +74 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +75 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +76 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +77 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +78 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +79 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +80 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +81 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +82 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +83 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +84 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +85 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +86 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +87 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +88 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +89 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +90 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +91 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +92 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +93 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +94 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +95 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +96 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +97 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +98 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +99 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +100 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +101 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +102 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +103 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +104 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +105 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +106 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +107 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +108 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +109 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +110 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +111 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +112 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +113 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +120 21111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +121 211111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +122 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +123 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +124 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +125 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +126 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +127 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +128 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +129 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +130 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +131 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +138 21111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +139 211111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +140 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +141 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +142 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +143 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +144 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +145 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +146 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +147 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +148 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +149 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +156 21111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +157 211111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +158 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +159 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +160 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +161 2111111111aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkaaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk +DELETE FROM t1; +## Dropping table t1 ## +drop table t1; +## Disconnecting test_con1 ## diff --git a/mysql-test/r/max_binlog_size_basic.result b/mysql-test/r/max_binlog_size_basic.result new file mode 100644 index 00000000000..291b687f76c --- /dev/null +++ b/mysql-test/r/max_binlog_size_basic.result @@ -0,0 +1,145 @@ +SET @start_value = @@global.max_binlog_size; +SELECT @start_value; +@start_value +1073741824 +'#--------------------FN_DYNVARS_072_01------------------------#' +SET @@global.max_binlog_size = 5000; +SET @@global.max_binlog_size = DEFAULT; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073741824 +'Bug# 34878: This variable has invalid default value as compared to documentation'; +'#---------------------FN_DYNVARS_072_02-------------------------#' +SET @@global.max_binlog_size = @start_value; +SELECT @@global.max_binlog_size = 1073741824; +@@global.max_binlog_size = 1073741824 +1 +'#--------------------FN_DYNVARS_072_03------------------------#' +SET @@global.max_binlog_size = 4096; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = 1073741824; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073741824 +SET @@global.max_binlog_size = 1073741823; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073737728 +SET @@global.max_binlog_size = 4097; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = 65535; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +61440 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_072_04-------------------------#' +SET @@global.max_binlog_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '0' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = 100000000000; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '100000000000' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073741824 +SET @@global.max_binlog_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_binlog_size' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073741824 +SET @@global.max_binlog_size = -1024; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '0' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = 1024; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '1024' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '4294967296' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073741824 +SET @@global.max_binlog_size = 4095; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '4095' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_binlog_size = ON; +ERROR 42000: Incorrect argument type to variable 'max_binlog_size' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_binlog_size' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +'#-------------------FN_DYNVARS_072_05----------------------------#' +SET @@session.max_binlog_size = 4096; +ERROR HY000: Variable 'max_binlog_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_binlog_size; +ERROR HY000: Variable 'max_binlog_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_072_06------------------------#' +SELECT @@global.max_binlog_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_binlog_size'; +@@global.max_binlog_size = VARIABLE_VALUE +1 +SELECT @@max_binlog_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_binlog_size'; +@@max_binlog_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_072_07----------------------#' +SET @@global.max_binlog_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '1' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +SET @@global.max_binlog_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_binlog_size value: '0' +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +4096 +'#---------------------FN_DYNVARS_072_08----------------------#' +SET @@global.max_binlog_size = 5000; +SELECT @@max_binlog_size = @@global.max_binlog_size; +@@max_binlog_size = @@global.max_binlog_size +1 +'#---------------------FN_DYNVARS_072_09----------------------#' +SET max_binlog_size = 6000; +ERROR HY000: Variable 'max_binlog_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_binlog_size; +@@max_binlog_size +4096 +SET local.max_binlog_size = 7000; +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 'max_binlog_size = 7000' at line 1 +SELECT local.max_binlog_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_binlog_size = 8000; +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 'max_binlog_size = 8000' at line 1 +SELECT global.max_binlog_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_binlog_size = @@session.max_binlog_size; +ERROR 42S22: Unknown column 'max_binlog_size' in 'field list' +SET @@global.max_binlog_size = @start_value; +SELECT @@global.max_binlog_size; +@@global.max_binlog_size +1073741824 diff --git a/mysql-test/r/max_connections_basic.result b/mysql-test/r/max_connections_basic.result new file mode 100644 index 00000000000..ccedff01c54 --- /dev/null +++ b/mysql-test/r/max_connections_basic.result @@ -0,0 +1,137 @@ +SET @start_value = @@global.max_connections; +SELECT @start_value; +@start_value +151 +'#--------------------FN_DYNVARS_074_01------------------------#' +SET @@global.max_connections = 5000; +SET @@global.max_connections = DEFAULT; +SELECT @@global.max_connections; +@@global.max_connections +151 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#---------------------FN_DYNVARS_074_02-------------------------#' +SET @@global.max_connections = @start_value; +SELECT @@global.max_connections = 151; +@@global.max_connections = 151 +1 +'#--------------------FN_DYNVARS_074_03------------------------#' +SET @@global.max_connections = 100000; +SELECT @@global.max_connections; +@@global.max_connections +100000 +SET @@global.max_connections = 99999; +SELECT @@global.max_connections; +@@global.max_connections +99999 +SET @@global.max_connections = 65536; +SELECT @@global.max_connections; +@@global.max_connections +65536 +SET @@global.max_connections = 1; +SELECT @@global.max_connections; +@@global.max_connections +1 +SET @@global.max_connections = 2; +SELECT @@global.max_connections; +@@global.max_connections +2 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_074_04-------------------------#' +SET @@global.max_connections = -1; +Warnings: +Warning 1292 Truncated incorrect max_connections value: '0' +SELECT @@global.max_connections; +@@global.max_connections +1 +SET @@global.max_connections = 100000000000; +Warnings: +Warning 1292 Truncated incorrect max_connections value: '100000000000' +SELECT @@global.max_connections; +@@global.max_connections +100000 +SET @@global.max_connections = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_connections' +SELECT @@global.max_connections; +@@global.max_connections +100000 +SET @@global.max_connections = -1024; +Warnings: +Warning 1292 Truncated incorrect max_connections value: '0' +SELECT @@global.max_connections; +@@global.max_connections +1 +SET @@global.max_connections = 0; +Warnings: +Warning 1292 Truncated incorrect max_connections value: '0' +SELECT @@global.max_connections; +@@global.max_connections +1 +SET @@global.max_connections = 100001; +Warnings: +Warning 1292 Truncated incorrect max_connections value: '100001' +SELECT @@global.max_connections; +@@global.max_connections +100000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_connections = ON; +ERROR 42000: Incorrect argument type to variable 'max_connections' +SELECT @@global.max_connections; +@@global.max_connections +100000 +SET @@global.max_connections = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_connections' +SELECT @@global.max_connections; +@@global.max_connections +100000 +'#-------------------FN_DYNVARS_074_05----------------------------#' +SET @@session.max_connections = 4096; +ERROR HY000: Variable 'max_connections' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_connections; +ERROR HY000: Variable 'max_connections' is a GLOBAL variable +'#----------------------FN_DYNVARS_074_06------------------------#' +SELECT @@global.max_connections = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_connections'; +@@global.max_connections = VARIABLE_VALUE +1 +SELECT @@max_connections = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_connections'; +@@max_connections = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_074_07----------------------#' +SET @@global.max_connections = TRUE; +SELECT @@global.max_connections; +@@global.max_connections +1 +SET @@global.max_connections = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_connections value: '0' +SELECT @@global.max_connections; +@@global.max_connections +1 +'#---------------------FN_DYNVARS_074_08----------------------#' +SET @@global.max_connections = 5000; +SELECT @@max_connections = @@global.max_connections; +@@max_connections = @@global.max_connections +1 +'#---------------------FN_DYNVARS_074_09----------------------#' +SET max_connections = 6000; +ERROR HY000: Variable 'max_connections' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_connections; +@@max_connections +5000 +SET local.max_connections = 7000; +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 'max_connections = 7000' at line 1 +SELECT local.max_connections; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_connections = 8000; +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 'max_connections = 8000' at line 1 +SELECT global.max_connections; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_connections = @@session.max_connections; +ERROR 42S22: Unknown column 'max_connections' in 'field list' +SET @@global.max_connections = @start_value; +SELECT @@global.max_connections; +@@global.max_connections +151 diff --git a/mysql-test/r/max_delayed_threads_basic.result b/mysql-test/r/max_delayed_threads_basic.result new file mode 100644 index 00000000000..e0b2a3ee1cd --- /dev/null +++ b/mysql-test/r/max_delayed_threads_basic.result @@ -0,0 +1,183 @@ +SET @start_global_value = @@global.max_delayed_threads; +SELECT @start_global_value; +@start_global_value +20 +SET @start_session_value = @@session.max_delayed_threads; +SELECT @start_session_value; +@start_session_value +20 +'#--------------------FN_DYNVARS_075_01-------------------------#' +SET @@global.max_delayed_threads = 1000; +SET @@global.max_delayed_threads = DEFAULT; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +20 +SET @@session.max_delayed_threads = 1000; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '1000' +'Bug# 34882: Valid values are not allowed to assign in this variable'; +SET @@session.max_delayed_threads = DEFAULT; +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +20 +'#--------------------FN_DYNVARS_075_02-------------------------#' +SET @@global.max_delayed_threads = DEFAULT; +SELECT @@global.max_delayed_threads = 20; +@@global.max_delayed_threads = 20 +1 +SET @@session.max_delayed_threads = DEFAULT; +SELECT @@session.max_delayed_threads = 20; +@@session.max_delayed_threads = 20 +1 +'#--------------------FN_DYNVARS_075_03-------------------------#' +SET @@global.max_delayed_threads = 1; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +1 +SET @@global.max_delayed_threads = 1025; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +1025 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.max_delayed_threads = 0; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +0 +SET @@global.max_delayed_threads = 16384; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +16384 +SET @@global.max_delayed_threads = 16383; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +16383 +'#--------------------FN_DYNVARS_075_04-------------------------#' +SET @@session.max_delayed_threads = 1; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '1' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +20 +SET @@session.max_delayed_threads = 1025; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '1025' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +20 +SET @@session.max_delayed_threads = 0; +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +0 +SET @@session.max_delayed_threads = 16384; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '16384' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +0 +SET @@session.max_delayed_threads = 16383; +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +16383 +'#------------------FN_DYNVARS_075_05-----------------------#' +SET @@global.max_delayed_threads = -1024; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +0 +SET @@global.max_delayed_threads = -1; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +0 +SET @@global.max_delayed_threads = 16385; +Warnings: +Warning 1292 Truncated incorrect max_delayed_threads value: '16385' +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +16384 +SET @@global.max_delayed_threads = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +16384 +SET @@global.max_delayed_threads = test; +ERROR 42000: Incorrect argument type to variable 'max_delayed_threads' +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +16384 +SET @@session.max_delayed_threads = 16385; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '16385' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +16383 +SET @@session.max_delayed_threads = -1; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '-1' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +16383 +SET @@session.max_delayed_threads = -2; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '-2' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +16383 +SET @@session.max_delayed_threads = 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.max_delayed_threads = 10737418241; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '10737418241' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +16383 +SET @@session.max_delayed_threads = test; +ERROR 42000: Incorrect argument type to variable 'max_delayed_threads' +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +16383 +'#------------------FN_DYNVARS_075_06-----------------------#' +SELECT @@global.max_delayed_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_delayed_threads'; +@@global.max_delayed_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_075_07-----------------------#' +SELECT @@session.max_delayed_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_delayed_threads'; +@@session.max_delayed_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_075_08-----------------------#' +SET @@global.max_delayed_threads = TRUE; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +1 +SET @@global.max_delayed_threads = FALSE; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.max_delayed_threads = 2048; +SELECT @@max_delayed_threads = @@global.max_delayed_threads; +@@max_delayed_threads = @@global.max_delayed_threads +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@max_delayed_threads = 100000; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '100000' +SELECT @@max_delayed_threads = @@local.max_delayed_threads; +@@max_delayed_threads = @@local.max_delayed_threads +1 +SELECT @@local.max_delayed_threads = @@session.max_delayed_threads; +@@local.max_delayed_threads = @@session.max_delayed_threads +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET max_delayed_threads = 1024; +ERROR 42000: Variable 'max_delayed_threads' can't be set to the value of '1024' +SELECT @@max_delayed_threads; +@@max_delayed_threads +16383 +SELECT local.max_delayed_threads; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_delayed_threads; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_delayed_threads = @@session.max_delayed_threads; +ERROR 42S22: Unknown column 'max_delayed_threads' in 'field list' +SET @@global.max_delayed_threads = @start_global_value; +SELECT @@global.max_delayed_threads; +@@global.max_delayed_threads +20 +SET @@session.max_delayed_threads = @start_session_value; +SELECT @@session.max_delayed_threads; +@@session.max_delayed_threads +20 diff --git a/mysql-test/r/max_error_count_basic.result b/mysql-test/r/max_error_count_basic.result new file mode 100644 index 00000000000..2046a5e9dfa --- /dev/null +++ b/mysql-test/r/max_error_count_basic.result @@ -0,0 +1,173 @@ +SET @start_global_value = @@global.max_error_count; +SELECT @start_global_value; +@start_global_value +64 +SET @start_session_value = @@session.max_error_count; +SELECT @start_session_value; +@start_session_value +64 +'#--------------------FN_DYNVARS_076_01-------------------------#' +SET @@global.max_error_count = 1000; +SET @@global.max_error_count = DEFAULT; +SELECT @@global.max_error_count; +@@global.max_error_count +64 +SET @@session.max_error_count = 20000; +SET @@session.max_error_count = DEFAULT; +SELECT @@session.max_error_count; +@@session.max_error_count +64 +'#--------------------FN_DYNVARS_076_02-------------------------#' +SET @@global.max_error_count = DEFAULT; +SELECT @@global.max_error_count = 64; +@@global.max_error_count = 64 +1 +SET @@session.max_error_count = DEFAULT; +SELECT @@session.max_error_count = 64; +@@session.max_error_count = 64 +1 +'#--------------------FN_DYNVARS_076_03-------------------------#' +SET @@global.max_error_count = 1; +SELECT @@global.max_error_count; +@@global.max_error_count +1 +SET @@global.max_error_count = 0; +SELECT @@global.max_error_count; +@@global.max_error_count +0 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.max_error_count = 65535; +SELECT @@global.max_error_count; +@@global.max_error_count +65535 +SET @@global.max_error_count = 65534; +SELECT @@global.max_error_count; +@@global.max_error_count +65534 +'#--------------------FN_DYNVARS_076_04-------------------------#' +SET @@session.max_error_count = 0; +SELECT @@session.max_error_count; +@@session.max_error_count +0 +SET @@session.max_error_count = 1; +SELECT @@session.max_error_count; +@@session.max_error_count +1 +SET @@session.max_error_count = 65535; +SELECT @@session.max_error_count; +@@session.max_error_count +65535 +SET @@session.max_error_count = 65534; +SELECT @@session.max_error_count; +@@session.max_error_count +65534 +'#------------------FN_DYNVARS_076_05-----------------------#' +SET @@global.max_error_count = -1; +SELECT @@global.max_error_count; +@@global.max_error_count +0 +SET @@global.max_error_count = -1024; +SELECT @@global.max_error_count; +@@global.max_error_count +0 +SET @@global.max_error_count = 65536; +Warnings: +Warning 1292 Truncated incorrect max_error_count value: '65536' +SELECT @@global.max_error_count; +@@global.max_error_count +65535 +SET @@global.max_error_count = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_error_count value: '10737418241' +SELECT @@global.max_error_count; +@@global.max_error_count +65535 +SET @@global.max_error_count = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_error_count; +@@global.max_error_count +65535 +SET @@global.max_error_count = test; +ERROR 42000: Incorrect argument type to variable 'max_error_count' +SELECT @@global.max_error_count; +@@global.max_error_count +65535 +SET @@session.max_error_count = -1; +SELECT @@session.max_error_count; +@@session.max_error_count +0 +SET @@session.max_error_count = 65536; +Warnings: +SELECT @@session.max_error_count; +@@session.max_error_count +65535 +SET @@session.max_error_count = -2; +SELECT @@session.max_error_count; +@@session.max_error_count +0 +SET @@session.max_error_count = 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.max_error_count = 10737418241; +Warnings: +SELECT @@session.max_error_count; +@@session.max_error_count +65535 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.max_error_count = test; +ERROR 42000: Incorrect argument type to variable 'max_error_count' +SELECT @@session.max_error_count; +@@session.max_error_count +65535 +'#------------------FN_DYNVARS_076_06-----------------------#' +SELECT @@global.max_error_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_error_count'; +@@global.max_error_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_076_07-----------------------#' +SELECT @@session.max_error_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_error_count'; +@@session.max_error_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_076_08-----------------------#' +SET @@global.max_error_count = TRUE; +SELECT @@global.max_error_count; +@@global.max_error_count +1 +SET @@global.max_error_count = FALSE; +SELECT @@global.max_error_count; +@@global.max_error_count +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.max_error_count = 2048; +SELECT @@max_error_count = @@global.max_error_count; +@@max_error_count = @@global.max_error_count +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@max_error_count = 60000; +SELECT @@max_error_count = @@local.max_error_count; +@@max_error_count = @@local.max_error_count +1 +SELECT @@local.max_error_count = @@session.max_error_count; +@@local.max_error_count = @@session.max_error_count +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET max_error_count = 1024; +SELECT @@max_error_count; +@@max_error_count +1024 +SELECT local.max_error_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_error_count; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_error_count = @@session.max_error_count; +ERROR 42S22: Unknown column 'max_error_count' in 'field list' +SET @@global.max_error_count = @start_global_value; +SELECT @@global.max_error_count; +@@global.max_error_count +64 +SET @@session.max_error_count = @start_session_value; +SELECT @@session.max_error_count; +@@session.max_error_count +64 diff --git a/mysql-test/r/max_insert_delayed_threads_basic.result b/mysql-test/r/max_insert_delayed_threads_basic.result new file mode 100644 index 00000000000..31c1fcec396 --- /dev/null +++ b/mysql-test/r/max_insert_delayed_threads_basic.result @@ -0,0 +1,184 @@ +SET @start_global_value = @@global.max_insert_delayed_threads; +SELECT @start_global_value; +@start_global_value +20 +SET @start_session_value = @@session.max_insert_delayed_threads; +SELECT @start_session_value; +@start_session_value +20 +'#--------------------FN_DYNVARS_078_01-------------------------#' +SET @@global.max_insert_delayed_threads = 1000; +SET @@global.max_insert_delayed_threads = DEFAULT; +ERROR 42000: Variable 'max_insert_delayed_threads' doesn't have a default value +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +1000 +SET @@session.max_insert_delayed_threads = 1000; +SET @@session.max_insert_delayed_threads = DEFAULT; +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +1000 +'#--------------------FN_DYNVARS_078_02-------------------------#' +SET @@global.max_insert_delayed_threads = DEFAULT; +ERROR 42000: Variable 'max_insert_delayed_threads' doesn't have a default value +SELECT @@global.max_insert_delayed_threads = 20; +@@global.max_insert_delayed_threads = 20 +0 +SET @@session.max_insert_delayed_threads = DEFAULT; +SELECT @@session.max_insert_delayed_threads = 20; +@@session.max_insert_delayed_threads = 20 +0 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_078_03-------------------------#' +SET @@global.max_insert_delayed_threads = 1; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +1 +SET @@global.max_insert_delayed_threads = 1025; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +1025 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.max_insert_delayed_threads = 0; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +0 +SET @@global.max_insert_delayed_threads = 16384; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +16384 +SET @@global.max_insert_delayed_threads = 16383; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +16383 +'#--------------------FN_DYNVARS_078_04-------------------------#' +SET @@session.max_insert_delayed_threads = 1; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +1000 +SET @@session.max_insert_delayed_threads = 1025; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1025' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +1000 +SET @@session.max_insert_delayed_threads = 0; +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +0 +SET @@session.max_insert_delayed_threads = 16384; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '16384' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +0 +SET @@session.max_insert_delayed_threads = 16383; +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +16383 +'#------------------FN_DYNVARS_078_05-----------------------#' +SET @@global.max_insert_delayed_threads = -1024; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +0 +SET @@global.max_insert_delayed_threads = -1; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +0 +SET @@global.max_insert_delayed_threads = 16385; +Warnings: +Warning 1292 Truncated incorrect max_insert_delayed_threads value: '16385' +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +16384 +SET @@global.max_insert_delayed_threads = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +16384 +SET @@global.max_insert_delayed_threads = test; +ERROR 42000: Incorrect argument type to variable 'max_insert_delayed_threads' +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +16384 +SET @@session.max_insert_delayed_threads = 16385; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '16385' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +16383 +SET @@session.max_insert_delayed_threads = -1; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '-1' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +16383 +SET @@session.max_insert_delayed_threads = -2; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '-2' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +16383 +SET @@session.max_insert_delayed_threads = 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.max_insert_delayed_threads = 10737418241; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '10737418241' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +16383 +SET @@session.max_insert_delayed_threads = test; +ERROR 42000: Incorrect argument type to variable 'max_insert_delayed_threads' +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +16383 +'#------------------FN_DYNVARS_078_06-----------------------#' +SELECT @@global.max_insert_delayed_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_insert_delayed_threads'; +@@global.max_insert_delayed_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_078_07-----------------------#' +SELECT @@session.max_insert_delayed_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_insert_delayed_threads'; +@@session.max_insert_delayed_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_078_08-----------------------#' +SET @@global.max_insert_delayed_threads = TRUE; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +1 +SET @@global.max_insert_delayed_threads = FALSE; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +0 +'#---------------------FN_DYNVARS_078_09----------------------#' +SET @@global.max_insert_delayed_threads = 2048; +SELECT @@max_insert_delayed_threads = @@global.max_insert_delayed_threads; +@@max_insert_delayed_threads = @@global.max_insert_delayed_threads +0 +'#---------------------FN_DYNVARS_078_10----------------------#' +SET @@max_insert_delayed_threads = 100000; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '100000' +SELECT @@max_insert_delayed_threads = @@local.max_insert_delayed_threads; +@@max_insert_delayed_threads = @@local.max_insert_delayed_threads +1 +SELECT @@local.max_insert_delayed_threads = @@session.max_insert_delayed_threads; +@@local.max_insert_delayed_threads = @@session.max_insert_delayed_threads +1 +'#---------------------FN_DYNVARS_078_11----------------------#' +SET max_insert_delayed_threads = 1024; +ERROR 42000: Variable 'max_insert_delayed_threads' can't be set to the value of '1024' +SELECT @@max_insert_delayed_threads; +@@max_insert_delayed_threads +16383 +SELECT local.max_insert_delayed_threads; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_insert_delayed_threads; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_insert_delayed_threads = @@session.max_insert_delayed_threads; +ERROR 42S22: Unknown column 'max_insert_delayed_threads' in 'field list' +SET @@global.max_insert_delayed_threads = @start_global_value; +SELECT @@global.max_insert_delayed_threads; +@@global.max_insert_delayed_threads +20 +SET @@session.max_insert_delayed_threads = @start_session_value; +SELECT @@session.max_insert_delayed_threads; +@@session.max_insert_delayed_threads +20 diff --git a/mysql-test/r/max_join_size_func.result b/mysql-test/r/max_join_size_func.result new file mode 100644 index 00000000000..bf535579433 --- /dev/null +++ b/mysql-test/r/max_join_size_func.result @@ -0,0 +1,61 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +## Creating another table t2 ## +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +## Inserting records in both the tables ## +INSERT INTO t1(name) VALUES('Record_1'); +INSERT INTO t1(name) VALUES('Record_2'); +INSERT INTO t1(name) VALUES('Record_3'); +INSERT INTO t1(name) VALUES('Record_4'); +INSERT INTO t1(name) VALUES('Record_5'); +INSERT INTO t2(name) VALUES('Record_1_1'); +INSERT INTO t2(name) VALUES('Record_2_1'); +INSERT INTO t2(name) VALUES('Record_3_1'); +INSERT INTO t2(name) VALUES('Record_4_1'); +INSERT INTO t2(name) VALUES('Record_5_1'); +'#--------------------FN_DYNVARS_079_01-------------------------#' +## Setting max_join size value to 10 ## +SET @@session.max_join_size=10; +## This should work ## +SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id; +id name id name +1 Record_1 1 Record_1_1 +2 Record_2 2 Record_2_1 +3 Record_3 3 Record_3_1 +4 Record_4 4 Record_4_1 +5 Record_5 5 Record_5_1 +'#--------------------FN_DYNVARS_079_02-------------------------#' +## Creating new connection test_con1 ## +## Setting value of max_join_size ## +SET @@session.max_join_size=8; +## Since total joins are more than max_join_size value so error will occur ## +SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id; +ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay +'#--------------------FN_DYNVARS_079_03-------------------------#' +## Setting global value of variable ## +SET @@global.max_join_size=8; +## Creating and switching to new connection test_con2 ## +## Verifying value of max_join_size ## +SELECT @@global.max_join_size; +@@global.max_join_size +8 +## Since total joins are more than max_join_size value so error will occur ## +SELECT * FROM t1 INNER JOIN t2 ON t1.id = t2.id; +ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay +## Dropping both the tables ## +Drop table t1, t2; +## Restoring values ## +SET @@global.max_join_size = DEFAULT; +SET @@session.max_join_size = DEFAULT; +## Dropping connections ## diff --git a/mysql-test/r/max_length_for_sort_data_basic.result b/mysql-test/r/max_length_for_sort_data_basic.result new file mode 100644 index 00000000000..3edd3e86262 --- /dev/null +++ b/mysql-test/r/max_length_for_sort_data_basic.result @@ -0,0 +1,199 @@ +SET @start_global_value = @@global.max_length_for_sort_data; +SELECT @start_global_value; +@start_global_value +1024 +SET @start_session_value = @@session.max_length_for_sort_data; +SELECT @start_session_value; +@start_session_value +1024 +'#--------------------FN_DYNVARS_080_01-------------------------#' +SET @@global.max_length_for_sort_data = 1000; +SET @@global.max_length_for_sort_data = DEFAULT; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +1024 +SET @@session.max_length_for_sort_data = 1000; +SET @@session.max_length_for_sort_data = DEFAULT; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +1024 +'#--------------------FN_DYNVARS_080_02-------------------------#' +SET @@global.max_length_for_sort_data = DEFAULT; +SELECT @@global.max_length_for_sort_data = 1024; +@@global.max_length_for_sort_data = 1024 +1 +SET @@session.max_length_for_sort_data = DEFAULT; +SELECT @@session.max_length_for_sort_data = 1024; +@@session.max_length_for_sort_data = 1024 +1 +'#--------------------FN_DYNVARS_080_03-------------------------#' +SET @@global.max_length_for_sort_data = 4; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@global.max_length_for_sort_data = 5; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +5 +SET @@global.max_length_for_sort_data = 8388608; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +8388608 +SET @@global.max_length_for_sort_data = 8388607; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +8388607 +SET @@global.max_length_for_sort_data = 65536; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +65536 +'#--------------------FN_DYNVARS_080_04-------------------------#' +SET @@session.max_length_for_sort_data = 4; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +4 +SET @@session.max_length_for_sort_data = 5; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +5 +SET @@session.max_length_for_sort_data = 8388608; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +8388608 +SET @@session.max_length_for_sort_data = 8388607; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +8388607 +SET @@session.max_length_for_sort_data = 65536; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +65536 +'#------------------FN_DYNVARS_080_05-----------------------#' +SET @@global.max_length_for_sort_data = -1024; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '0' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@global.max_length_for_sort_data = 3; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '3' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@global.max_length_for_sort_data = 8388609; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '8388609' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +8388608 +SET @@global.max_length_for_sort_data = 0; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '0' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@global.max_length_for_sort_data = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@global.max_length_for_sort_data = test; +ERROR 42000: Incorrect argument type to variable 'max_length_for_sort_data' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@session.max_length_for_sort_data = 8388610; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '8388610' +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +8388608 +SET @@session.max_length_for_sort_data = -1; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '0' +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +4 +SET @@session.max_length_for_sort_data = 3; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '3' +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +4 +SET @@session.max_length_for_sort_data = 0; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '0' +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +4 +SET @@session.max_length_for_sort_data = 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.max_length_for_sort_data = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '10737418241' +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +8388608 +SET @@session.max_length_for_sort_data = test; +ERROR 42000: Incorrect argument type to variable 'max_length_for_sort_data' +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +8388608 +'#------------------FN_DYNVARS_080_06-----------------------#' +SELECT @@global.max_length_for_sort_data = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_length_for_sort_data'; +@@global.max_length_for_sort_data = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_080_07-----------------------#' +SELECT @@session.max_length_for_sort_data = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_length_for_sort_data'; +@@session.max_length_for_sort_data = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_080_08-----------------------#' +SET @@global.max_length_for_sort_data = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '1' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +SET @@global.max_length_for_sort_data = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_length_for_sort_data value: '0' +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +4 +'#---------------------FN_DYNVARS_080_09----------------------#' +SET @@global.max_length_for_sort_data = 2048; +SELECT @@max_length_for_sort_data = @@global.max_length_for_sort_data; +@@max_length_for_sort_data = @@global.max_length_for_sort_data +0 +'#---------------------FN_DYNVARS_080_10----------------------#' +SET @@max_length_for_sort_data = 100000; +SELECT @@max_length_for_sort_data = @@local.max_length_for_sort_data; +@@max_length_for_sort_data = @@local.max_length_for_sort_data +1 +SELECT @@local.max_length_for_sort_data = @@session.max_length_for_sort_data; +@@local.max_length_for_sort_data = @@session.max_length_for_sort_data +1 +'#---------------------FN_DYNVARS_080_11----------------------#' +SET max_length_for_sort_data = 1024; +SELECT @@max_length_for_sort_data; +@@max_length_for_sort_data +1024 +SELECT local.max_length_for_sort_data; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_length_for_sort_data; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_length_for_sort_data = @@session.max_length_for_sort_data; +ERROR 42S22: Unknown column 'max_length_for_sort_data' in 'field list' +SET @@global.max_length_for_sort_data = @start_global_value; +SELECT @@global.max_length_for_sort_data; +@@global.max_length_for_sort_data +1024 +SET @@session.max_length_for_sort_data = @start_session_value; +SELECT @@session.max_length_for_sort_data; +@@session.max_length_for_sort_data +1024 diff --git a/mysql-test/r/max_prepared_stmt_count_basic.result b/mysql-test/r/max_prepared_stmt_count_basic.result new file mode 100644 index 00000000000..ebc7da8c7f8 --- /dev/null +++ b/mysql-test/r/max_prepared_stmt_count_basic.result @@ -0,0 +1,129 @@ +SET @start_value = @@global.max_prepared_stmt_count; +SELECT @start_value; +@start_value +16382 +'#--------------------FN_DYNVARS_081_01------------------------#' +SET @@global.max_prepared_stmt_count = 5000; +SET @@global.max_prepared_stmt_count = DEFAULT; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +16382 +'#---------------------FN_DYNVARS_081_02-------------------------#' +SET @@global.max_prepared_stmt_count = @start_value; +SELECT @@global.max_prepared_stmt_count = 16382; +@@global.max_prepared_stmt_count = 16382 +1 +'#--------------------FN_DYNVARS_081_03------------------------#' +SET @@global.max_prepared_stmt_count = 0; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +0 +SET @@global.max_prepared_stmt_count = 1; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1 +SET @@global.max_prepared_stmt_count = 1048576; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +SET @@global.max_prepared_stmt_count = 1048575; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048575 +SET @@global.max_prepared_stmt_count = 65535; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +65535 +'#--------------------FN_DYNVARS_081_04-------------------------#' +SET @@global.max_prepared_stmt_count = -1; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +0 +SET @@global.max_prepared_stmt_count = 100000000000; +Warnings: +Warning 1292 Truncated incorrect max_prepared_stmt_count value: '100000000000' +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +SET @@global.max_prepared_stmt_count = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_prepared_stmt_count' +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +SET @@global.max_prepared_stmt_count = -1024; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +0 +SET @@global.max_prepared_stmt_count = 1048577; +Warnings: +Warning 1292 Truncated incorrect max_prepared_stmt_count value: '1048577' +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +SET @@global.max_prepared_stmt_count = 104857612; +Warnings: +Warning 1292 Truncated incorrect max_prepared_stmt_count value: '104857612' +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_prepared_stmt_count = ON; +ERROR 42000: Incorrect argument type to variable 'max_prepared_stmt_count' +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +SET @@global.max_prepared_stmt_count = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_prepared_stmt_count' +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1048576 +'#-------------------FN_DYNVARS_081_05----------------------------#' +SET @@session.max_prepared_stmt_count = 4096; +ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_prepared_stmt_count; +ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable +'#----------------------FN_DYNVARS_081_06------------------------#' +SELECT @@global.max_prepared_stmt_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_prepared_stmt_count'; +@@global.max_prepared_stmt_count = VARIABLE_VALUE +1 +SELECT @@max_prepared_stmt_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_prepared_stmt_count'; +@@max_prepared_stmt_count = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_081_07----------------------#' +SET @@global.max_prepared_stmt_count = TRUE; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +1 +SET @@global.max_prepared_stmt_count = FALSE; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +0 +'#---------------------FN_DYNVARS_081_08----------------------#' +SET @@global.max_prepared_stmt_count = 5000; +SELECT @@max_prepared_stmt_count = @@global.max_prepared_stmt_count; +@@max_prepared_stmt_count = @@global.max_prepared_stmt_count +1 +'#---------------------FN_DYNVARS_081_09----------------------#' +SET max_prepared_stmt_count = 6000; +ERROR HY000: Variable 'max_prepared_stmt_count' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_prepared_stmt_count; +@@max_prepared_stmt_count +5000 +SET local.max_prepared_stmt_count = 7000; +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 'max_prepared_stmt_count = 7000' at line 1 +SELECT local.max_prepared_stmt_count; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_prepared_stmt_count = 8000; +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 'max_prepared_stmt_count = 8000' at line 1 +SELECT global.max_prepared_stmt_count; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_prepared_stmt_count = @@session.max_prepared_stmt_count; +ERROR 42S22: Unknown column 'max_prepared_stmt_count' in 'field list' +SET @@global.max_prepared_stmt_count = @start_value; +SELECT @@global.max_prepared_stmt_count; +@@global.max_prepared_stmt_count +16382 diff --git a/mysql-test/r/max_prepared_stmt_count_func.result b/mysql-test/r/max_prepared_stmt_count_func.result new file mode 100644 index 00000000000..94ab5437e81 --- /dev/null +++ b/mysql-test/r/max_prepared_stmt_count_func.result @@ -0,0 +1,81 @@ +** Setup ** + +SET @global_max_prepared_stmt_count = @@global.max_prepared_stmt_count; +'#---------------------FN_DYNVARS_031_01----------------------#' +SET GLOBAL max_prepared_stmt_count=2; +** Prepare statements ** +PREPARE stmt from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt1 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt2 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 2) +Expected error "Max prepared statements count reached" +SHOW STATUS like 'Prepared_stmt_count'; +Variable_name Value +Prepared_stmt_count 2 +2 Expected +'#---------------------FN_DYNVARS_031_02----------------------#' +SET GLOBAL max_prepared_stmt_count=0; +PREPARE stmt3 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0) +Expected error "Max prepared statements count reached" +SHOW STATUS like 'Prepared_stmt_count'; +Variable_name Value +Prepared_stmt_count 2 +2 Expected +PREPARE stmt from "SELECT * FROM information_schema.CHARACTER_SETS C"; +ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 0) +Expected error "Max prepared statements count reached" +SHOW STATUS like 'Prepared_stmt_count'; +Variable_name Value +Prepared_stmt_count 1 +2 Expected +'Bug#35389 A pre existing valid prepared statement DROPS if a PREPARE' +'STATEMENT command is issued with the same name that' +'causes ER_MAX_PREPARED_STMT_COUNT_REACHED error' +'#---------------------FN_DYNVARS_031_03----------------------#' +SHOW STATUS like 'Prepared_stmt_count'; +Variable_name Value +Prepared_stmt_count 1 +SET GLOBAL max_prepared_stmt_count=4; +PREPARE stmt from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt1 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt2 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt3 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +** Value of prepared stmt' +SHOW STATUS LIKE 'Prepared_stmt_count'; +Variable_name Value +Prepared_stmt_count 4 +4 Expected +'#---------------------FN_DYNVARS_031_04----------------------#' +** preparing stmts ** +PREPARE stmt from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt1 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +PREPARE stmt2 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +** setting value ** +SET GLOBAL max_prepared_stmt_count=3; +** Check wether any more statements can be prepared ** +PREPARE stmt5 from "SELECT * FROM information_schema.CHARACTER_SETS C"; +ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 3) +Expected error "Max prepared statements count reached" +SHOW STATUS LIKE 'Prepared_stmt_count'; +Variable_name Value +Prepared_stmt_count 4 +4 Expected +'#---------------------FN_DYNVARS_031_05----------------------#' +SET GLOBAL max_prepared_stmt_count=3; +** Creating procedure ** +DROP PROCEDURE IF EXISTS sp_checkstmts; +Warnings: +Note 1305 PROCEDURE sp_checkstmts does not exist +CREATE PROCEDURE sp_checkstmts () +BEGIN +PREPARE newstmt from "SELECT * FROM information_schema.CHARACTER_SETS C"; +END // +CALL sp_checkstmts(); +ERROR 42000: Can't create more than max_prepared_stmt_count statements (current value: 3) +Expected error "Max prepared statements count reached" +DROP PREPARE stmt; +DROP PREPARE stmt1; +DROP PREPARE stmt2; +DROP PREPARE stmt3; +SET @@global.max_prepared_stmt_count = @global_max_prepared_stmt_count; diff --git a/mysql-test/r/max_relay_log_size_basic.result b/mysql-test/r/max_relay_log_size_basic.result new file mode 100644 index 00000000000..c0042f497ad --- /dev/null +++ b/mysql-test/r/max_relay_log_size_basic.result @@ -0,0 +1,131 @@ +SET @start_value = @@global.max_relay_log_size; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_082_01------------------------#' +SET @@global.max_relay_log_size = 5000; +SET @@global.max_relay_log_size = DEFAULT; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +'#---------------------FN_DYNVARS_082_02-------------------------#' +SET @@global.max_relay_log_size = @start_value; +SELECT @@global.max_relay_log_size = 1024; +@@global.max_relay_log_size = 1024 +0 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_082_03------------------------#' +SET @@global.max_relay_log_size = 0; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +SET @@global.max_relay_log_size = 1; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +SET @@global.max_relay_log_size = 1073741824; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +SET @@global.max_relay_log_size = 1073741823; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073737728 +SET @@global.max_relay_log_size = 65535; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +61440 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_082_04-------------------------#' +SET @@global.max_relay_log_size = -1; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +SET @@global.max_relay_log_size = 100000000000; +Warnings: +Warning 1292 Truncated incorrect max_relay_log_size value: '100000000000' +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +SET @@global.max_relay_log_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_relay_log_size' +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +SET @@global.max_relay_log_size = -1024; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +SET @@global.max_relay_log_size = 1073741825; +Warnings: +Warning 1292 Truncated incorrect max_relay_log_size value: '1073741825' +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +SET @@global.max_relay_log_size = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_relay_log_size value: '10737418241' +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_relay_log_size = ON; +ERROR 42000: Incorrect argument type to variable 'max_relay_log_size' +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +SET @@global.max_relay_log_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_relay_log_size' +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +1073741824 +'#-------------------FN_DYNVARS_082_05----------------------------#' +SET @@session.max_relay_log_size = 4096; +ERROR HY000: Variable 'max_relay_log_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_relay_log_size; +ERROR HY000: Variable 'max_relay_log_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_082_06------------------------#' +SELECT @@global.max_relay_log_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_relay_log_size'; +@@global.max_relay_log_size = VARIABLE_VALUE +1 +SELECT @@max_relay_log_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_relay_log_size'; +@@max_relay_log_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_082_07----------------------#' +SET @@global.max_relay_log_size = TRUE; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +SET @@global.max_relay_log_size = FALSE; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 +'#---------------------FN_DYNVARS_082_08----------------------#' +SET @@global.max_relay_log_size = 5000; +SELECT @@max_relay_log_size = @@global.max_relay_log_size; +@@max_relay_log_size = @@global.max_relay_log_size +1 +'#---------------------FN_DYNVARS_082_09----------------------#' +SET max_relay_log_size = 6000; +ERROR HY000: Variable 'max_relay_log_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_relay_log_size; +@@max_relay_log_size +4096 +SET local.max_relay_log_size = 7000; +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 'max_relay_log_size = 7000' at line 1 +SELECT local.max_relay_log_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_relay_log_size = 8000; +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 'max_relay_log_size = 8000' at line 1 +SELECT global.max_relay_log_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_relay_log_size = @@session.max_relay_log_size; +ERROR 42S22: Unknown column 'max_relay_log_size' in 'field list' +SET @@global.max_relay_log_size = @start_value; +SELECT @@global.max_relay_log_size; +@@global.max_relay_log_size +0 diff --git a/mysql-test/r/max_seeks_for_key_func.result b/mysql-test/r/max_seeks_for_key_func.result new file mode 100644 index 00000000000..b4c863af17b --- /dev/null +++ b/mysql-test/r/max_seeks_for_key_func.result @@ -0,0 +1,75 @@ +drop table if exists t1; +CREATE TABLE t1 +(a int auto_increment primary key, +b char(20) +); +'#--------------------FN_DYNVARS_084_01-------------------------#' +SELECT @@global.max_seeks_for_key = 10; +@@global.max_seeks_for_key = 10 +0 +SELECT @@session.max_seeks_for_key = 10; +@@session.max_seeks_for_key = 10 +0 +SET @@global.max_seeks_for_key = 20; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +20 +INSERT into t1(b) values("AREc"); +explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 system NULL NULL NULL NULL 1 +1 SIMPLE t2 system NULL NULL NULL NULL 1 +SET @@session.max_seeks_for_key = 2; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +2 +INSERT into t1(b) values("BREc"); +INSERT into t1(b) values("CRec"); +explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 +1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Using join buffer +'#--------------------FN_DYNVARS_084_02-------------------------#' +SELECT @@global.max_seeks_for_key = 10; +@@global.max_seeks_for_key = 10 +0 +SELECT @@session.max_seeks_for_key = 10; +@@session.max_seeks_for_key = 10 +0 +SET @@global.max_seeks_for_key = 20; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +20 +INSERT into t1(b) values("AREc"); +explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 4 +1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where; Using join buffer +SET @@session.max_seeks_for_key = 2; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +2 +INSERT into t1(b) values("BREc"); +INSERT into t1(b) values("CRec"); +explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 6 +1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer +INSERT INTO t1 values(null,"test"); +INSERT INTO t1 VALUES (null,"a"),(null,"a"),(null,"a"), +(null,"a"),(null,"a"),(null,"a"),(null,"a"), +(null,"a"),(null,"a"),(null,"a"); +explain SELECT STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 17 +1 SIMPLE t2 ALL NULL NULL NULL NULL 17 Using where; Using join buffer +analyze table t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +SET MAX_SEEKS_FOR_KEY=1; +explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 17 +1 SIMPLE t2 ALL NULL NULL NULL NULL 17 Using where; Using join buffer +SET MAX_SEEKS_FOR_KEY=DEFAULT; +drop table t1; diff --git a/mysql-test/r/max_sort_length_basic.result b/mysql-test/r/max_sort_length_basic.result new file mode 100644 index 00000000000..73dd31ea4e7 --- /dev/null +++ b/mysql-test/r/max_sort_length_basic.result @@ -0,0 +1,199 @@ +SET @start_global_value = @@global.max_sort_length; +SELECT @start_global_value; +@start_global_value +1024 +SET @start_session_value = @@session.max_sort_length; +SELECT @start_session_value; +@start_session_value +1024 +'#--------------------FN_DYNVARS_084_01-------------------------#' +SET @@global.max_sort_length = 1000; +SET @@global.max_sort_length = DEFAULT; +SELECT @@global.max_sort_length; +@@global.max_sort_length +1024 +SET @@session.max_sort_length = 1000; +SET @@session.max_sort_length = DEFAULT; +SELECT @@session.max_sort_length; +@@session.max_sort_length +1024 +'#--------------------FN_DYNVARS_084_02-------------------------#' +SET @@global.max_sort_length = DEFAULT; +SELECT @@global.max_sort_length = 1024; +@@global.max_sort_length = 1024 +1 +SET @@session.max_sort_length = DEFAULT; +SELECT @@session.max_sort_length = 1024; +@@session.max_sort_length = 1024 +1 +'#--------------------FN_DYNVARS_084_03-------------------------#' +SET @@global.max_sort_length = 4; +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@global.max_sort_length = 5; +SELECT @@global.max_sort_length; +@@global.max_sort_length +5 +SET @@global.max_sort_length = 8388608; +SELECT @@global.max_sort_length; +@@global.max_sort_length +8388608 +SET @@global.max_sort_length = 8388607; +SELECT @@global.max_sort_length; +@@global.max_sort_length +8388607 +SET @@global.max_sort_length = 65536; +SELECT @@global.max_sort_length; +@@global.max_sort_length +65536 +'#--------------------FN_DYNVARS_084_04-------------------------#' +SET @@session.max_sort_length = 4; +SELECT @@session.max_sort_length; +@@session.max_sort_length +4 +SET @@session.max_sort_length = 5; +SELECT @@session.max_sort_length; +@@session.max_sort_length +5 +SET @@session.max_sort_length = 8388608; +SELECT @@session.max_sort_length; +@@session.max_sort_length +8388608 +SET @@session.max_sort_length = 8388607; +SELECT @@session.max_sort_length; +@@session.max_sort_length +8388607 +SET @@session.max_sort_length = 65536; +SELECT @@session.max_sort_length; +@@session.max_sort_length +65536 +'#------------------FN_DYNVARS_084_05-----------------------#' +SET @@global.max_sort_length = -1024; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '0' +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@global.max_sort_length = 3; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '3' +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@global.max_sort_length = 8388609; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '8388609' +SELECT @@global.max_sort_length; +@@global.max_sort_length +8388608 +SET @@global.max_sort_length = 0; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '0' +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@global.max_sort_length = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@global.max_sort_length = test; +ERROR 42000: Incorrect argument type to variable 'max_sort_length' +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@session.max_sort_length = 8388610; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '8388610' +SELECT @@session.max_sort_length; +@@session.max_sort_length +8388608 +SET @@session.max_sort_length = -1; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '0' +SELECT @@session.max_sort_length; +@@session.max_sort_length +4 +SET @@session.max_sort_length = 3; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '3' +SELECT @@session.max_sort_length; +@@session.max_sort_length +4 +SET @@session.max_sort_length = 0; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '0' +SELECT @@session.max_sort_length; +@@session.max_sort_length +4 +SET @@session.max_sort_length = 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.max_sort_length = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '10737418241' +SELECT @@session.max_sort_length; +@@session.max_sort_length +8388608 +SET @@session.max_sort_length = test; +ERROR 42000: Incorrect argument type to variable 'max_sort_length' +SELECT @@session.max_sort_length; +@@session.max_sort_length +8388608 +'#------------------FN_DYNVARS_084_06-----------------------#' +SELECT @@global.max_sort_length = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_sort_length'; +@@global.max_sort_length = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_084_07-----------------------#' +SELECT @@session.max_sort_length = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_sort_length'; +@@session.max_sort_length = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_084_08-----------------------#' +SET @@global.max_sort_length = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '1' +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +SET @@global.max_sort_length = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_sort_length value: '0' +SELECT @@global.max_sort_length; +@@global.max_sort_length +4 +'#---------------------FN_DYNVARS_084_09----------------------#' +SET @@global.max_sort_length = 2048; +SELECT @@max_sort_length = @@global.max_sort_length; +@@max_sort_length = @@global.max_sort_length +0 +'#---------------------FN_DYNVARS_084_10----------------------#' +SET @@max_sort_length = 100000; +SELECT @@max_sort_length = @@local.max_sort_length; +@@max_sort_length = @@local.max_sort_length +1 +SELECT @@local.max_sort_length = @@session.max_sort_length; +@@local.max_sort_length = @@session.max_sort_length +1 +'#---------------------FN_DYNVARS_084_11----------------------#' +SET max_sort_length = 1024; +SELECT @@max_sort_length; +@@max_sort_length +1024 +SELECT local.max_sort_length; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_sort_length; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_sort_length = @@session.max_sort_length; +ERROR 42S22: Unknown column 'max_sort_length' in 'field list' +SET @@global.max_sort_length = @start_global_value; +SELECT @@global.max_sort_length; +@@global.max_sort_length +1024 +SET @@session.max_sort_length = @start_session_value; +SELECT @@session.max_sort_length; +@@session.max_sort_length +1024 diff --git a/mysql-test/r/max_sort_length_func.result b/mysql-test/r/max_sort_length_func.result new file mode 100644 index 00000000000..04f5aa7f4f1 --- /dev/null +++ b/mysql-test/r/max_sort_length_func.result @@ -0,0 +1,298 @@ +SET @session_max_sort_length = @@Session.max_sort_length; +DROP TABLE IF EXISTS t; +** creating tables ** +CREATE TABLE t +( +id INT AUTO_INCREMENT PRIMARY KEY, +c TEXT(30) +); +CREATE TABLE t1 +( +id INT AUTO_INCREMENT PRIMARY KEY, +c BLOB(30) +); +CREATE TABLE t2 +( +id INT AUTO_INCREMENT PRIMARY KEY, +c TEXT(30) +); +'#--------------------FN_DYNVARS_098_01-------------------------#' +** Connecting test_con1 using username 'root' ** +** Connection test_con1 ** +SELECT @@global.max_sort_length = 10; +@@global.max_sort_length = 10 +0 +SELECT @@session.max_sort_length = 10; +@@session.max_sort_length = 10 +0 +** Setting value to 30 and inserting data ** +SET @@global.max_sort_length = 30; +SELECT @@global.max_sort_length; +@@global.max_sort_length +30 +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +SET @@session.max_sort_length = 29; +SELECT @@session.max_sort_length; +@@session.max_sort_length +29 +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +'#--------------------FN_DYNVARS_098_02-------------------------#' +** Connecting test_con2 using username 'root' ** +** Connection test_con2 ** +SET @@global.max_sort_length = 30; +SELECT @@global.max_sort_length; +@@global.max_sort_length +30 +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +SET @@session.max_sort_length = 20; +SELECT @@session.max_sort_length; +@@session.max_sort_length +20 +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Results should not be sorted ** +'#--------------------FN_DYNVARS_098_03-------------------------#' +SET max_sort_length=20; +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Results should not be sorted ** +RESET QUERY CACHE; +'#--------------------FN_DYNVARS_098_04-------------------------#' +SET max_sort_length=29; +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +'#--------------------FN_DYNVARS_098_05-------------------------#' +SET max_sort_length=30; +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +'#--------------------FN_DYNVARS_098_06-------------------------#' +SET max_sort_length=default; +SELECT c from t ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +'#--------------------FN_DYNVARS_098_07-------------------------#' +Testing type BLOB +SET @@global.max_sort_length = 30; +SELECT @@global.max_sort_length; +@@global.max_sort_length +30 +INSERT INTO t1 set c = repeat('x',29); +INSERT INTO t1 set c = concat(repeat('x',28),'r','x'); +INSERT INTO t1 set c = concat(repeat('x',28),'s','y'); +INSERT INTO t1 set c = concat(repeat('x',28),'g','w'); +SELECT c from t1 ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +** Results should be sorted ** +SET @@session.max_sort_length = 20; +SELECT @@session.max_sort_length; +@@session.max_sort_length +20 +INSERT INTO t1 set c = repeat('x',29); +INSERT INTO t1 set c = concat(repeat('x',28),'r','x'); +INSERT INTO t1 set c = concat(repeat('x',28),'s','y'); +INSERT INTO t1 set c = concat(repeat('x',28),'g','w'); +SELECT c from t1 ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Results should not be sorted ** +'#--------------------FN_DYNVARS_098_08-------------------------#' +Testing type CHAR +SET @@global.max_sort_length = 30; +SELECT @@global.max_sort_length; +@@global.max_sort_length +30 +INSERT INTO t2 set c = repeat('x',29); +INSERT INTO t2 set c = concat(repeat('x',28),'r','x'); +INSERT INTO t2 set c = concat(repeat('x',28),'s','y'); +INSERT INTO t2 set c = concat(repeat('x',28),'g','w'); +SELECT c from t2 ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Results should not be sorted ** +SET @@session.max_sort_length = 20; +SELECT @@session.max_sort_length; +@@session.max_sort_length +20 +INSERT INTO t2 set c = repeat('x',29); +INSERT INTO t2 set c = concat(repeat('x',28),'r','x'); +INSERT INTO t2 set c = concat(repeat('x',28),'s','y'); +INSERT INTO t2 set c = concat(repeat('x',28),'g','w'); +SELECT c from t2 ORDER BY c, id; +c +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Results should not be sorted ** +** Connection default ** +** Disconnecting test_con1, test_con2 ** +SET @@SESSION.max_sort_length = @session_max_sort_length; +DROP TABLE IF EXISTS t; +DROP TABLE IF EXISTS t1; +DROP TABLE IF EXISTS t2; diff --git a/mysql-test/r/max_sp_recursion_depth_basic.result b/mysql-test/r/max_sp_recursion_depth_basic.result new file mode 100644 index 00000000000..8c79f3c5fc7 --- /dev/null +++ b/mysql-test/r/max_sp_recursion_depth_basic.result @@ -0,0 +1,191 @@ +SET @start_global_value = @@global.max_sp_recursion_depth; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.max_sp_recursion_depth; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_085_01-------------------------#' +SET @@global.max_sp_recursion_depth = 1000; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '1000' +SET @@global.max_sp_recursion_depth = DEFAULT; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +0 +SET @@session.max_sp_recursion_depth = 1000; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '1000' +SET @@session.max_sp_recursion_depth = DEFAULT; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +0 +'#--------------------FN_DYNVARS_085_02-------------------------#' +SET @@global.max_sp_recursion_depth = DEFAULT; +SELECT @@global.max_sp_recursion_depth = 0; +@@global.max_sp_recursion_depth = 0 +1 +SET @@session.max_sp_recursion_depth = DEFAULT; +SELECT @@session.max_sp_recursion_depth = 0; +@@session.max_sp_recursion_depth = 0 +1 +'#--------------------FN_DYNVARS_085_03-------------------------#' +SET @@global.max_sp_recursion_depth = 0; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +0 +SET @@global.max_sp_recursion_depth = 1; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +1 +SET @@global.max_sp_recursion_depth = 254; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +254 +SET @@global.max_sp_recursion_depth = 255; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +255 +SET @@global.max_sp_recursion_depth = 150; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +150 +'#--------------------FN_DYNVARS_085_04-------------------------#' +SET @@session.max_sp_recursion_depth = 0; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +0 +SET @@session.max_sp_recursion_depth = 1; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +1 +SET @@session.max_sp_recursion_depth = 254; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +254 +SET @@session.max_sp_recursion_depth = 255; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +255 +SET @@session.max_sp_recursion_depth = 150; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +150 +'#------------------FN_DYNVARS_085_05-----------------------#' +SET @@global.max_sp_recursion_depth = -1024; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +0 +SET @@global.max_sp_recursion_depth = 256; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '256' +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +255 +SET @@global.max_sp_recursion_depth = -1; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +0 +SET @@global.max_sp_recursion_depth = 3000; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '3000' +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +255 +SET @@global.max_sp_recursion_depth = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +255 +SET @@global.max_sp_recursion_depth = test; +ERROR 42000: Incorrect argument type to variable 'max_sp_recursion_depth' +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +255 +SET @@session.max_sp_recursion_depth = 256; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '256' +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +255 +SET @@session.max_sp_recursion_depth = -1; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +0 +SET @@session.max_sp_recursion_depth = 500000; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '500000' +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +255 +SET @@session.max_sp_recursion_depth = -001; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +0 +SET @@session.max_sp_recursion_depth = 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.max_sp_recursion_depth = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_sp_recursion_depth value: '10737418241' +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +255 +SET @@session.max_sp_recursion_depth = test; +ERROR 42000: Incorrect argument type to variable 'max_sp_recursion_depth' +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +255 +'#------------------FN_DYNVARS_085_06-----------------------#' +SELECT @@global.max_sp_recursion_depth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_sp_recursion_depth'; +@@global.max_sp_recursion_depth = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_085_07-----------------------#' +SELECT @@session.max_sp_recursion_depth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_sp_recursion_depth'; +@@session.max_sp_recursion_depth = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_085_08-----------------------#' +SET @@global.max_sp_recursion_depth = TRUE; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +1 +SET @@global.max_sp_recursion_depth = FALSE; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +0 +'#---------------------FN_DYNVARS_085_09----------------------#' +SET @@global.max_sp_recursion_depth = 20; +SELECT @@max_sp_recursion_depth = @@global.max_sp_recursion_depth; +@@max_sp_recursion_depth = @@global.max_sp_recursion_depth +0 +'#---------------------FN_DYNVARS_085_10----------------------#' +SET @@max_sp_recursion_depth = 255; +SELECT @@max_sp_recursion_depth = @@local.max_sp_recursion_depth; +@@max_sp_recursion_depth = @@local.max_sp_recursion_depth +1 +SELECT @@local.max_sp_recursion_depth = @@session.max_sp_recursion_depth; +@@local.max_sp_recursion_depth = @@session.max_sp_recursion_depth +1 +'#---------------------FN_DYNVARS_085_11----------------------#' +SET max_sp_recursion_depth = 102; +SELECT @@max_sp_recursion_depth; +@@max_sp_recursion_depth +102 +SELECT local.max_sp_recursion_depth; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_sp_recursion_depth; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_sp_recursion_depth = @@session.max_sp_recursion_depth; +ERROR 42S22: Unknown column 'max_sp_recursion_depth' in 'field list' +SET @@global.max_sp_recursion_depth = @start_global_value; +SELECT @@global.max_sp_recursion_depth; +@@global.max_sp_recursion_depth +0 +SET @@session.max_sp_recursion_depth = @start_session_value; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +0 diff --git a/mysql-test/r/max_sp_recursion_depth_func.result b/mysql-test/r/max_sp_recursion_depth_func.result new file mode 100644 index 00000000000..59d88440f53 --- /dev/null +++ b/mysql-test/r/max_sp_recursion_depth_func.result @@ -0,0 +1,164 @@ +SET @session_max_recursion_depth = @@SESSION.max_sp_recursion_depth; +'#--------------------FN_DYNVARS_099_01-------------------------#' +** Connecting test_con1 using username 'root' ** +** Connection test_con1 ** +SET @@session.max_sp_recursion_depth = 10; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +10 +DROP PROCEDURE IF EXISTS sp_addRecords; +CREATE PROCEDURE sp_addRecords (IN var1 INT,IN var2 INT) +BEGIN +SELECT var1,var2; +IF var1 < var2 THEN +CALL sp_addRecords(var1+1,var2); +SELECT var1,var2; +END IF; +END // +CALL sp_addRecords(0,8); +var1 var2 +0 8 +var1 var2 +1 8 +var1 var2 +2 8 +var1 var2 +3 8 +var1 var2 +4 8 +var1 var2 +5 8 +var1 var2 +6 8 +var1 var2 +7 8 +var1 var2 +8 8 +var1 var2 +7 8 +var1 var2 +6 8 +var1 var2 +5 8 +var1 var2 +4 8 +var1 var2 +3 8 +var1 var2 +2 8 +var1 var2 +1 8 +var1 var2 +0 8 +'#--------------------FN_DYNVARS_099_02-------------------------#' +** Connecting test_con2 using username 'root' ** +** Connection test_con2 ** +SET @@session.max_sp_recursion_depth = 4; +SELECT @@session.max_sp_recursion_depth; +@@session.max_sp_recursion_depth +4 +DROP PROCEDURE IF EXISTS sp_addRecords1; +CREATE PROCEDURE sp_addRecords1 (IN var1 INT,IN var2 INT) +BEGIN +SELECT var1,var2; +IF var1 < var2 THEN +CALL sp_addRecords1(var1+1,var2); +SELECT var1,var2; +END IF; +END // +CALL sp_addRecords1(0,4); +var1 var2 +0 4 +var1 var2 +1 4 +var1 var2 +2 4 +var1 var2 +3 4 +var1 var2 +4 4 +var1 var2 +3 4 +var1 var2 +2 4 +var1 var2 +1 4 +var1 var2 +0 4 +'#---------------------FN_DYNVARS_99_03----------------------#' +SET @@max_sp_recursion_depth = 10; +DROP PROCEDURE IF EXISTS sp_addRecords2; +CREATE PROCEDURE sp_addRecords2(IN var1 INT,IN var2 INT) +BEGIN +SELECT var1,var2; +IF var1 < var2 THEN +CALL sp_addRecords2(var1+1,var2); +SELECT var1,var2; +END IF; +END // +CALL sp_addRecords2(0,8); +var1 var2 +0 8 +var1 var2 +1 8 +var1 var2 +2 8 +var1 var2 +3 8 +var1 var2 +4 8 +var1 var2 +5 8 +var1 var2 +6 8 +var1 var2 +7 8 +var1 var2 +8 8 +var1 var2 +7 8 +var1 var2 +6 8 +var1 var2 +5 8 +var1 var2 +4 8 +var1 var2 +3 8 +var1 var2 +2 8 +var1 var2 +1 8 +var1 var2 +0 8 +'#---------------------FN_DYNVARS_99_04----------------------#' +SET @@max_sp_recursion_depth = 4; +DROP PROCEDURE IF EXISTS sp_addRecords3; +CREATE PROCEDURE sp_addRecords3 (IN var1 INT,IN var2 INT) +BEGIN +SELECT var1,var2; +IF var1 < var2 THEN +CALL sp_addRecords3(var1+1,var2); +SELECT var1,var2; +END IF; +END // +Expected error 'SP Recursion limit' +CALL sp_addRecords3(0,8); +var1 var2 +0 8 +var1 var2 +1 8 +var1 var2 +2 8 +var1 var2 +3 8 +var1 var2 +4 8 +ERROR HY000: Recursive limit 4 (as set by the max_sp_recursion_depth variable) was exceeded for routine sp_addRecords3 +** Connection default ** +** Disconnecting test_con1, test_con2 ** +DROP PROCEDURE IF EXISTS sp_addRecords; +DROP PROCEDURE IF EXISTS sp_addRecords1; +DROP PROCEDURE IF EXISTS sp_addRecords2; +DROP PROCEDURE IF EXISTS sp_addRecords3; +SET @@SESSION.max_sp_recursion_depth = @session_max_recursion_depth; diff --git a/mysql-test/r/max_user_connections_basic.result b/mysql-test/r/max_user_connections_basic.result new file mode 100644 index 00000000000..3250b2f03ea --- /dev/null +++ b/mysql-test/r/max_user_connections_basic.result @@ -0,0 +1,115 @@ +SET @start_global_value = @@global.max_user_connections; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.max_user_connections; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_087_01-------------------------#' +SET @@global.max_user_connections = 1000; +SET @@global.max_user_connections = DEFAULT; +SELECT @@global.max_user_connections; +@@global.max_user_connections +0 +SET @@session.max_user_connections = 1000; +ERROR HY000: Variable 'max_user_connections' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.max_user_connections = DEFAULT; +ERROR 42000: Variable 'max_user_connections' doesn't have a default value +SELECT @@session.max_user_connections; +@@session.max_user_connections +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +'#--------------------FN_DYNVARS_087_02-------------------------#' +SET @@global.max_user_connections = DEFAULT; +SELECT @@global.max_user_connections = 0; +@@global.max_user_connections = 0 +1 +SET @@session.max_user_connections = DEFAULT; +ERROR 42000: Variable 'max_user_connections' doesn't have a default value +SELECT @@session.max_user_connections = 0; +@@session.max_user_connections = 0 +1 +'#--------------------FN_DYNVARS_087_03-------------------------#' +SET @@global.max_user_connections = 1; +SELECT @@global.max_user_connections; +@@global.max_user_connections +1 +SET @@global.max_user_connections = 2; +SELECT @@global.max_user_connections; +@@global.max_user_connections +2 +SET @@global.max_user_connections = 65536; +SELECT @@global.max_user_connections; +@@global.max_user_connections +65536 +SET @@global.max_user_connections = 4294967295; +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294967295 +SET @@global.max_user_connections = 4294967294; +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294967294 +'#------------------FN_DYNVARS_087_05-----------------------#' +SET @@global.max_user_connections = -1024; +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294966272 +SET @@global.max_user_connections = 4294967296; +SELECT @@global.max_user_connections; +@@global.max_user_connections +0 +SET @@global.max_user_connections = -1; +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294967295 +SET @@global.max_user_connections = 429496729500; +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294967196 +SET @@global.max_user_connections = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294967196 +SET @@global.max_user_connections = test; +ERROR 42000: Incorrect argument type to variable 'max_user_connections' +SELECT @@global.max_user_connections; +@@global.max_user_connections +4294967196 +'#------------------FN_DYNVARS_087_06-----------------------#' +SELECT @@global.max_user_connections = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_user_connections'; +@@global.max_user_connections = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_087_08-----------------------#' +SET @@global.max_user_connections = TRUE; +SELECT @@global.max_user_connections; +@@global.max_user_connections +1 +SET @@global.max_user_connections = FALSE; +SELECT @@global.max_user_connections; +@@global.max_user_connections +0 +'#---------------------FN_DYNVARS_087_09----------------------#' +SET @@global.max_user_connections = 20; +SELECT @@max_user_connections = @@global.max_user_connections; +@@max_user_connections = @@global.max_user_connections +1 +'#---------------------FN_DYNVARS_087_11----------------------#' +SET @@global.max_user_connections = 102; +SELECT @@max_user_connections; +@@max_user_connections +102 +SELECT local.max_user_connections; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_user_connections; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_user_connections = @@session.max_user_connections; +ERROR 42S22: Unknown column 'max_user_connections' in 'field list' +SET @@global.max_user_connections = @start_global_value; +SELECT @@global.max_user_connections; +@@global.max_user_connections +0 diff --git a/mysql-test/r/max_user_connections_func.result b/mysql-test/r/max_user_connections_func.result new file mode 100644 index 00000000000..9dd868844a2 --- /dev/null +++ b/mysql-test/r/max_user_connections_func.result @@ -0,0 +1,18 @@ +** Setup ** + +SET @default_max_user_connections = @@max_user_connections; +Set Global max_user_connections=2; +'#--------------------FN_DYNVARS_114_01-------------------------#' +** Connecting conn1 using username 'root' ** +** Connecting conn2 using username 'root' ** +** Connecting conn3 using username 'root' ** +ERROR 42000: User root already has more than 'max_user_connections' active connections +Expected error "too many connections" +** Disconnecting conn1 ** +'#--------------------FN_DYNVARS_114_02-------------------------#' +Set Global max_user_connections=3; +** Connecting conn5 using username 'root' ** +** Connecting conn6 using username 'root' ** +** Connection default ** +** Disconnecting conn5, conn6 ** +SET GLOBAL max_user_connections = @default_max_user_connections; diff --git a/mysql-test/r/myisam_data_pointer_size_basic.result b/mysql-test/r/myisam_data_pointer_size_basic.result new file mode 100644 index 00000000000..d2b0bebe029 --- /dev/null +++ b/mysql-test/r/myisam_data_pointer_size_basic.result @@ -0,0 +1,127 @@ +SET @start_global_value = @@global.myisam_data_pointer_size; +SELECT @start_global_value; +@start_global_value +6 +'#--------------------FN_DYNVARS_093_01-------------------------#' +SET @@global.myisam_data_pointer_size = 5; +SET @@global.myisam_data_pointer_size = DEFAULT; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +6 +'#--------------------FN_DYNVARS_093_02-------------------------#' +SET @@global.myisam_data_pointer_size = DEFAULT; +SELECT @@global.myisam_data_pointer_size = 6; +@@global.myisam_data_pointer_size = 6 +1 +'#--------------------FN_DYNVARS_093_03-------------------------#' +SET @@global.myisam_data_pointer_size = 2; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +2 +SET @@global.myisam_data_pointer_size = 3; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +3 +SET @@global.myisam_data_pointer_size = 4; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +4 +SET @@global.myisam_data_pointer_size = 5; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +5 +SET @@global.myisam_data_pointer_size = 6; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +6 +SET @@global.myisam_data_pointer_size = 7; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +7 +'#--------------------FN_DYNVARS_093_04-------------------------#' +SET @@myisam_data_pointer_size = 2; +ERROR HY000: Variable 'myisam_data_pointer_size' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.myisam_data_pointer_size = 3; +ERROR HY000: Variable 'myisam_data_pointer_size' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.myisam_data_pointer_size = 4; +ERROR HY000: Variable 'myisam_data_pointer_size' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_093_05-----------------------#' +SET @@global.myisam_data_pointer_size = -1; +Warnings: +Warning 1292 Truncated incorrect myisam_data_pointer_size value: '0' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +2 +SET @@global.myisam_data_pointer_size = 8; +Warnings: +Warning 1292 Truncated incorrect myisam_data_pointer_size value: '8' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +7 +SET @@global.myisam_data_pointer_size = 1; +Warnings: +Warning 1292 Truncated incorrect myisam_data_pointer_size value: '1' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +2 +SET @@global.myisam_data_pointer_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect myisam_data_pointer_size value: '4294967296' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +7 +SET @@global.myisam_data_pointer_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +7 +SET @@global.myisam_data_pointer_size = two; +ERROR 42000: Incorrect argument type to variable 'myisam_data_pointer_size' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +7 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +'#------------------FN_DYNVARS_093_06-----------------------#' +SET @@global.myisam_data_pointer_size = 3; +SELECT @@global.myisam_data_pointer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_data_pointer_size'; +@@global.myisam_data_pointer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_093_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_data_pointer_size'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_093_08-----------------------#' +SET @@global.myisam_data_pointer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect myisam_data_pointer_size value: '1' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +2 +SET @@global.myisam_data_pointer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect myisam_data_pointer_size value: '0' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +2 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_data_pointer_size = 5; +SELECT @@myisam_data_pointer_size = @@global.myisam_data_pointer_size; +@@myisam_data_pointer_size = @@global.myisam_data_pointer_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET myisam_data_pointer_size = 7; +ERROR HY000: Variable 'myisam_data_pointer_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT myisam_data_pointer_size; +ERROR 42S22: Unknown column 'myisam_data_pointer_size' in 'field list' +SELECT @@myisam_data_pointer_size; +@@myisam_data_pointer_size +5 +SET global myisam_data_pointer_size = 2; +SET @@global.myisam_data_pointer_size = @start_global_value; +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +6 diff --git a/mysql-test/r/myisam_data_pointer_size_func.result b/mysql-test/r/myisam_data_pointer_size_func.result new file mode 100644 index 00000000000..f32e25c7427 --- /dev/null +++ b/mysql-test/r/myisam_data_pointer_size_func.result @@ -0,0 +1,42 @@ +'#--------------------FN_DYNVARS_093_01-------------------------#' +SET @@global.myisam_data_pointer_size = 2; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +2 +SET @@global.myisam_data_pointer_size = 3; +'connect (con2,localhost,root,,,,)' +'connection con2' +SELECT @@global.myisam_data_pointer_size; +@@global.myisam_data_pointer_size +3 +'#--------------------FN_DYNVARS_093_02-------------------------#' +'connection con1' +DROP PROCEDURE IF EXISTS sp_addRec; +DROP TABLE IF EXISTS t1; +CREATE PROCEDURE sp_addRec(IN count INT) +BEGIN +WHILE (count>0) DO +INSERT INTO t1 value(1); +SET count = count -1; +END WHILE; +END // +SET @@global.myisam_data_pointer_size = 2; +CREATE TABLE t1(a INT); +CALL sp_addRec(65535); +CALL sp_addRec(1); +ERROR HY000: The table 't1' is full +SELECT count(*) from t1; +count(*) +65535 +'--Checking myisam_data_pointer_size with MAX_ROWS table option--' +SET @@global.myisam_data_pointer_size = 2; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a INT)MAX_ROWS=70000; +CALL sp_addRec(65536); +SELECT count(*) from t1; +count(*) +65536 +DROP PROCEDURE sp_addRec; +DROP TABLE t1; diff --git a/mysql-test/r/myisam_sort_buffer_size_basic.result b/mysql-test/r/myisam_sort_buffer_size_basic.result new file mode 100644 index 00000000000..74d2fb3ec86 --- /dev/null +++ b/mysql-test/r/myisam_sort_buffer_size_basic.result @@ -0,0 +1,184 @@ +SET @start_global_value = @@global.myisam_sort_buffer_size ; +SELECT @start_global_value; +@start_global_value +8388608 +SET @start_session_value = @@session.myisam_sort_buffer_size ; +SELECT @start_session_value; +@start_session_value +8388608 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.myisam_sort_buffer_size = 100; +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +8388608 +SET @@session.myisam_sort_buffer_size = 200; +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +8388608 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size = 8388608; +@@global.myisam_sort_buffer_size = 8388608 +1 +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size = 8388608; +@@session.myisam_sort_buffer_size = 8388608 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.myisam_sort_buffer_size = 4; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = 4294967295; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = 655354; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +655354 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.myisam_sort_buffer_size = 4; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = 4294967295; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4294967295 +SET @@session.myisam_sort_buffer_size = 655345; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +655345 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.myisam_sort_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = 429496729533; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '429496729533' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_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 +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = ON; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@session.myisam_sort_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_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 +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; +@@global.myisam_sort_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; +@@session.myisam_sort_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.myisam_sort_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_sort_buffer_size = 10; +SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; +@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@myisam_sort_buffer_size = 100; +SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; +@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size +1 +SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; +@@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET myisam_sort_buffer_size = 1; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' +SELECT @@myisam_sort_buffer_size ; +@@myisam_sort_buffer_size +4 +SELECT local.myisam_sort_buffer_size ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.myisam_sort_buffer_size ; +ERROR 42S02: Unknown table 'session' in field list +SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; +ERROR 42S22: Unknown column 'myisam_sort_buffer_size' in 'field list' +SET @@global.myisam_sort_buffer_size = @start_global_value; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +8388608 +SET @@session.myisam_sort_buffer_size = @start_session_value; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +8388608 diff --git a/mysql-test/r/myisam_stats_method_basic.result b/mysql-test/r/myisam_stats_method_basic.result new file mode 100644 index 00000000000..3272ef6e538 --- /dev/null +++ b/mysql-test/r/myisam_stats_method_basic.result @@ -0,0 +1,155 @@ +SET @global_start_value = @@global.myisam_stats_method; +SELECT @global_start_value; +@global_start_value +nulls_unequal +SET @session_start_value = @@session.myisam_stats_method; +SELECT @session_start_value; +@session_start_value +nulls_unequal +'#--------------------FN_DYNVARS_097_01------------------------#' +SET @@global.myisam_stats_method = nulls_equal; +SET @@global.myisam_stats_method = DEFAULT; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_unequal +SET @@session.myisam_stats_method = nulls_equal; +SET @@session.myisam_stats_method = DEFAULT; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_unequal +'#---------------------FN_DYNVARS_097_02-------------------------#' +SET @@global.myisam_stats_method = NULL; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of 'NULL' +SET @@global.myisam_stats_method = ''; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of '' +SET @@session.myisam_stats_method = NULL; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of 'NULL' +SET @@session.myisam_stats_method = ''; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of '' +'#--------------------FN_DYNVARS_097_03------------------------#' +SET @@global.myisam_stats_method = 'nulls_equal'; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SET @@global.myisam_stats_method = 'nulls_unequal'; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_unequal +SET @@global.myisam_stats_method = 'nulls_ignored'; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_ignored +'Bug: Value of nulls_ignored is not documented. Its ordinal value is 2' +SET @@session.myisam_stats_method = 'nulls_equal'; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_equal +SET @@session.myisam_stats_method = 'nulls_unequal'; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_unequal +SET @@session.myisam_stats_method = 'nulls_ignored'; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_ignored +'#--------------------FN_DYNVARS_097_04-------------------------#' +SET @@global.myisam_stats_method = -1; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of '-1' +SET @@global.myisam_stats_method = unequal; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of 'unequal' +SET @@global.myisam_stats_method = ENABLED; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of 'ENABLED' +SET @@global.myisam_stats_method = 'equal'; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of 'equal' +SET @@global.myisam_stats_method = 'null_equal'; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of 'null_equal' +SET @@global.myisam_stats_method = ' '; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of ' ' +'#-------------------FN_DYNVARS_097_05----------------------------#' +SELECT @@session.myisam_stats_method = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_stats_method'; +@@session.myisam_stats_method = VARIABLE_VALUE +1 +'#----------------------FN_DYNVARS_097_06------------------------#' +SELECT @@global.myisam_stats_method = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_stats_method'; +@@global.myisam_stats_method = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_097_07-------------------------#' +SET @@global.myisam_stats_method = 0; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_unequal +SET @@global.myisam_stats_method = 1; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SET @@global.myisam_stats_method = 2; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_ignored +SET @@global.myisam_stats_method = 0.4; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_unequal +SET @@global.myisam_stats_method = 1.0; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SET @@global.myisam_stats_method = 1.1; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SET @@global.myisam_stats_method = 1.5; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_ignored +SET @@global.myisam_stats_method = 2.49; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_ignored +SET @@session.myisam_stats_method = 0.5; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_equal +SET @@session.myisam_stats_method = 1.6; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_ignored +'Bug# 34877: Decimal values can be used within the range [0.0-2.5). Values'; +'are rounded to 0,1,2 as evident from outcome.'; +SET @@global.myisam_stats_method = 3; +ERROR 42000: Variable 'myisam_stats_method' can't be set to the value of '3' +'#---------------------FN_DYNVARS_097_08----------------------#' +SET @@global.myisam_stats_method = TRUE; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SET @@global.myisam_stats_method = FALSE; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_unequal +'#---------------------FN_DYNVARS_097_09----------------------#' +SET myisam_stats_method = 'nulls_equal'; +SET session.myisam_stats_method = 'nulls_equal'; +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 'myisam_stats_method = 'nulls_equal'' at line 1 +SET global.myisam_stats_method = 'nulls_equal'; +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 'myisam_stats_method = 'nulls_equal'' at line 1 +SET session myisam_stats_method = 'nulls_equal'; +SELECT @@myisam_stats_method; +@@myisam_stats_method +nulls_equal +SET global myisam_stats_method = 'nulls_equal'; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SET @@global.myisam_stats_method = @global_start_value; +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_unequal +SET @@session.myisam_stats_method = @session_start_value; +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_unequal diff --git a/mysql-test/r/myisam_stats_method_func.result b/mysql-test/r/myisam_stats_method_func.result new file mode 100644 index 00000000000..ace6887cc90 --- /dev/null +++ b/mysql-test/r/myisam_stats_method_func.result @@ -0,0 +1,85 @@ +'#--------------------FN_DYNVARS_097_01-------------------------#' +SET @@global.myisam_stats_method = nulls_equal; +'connect (con1,localhost,root,,,,)' +'connection con1' +SELECT @@global.myisam_stats_method; +@@global.myisam_stats_method +nulls_equal +SELECT @@session.myisam_stats_method; +@@session.myisam_stats_method +nulls_equal +'#--------------------FN_DYNVARS_097_02-------------------------#' +'connection default' +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a int, key (a)); +INSERT INTO t1 VALUES (0),(1),(2),(3),(4); +INSERT INTO t1 SELECT NULL FROM t1; +'default: NULLs considered unequal' +SET myisam_stats_method=nulls_unequal; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 10 NULL NULL YES BTREE +INSERT INTO t1 VALUES (11); +DELETE FROM t1 WHERE a=11; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 10 NULL NULL YES BTREE +'Set nulls to be equal' +SET myisam_stats_method=nulls_equal; +INSERT INTO t1 VALUES (11); +DELETE FROM t1 WHERE a=11; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 5 NULL NULL YES BTREE +INSERT INTO t1 VALUES (11); +DELETE FROM t1 WHERE a=11; +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 5 NULL NULL YES BTREE +'Set nulls to be ignored' +SET myisam_stats_method=nulls_ignored; +SHOW variables LIKE 'myisam_stats_method'; +Variable_name Value +myisam_stats_method nulls_ignored +drop TABLE t1; +CREATE TABLE t1 ( +a char(3), b char(4), c char(5), d char(6), +key(a,b,c,d) +); +INSERT INTO t1 VALUES ('bcd','def1', NULL, 'zz'); +INSERT INTO t1 VALUES ('bcd','def2', NULL, 'zz'); +INSERT INTO t1 VALUES ('bce','def1', 'yuu', NULL); +INSERT INTO t1 VALUES ('bce','def2', NULL, 'quux'); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 2 NULL NULL YES BTREE +t1 1 a 2 b A 4 NULL NULL YES BTREE +t1 1 a 3 c A 4 NULL NULL YES BTREE +t1 1 a 4 d A 4 NULL NULL YES BTREE +DELETE FROM t1; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +SHOW INDEX FROM t1; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +t1 1 a 1 a A 0 NULL NULL YES BTREE +t1 1 a 2 b A 0 NULL NULL YES BTREE +t1 1 a 3 c A 0 NULL NULL YES BTREE +t1 1 a 4 d A 0 NULL NULL YES BTREE +SET myisam_stats_method=DEFAULT; +DROP TABLE t1; diff --git a/mysql-test/r/myisam_use_mmap_basic.result b/mysql-test/r/myisam_use_mmap_basic.result new file mode 100644 index 00000000000..44544dee438 --- /dev/null +++ b/mysql-test/r/myisam_use_mmap_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_042_01----------------------#' +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +COUNT(@@GLOBAL.myisam_use_mmap) +1 +1 Expected +'#---------------------BS_STVARS_042_02----------------------#' +SET @@GLOBAL.myisam_use_mmap=1; +"BUG:It should give error on setting this variable as it is readonly variable" +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +COUNT(@@GLOBAL.myisam_use_mmap) +1 +1 Expected +'#---------------------BS_STVARS_042_03----------------------#' +SELECT @@GLOBAL.myisam_use_mmap = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_use_mmap'; +@@GLOBAL.myisam_use_mmap = VARIABLE_VALUE +0 +1 Expected +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +COUNT(@@GLOBAL.myisam_use_mmap) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_use_mmap'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_042_04----------------------#' +SELECT @@myisam_use_mmap = @@GLOBAL.myisam_use_mmap; +@@myisam_use_mmap = @@GLOBAL.myisam_use_mmap +1 +1 Expected +'#---------------------BS_STVARS_042_05----------------------#' +SELECT COUNT(@@myisam_use_mmap); +COUNT(@@myisam_use_mmap) +1 +1 Expected +SELECT COUNT(@@local.myisam_use_mmap); +ERROR HY000: Variable 'myisam_use_mmap' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.myisam_use_mmap); +ERROR HY000: Variable 'myisam_use_mmap' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +COUNT(@@GLOBAL.myisam_use_mmap) +1 +1 Expected +SELECT myisam_use_mmap = @@SESSION.myisam_use_mmap; +ERROR 42S22: Unknown column 'myisam_use_mmap' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/ndb_log_update_as_write_basic.result b/mysql-test/r/ndb_log_update_as_write_basic.result new file mode 100644 index 00000000000..6353fba2b7c --- /dev/null +++ b/mysql-test/r/ndb_log_update_as_write_basic.result @@ -0,0 +1,14 @@ +SET @global_start_value = @@global.ndb_log_update_as_write; +ERROR HY000: Unknown system variable 'ndb_log_update_as_write' +SELECT @@global.ndb_log_update_as_write; +ERROR HY000: Unknown system variable 'ndb_log_update_as_write' +'Bug: The value is not a system variable or atleast not supported in version 5.1.22' +'#--------------------FN_DYNVARS_102_01------------------------#' +'#---------------------FN_DYNVARS_102_02-------------------------#' +'#--------------------FN_DYNVARS_102_03------------------------#' +'#--------------------FN_DYNVARS_102_04-------------------------#' +'#-------------------FN_DYNVARS_102_05----------------------------#' +'#----------------------FN_DYNVARS_102_06------------------------#' +'#----------------------FN_DYNVARS_102_07------------------------#' +'#---------------------FN_DYNVARS_102_08-------------------------#' +'#---------------------FN_DYNVARS_102_09----------------------#' diff --git a/mysql-test/r/ndb_log_updated_only_basic.result b/mysql-test/r/ndb_log_updated_only_basic.result new file mode 100644 index 00000000000..38abb7cc263 --- /dev/null +++ b/mysql-test/r/ndb_log_updated_only_basic.result @@ -0,0 +1,14 @@ +SET @global_start_value = @@global.ndb_log_updated_only; +ERROR HY000: Unknown system variable 'ndb_log_updated_only' +SELECT @@global.ndb_log_updated_only; +ERROR HY000: Unknown system variable 'ndb_log_updated_only' +'Bug: The value is not a system variable or atleast not supported in version 5.1.22' +'#--------------------FN_DYNVARS_103_01------------------------#' +'#---------------------FN_DYNVARS_103_02-------------------------#' +'#--------------------FN_DYNVARS_103_03------------------------#' +'#--------------------FN_DYNVARS_103_04-------------------------#' +'#-------------------FN_DYNVARS_103_05----------------------------#' +'#----------------------FN_DYNVARS_103_06------------------------#' +'#----------------------FN_DYNVARS_103_07------------------------#' +'#---------------------FN_DYNVARS_103_08-------------------------#' +'#---------------------FN_DYNVARS_103_09----------------------#' diff --git a/mysql-test/r/net_buffer_length_basic.result b/mysql-test/r/net_buffer_length_basic.result new file mode 100644 index 00000000000..ddaad3dfa91 --- /dev/null +++ b/mysql-test/r/net_buffer_length_basic.result @@ -0,0 +1,194 @@ +SET @start_global_value = @@global.net_buffer_length; +SET @start_session_value = @@session.net_buffer_length; +'#--------------------FN_DYNVARS_109_01-------------------------#' +SET @@global.net_buffer_length = 10000; +SET @@global.net_buffer_length = DEFAULT; +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +16384 +SET @@session.net_buffer_length = 20000; +SET @@session.net_buffer_length = DEFAULT; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +16384 +'#--------------------FN_DYNVARS_109_02-------------------------#' +SET @@global.net_buffer_length = DEFAULT; +SELECT @@global.net_buffer_length = 16384; +@@global.net_buffer_length = 16384 +1 +SET @@session.net_buffer_length = DEFAULT; +SELECT @@session.net_buffer_length = 16384; +@@session.net_buffer_length = 16384 +1 +'#--------------------FN_DYNVARS_109_03-------------------------#' +SET @@global.net_buffer_length = 1024; +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +SET @@global.net_buffer_length = 1025; +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +SET @@global.net_buffer_length = 1048576; +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1048576 +SET @@global.net_buffer_length = 1048575; +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1047552 +SET @@global.net_buffer_length = 65535; +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +64512 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_109_04-------------------------#' +SET @@session.net_buffer_length = 1024; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1024 +SET @@session.net_buffer_length = 1025; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1024 +SET @@session.net_buffer_length = 1048576; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1048576 +SET @@session.net_buffer_length = 1048575; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1047552 +SET @@session.net_buffer_length = 65535; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +64512 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_109_05-----------------------#' +SET @@global.net_buffer_length = 0; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '0' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +SET @@global.net_buffer_length = -1024; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '0' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +SET @@global.net_buffer_length = 1023; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '1023' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +SET @@global.net_buffer_length = 1048577; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '1048577' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1048576 +SET @@global.net_buffer_length = 104857633; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '104857633' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1048576 +SET @@global.net_buffer_length = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1048576 +SET @@global.net_buffer_length = test; +ERROR 42000: Incorrect argument type to variable 'net_buffer_length' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1048576 +SET @@session.net_buffer_length = 0; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '0' +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1024 +SET @@session.net_buffer_length = -2; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '0' +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1024 +SET @@session.net_buffer_length = 1048577; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '1048577' +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1048576 +SET @@session.net_buffer_length = 1048576002; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '1048576002' +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +1048576 +SET @@session.net_buffer_length = 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.net_buffer_length = 65550; +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +65536 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.net_buffer_length = test; +ERROR 42000: Incorrect argument type to variable 'net_buffer_length' +SELECT @@session.net_buffer_length; +@@session.net_buffer_length +65536 +'#------------------FN_DYNVARS_109_06-----------------------#' +SELECT @@global.net_buffer_length = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_buffer_length'; +@@global.net_buffer_length = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_109_07-----------------------#' +SELECT @@session.net_buffer_length = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_buffer_length'; +@@session.net_buffer_length = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_109_08-----------------------#' +SET @@global.net_buffer_length = TRUE; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '1' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +SET @@global.net_buffer_length = FALSE; +Warnings: +Warning 1292 Truncated incorrect net_buffer_length value: '0' +SELECT @@global.net_buffer_length; +@@global.net_buffer_length +1024 +'#---------------------FN_DYNVARS_109_09----------------------#' +SET @@global.net_buffer_length = 2048; +SELECT @@net_buffer_length = @@global.net_buffer_length; +@@net_buffer_length = @@global.net_buffer_length +0 +'#---------------------FN_DYNVARS_109_10----------------------#' +SET @@net_buffer_length = 100000; +SELECT @@net_buffer_length = @@local.net_buffer_length; +@@net_buffer_length = @@local.net_buffer_length +1 +SELECT @@local.net_buffer_length = @@session.net_buffer_length; +@@local.net_buffer_length = @@session.net_buffer_length +1 +'#---------------------FN_DYNVARS_109_11----------------------#' +SET net_buffer_length = 1024; +SELECT @@net_buffer_length; +@@net_buffer_length +1024 +SELECT local.net_buffer_length; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.net_buffer_length; +ERROR 42S02: Unknown table 'session' in field list +SELECT net_buffer_length = @@session.net_buffer_length; +ERROR 42S22: Unknown column 'net_buffer_length' in 'field list' +SET @@global.net_buffer_length = @start_global_value; +SET @@session.net_buffer_length = @start_session_value; diff --git a/mysql-test/r/net_read_timeout_basic.result b/mysql-test/r/net_read_timeout_basic.result new file mode 100644 index 00000000000..90a6ef72718 --- /dev/null +++ b/mysql-test/r/net_read_timeout_basic.result @@ -0,0 +1,164 @@ +SET @start_global_value = @@global.net_read_timeout; +SELECT @start_global_value; +@start_global_value +30 +SET @start_session_value = @@session.net_read_timeout; +SELECT @start_session_value; +@start_session_value +30 +'#--------------------FN_DYNVARS_110_01-------------------------#' +SET @@global.net_read_timeout = 100; +SET @@global.net_read_timeout = DEFAULT; +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +30 +SET @@session.net_read_timeout = 200; +SET @@session.net_read_timeout = DEFAULT; +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +30 +'#--------------------FN_DYNVARS_110_02-------------------------#' +SET @@global.net_read_timeout = DEFAULT; +SELECT @@global.net_read_timeout = 30; +@@global.net_read_timeout = 30 +1 +SET @@session.net_read_timeout = DEFAULT; +SELECT @@session.net_read_timeout = 30; +@@session.net_read_timeout = 30 +1 +'#--------------------FN_DYNVARS_110_03-------------------------#' +SET @@global.net_read_timeout = 1; +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +1 +SET @@global.net_read_timeout = 60020; +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +60020 +SET @@global.net_read_timeout = 65535; +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +65535 +'#--------------------FN_DYNVARS_110_04-------------------------#' +SET @@session.net_read_timeout = 1; +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +1 +SET @@session.net_read_timeout = 50050; +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +50050 +SET @@session.net_read_timeout = 65535; +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +65535 +'#------------------FN_DYNVARS_110_05-----------------------#' +SET @@global.net_read_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '0' +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +1 +SET @@global.net_read_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '0' +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +1 +SET @@global.net_read_timeout = 655360354; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '655360354' +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +31536000 +SET @@global.net_read_timeout = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +31536000 +SET @@global.net_read_timeout = test; +ERROR 42000: Incorrect argument type to variable 'net_read_timeout' +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +31536000 +SET @@session.net_read_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '0' +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +1 +SET @@session.net_read_timeout = -2; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '0' +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +1 +SET @@session.net_read_timeout = 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.net_read_timeout = 6555015425; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '6555015425' +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +31536000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.net_read_timeout = test; +ERROR 42000: Incorrect argument type to variable 'net_read_timeout' +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +31536000 +'#------------------FN_DYNVARS_110_06-----------------------#' +SELECT @@global.net_read_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_read_timeout'; +@@global.net_read_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_110_07-----------------------#' +SELECT @@session.net_read_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_read_timeout'; +@@session.net_read_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_110_08-----------------------#' +SET @@global.net_read_timeout = TRUE; +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +1 +SET @@global.net_read_timeout = FALSE; +Warnings: +Warning 1292 Truncated incorrect net_read_timeout value: '0' +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +1 +'#---------------------FN_DYNVARS_110_09----------------------#' +SET @@global.net_read_timeout = 10; +SELECT @@net_read_timeout = @@global.net_read_timeout; +@@net_read_timeout = @@global.net_read_timeout +0 +'#---------------------FN_DYNVARS_110_10----------------------#' +SET @@net_read_timeout = 100; +SELECT @@net_read_timeout = @@local.net_read_timeout; +@@net_read_timeout = @@local.net_read_timeout +1 +SELECT @@local.net_read_timeout = @@session.net_read_timeout; +@@local.net_read_timeout = @@session.net_read_timeout +1 +'#---------------------FN_DYNVARS_110_11----------------------#' +SET net_read_timeout = 1; +SELECT @@net_read_timeout; +@@net_read_timeout +1 +SELECT local.net_read_timeout; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.net_read_timeout; +ERROR 42S02: Unknown table 'session' in field list +SELECT net_read_timeout = @@session.net_read_timeout; +ERROR 42S22: Unknown column 'net_read_timeout' in 'field list' +SET @@global.net_read_timeout = @start_global_value; +SELECT @@global.net_read_timeout; +@@global.net_read_timeout +30 +SET @@session.net_read_timeout = @start_session_value; +SELECT @@session.net_read_timeout; +@@session.net_read_timeout +30 diff --git a/mysql-test/r/net_write_timeout_basic.result b/mysql-test/r/net_write_timeout_basic.result new file mode 100644 index 00000000000..35a2cf069e3 --- /dev/null +++ b/mysql-test/r/net_write_timeout_basic.result @@ -0,0 +1,160 @@ +SET @start_global_value = @@global.net_write_timeout; +SELECT @start_global_value; +@start_global_value +60 +SET @start_session_value = @@session.net_write_timeout; +SELECT @start_session_value; +@start_session_value +60 +'#--------------------FN_DYNVARS_112_01-------------------------#' +SET @@global.net_write_timeout = 100; +SET @@global.net_write_timeout = DEFAULT; +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +60 +SET @@session.net_write_timeout = 200; +SET @@session.net_write_timeout = DEFAULT; +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +60 +'#--------------------FN_DYNVARS_112_02-------------------------#' +SET @@global.net_write_timeout = DEFAULT; +SELECT @@global.net_write_timeout = 60; +@@global.net_write_timeout = 60 +1 +SET @@session.net_write_timeout = DEFAULT; +SELECT @@session.net_write_timeout = 60; +@@session.net_write_timeout = 60 +1 +'#--------------------FN_DYNVARS_112_03-------------------------#' +SET @@global.net_write_timeout = 1; +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +1 +SET @@global.net_write_timeout = 60020; +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +60020 +SET @@global.net_write_timeout = 65535; +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +65535 +'#--------------------FN_DYNVARS_112_04-------------------------#' +SET @@session.net_write_timeout = 1; +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +1 +SET @@session.net_write_timeout = 50050; +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +50050 +SET @@session.net_write_timeout = 65535; +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +65535 +'#------------------FN_DYNVARS_112_05-----------------------#' +SET @@global.net_write_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '0' +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +1 +SET @@global.net_write_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '0' +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +1 +SET @@global.net_write_timeout = 655360354; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '655360354' +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +31536000 +SET @@global.net_write_timeout = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +31536000 +SET @@global.net_write_timeout = test; +ERROR 42000: Incorrect argument type to variable 'net_write_timeout' +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +31536000 +SET @@session.net_write_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '0' +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +1 +SET @@session.net_write_timeout = -2; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '0' +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +1 +SET @@session.net_write_timeout = 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.net_write_timeout = 6555015425; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '6555015425' +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +31536000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.net_write_timeout = test; +ERROR 42000: Incorrect argument type to variable 'net_write_timeout' +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +31536000 +'#------------------FN_DYNVARS_112_06-----------------------#' +SELECT @@global.net_write_timeout = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='net_write_timeout'; +@@global.net_write_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_112_07-----------------------#' +SELECT @@session.net_write_timeout = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='net_write_timeout'; +@@session.net_write_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_112_08-----------------------#' +SET @@global.net_write_timeout = TRUE; +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +1 +SET @@global.net_write_timeout = FALSE; +Warnings: +Warning 1292 Truncated incorrect net_write_timeout value: '0' +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +1 +'#---------------------FN_DYNVARS_112_09----------------------#' +SET @@global.net_write_timeout = 10; +SELECT @@net_write_timeout = @@global.net_write_timeout; +@@net_write_timeout = @@global.net_write_timeout +0 +'#---------------------FN_DYNVARS_112_10----------------------#' +SET @@net_write_timeout = 100; +SELECT @@net_write_timeout = @@local.net_write_timeout; +@@net_write_timeout = @@local.net_write_timeout +1 +SELECT @@local.net_write_timeout = @@session.net_write_timeout; +@@local.net_write_timeout = @@session.net_write_timeout +1 +'#---------------------FN_DYNVARS_112_11----------------------#' +SET net_write_timeout = 1; +SELECT @@net_write_timeout; +@@net_write_timeout +1 +SELECT local.net_write_timeout; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.net_write_timeout; +ERROR 42S02: Unknown table 'session' in field list +SELECT net_write_timeout = @@session.net_write_timeout; +ERROR 42S22: Unknown column 'net_write_timeout' in 'field list' +SET @@global.net_write_timeout = @start_global_value; +SELECT @@global.net_write_timeout; +@@global.net_write_timeout +60 +SET @@session.net_write_timeout = @start_session_value; +SELECT @@session.net_write_timeout; +@@session.net_write_timeout +60 diff --git a/mysql-test/r/new_basic.result b/mysql-test/r/new_basic.result new file mode 100644 index 00000000000..b36e540ddd9 --- /dev/null +++ b/mysql-test/r/new_basic.result @@ -0,0 +1,163 @@ +SET @start_global_value = @@global.new; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.new; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_113_01-------------------------#' +SET @@global.new = ON; +SET @@global.new = DEFAULT; +SELECT @@global.new; +@@global.new +0 +SET @@session.new = ON; +SET @@session.new = DEFAULT; +SELECT @@session.new; +@@session.new +0 +'#--------------------FN_DYNVARS_113_02-------------------------#' +SET @@global.new = DEFAULT; +SELECT @@global.new = 'OFF'; +@@global.new = 'OFF' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'OFF' +SET @@session.new = DEFAULT; +SELECT @@session.new = 'OFF'; +@@session.new = 'OFF' +1 +Warnings: +Warning 1292 Truncated incorrect DOUBLE value: 'OFF' +'#--------------------FN_DYNVARS_113_03-------------------------#' +SET @@global.new = ON; +SELECT @@global.new; +@@global.new +1 +SET @@global.new = OFF; +SELECT @@global.new; +@@global.new +0 +SET @@global.new = 0; +SELECT @@global.new; +@@global.new +0 +SET @@global.new = 1; +SELECT @@global.new; +@@global.new +1 +SET @@global.new = TRUE; +SELECT @@global.new; +@@global.new +1 +SET @@global.new = FALSE; +SELECT @@global.new; +@@global.new +0 +'#--------------------FN_DYNVARS_113_04-------------------------#' +SET @@session.new = ON; +SELECT @@session.new; +@@session.new +1 +SET @@session.new = OFF; +SELECT @@session.new; +@@session.new +0 +SET @@session.new = 0; +SELECT @@session.new; +@@session.new +0 +SET @@session.new = 1; +SELECT @@session.new; +@@session.new +1 +SET @@session.new = TRUE; +SELECT @@session.new; +@@session.new +1 +SET @@session.new = FALSE; +SELECT @@session.new; +@@session.new +0 +'#------------------FN_DYNVARS_113_05-----------------------#' +SET @@global.new = 'ONN'; +ERROR 42000: Variable 'new' can't be set to the value of 'ONN' +SET @@global.new = "OFFF"; +ERROR 42000: Variable 'new' can't be set to the value of 'OFFF' +SET @@global.new = TTRUE; +ERROR 42000: Variable 'new' can't be set to the value of 'TTRUE' +SET @@global.new = FELSE; +ERROR 42000: Variable 'new' can't be set to the value of 'FELSE' +SET @@global.new = -1024; +ERROR 42000: Variable 'new' can't be set to the value of '-1024' +SET @@global.new = 65536; +ERROR 42000: Variable 'new' can't be set to the value of '65536' +SET @@global.new = 65530.34; +ERROR 42000: Variable 'new' can't be set to the value of '65530' +SET @@global.new = test; +ERROR 42000: Variable 'new' can't be set to the value of 'test' +SET @@session.new = ONN; +ERROR 42000: Variable 'new' can't be set to the value of 'ONN' +SET @@session.new = ONF; +ERROR 42000: Variable 'new' can't be set to the value of 'ONF' +SET @@session.new = OF; +SELECT @@session.new; +@@session.new +0 +'Bug# 34828: FN_DYNVARS_113_05 - OF is also working as OFF and no error is coming'; +SET @@session.new = 'OFN'; +ERROR 42000: Variable 'new' can't be set to the value of 'OFN' +SET @@session.new = -2; +ERROR 42000: Variable 'new' can't be set to the value of '-2' +SET @@session.new = 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.new = 65550; +ERROR 42000: Variable 'new' can't be set to the value of '65550' +SET @@session.new = test; +ERROR 42000: Variable 'new' can't be set to the value of 'test' +'#------------------FN_DYNVARS_113_06-----------------------#' +SELECT @@global.new = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='new'; +@@global.new = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_113_07-----------------------#' +SELECT @@session.new = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='new'; +@@session.new = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_113_08----------------------#' +SET @@new = OFF; +SET @@global.new = ON; +SELECT @@new = @@global.new; +@@new = @@global.new +0 +'#---------------------FN_DYNVARS_113_09----------------------#' +SET @@new = ON; +SELECT @@new = @@local.new; +@@new = @@local.new +1 +SELECT @@local.new = @@session.new; +@@local.new = @@session.new +1 +'#---------------------FN_DYNVARS_113_10----------------------#' +SET new = 1; +SELECT @@new; +@@new +1 +SELECT local.new; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.new; +ERROR 42S02: Unknown table 'session' in field list +SELECT new = @@session.new; +ERROR 42S22: Unknown column 'new' in 'field list' +SET @@global.new = @start_global_value; +SELECT @@global.new; +@@global.new +0 +SET @@session.new = @start_session_value; +SELECT @@session.new; +@@session.new +0 diff --git a/mysql-test/r/old_passwords_basic.result b/mysql-test/r/old_passwords_basic.result new file mode 100644 index 00000000000..ecf23ab302b --- /dev/null +++ b/mysql-test/r/old_passwords_basic.result @@ -0,0 +1,159 @@ +SET @start_global_value = @@global.old_passwords; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.old_passwords; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_114_01-------------------------#' +SET @@global.old_passwords = ON; +SET @@global.old_passwords = DEFAULT; +SELECT @@global.old_passwords; +@@global.old_passwords +0 +SET @@session.old_passwords = ON; +SET @@session.old_passwords = DEFAULT; +SELECT @@session.old_passwords; +@@session.old_passwords +0 +'#--------------------FN_DYNVARS_114_02-------------------------#' +SET @@global.old_passwords = DEFAULT; +SELECT @@global.old_passwords = FALSE; +@@global.old_passwords = FALSE +1 +SET @@session.old_passwords = DEFAULT; +SELECT @@session.old_passwords = FALSE; +@@session.old_passwords = FALSE +1 +'#--------------------FN_DYNVARS_114_03-------------------------#' +SET @@global.old_passwords = ON; +SELECT @@global.old_passwords; +@@global.old_passwords +1 +SET @@global.old_passwords = OFF; +SELECT @@global.old_passwords; +@@global.old_passwords +0 +SET @@global.old_passwords = 0; +SELECT @@global.old_passwords; +@@global.old_passwords +0 +SET @@global.old_passwords = 1; +SELECT @@global.old_passwords; +@@global.old_passwords +1 +SET @@global.old_passwords = TRUE; +SELECT @@global.old_passwords; +@@global.old_passwords +1 +SET @@global.old_passwords = FALSE; +SELECT @@global.old_passwords; +@@global.old_passwords +0 +'#--------------------FN_DYNVARS_114_04-------------------------#' +SET @@session.old_passwords = ON; +SELECT @@session.old_passwords; +@@session.old_passwords +1 +SET @@session.old_passwords = OFF; +SELECT @@session.old_passwords; +@@session.old_passwords +0 +SET @@session.old_passwords = 0; +SELECT @@session.old_passwords; +@@session.old_passwords +0 +SET @@session.old_passwords = 1; +SELECT @@session.old_passwords; +@@session.old_passwords +1 +SET @@session.old_passwords = TRUE; +SELECT @@session.old_passwords; +@@session.old_passwords +1 +SET @@session.old_passwords = FALSE; +SELECT @@session.old_passwords; +@@session.old_passwords +0 +'#------------------FN_DYNVARS_114_05-----------------------#' +SET @@global.old_passwords = 'ONN'; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'ONN' +SET @@global.old_passwords = "OFFF"; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'OFFF' +SET @@global.old_passwords = TTRUE; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'TTRUE' +SET @@global.old_passwords = FELSE; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'FELSE' +SET @@global.old_passwords = -1024; +ERROR 42000: Variable 'old_passwords' can't be set to the value of '-1024' +SET @@global.old_passwords = 65536; +ERROR 42000: Variable 'old_passwords' can't be set to the value of '65536' +SET @@global.old_passwords = 65530.34; +ERROR 42000: Variable 'old_passwords' can't be set to the value of '65530' +SET @@global.old_passwords = test; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'test' +SET @@session.old_passwords = ONN; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'ONN' +SET @@session.old_passwords = ONF; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'ONF' +SET @@session.old_passwords = OF; +SELECT @@session.old_passwords; +@@session.old_passwords +0 +'Bug# 34828: OF is also working as OFF and no error is coming'; +SET @@session.old_passwords = 'OFN'; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'OFN' +SET @@session.old_passwords = -2; +ERROR 42000: Variable 'old_passwords' can't be set to the value of '-2' +SET @@session.old_passwords = 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.old_passwords = 65550; +ERROR 42000: Variable 'old_passwords' can't be set to the value of '65550' +SET @@session.old_passwords = test; +ERROR 42000: Variable 'old_passwords' can't be set to the value of 'test' +'#------------------FN_DYNVARS_114_06-----------------------#' +SELECT @@global.old_passwords = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='old_passwords'; +@@global.old_passwords = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_114_07-----------------------#' +SELECT @@session.old_passwords = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='old_passwords'; +@@session.old_passwords = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_114_08----------------------#' +SET @@old_passwords = OFF; +SET @@global.old_passwords = ON; +SELECT @@old_passwords = @@global.old_passwords; +@@old_passwords = @@global.old_passwords +0 +'#---------------------FN_DYNVARS_114_09----------------------#' +SET @@old_passwords = ON; +SELECT @@old_passwords = @@local.old_passwords; +@@old_passwords = @@local.old_passwords +1 +SELECT @@local.old_passwords = @@session.old_passwords; +@@local.old_passwords = @@session.old_passwords +1 +'#---------------------FN_DYNVARS_114_10----------------------#' +SET old_passwords = 1; +SELECT @@old_passwords; +@@old_passwords +1 +SELECT local.old_passwords; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.old_passwords; +ERROR 42S02: Unknown table 'session' in field list +SELECT old_passwords = @@session.old_passwords; +ERROR 42S22: Unknown column 'old_passwords' in 'field list' +SET @@global.old_passwords = @start_global_value; +SELECT @@global.old_passwords; +@@global.old_passwords +0 +SET @@session.old_passwords = @start_session_value; +SELECT @@session.old_passwords; +@@session.old_passwords +0 diff --git a/mysql-test/r/old_passwords_func.result b/mysql-test/r/old_passwords_func.result new file mode 100644 index 00000000000..eebee9f4852 --- /dev/null +++ b/mysql-test/r/old_passwords_func.result @@ -0,0 +1,55 @@ +SET @global_old_passwords = @@GLOBAL.old_passwords; +SET @session_old_passwords = @@SESSION.old_passwords; +SET @global_secure_auth = @@GLOBAL.secure_auth; +'#------------------------FN_DYNVARS_115_01---------------------------#' +** Connection default ** +CREATE USER 'userNewPass1'@'localhost' IDENTIFIED BY 'pass1'; +CREATE USER 'userNewPass2'@'localhost' IDENTIFIED BY 'pass2'; +SET GLOBAL old_passwords = TRUE; +SET SESSION old_passwords = TRUE; +CREATE USER 'userOldPass'@'localhost' IDENTIFIED BY 'pass3'; +SET GLOBAL secure_auth = FALSE; +** Connecting con1 using username 'userNewPass1' ** +SELECT CURRENT_USER(); +CURRENT_USER() +userNewPass1@localhost +userNewPass1@localhost Expected +** Connecting con2 using username 'userNewPass2' ** +SELECT CURRENT_USER(); +CURRENT_USER() +userNewPass2@localhost +userNewPass2@localhost Expected +** Connecting con3 using username 'userOldPass' ** +SELECT CURRENT_USER(); +CURRENT_USER() +userOldPass@localhost +userOldPass@localhost Expected +** Connection default ** +** Disconnecting con1, con2, con3 ** +'#------------------------FN_DYNVARS_115_02---------------------------#' +SET GLOBAL secure_auth = TRUE; +** Connecting con1 using username 'userNewPass1' ** +SELECT CURRENT_USER(); +CURRENT_USER() +userNewPass1@localhost +userNewPass1@localhost Expected +** Connecting con2 using username 'userNewPass2' ** +SELECT CURRENT_USER(); +CURRENT_USER() +userNewPass2@localhost +userNewPass2@localhost Expected +** Connecting con3 using username 'userOldPass' ** +ERROR HY000: Server is running in --secure-auth mode, but 'userOldPass'@'localhost' has a password in the old format; please change the password to the new format +Expected Error 'Server is running in secure auth mode' +SELECT CURRENT_USER(); +CURRENT_USER() +userNewPass2@localhost +userNewPass2@localhost Expected +** Connection default ** +** Disconnecting con1, con2 ** +DROP USER 'userNewPass1'@'localhost'; +DROP USER 'userNewPass2'@'localhost'; +DROP USER 'userOldPass'@'localhost'; +SET @@GLOBAL.old_passwords = @global_old_passwords; +SET @@SESSION.old_passwords = @session_old_passwords; +SET @@GLOBAL.secure_auth = @global_secure_auth; diff --git a/mysql-test/r/optimizer_prune_level_basic.result b/mysql-test/r/optimizer_prune_level_basic.result new file mode 100644 index 00000000000..46fe70c40d0 --- /dev/null +++ b/mysql-test/r/optimizer_prune_level_basic.result @@ -0,0 +1,168 @@ +SET @start_global_value = @@global.optimizer_prune_level; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.optimizer_prune_level; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_115_01-------------------------#' +SET @@global.optimizer_prune_level = 0; +SET @@global.optimizer_prune_level = DEFAULT; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +1 +SET @@session.optimizer_prune_level = 0; +SET @@session.optimizer_prune_level = DEFAULT; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +1 +'#--------------------FN_DYNVARS_115_02-------------------------#' +SET @@global.optimizer_prune_level = DEFAULT; +SELECT @@global.optimizer_prune_level = 1; +@@global.optimizer_prune_level = 1 +1 +SET @@session.optimizer_prune_level = DEFAULT; +SELECT @@session.optimizer_prune_level = 1; +@@session.optimizer_prune_level = 1 +1 +'#--------------------FN_DYNVARS_115_03-------------------------#' +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +1 +SET @@global.optimizer_prune_level = 0; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +0 +SET @@global.optimizer_prune_level = 1; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +1 +SET @@global.optimizer_prune_level = TRUE; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +1 +SET @@global.optimizer_prune_level = FALSE; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +0 +'#--------------------FN_DYNVARS_115_04-------------------------#' +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +1 +SET @@session.optimizer_prune_level = 0; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +0 +SET @@session.optimizer_prune_level = 1; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +1 +SET @@session.optimizer_prune_level = TRUE; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +1 +SET @@session.optimizer_prune_level = FALSE; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +0 +'#------------------FN_DYNVARS_115_05-----------------------#' +SET @@global.optimizer_prune_level = ON; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +'Bug# 34840: Since it is a boolean variable, it should not give errors on 'ON' & 'OFF' values'; +SET @@global.optimizer_prune_level = OFF; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@global.optimizer_prune_level = 'ONN'; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@global.optimizer_prune_level = "OFFF"; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@global.optimizer_prune_level = TTRUE; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@global.optimizer_prune_level = FELSE; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@global.optimizer_prune_level = -1024; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +0 +'Bug# 34840: Since it is a boolean variable, it should give errors on numeric values'; +SET @@global.optimizer_prune_level = 65536; +Warnings: +Warning 1292 Truncated incorrect optimizer_prune_level value: '65536' +SET @@global.optimizer_prune_level = 65530.34; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@global.optimizer_prune_level = test; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = ON; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = OFF; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = ONN; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = ONF; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = ON; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = OF; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = 'OFN'; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +SET @@session.optimizer_prune_level = -2; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +0 +SET @@session.optimizer_prune_level = 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.optimizer_prune_level = 65550; +Warnings: +Warning 1292 Truncated incorrect optimizer_prune_level value: '65550' +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +1 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.optimizer_prune_level = test; +ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level' +'#------------------FN_DYNVARS_115_06-----------------------#' +SELECT @@global.optimizer_prune_level = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='optimizer_prune_level'; +@@global.optimizer_prune_level = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_115_07-----------------------#' +SELECT @@session.optimizer_prune_level = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='optimizer_prune_level'; +@@session.optimizer_prune_level = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_115_08----------------------#' +SET @@optimizer_prune_level = 0; +SET @@global.optimizer_prune_level = 1; +SELECT @@optimizer_prune_level = @@global.optimizer_prune_level; +@@optimizer_prune_level = @@global.optimizer_prune_level +0 +'#---------------------FN_DYNVARS_115_09----------------------#' +SET @@optimizer_prune_level = 1; +SELECT @@optimizer_prune_level = @@local.optimizer_prune_level; +@@optimizer_prune_level = @@local.optimizer_prune_level +1 +SELECT @@local.optimizer_prune_level = @@session.optimizer_prune_level; +@@local.optimizer_prune_level = @@session.optimizer_prune_level +1 +'#---------------------FN_DYNVARS_115_10----------------------#' +SET optimizer_prune_level = 1; +SELECT @@optimizer_prune_level; +@@optimizer_prune_level +1 +SELECT local.optimizer_prune_level; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.optimizer_prune_level; +ERROR 42S02: Unknown table 'session' in field list +SELECT optimizer_prune_level = @@session.optimizer_prune_level; +ERROR 42S22: Unknown column 'optimizer_prune_level' in 'field list' +SET @@global.optimizer_prune_level = @start_global_value; +SELECT @@global.optimizer_prune_level; +@@global.optimizer_prune_level +1 +SET @@session.optimizer_prune_level = @start_session_value; +SELECT @@session.optimizer_prune_level; +@@session.optimizer_prune_level +1 diff --git a/mysql-test/r/optimizer_search_depth_basic.result b/mysql-test/r/optimizer_search_depth_basic.result new file mode 100644 index 00000000000..9c26339839e --- /dev/null +++ b/mysql-test/r/optimizer_search_depth_basic.result @@ -0,0 +1,170 @@ +SET @start_global_value = @@global.optimizer_search_depth; +SELECT @start_global_value; +@start_global_value +62 +SET @start_session_value = @@session.optimizer_search_depth; +SELECT @start_session_value; +@start_session_value +62 +'#--------------------FN_DYNVARS_116_01-------------------------#' +SET @@global.optimizer_search_depth = 100; +Warnings: +Warning 1292 Truncated incorrect optimizer_search_depth value: '100' +SET @@global.optimizer_search_depth = DEFAULT; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +62 +SET @@session.optimizer_search_depth = 200; +Warnings: +Warning 1292 Truncated incorrect optimizer_search_depth value: '200' +SET @@session.optimizer_search_depth = DEFAULT; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +62 +'#--------------------FN_DYNVARS_116_02-------------------------#' +SET @@global.optimizer_search_depth = DEFAULT; +SELECT @@global.optimizer_search_depth = 62; +@@global.optimizer_search_depth = 62 +1 +SET @@session.optimizer_search_depth = DEFAULT; +SELECT @@session.optimizer_search_depth = 62; +@@session.optimizer_search_depth = 62 +1 +'#--------------------FN_DYNVARS_116_03-------------------------#' +SET @@global.optimizer_search_depth = 0; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +0 +SET @@global.optimizer_search_depth = 1; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +1 +SET @@global.optimizer_search_depth = 62; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +62 +SET @@global.optimizer_search_depth = 63; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +63 +'#--------------------FN_DYNVARS_116_04-------------------------#' +SET @@session.optimizer_search_depth = 0; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +0 +SET @@session.optimizer_search_depth = 1; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +1 +SET @@session.optimizer_search_depth = 62; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +62 +SET @@session.optimizer_search_depth = 63; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +63 +'#------------------FN_DYNVARS_116_05-----------------------#' +SET @@global.optimizer_search_depth = 64; +Warnings: +Warning 1292 Truncated incorrect optimizer_search_depth value: '64' +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +63 +SET @@global.optimizer_search_depth = -1; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +0 +SET @@global.optimizer_search_depth = 65536; +Warnings: +Warning 1292 Truncated incorrect optimizer_search_depth value: '65536' +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +63 +SET @@global.optimizer_search_depth = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +63 +SET @@global.optimizer_search_depth = test; +ERROR 42000: Incorrect argument type to variable 'optimizer_search_depth' +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +63 +SET @@session.optimizer_search_depth = 64; +Warnings: +Warning 1292 Truncated incorrect optimizer_search_depth value: '64' +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +63 +SET @@session.optimizer_search_depth = -2; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +0 +SET @@session.optimizer_search_depth = 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.optimizer_search_depth = 65550; +Warnings: +Warning 1292 Truncated incorrect optimizer_search_depth value: '65550' +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +63 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.optimizer_search_depth = test; +ERROR 42000: Incorrect argument type to variable 'optimizer_search_depth' +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +63 +'#------------------FN_DYNVARS_116_06-----------------------#' +SELECT @@global.optimizer_search_depth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='optimizer_search_depth'; +@@global.optimizer_search_depth = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_116_07-----------------------#' +SELECT @@session.optimizer_search_depth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='optimizer_search_depth'; +@@session.optimizer_search_depth = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_116_08-----------------------#' +SET @@global.optimizer_search_depth = TRUE; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +1 +SET @@global.optimizer_search_depth = FALSE; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +0 +'#---------------------FN_DYNVARS_116_09----------------------#' +SET @@global.optimizer_search_depth = 10; +SELECT @@optimizer_search_depth = @@global.optimizer_search_depth; +@@optimizer_search_depth = @@global.optimizer_search_depth +0 +'#---------------------FN_DYNVARS_116_10----------------------#' +SET @@optimizer_search_depth = 10; +SELECT @@optimizer_search_depth = @@local.optimizer_search_depth; +@@optimizer_search_depth = @@local.optimizer_search_depth +1 +SELECT @@local.optimizer_search_depth = @@session.optimizer_search_depth; +@@local.optimizer_search_depth = @@session.optimizer_search_depth +1 +'#---------------------FN_DYNVARS_116_11----------------------#' +SET optimizer_search_depth = 1; +SELECT @@optimizer_search_depth; +@@optimizer_search_depth +1 +SELECT local.optimizer_search_depth; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.optimizer_search_depth; +ERROR 42S02: Unknown table 'session' in field list +SELECT optimizer_search_depth = @@session.optimizer_search_depth; +ERROR 42S22: Unknown column 'optimizer_search_depth' in 'field list' +SET @@global.optimizer_search_depth = @start_global_value; +SELECT @@global.optimizer_search_depth; +@@global.optimizer_search_depth +62 +SET @@session.optimizer_search_depth = @start_session_value; +SELECT @@session.optimizer_search_depth; +@@session.optimizer_search_depth +62 diff --git a/mysql-test/r/preload_buffer_size_basic.result b/mysql-test/r/preload_buffer_size_basic.result new file mode 100644 index 00000000000..775b670d3bc --- /dev/null +++ b/mysql-test/r/preload_buffer_size_basic.result @@ -0,0 +1,194 @@ +SET @start_global_value = @@global.preload_buffer_size; +SELECT @start_global_value; +@start_global_value +32768 +SET @start_session_value = @@session.preload_buffer_size; +SELECT @start_session_value; +@start_session_value +32768 +'#--------------------FN_DYNVARS_129_01-------------------------#' +SET @@global.preload_buffer_size = 10000; +SET @@global.preload_buffer_size = DEFAULT; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +32768 +SET @@session.preload_buffer_size = 20000; +SET @@session.preload_buffer_size = DEFAULT; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +32768 +'#--------------------FN_DYNVARS_129_02-------------------------#' +SET @@global.preload_buffer_size = DEFAULT; +SELECT @@global.preload_buffer_size = 32768; +@@global.preload_buffer_size = 32768 +1 +SET @@session.preload_buffer_size = DEFAULT; +SELECT @@session.preload_buffer_size = 32768; +@@session.preload_buffer_size = 32768 +1 +'#--------------------FN_DYNVARS_129_03-------------------------#' +SET @@global.preload_buffer_size = 1024; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1024 +SET @@global.preload_buffer_size = 1025; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1025 +SET @@global.preload_buffer_size = 1073741824; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1073741824 +SET @@global.preload_buffer_size = 1073741823; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1073741823 +SET @@global.preload_buffer_size = 65536; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +65536 +'#--------------------FN_DYNVARS_129_04-------------------------#' +SET @@session.preload_buffer_size = 1024; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1024 +SET @@session.preload_buffer_size = 1025; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1025 +SET @@session.preload_buffer_size = 1073741824; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1073741824 +SET @@session.preload_buffer_size = 1073741823; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1073741823 +SET @@session.preload_buffer_size = 655536; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +655536 +'#------------------FN_DYNVARS_129_05-----------------------#' +SET @@global.preload_buffer_size = 64; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '64' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1024 +SET @@global.preload_buffer_size = -1; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '0' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1024 +SET @@global.preload_buffer_size = 1023; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '1023' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1024 +SET @@global.preload_buffer_size = 1073741825; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '1073741825' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1073741824 +SET @@global.preload_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 +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1073741824 +SET @@global.preload_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'preload_buffer_size' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1073741824 +SET @@session.preload_buffer_size = 64; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '64' +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1024 +SET @@session.preload_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '0' +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1024 +SET @@session.preload_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.preload_buffer_size = 1023; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '1023' +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1024 +SET @@session.preload_buffer_size = 1073741825; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '1073741825' +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1073741824 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.preload_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'preload_buffer_size' +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +1073741824 +'#------------------FN_DYNVARS_129_06-----------------------#' +SELECT @@global.preload_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='preload_buffer_size'; +@@global.preload_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_129_07-----------------------#' +SELECT @@session.preload_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='preload_buffer_size'; +@@session.preload_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_129_08-----------------------#' +SET @@global.preload_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '1' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1024 +SET @@global.preload_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect preload_buffer_size value: '0' +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +1024 +'#---------------------FN_DYNVARS_129_09----------------------#' +SET @@global.preload_buffer_size = 2048; +SELECT @@preload_buffer_size = @@global.preload_buffer_size; +@@preload_buffer_size = @@global.preload_buffer_size +0 +'#---------------------FN_DYNVARS_129_10----------------------#' +SET @@preload_buffer_size = 5000; +SELECT @@preload_buffer_size = @@local.preload_buffer_size; +@@preload_buffer_size = @@local.preload_buffer_size +1 +SELECT @@local.preload_buffer_size = @@session.preload_buffer_size; +@@local.preload_buffer_size = @@session.preload_buffer_size +1 +'#---------------------FN_DYNVARS_129_11----------------------#' +SET preload_buffer_size = 1024; +SELECT @@preload_buffer_size; +@@preload_buffer_size +1024 +SELECT local.preload_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.preload_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT preload_buffer_size = @@session.preload_buffer_size; +ERROR 42S22: Unknown column 'preload_buffer_size' in 'field list' +SET @@global.preload_buffer_size = @start_global_value; +SELECT @@global.preload_buffer_size; +@@global.preload_buffer_size +32768 +SET @@session.preload_buffer_size = @start_session_value; +SELECT @@session.preload_buffer_size; +@@session.preload_buffer_size +32768 diff --git a/mysql-test/r/query_cache_limit_func.result b/mysql-test/r/query_cache_limit_func.result new file mode 100644 index 00000000000..e54884cd5c3 --- /dev/null +++ b/mysql-test/r/query_cache_limit_func.result @@ -0,0 +1,115 @@ +** Setup ** + +SET @global_query_cache_limit = @@global.query_cache_limit; +** warnings ** +DROP TABLE IF EXISTS t; +** creating table ** +CREATE TABLE t +( +id INT AUTO_INCREMENT PRIMARY KEY, +c TEXT(30) +); +**inserting value ** +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); +** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; +** On query_cache_type ** +SET GLOBAL query_cache_type = ON; +** Allocating cache size ** +SET GLOBAL query_cache_size = 131072; +** Reset values +SET GLOBAL query_cache_size = 0; +SET GLOBAL query_cache_size = 131072; +SET GLOBAL query_cache_type = ON; +'#---------------------FN_DYNVARS_132_01----------------------#' +** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; +** fetching results ** +SELECT * FROM t; +id c +1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** check status on not setting query_cache_limit value ** +SHOW STATUS LIKE 'Qcache_not_cached'; +Variable_name Value +Qcache_not_cached 0 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +'#---------------------FN_DYNVARS_132_02----------------------#' +** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; +** set cache limit ** +SET @@GLOBAL.query_cache_limit=0; +** fetching results ** +SELECT * FROM t; +id c +1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Check status after setting value ** +SHOW STATUS LIKE 'Qcache_not_cached'; +Variable_name Value +Qcache_not_cached 1 +1 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +'#---------------------FN_DYNVARS_132_03----------------------#' +** set cache limit ** +SET @@GLOBAL.query_cache_limit=DEFAULT; +** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; +** fetching results ** +SELECT * FROM t; +id c +1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +SHOW STATUS LIKE 'Qcache_not_cached'; +Variable_name Value +Qcache_not_cached 0 +0 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +SET @@GLOBAL.query_cache_limit=0; +SHOW STATUS LIKE 'Qcache_not_cached'; +Variable_name Value +Qcache_not_cached 0 +0 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +** fetching results ** +SELECT * FROM t; +id c +1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxx +2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxrx +3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxsy +4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxgw +** Check status after setting value ** +SHOW STATUS LIKE 'Qcache_not_cached'; +Variable_name Value +Qcache_not_cached 0 +0 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +SET @@GLOBAL.query_cache_limit = @global_query_cache_limit; +DROP TABLE IF EXISTS t; diff --git a/mysql-test/r/query_cache_type_basic.result b/mysql-test/r/query_cache_type_basic.result new file mode 100644 index 00000000000..101853daa80 --- /dev/null +++ b/mysql-test/r/query_cache_type_basic.result @@ -0,0 +1,157 @@ +SET @global_start_value = @@global.query_cache_type; +SELECT @global_start_value; +@global_start_value +ON +SET @session_start_value = @@session.query_cache_type; +SELECT @session_start_value; +@session_start_value +ON +'#--------------------FN_DYNVARS_134_01------------------------#' +SET @@global.query_cache_type = 0; +SET @@global.query_cache_type = DEFAULT; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@session.query_cache_type = 0; +SET @@session.query_cache_type = DEFAULT; +SELECT @@session.query_cache_type; +@@session.query_cache_type +ON +'#---------------------FN_DYNVARS_134_02-------------------------#' +SET @@global.query_cache_type = NULL; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'NULL' +SET @@global.query_cache_type = ''; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of '' +SET @@session.query_cache_type = NULL; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'NULL' +SET @@session.query_cache_type = ''; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of '' +'#--------------------FN_DYNVARS_134_03------------------------#' +SET @@global.query_cache_type = OFF; +SELECT @@global.query_cache_type; +@@global.query_cache_type +OFF +SET @@global.query_cache_type = ON; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@global.query_cache_type = DEMAND; +SELECT @@global.query_cache_type; +@@global.query_cache_type +DEMAND +SET @@session.query_cache_type = OFF; +SELECT @@session.query_cache_type; +@@session.query_cache_type +OFF +SET @@session.query_cache_type = ON; +SELECT @@session.query_cache_type; +@@session.query_cache_type +ON +SET @@session.query_cache_type = DEMAND; +SELECT @@session.query_cache_type; +@@session.query_cache_type +DEMAND +'#--------------------FN_DYNVARS_134_04-------------------------#' +SET @@global.query_cache_type = -1; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of '-1' +SET @@global.query_cache_type = ONDEMAND; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'ONDEMAND' +SET @@global.query_cache_type = 'ON,OFF'; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'ON,OFF' +SET @@global.query_cache_type = 'OF'; +SELECT @@global.query_cache_type; +@@global.query_cache_type +OFF +'Bug# 34828: OF is taken as OFF.' +SET @@global.query_cache_type = YES; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'YES' +SET @@global.query_cache_type = ' '; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of ' ' +'#-------------------FN_DYNVARS_134_05----------------------------#' +SELECT @@session.query_cache_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_type'; +@@session.query_cache_type = VARIABLE_VALUE +1 +'#----------------------FN_DYNVARS_134_06------------------------#' +SELECT @@global.query_cache_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_type'; +@@global.query_cache_type = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_134_07-------------------------#' +SET @@global.query_cache_type = 0; +SELECT @@global.query_cache_type; +@@global.query_cache_type +OFF +SET @@global.query_cache_type = 1; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@global.query_cache_type = 2; +SELECT @@global.query_cache_type; +@@global.query_cache_type +DEMAND +SET @@global.query_cache_type = 0.4; +SELECT @@global.query_cache_type; +@@global.query_cache_type +OFF +SET @@global.query_cache_type = 1.0; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@global.query_cache_type = 1.1; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@global.query_cache_type = 1.5; +SELECT @@global.query_cache_type; +@@global.query_cache_type +DEMAND +SET @@global.query_cache_type = 2.49; +SELECT @@global.query_cache_type; +@@global.query_cache_type +DEMAND +SET @@session.query_cache_type = 0.5; +SELECT @@session.query_cache_type; +@@session.query_cache_type +ON +SET @@session.query_cache_type = 1.6; +SELECT @@session.query_cache_type; +@@session.query_cache_type +DEMAND +'Bug: Decimal values can be used within the range [0.0-2.5). Values'; +'are rounded to 0,1,2 as evident from outcome.'; +SET @@global.query_cache_type = 3; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of '3' +'#---------------------FN_DYNVARS_134_08----------------------#' +SET @@global.query_cache_type = TRUE; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@global.query_cache_type = FALSE; +SELECT @@global.query_cache_type; +@@global.query_cache_type +OFF +'#---------------------FN_DYNVARS_134_09----------------------#' +SET query_cache_type = 'ON'; +SET session.query_cache_type = 'OFF'; +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 'query_cache_type = 'OFF'' at line 1 +SET global.query_cache_type = 'DEMAND'; +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 'query_cache_type = 'DEMAND'' at line 1 +SET session query_cache_type = 1; +SELECT @@query_cache_type; +@@query_cache_type +ON +SET global query_cache_type = 0; +SELECT @@global.query_cache_type; +@@global.query_cache_type +OFF +SET @@global.query_cache_type = @global_start_value; +SELECT @@global.query_cache_type; +@@global.query_cache_type +ON +SET @@session.query_cache_type = @session_start_value; +SELECT @@session.query_cache_type; +@@session.query_cache_type +ON diff --git a/mysql-test/r/query_cache_type_func.result b/mysql-test/r/query_cache_type_func.result new file mode 100644 index 00000000000..94c31804248 --- /dev/null +++ b/mysql-test/r/query_cache_type_func.result @@ -0,0 +1,221 @@ +** Setup ** + +** Connecting to con0 using root ** +** Connection con0 ** +SET @start_global_value = @@GLOBAL.query_cache_type; +SET @start_session_value = @@SESSION.query_cache_type; +CREATE TABLE t1(id int, value varchar(10)); +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +SET @@GLOBAL.query_cache_size = 65536; +FLUSHING CACHE +SET @@GLOBAL.query_cache_size = 0; +SET @@GLOBAL.query_cache_size = 65536; +** TESTING SESSION SCOPE ** +'#--------------------FN_DYNVARS_135_01-------------------------#' +SET @@query_cache_type = DEFAULT; +SELECT @@query_cache_type; +@@query_cache_type +ON +ON Expected +'#--------------------FN_DYNVARS_135_02-------------------------#' +SET @@query_cache_type = NULL; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'NULL' +Expected error: Wrong value for variable +SET @@query_cache_type = ON; +SELECT @@query_cache_type; +@@query_cache_type +ON +ON Expected +SET @@query_cache_type = OFF; +SELECT @@query_cache_type; +@@query_cache_type +OFF +OFF Expected +SET @@query_cache_type = DEMAND; +SELECT @@query_cache_type; +@@query_cache_type +DEMAND +DEMAND Expected +SET @@query_cache_type = XYZ; +ERROR 42000: Variable 'query_cache_type' can't be set to the value of 'XYZ' +Expected error: Wrong value for variable +** Turning cache to ON ** +SET @@query_cache_type = ON; +'#--------------------FN_DYNVARS_135_03-------------------------#' +** CACHE ADDITION ** + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +SELECT value FROM t1; +value +val1 +val2 +val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 2 +2 Expected +'#--------------------FN_DYNVARS_135_04-------------------------#' +** CACHE HIT ** +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 2 +2 Expected +SELECT SQL_CACHE value FROM t1; +value +val1 +val2 +val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 3 +3 Expected +SELECT SQL_NO_CACHE value FROM t1; +value +val1 +val2 +val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 3 +3 Expected +'#--------------------FN_DYNVARS_135_05-------------------------#' +Testing with store procedure +CREATE PROCEDURE testProcHit() +BEGIN +SELECT * FROM t1; +SELECT SQL_CACHE value FROM t1; +END| +CALL testProcHit(); +id value +1 val1 +2 val2 +3 val3 +value +val1 +val2 +val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 5 +Expected value : 3 +================== +Bug#35388: Stored procedure execution causes improper behavior of query cache. +'#--------------------FN_DYNVARS_135_06-------------------------#' +FLUSHING CACHE +SET @@GLOBAL.query_cache_size = 0; +SET @@GLOBAL.query_cache_size = 65536; +** Turning cache to OFF ** +SET @@query_cache_type = OFF; +SELECT @@query_cache_type; +@@query_cache_type +OFF +SELECT id FROM t1; +id +1 +2 +3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +'#--------------------FN_DYNVARS_135_07-------------------------#' +SELECT SQL_CACHE id FROM t1; +id +1 +2 +3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +SELECT SQL_CACHE * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +'#--------------------FN_DYNVARS_135_08-------------------------#' +FLUSHING CACHE +SET @@GLOBAL.query_cache_size = 0; +SET @@GLOBAL.query_cache_size = 65536; +** Turning cache to DEMAND ** +SET @@query_cache_type = DEMAND; +SELECT @@query_cache_type; +@@query_cache_type +DEMAND +'#--------------------FN_DYNVARS_135_09-------------------------#' +SELECT value,id FROM t1; +value id +val1 1 +val2 2 +val3 3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +SELECT SQL_CACHE * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +0 Expected +** TESTING GLOBAL SCOPE ** +'#--------------------FN_DYNVARS_135_10-------------------------#' +SET @@GLOBAL.query_cache_type = OFF; +** Connecting con1 using root ** +** Connection con1 ** +SELECT @@query_cache_type; +@@query_cache_type +OFF +OFF Expected +'#--------------------FN_DYNVARS_135_11-------------------------#' +SET @@GLOBAL.query_cache_type = DEMAND; +** Connecting con2 using root ** +** Connection con2 ** +SELECT @@query_cache_type; +@@query_cache_type +DEMAND +DEMAND Expected +'#--------------------FN_DYNVARS_135_12-------------------------#' +SET @@GLOBAL.query_cache_type = ON; +** Connecting con3 using root ** +** Connection con3 ** +SELECT @@query_cache_type; +@@query_cache_type +ON +ON Expected + +** Cleanup ** + +Disconnecting con1,con2,con3 +** Connection con0 ** +SET @@GLOBAL.query_cache_type = @start_global_value; +SET @@SESSION.query_cache_type = @start_session_value; +DROP TABLE t1; +DROP PROCEDURE testProcHit; +Disconnecting con0 diff --git a/mysql-test/r/query_cache_wlock_invalidate_basic.result b/mysql-test/r/query_cache_wlock_invalidate_basic.result new file mode 100644 index 00000000000..bff07741656 --- /dev/null +++ b/mysql-test/r/query_cache_wlock_invalidate_basic.result @@ -0,0 +1,174 @@ +SET @session_start_value = @@session.query_cache_wlock_invalidate; +SELECT @session_start_value; +@session_start_value +0 +SET @global_start_value = @@global.query_cache_wlock_invalidate; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_135_01------------------------#' +SET @@session.query_cache_wlock_invalidate = 1; +SET @@session.query_cache_wlock_invalidate = DEFAULT; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +SET @@global.query_cache_wlock_invalidate = 1; +SET @@global.query_cache_wlock_invalidate = DEFAULT; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +'#---------------------FN_DYNVARS_135_02-------------------------#' +SET query_cache_wlock_invalidate = 1; +SELECT @@query_cache_wlock_invalidate; +@@query_cache_wlock_invalidate +1 +SELECT session.query_cache_wlock_invalidate; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.query_cache_wlock_invalidate; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.query_cache_wlock_invalidate; +ERROR 42S02: Unknown table 'global' in field list +SET session query_cache_wlock_invalidate = 0; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +SET global query_cache_wlock_invalidate = 0; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +'#--------------------FN_DYNVARS_135_03------------------------#' +SET @@session.query_cache_wlock_invalidate = 0; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +SET @@session.query_cache_wlock_invalidate = 1; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +1 +SET @@global.query_cache_wlock_invalidate = 0; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +SET @@global.query_cache_wlock_invalidate = 1; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +1 +'#--------------------FN_DYNVARS_135_04-------------------------#' +SET @@session.query_cache_wlock_invalidate = -1; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '-1' +SET @@session.query_cache_wlock_invalidate = 1.6; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '2' +SET @@session.query_cache_wlock_invalidate = "T"; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'T' +SET @@session.query_cache_wlock_invalidate = "Y"; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'Y' +SET @@session.query_cache_wlock_invalidate = TRE; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'TRÜE' +SET @@session.query_cache_wlock_invalidate = N; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÕN' +SET @@session.query_cache_wlock_invalidate = OF; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.query_cache_wlock_invalidate = FF; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÓFF' +SET @@global.query_cache_wlock_invalidate = -1; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '-1' +SET @@global.query_cache_wlock_invalidate = 2; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of '2' +SET @@global.query_cache_wlock_invalidate = "T"; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'T' +SET @@global.query_cache_wlock_invalidate = "Y"; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'Y' +SET @@global.query_cache_wlock_invalidate = TRE; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'TRÜE' +SET @@global.query_cache_wlock_invalidate = N; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÕN' +SET @@global.query_cache_wlock_invalidate = OF; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +'Bug 34828: OF is taken as OFF and a value of 0 is set.' +SET @@global.query_cache_wlock_invalidate = FF; +ERROR 42000: Variable 'query_cache_wlock_invalidate' can't be set to the value of 'ÓFF' +'#-------------------FN_DYNVARS_135_05----------------------------#' +SET @@global.query_cache_wlock_invalidate = 0; +SET @@session.query_cache_wlock_invalidate = 1; +SELECT @@global.query_cache_wlock_invalidate AS res_is_0; +res_is_0 +0 +SET @@global.query_cache_wlock_invalidate = 0; +SELECT @@session.query_cache_wlock_invalidate AS res_is_1; +res_is_1 +1 +'#----------------------FN_DYNVARS_135_06------------------------#' +SELECT @@global.query_cache_wlock_invalidate = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; +@@global.query_cache_wlock_invalidate = VARIABLE_VALUE +1 +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; +VARIABLE_VALUE +OFF +'#----------------------FN_DYNVARS_135_07------------------------#' +SELECT @@session.query_cache_wlock_invalidate = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; +@@session.query_cache_wlock_invalidate = VARIABLE_VALUE +0 +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_135_08-------------------------#' +SET @@session.query_cache_wlock_invalidate = OFF; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +SET @@session.query_cache_wlock_invalidate = ON; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +1 +SET @@global.query_cache_wlock_invalidate = OFF; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +SET @@global.query_cache_wlock_invalidate = ON; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +1 +'#---------------------FN_DYNVARS_135_09----------------------#' +SET @@session.query_cache_wlock_invalidate = TRUE; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +1 +SET @@session.query_cache_wlock_invalidate = FALSE; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +SET @@global.query_cache_wlock_invalidate = TRUE; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +1 +SET @@global.query_cache_wlock_invalidate = FALSE; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 +SET @@session.query_cache_wlock_invalidate = @session_start_value; +SELECT @@session.query_cache_wlock_invalidate; +@@session.query_cache_wlock_invalidate +0 +SET @@global.query_cache_wlock_invalidate = @global_start_value; +SELECT @@global.query_cache_wlock_invalidate; +@@global.query_cache_wlock_invalidate +0 diff --git a/mysql-test/r/query_cache_wlock_invalidate_func.result b/mysql-test/r/query_cache_wlock_invalidate_func.result new file mode 100644 index 00000000000..ebaa29867bf --- /dev/null +++ b/mysql-test/r/query_cache_wlock_invalidate_func.result @@ -0,0 +1,164 @@ +** Setup ** + +** Connecting con0 using root ** +** Connecting con1 using root ** +** Connection con0 ** +SET @start_global_value = @@GLOBAL.query_cache_wlock_invalidate; +SET @start_session_value = @@SESSION.query_cache_wlock_invalidate; +SET @old_cache_size = @@GLOBAL.query_cache_size; +SET @old_cache_type = @@GLOBAL.query_cache_type; +CREATE TABLE t1(id int, value varchar(10)); +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +SET GLOBAL query_cache_size = 131072; +FLUSHING CACHE +SET GLOBAL query_cache_size = 0; +SET GLOBAL query_cache_size = 131072; +SET GLOBAL query_cache_type = ON; +Testing for value ON +** Connection con0 ** +SET SESSION query_cache_wlock_invalidate = ON; +** Connection con1 ** +SET SESSION query_cache_wlock_invalidate = ON; +'#----------------------------FN_DYNVARS_136_01--------------#' +Testing for cache invalidation +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +LOCK TABLE t1 WRITE; +UNLOCK TABLES; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +'#----------------------------FN_DYNVARS_136_02-----------------------#' +SELECT * FROM t1; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +** Connection con1 ** +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +** Connection con0 ** +LOCK TABLE t1 WRITE; +** Connection con1 ** +** Asynchronous Execution ** +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)); +SELECT @TimeDifference;| +** Connection con0 ** +Sleeping 2 Seconds before unlock +UNLOCK TABLES; +** Connection con1 ** +** Asynchronous Result ** +id value +1 val1 +2 val2 +3 val3 +@TimeDifference +2 +Testing for value OFF +** Connection con0 ** +SET SESSION query_cache_wlock_invalidate = OFF; +** Connection con1 ** +SET SESSION query_cache_wlock_invalidate = OFF; +'#----------------------------FN_DYNVARS_136_03------------------#' +Testing for cache invalidation +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +LOCK TABLE t1 WRITE; +UNLOCK TABLES; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +'#----------------------------FN_DYNVARS_136_04---------------------#' +SELECT * FROM t1; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +** Connection con1 ** +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +** Connection con0 ** +LOCK TABLE t1 WRITE; +** Connection con1 ** +** Asynchronous Execution ** +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)); +SELECT @TimeDifference;| +** Connection con0 ** +Sleeping 2 Seconds before unlock +UNLOCK TABLES; +** Connection con1 ** +** Asynchronous Result ** +id value +1 val1 +2 val2 +3 val3 +@TimeDifference +2 +'Bug#35390 the time difference should not be 2 seconds in this case,' +'it should be less than a second;' +'#----------------------------FN_DYNVARS_136_05------------------------#' +SET GLOBAL query_cache_wlock_invalidate = OFF; +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +SET SESSION query_cache_wlock_invalidate = ON; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +SET SESSION query_cache_wlock_invalidate = OFF; +** Connection con_int1 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +1 +Expected Value : 1 / ON; +** Connection con_int2 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +SELECT @@GLOBAL.query_cache_wlock_invalidate; +@@GLOBAL.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +** Connection default ** +Disconnecting Connections con_int1, con_int2 + +CLEANUP +** Connection con0 ** +SET @@GLOBAL.query_cache_wlock_invalidate = @start_global_value; +SET @@SESSION.query_cache_wlock_invalidate = @start_session_value ; +SET @@GLOBAL.query_cache_size = @old_cache_size; +SET @@GLOBAL.query_cache_type = @old_cache_type; +** Connection default ** +Disconnecting Connections con0, con1 +DROP TABLE t1; diff --git a/mysql-test/r/query_prealloc_size_func.result b/mysql-test/r/query_prealloc_size_func.result new file mode 100644 index 00000000000..c77586f2fc4 --- /dev/null +++ b/mysql-test/r/query_prealloc_size_func.result @@ -0,0 +1,38 @@ +** Setup ** + +CREATE TABLE t1 (id int auto_increment primary key, val text(200)); +INSERT INTO t1 values(NULL,'a'); +INSERT INTO t1 values(NULL,'b'); +INSERT INTO t1 values(NULL,'c'); +INSERT INTO t1 values(NULL,'d'); +SELECT * FROM t1 ORDER BY val; +id val +1 a +2 b +3 c +4 d +SET SESSION query_prealloc_size = 8192; +'#----------------------------FN_DYNVARS_137_05-----------------#' +SET GLOBAL query_prealloc_size = 8192; +SELECT @@SESSION.query_prealloc_size; +@@SESSION.query_prealloc_size +8192 +Expected Value : 8192; +SET SESSION query_prealloc_size = 16384; +SELECT @@SESSION.query_prealloc_size; +@@SESSION.query_prealloc_size +8192 +Expected Value : 8192; +SET SESSION query_prealloc_size = 8192; +SELECT @@SESSION.query_prealloc_size; +@@SESSION.query_prealloc_size +16384 +Expected Value : 16384; +SELECT @@SESSION.query_prealloc_size; +@@SESSION.query_prealloc_size +8192 +Expected Value : 8192; +SELECT @@GLOBAL.query_prealloc_size; +@@GLOBAL.query_prealloc_size +8192 +Expected Value : 8192; diff --git a/mysql-test/r/read_buffer_size_basic.result b/mysql-test/r/read_buffer_size_basic.result new file mode 100644 index 00000000000..799f7b56235 --- /dev/null +++ b/mysql-test/r/read_buffer_size_basic.result @@ -0,0 +1,189 @@ +SET @start_global_value = @@global.read_buffer_size; +SELECT @start_global_value; +@start_global_value +131072 +SET @start_session_value = @@session.read_buffer_size; +SELECT @start_session_value; +@start_session_value +131072 +'#--------------------FN_DYNVARS_138_01-------------------------#' +SET @@global.read_buffer_size = 1000; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '1000' +SET @@global.read_buffer_size = DEFAULT; +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +131072 +SET @@session.read_buffer_size = 2000; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '2000' +SET @@session.read_buffer_size = DEFAULT; +SELECT @@session.read_buffer_size; +@@session.read_buffer_size +131072 +'#--------------------FN_DYNVARS_138_02-------------------------#' +SET @@global.read_buffer_size = DEFAULT; +SELECT @@global.read_buffer_size = 131072; +@@global.read_buffer_size = 131072 +1 +SET @@session.read_buffer_size = DEFAULT; +SELECT @@session.read_buffer_size = 131072; +@@session.read_buffer_size = 131072 +1 +'#--------------------FN_DYNVARS_138_03-------------------------#' +SET @@global.read_buffer_size = 8201; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '8201' +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 +1 +SET @@global.read_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '8200' +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 +1 +SET @@global.read_buffer_size = 2147479552; +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +2147479552 +SET @@global.read_buffer_size = 2147479551; +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +2147475456 +'#--------------------FN_DYNVARS_138_04-------------------------#' +SET @@session.read_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '8200' +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 +1 +SET @@session.read_buffer_size = 8201; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '8201' +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 +1 +SET @@session.read_buffer_size = 2147479552; +SELECT @@session.read_buffer_size; +@@session.read_buffer_size +2147479552 +SET @@session.read_buffer_size = 2147479551; +SELECT @@session.read_buffer_size; +@@session.read_buffer_size +2147475456 +'#------------------FN_DYNVARS_138_05-----------------------#' +SET @@global.read_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '8199' +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 +1 +SET @@global.read_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '0' +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 +1 +SET @@global.read_buffer_size = 2147479553; +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +2147479552 +SET @@global.read_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 +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +2147479552 +SET @@global.read_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'read_buffer_size' +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +2147479552 +SET @@session.read_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '8199' +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 +1 +SET @@session.read_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '0' +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +@@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 +1 +SET @@session.read_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.read_buffer_size = 2147479553; +SELECT @@session.read_buffer_size; +@@session.read_buffer_size +2147479552 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.read_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'read_buffer_size' +SELECT @@session.read_buffer_size; +@@session.read_buffer_size +2147479552 +'#------------------FN_DYNVARS_138_06-----------------------#' +SELECT @@global.read_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='read_buffer_size'; +@@global.read_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_138_07-----------------------#' +SELECT @@session.read_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='read_buffer_size'; +@@session.read_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_138_08-----------------------#' +SET @@global.read_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '1' +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 +1 +SET @@global.read_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '0' +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +@@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 +1 +'Bug: FN_DYNVARS_138_08- Errors are not coming on assigning TRUE/FALSE to variable' +'#---------------------FN_DYNVARS_138_09----------------------#' +SET @@global.read_buffer_size = 9000; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '9000' +SELECT @@read_buffer_size = @@global.read_buffer_size; +@@read_buffer_size = @@global.read_buffer_size +0 +'#---------------------FN_DYNVARS_138_10----------------------#' +SET @@read_buffer_size = 9000; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '9000' +SELECT @@read_buffer_size = @@local.read_buffer_size; +@@read_buffer_size = @@local.read_buffer_size +1 +SELECT @@local.read_buffer_size = @@session.read_buffer_size; +@@local.read_buffer_size = @@session.read_buffer_size +1 +'#---------------------FN_DYNVARS_138_11----------------------#' +SET read_buffer_size = 9100; +Warnings: +Warning 1292 Truncated incorrect read_buffer_size value: '9100' +SELECT @@read_buffer_size= 8200 OR @@read_buffer_size= 8228 ; +@@read_buffer_size= 8200 OR @@read_buffer_size= 8228 +1 +SELECT local.read_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.read_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT read_buffer_size = @@session.read_buffer_size; +ERROR 42S22: Unknown column 'read_buffer_size' in 'field list' +SET @@global.read_buffer_size = @start_global_value; +SELECT @@global.read_buffer_size; +@@global.read_buffer_size +131072 +SET @@session.read_buffer_size = @start_session_value; +SELECT @@session.read_buffer_size; +@@session.read_buffer_size +131072 diff --git a/mysql-test/r/read_only_basic.result b/mysql-test/r/read_only_basic.result new file mode 100644 index 00000000000..ac153fa337c --- /dev/null +++ b/mysql-test/r/read_only_basic.result @@ -0,0 +1,119 @@ +SET @start_value = @@global.read_only; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_139_01------------------------#' +SET @@global.read_only = 1; +SET @@global.read_only = DEFAULT; +SELECT @@global.read_only; +@@global.read_only +0 +'#---------------------FN_DYNVARS_139_02-------------------------#' +SET @@global.read_only = @start_value; +SELECT @@global.read_only = 0; +@@global.read_only = 0 +1 +'#--------------------FN_DYNVARS_139_03------------------------#' +SET @@global.read_only = 0; +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = 1; +SELECT @@global.read_only; +@@global.read_only +1 +SET @@global.read_only = TRUE; +SELECT @@global.read_only; +@@global.read_only +1 +SET @@global.read_only = FALSE; +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = ON; +SELECT @@global.read_only; +@@global.read_only +1 +SET @@global.read_only = OFF; +SELECT @@global.read_only; +@@global.read_only +0 +'#--------------------FN_DYNVARS_139_04-------------------------#' +SET @@global.read_only = -1; +ERROR 42000: Variable 'read_only' can't be set to the value of '-1' +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = 4294967296; +ERROR 42000: Variable 'read_only' can't be set to the value of '4294967296' +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = 10240022115; +ERROR 42000: Variable 'read_only' can't be set to the value of '10240022115' +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = 10000.01; +ERROR 42000: Variable 'read_only' can't be set to the value of '10000' +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = -1024; +ERROR 42000: Variable 'read_only' can't be set to the value of '-1024' +SELECT @@global.read_only; +@@global.read_only +0 +SET @@global.read_only = 42949672950; +ERROR 42000: Variable 'read_only' can't be set to the value of '42949672950' +SELECT @@global.read_only; +@@global.read_only +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.read_only = 'test'; +ERROR 42000: Variable 'read_only' can't be set to the value of 'test' +SELECT @@global.read_only; +@@global.read_only +0 +'#-------------------FN_DYNVARS_139_05----------------------------#' +SET @@session.read_only = 0; +ERROR HY000: Variable 'read_only' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@read_only; +@@read_only +0 +'#----------------------FN_DYNVARS_139_06------------------------#' +SELECT @@global.read_only = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='read_only'; +@@global.read_only = VARIABLE_VALUE +1 +SELECT @@read_only = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='read_only'; +@@read_only = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_139_07----------------------#' +SET @@global.read_only = 1; +SELECT @@read_only = @@global.read_only; +@@read_only = @@global.read_only +1 +'#---------------------FN_DYNVARS_139_08----------------------#' +SET read_only = 1; +ERROR HY000: Variable 'read_only' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@read_only; +@@read_only +1 +SET local.read_only = 1; +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 'read_only = 1' at line 1 +SELECT local.read_only; +ERROR 42S02: Unknown table 'local' in field list +SET global.read_only = 1; +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 'read_only = 1' at line 1 +SELECT global.read_only; +ERROR 42S02: Unknown table 'global' in field list +SELECT read_only = @@session.read_only; +ERROR 42S22: Unknown column 'read_only' in 'field list' +SET @@global.read_only = @start_value; +SELECT @@global.read_only; +@@global.read_only +0 diff --git a/mysql-test/r/read_only_func.result b/mysql-test/r/read_only_func.result new file mode 100644 index 00000000000..35b42d468d6 --- /dev/null +++ b/mysql-test/r/read_only_func.result @@ -0,0 +1,56 @@ +** Setup ** + +SET @default_read_only = @@read_only; +'#--------------------FN_DYNVARS_140_01-------------------------#' +SET Global read_only=ON; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); +INSERT into t1(name) values("aaassssssssddddddddffffff"); +update t1 set name="jfjdf" where id=1; +select * from t1 where id=1; +id name +1 jfjdf +'#--------------------FN_DYNVARS_140_02-------------------------#' +** Creating new user with out super privilege** +CREATE user sameea; +** Connecting connn using username 'sameea' ** +SET Global read_ONLY=ON; +ERROR 42000: Access denied; you need the SUPER privilege for this operation +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); +ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement +not updating values +INSERT into t2(name) values("aaassssssssddddddddffffff"); +Got one of the listed errors +UPDATE t2 SET name="samia" where id=1; +Got one of the listed errors +'#--------------------FN_DYNVARS_140_03-------------------------#' +CREATE TEMPORARY TABLE t3(a int); +'#--------------------FN_DYNVARS_140_04-------------------------#' +** Connection default ** +SET Global read_only=OFF; +** Connection connn ** +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); +updating values +INSERT into t2(name) values("aaassssssssdddddddd"); +UPDATE t2 SET name="samia" where id=1; +** Connection default ** +** Disconnecting connn ** +DROP USER sameea; +DROP TABLE t1; +DROP TABLE t2; +SET global read_only = @default_read_only; diff --git a/mysql-test/r/read_rnd_buffer_size_basic.result b/mysql-test/r/read_rnd_buffer_size_basic.result new file mode 100644 index 00000000000..c51b0591054 --- /dev/null +++ b/mysql-test/r/read_rnd_buffer_size_basic.result @@ -0,0 +1,188 @@ +SET @start_global_value = @@global.read_rnd_buffer_size; +SELECT @start_global_value; +@start_global_value +262144 +SET @start_session_value = @@session.read_rnd_buffer_size; +SELECT @start_session_value; +@start_session_value +262144 +'#--------------------FN_DYNVARS_140_01-------------------------#' +SET @@global.read_rnd_buffer_size = 1000; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '1000' +SET @@global.read_rnd_buffer_size = DEFAULT; +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +262144 +SET @@session.read_rnd_buffer_size = 2000; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '2000' +SET @@session.read_rnd_buffer_size = DEFAULT; +SELECT @@session.read_rnd_buffer_size; +@@session.read_rnd_buffer_size +262144 +'#--------------------FN_DYNVARS_140_02-------------------------#' +SET @@global.read_rnd_buffer_size = DEFAULT; +SELECT @@global.read_rnd_buffer_size = 262144; +@@global.read_rnd_buffer_size = 262144 +1 +SET @@session.read_rnd_buffer_size = DEFAULT; +SELECT @@session.read_rnd_buffer_size = 262144; +@@session.read_rnd_buffer_size = 262144 +1 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_140_03-------------------------#' +SET @@global.read_rnd_buffer_size = 8201; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8201' +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228 +1 +SET @@global.read_rnd_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8200' +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228 +1 +SET @@global.read_rnd_buffer_size = 2147479552; +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +2147479552 +SET @@global.read_rnd_buffer_size = 2147479551; +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +2147475456 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_140_04-------------------------#' +SET @@session.read_rnd_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8200' +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228 +1 +SET @@session.read_rnd_buffer_size = 8201; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8201' +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228 +1 +SET @@session.read_rnd_buffer_size = 2147479552; +SELECT @@session.read_rnd_buffer_size; +@@session.read_rnd_buffer_size +2147479552 +SET @@session.read_rnd_buffer_size = 2147479551; +SELECT @@session.read_rnd_buffer_size; +@@session.read_rnd_buffer_size +2147475456 +'#------------------FN_DYNVARS_140_05-----------------------#' +SET @@global.read_rnd_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8199' +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228 +1 +SET @@global.read_rnd_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0' +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228 +1 +SET @@global.read_rnd_buffer_size = 2147479553; +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +2147479552 +SET @@global.read_rnd_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 +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +2147479552 +SET @@global.read_rnd_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size' +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +2147479552 +SET @@session.read_rnd_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '8199' +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228 +1 +SET @@session.read_rnd_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0' +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +@@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228 +1 +SET @@session.read_rnd_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.read_rnd_buffer_size = 2147479553; +SELECT @@session.read_rnd_buffer_size; +@@session.read_rnd_buffer_size +2147479552 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.read_rnd_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'read_rnd_buffer_size' +SELECT @@session.read_rnd_buffer_size; +@@session.read_rnd_buffer_size +2147479552 +'#------------------FN_DYNVARS_140_06-----------------------#' +SELECT @@global.read_rnd_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size'; +@@global.read_rnd_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_140_07-----------------------#' +SELECT @@session.read_rnd_buffer_size = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size'; +@@session.read_rnd_buffer_size = +VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_140_08-----------------------#' +SET @@global.read_rnd_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '1' +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228 +1 +SET @@global.read_rnd_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '0' +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +@@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228 +1 +'#---------------------FN_DYNVARS_140_09----------------------#' +SET @@global.read_rnd_buffer_size = 9000; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '9000' +SELECT @@read_rnd_buffer_size = @@global.read_rnd_buffer_size; +@@read_rnd_buffer_size = @@global.read_rnd_buffer_size +0 +'#---------------------FN_DYNVARS_140_10----------------------#' +SET @@read_rnd_buffer_size = 9000; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '9000' +SELECT @@read_rnd_buffer_size = @@local.read_rnd_buffer_size; +@@read_rnd_buffer_size = @@local.read_rnd_buffer_size +1 +SELECT @@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size; +@@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size +1 +'#---------------------FN_DYNVARS_140_11----------------------#' +SET read_rnd_buffer_size = 9100; +Warnings: +Warning 1292 Truncated incorrect read_rnd_buffer_size value: '9100' +SELECT @@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228; +@@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228 +1 +SELECT local.read_rnd_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.read_rnd_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT read_rnd_buffer_size = @@session.read_rnd_buffer_size; +ERROR 42S22: Unknown column 'read_rnd_buffer_size' in 'field list' +SET @@global.read_rnd_buffer_size = @start_global_value; +SELECT @@global.read_rnd_buffer_size; +@@global.read_rnd_buffer_size +262144 +SET @@session.read_rnd_buffer_size = @start_session_value; +SELECT @@session.read_rnd_buffer_size; +@@session.read_rnd_buffer_size +262144 diff --git a/mysql-test/r/relay_log_purge_basic.result b/mysql-test/r/relay_log_purge_basic.result new file mode 100644 index 00000000000..6f938c5265f --- /dev/null +++ b/mysql-test/r/relay_log_purge_basic.result @@ -0,0 +1,94 @@ +SET @start_value = @@global.relay_log_purge; +SELECT @start_value; +@start_value +1 +'#--------------------FN_DYNVARS_141_01------------------------#' +SET @@global.relay_log_purge = FALSE; +SET @@global.relay_log_purge = DEFAULT; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +1 +'#---------------------FN_DYNVARS_141_02-------------------------#' +SET @@global.relay_log_purge = @start_value; +SELECT @@global.relay_log_purge = TRUE; +@@global.relay_log_purge = TRUE +1 +'#--------------------FN_DYNVARS_141_03------------------------#' +SET @@global.relay_log_purge = ON; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +1 +SET @@global.relay_log_purge = OFF; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +0 +SET @@global.relay_log_purge = 0; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +0 +SET @@global.relay_log_purge = 1; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +1 +SET @@global.relay_log_purge = TRUE; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +1 +SET @@global.relay_log_purge = FALSE; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +0 +'#--------------------FN_DYNVARS_141_04-------------------------#' +SET @@global.relay_log_purge = 2; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of '2' +SET @@global.relay_log_purge = -1; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of '-1' +SET @@global.relay_log_purge = TRUEF; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of 'TRUEF' +SET @@global.relay_log_purge = TRUE_F; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of 'TRUE_F' +SET @@global.relay_log_purge = FALSE0; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of 'FALSE0' +SET @@global.relay_log_purge = OON; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of 'OON' +SET @@global.relay_log_purge = ONN; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of 'ONN' +SET @@global.relay_log_purge = OOFF; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of 'OOFF' +SET @@global.relay_log_purge = 0FF; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of '0FF' +SET @@global.relay_log_purge = ' '; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of ' ' +SET @@global.relay_log_purge = " "; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of ' ' +SET @@global.relay_log_purge = ''; +ERROR 42000: Variable 'relay_log_purge' can't be set to the value of '' +'#-------------------FN_DYNVARS_141_05----------------------------#' +SET @@session.relay_log_purge = 1; +ERROR HY000: Variable 'relay_log_purge' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.relay_log_purge; +ERROR HY000: Variable 'relay_log_purge' is a GLOBAL variable +'#----------------------FN_DYNVARS_141_06------------------------#' +SELECT @@global.relay_log_purge = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='relay_log_purge'; +@@global.relay_log_purge = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_141_07----------------------#' +SET @@global.relay_log_purge = 1; +SELECT @@relay_log_purge = @@global.relay_log_purge; +@@relay_log_purge = @@global.relay_log_purge +1 +'#---------------------FN_DYNVARS_141_08----------------------#' +SET relay_log_purge = 1; +ERROR HY000: Variable 'relay_log_purge' is a GLOBAL variable and should be set with SET GLOBAL +SET global.relay_log_purge = 1; +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 'relay_log_purge = 1' at line 1 +SELECT global.relay_log_purge; +ERROR 42S02: Unknown table 'global' in field list +SELECT relay_log_purge = @@session.relay_log_purge; +ERROR 42S22: Unknown column 'relay_log_purge' in 'field list' +SET @@global.relay_log_purge = @start_value; +SELECT @@global.relay_log_purge; +@@global.relay_log_purge +1 diff --git a/mysql-test/r/rpl_init_slave_func.result b/mysql-test/r/rpl_init_slave_func.result new file mode 100644 index 00000000000..3861f40e7d9 --- /dev/null +++ b/mysql-test/r/rpl_init_slave_func.result @@ -0,0 +1,47 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +'#--------------------FN_DYNVARS_037_01-------------------------#' +SET @@global.init_slave = "SET @a = 10"; +'connect (con1,localhost,root,,)' +'connection con1' +SELECT @@global.init_slave; +@@global.init_slave +SET @a = 10 +'connection master' +'#--------------------FN_DYNVARS_037_02-------------------------#' +'check if value in slave opt file is executed' +'connection slave' +show variables like 'init_slave'; +Variable_name Value +init_slave set global max_connections=500 +show variables like 'max_connections'; +Variable_name Value +max_connections 500 +reset master; +'check if value in slave opt file doesnt apply to master' +'connection master' +show variables like 'init_slave'; +Variable_name Value +init_slave SET @a = 10 +show variables like 'max_connections'; +Variable_name Value +max_connections 151 +'connection slave' +'try creating a temporary variable in init_slave' +SET @@global.init_slave = "SET @a=5"; +stop slave; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +SHOW VARIABLES LIKE 'init_slave'; +Variable_name Value +init_slave SET @a=5 +SELECT @a; +@a +NULL +'Bug#35365 SET statement in init_slave not execute if slave is restarted' +set global max_connections= default; diff --git a/mysql-test/r/rpl_max_binlog_size_func.result b/mysql-test/r/rpl_max_binlog_size_func.result new file mode 100644 index 00000000000..08c1ea407fd --- /dev/null +++ b/mysql-test/r/rpl_max_binlog_size_func.result @@ -0,0 +1,5 @@ +DROP TABLE IF EXISTS t1; +'--- check if log file is rotated after 4096 bytes ----' +SET @@global.max_binlog_size = 4096; +CREATE TABLE t1(a CHAR(5)); +'mylog.000002 exists' diff --git a/mysql-test/r/secure_auth_basic.result b/mysql-test/r/secure_auth_basic.result new file mode 100644 index 00000000000..b8a903ba420 --- /dev/null +++ b/mysql-test/r/secure_auth_basic.result @@ -0,0 +1,105 @@ +SET @global_start_value = @@global.secure_auth; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_143_01------------------------#' +SET @@global.secure_auth = 1; +SET @@global.secure_auth = DEFAULT; +SELECT @@global.secure_auth; +@@global.secure_auth +0 +'#---------------------FN_DYNVARS_143_02-------------------------#' +SET secure_auth = 1; +ERROR HY000: Variable 'secure_auth' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@secure_auth; +@@secure_auth +0 +SELECT global.secure_auth; +ERROR 42S02: Unknown table 'global' in field list +SET global secure_auth = 1; +SELECT @@global.secure_auth; +@@global.secure_auth +1 +'#--------------------FN_DYNVARS_143_03------------------------#' +SET @@global.secure_auth = 0; +SELECT @@global.secure_auth; +@@global.secure_auth +0 +SET @@global.secure_auth = 1; +SELECT @@global.secure_auth; +@@global.secure_auth +1 +'#--------------------FN_DYNVARS_143_04-------------------------#' +SET @@global.secure_auth = -1; +ERROR 42000: Variable 'secure_auth' can't be set to the value of '-1' +SET @@global.secure_auth = 2; +ERROR 42000: Variable 'secure_auth' can't be set to the value of '2' +SET @@global.secure_auth = "T"; +ERROR 42000: Variable 'secure_auth' can't be set to the value of 'T' +SET @@global.secure_auth = "Y"; +ERROR 42000: Variable 'secure_auth' can't be set to the value of 'Y' +SET @@global.secure_auth = YES; +ERROR 42000: Variable 'secure_auth' can't be set to the value of 'YES' +SET @@global.secure_auth = ONN; +ERROR 42000: Variable 'secure_auth' can't be set to the value of 'ONN' +SET @@global.secure_auth = OOF; +ERROR 42000: Variable 'secure_auth' can't be set to the value of 'OOF' +SET @@global.secure_auth = 0FF; +ERROR 42000: Variable 'secure_auth' can't be set to the value of '0FF' +SET @@global.secure_auth = ' 1'; +ERROR 42000: Variable 'secure_auth' can't be set to the value of ' 1' +SET @@global.secure_auth = NO; +ERROR 42000: Variable 'secure_auth' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_143_05----------------------------#' +SET @@session.secure_auth = 0; +ERROR HY000: Variable 'secure_auth' is a GLOBAL variable and should be set with SET GLOBAL +SET @@secure_auth = 0; +ERROR HY000: Variable 'secure_auth' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.secure_auth = 0; +ERROR HY000: Variable 'secure_auth' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.secure_auth; +ERROR HY000: Variable 'secure_auth' is a GLOBAL variable +SELECT @@local.secure_auth; +ERROR HY000: Variable 'secure_auth' is a GLOBAL variable +'#----------------------FN_DYNVARS_143_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='secure_auth'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_143_07------------------------#' +SELECT @@global.secure_auth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='secure_auth'; +@@global.secure_auth = VARIABLE_VALUE +0 +SELECT @@global.secure_auth; +@@global.secure_auth +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='secure_auth'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_143_08-------------------------#' +SET @@global.secure_auth = OFF; +SELECT @@global.secure_auth; +@@global.secure_auth +0 +SET @@global.secure_auth = ON; +SELECT @@global.secure_auth; +@@global.secure_auth +1 +'#---------------------FN_DYNVARS_143_09----------------------#' +SET @@global.secure_auth = TRUE; +SELECT @@global.secure_auth; +@@global.secure_auth +1 +SET @@global.secure_auth = FALSE; +SELECT @@global.secure_auth; +@@global.secure_auth +0 +SET @@global.secure_auth = @global_start_value; +SELECT @@global.secure_auth; +@@global.secure_auth +0 diff --git a/mysql-test/r/secure_auth_func.result b/mysql-test/r/secure_auth_func.result new file mode 100644 index 00000000000..f7e24e3f043 --- /dev/null +++ b/mysql-test/r/secure_auth_func.result @@ -0,0 +1,33 @@ +** Setup ** + +SET @old_secure_auth = @@GLOBAL.secure_auth; +'#--------------------FN_DYNVARS_144_01-------------------------#' +SELECT @@GLOBAL.secure_auth; +@@GLOBAL.secure_auth +1 +1 / ON Expected +'#--------------------FN_DYNVARS_144_02-------------------------#' +SET GLOBAL secure_auth = OFF; +CREATE USER 'testUser'@'localhost' IDENTIFIED BY 'newpass'; +** Connecting con_user1 using testUser ** +** Connection default** +SET PASSWORD FOR 'testUser'@'localhost' = OLD_PASSWORD('newpass'); +** Connecting con_user2 using testUser ** +** Connection default** +'#--------------------FN_DYNVARS_144_03-------------------------#' +SET GLOBAL secure_auth = ON; +SET PASSWORD FOR 'testUser'@'localhost' = PASSWORD('newpass'); +** Connecting con_user3 using testUser ** +** Connection default ** +SET PASSWORD FOR 'testUser'@'localhost' = OLD_PASSWORD('newpass'); +** Connecting con_user4 using testUser ** +ERROR HY000: Server is running in --secure-auth mode, but 'testUser'@'localhost' has a password in the old format; please change the password to the new format +Expected error "Server is in secure auth mode" +** Connection default** +SET PASSWORD FOR 'testUser'@'localhost' = PASSWORD('newpass'); +** Connecting con_user4 using testUser ** +** Connection default ** +SET GLOBAL secure_auth = @old_secure_auth; +Disconnecting Connections con_user1, con_user2, con_user3, con_user4 +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testUser'@'localhost'; +DROP USER 'testUser'@'localhost'; diff --git a/mysql-test/r/slave_allow_batching_basic.result b/mysql-test/r/slave_allow_batching_basic.result new file mode 100644 index 00000000000..186cfbc8f0f --- /dev/null +++ b/mysql-test/r/slave_allow_batching_basic.result @@ -0,0 +1,12 @@ +SET @global_start_value = @@global.slave_allow_batching; +ERROR HY000: Unknown system variable 'slave_allow_batching' +'Bug: This variable is not supported in mysql version 5.1.22' +'#--------------------FN_DYNVARS_145_01------------------------#' +'#---------------------FN_DYNVARS_145_02-------------------------#' +'#--------------------FN_DYNVARS_145_03------------------------#' +'#--------------------FN_DYNVARS_145_04-------------------------#' +'#-------------------FN_DYNVARS_145_05----------------------------#' +'#----------------------FN_DYNVARS_145_06------------------------#' +'#----------------------FN_DYNVARS_145_07------------------------#' +'#---------------------FN_DYNVARS_145_08-------------------------#' +'#---------------------FN_DYNVARS_145_09----------------------#' diff --git a/mysql-test/r/slave_compressed_protocol_basic.result b/mysql-test/r/slave_compressed_protocol_basic.result new file mode 100644 index 00000000000..3f2d9d2fb3f --- /dev/null +++ b/mysql-test/r/slave_compressed_protocol_basic.result @@ -0,0 +1,103 @@ +SET @global_start_value = @@global.slave_compressed_protocol; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_147_01------------------------#' +SET @@global.slave_compressed_protocol = 1; +SET @@global.slave_compressed_protocol = DEFAULT; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +0 +'#---------------------FN_DYNVARS_147_02-------------------------#' +SET slave_compressed_protocol = 1; +ERROR HY000: Variable 'slave_compressed_protocol' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@slave_compressed_protocol; +@@slave_compressed_protocol +0 +SELECT global.slave_compressed_protocol; +ERROR 42S02: Unknown table 'global' in field list +SET global slave_compressed_protocol = 1; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +1 +'#--------------------FN_DYNVARS_147_03------------------------#' +SET @@global.slave_compressed_protocol = 0; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +0 +SET @@global.slave_compressed_protocol = 1; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +1 +'#--------------------FN_DYNVARS_147_04-------------------------#' +SET @@global.slave_compressed_protocol = -1; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of '-1' +SET @@global.slave_compressed_protocol = 2; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of '2' +SET @@global.slave_compressed_protocol = "1.00"; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of '1.00' +SET @@global.slave_compressed_protocol = "Y"; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of 'Y' +SET @@global.slave_compressed_protocol = YES; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of 'YES' +SET @@global.slave_compressed_protocol = ONN; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of 'ONN' +SET @@global.slave_compressed_protocol = 0FF; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of '0FF' +SET @@global.slave_compressed_protocol = ' 1'; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of ' 1' +SET @@global.slave_compressed_protocol = NO; +ERROR 42000: Variable 'slave_compressed_protocol' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_147_05----------------------------#' +SET @@session.slave_compressed_protocol = 0; +ERROR HY000: Variable 'slave_compressed_protocol' is a GLOBAL variable and should be set with SET GLOBAL +SET @@slave_compressed_protocol = 0; +ERROR HY000: Variable 'slave_compressed_protocol' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.slave_compressed_protocol = 0; +ERROR HY000: Variable 'slave_compressed_protocol' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.slave_compressed_protocol; +ERROR HY000: Variable 'slave_compressed_protocol' is a GLOBAL variable +SELECT @@local.slave_compressed_protocol; +ERROR HY000: Variable 'slave_compressed_protocol' is a GLOBAL variable +'#----------------------FN_DYNVARS_147_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_compressed_protocol'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_147_07------------------------#' +SELECT @@global.slave_compressed_protocol = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_compressed_protocol'; +@@global.slave_compressed_protocol = VARIABLE_VALUE +0 +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_compressed_protocol'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_147_08-------------------------#' +SET @@global.slave_compressed_protocol = OFF; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +0 +SET @@global.slave_compressed_protocol = ON; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +1 +'#---------------------FN_DYNVARS_147_09----------------------#' +SET @@global.slave_compressed_protocol = TRUE; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +1 +SET @@global.slave_compressed_protocol = FALSE; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +0 +SET @@global.slave_compressed_protocol = @global_start_value; +SELECT @@global.slave_compressed_protocol; +@@global.slave_compressed_protocol +0 diff --git a/mysql-test/r/slave_exec_mode_basic.result b/mysql-test/r/slave_exec_mode_basic.result new file mode 100644 index 00000000000..aeb73196733 --- /dev/null +++ b/mysql-test/r/slave_exec_mode_basic.result @@ -0,0 +1,2 @@ +SET @start_value = @@global.slave_exec_mode; +'This variable is not supported in version 5.1.22. It is introduced in 5.1.24' diff --git a/mysql-test/r/slave_net_timeout_basic.result b/mysql-test/r/slave_net_timeout_basic.result new file mode 100644 index 00000000000..d672d0152d7 --- /dev/null +++ b/mysql-test/r/slave_net_timeout_basic.result @@ -0,0 +1,127 @@ +SET @start_global_value = @@global.slave_net_timeout; +SELECT @start_global_value; +@start_global_value +3600 +'#--------------------FN_DYNVARS_146_01-------------------------#' +SET @@global.slave_net_timeout = 500000; +SET @@global.slave_net_timeout = DEFAULT; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +3600 +'#--------------------FN_DYNVARS_146_02-------------------------#' +SET @@global.slave_net_timeout = DEFAULT; +SELECT @@global.slave_net_timeout = 3600; +@@global.slave_net_timeout = 3600 +1 +'#--------------------FN_DYNVARS_146_03-------------------------#' +SET @@global.slave_net_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '0' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1 +SET @@global.slave_net_timeout = 1; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1 +SET @@global.slave_net_timeout = 15; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +15 +SET @@global.slave_net_timeout = 1024; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1024 +SET @@global.slave_net_timeout = 3600+1; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +3601 +SET @@global.slave_net_timeout = 2147483648; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '2147483648' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +31536000 +SET @@global.slave_net_timeout = 2147483648*2-1; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '4294967295' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +31536000 +'#--------------------FN_DYNVARS_146_04-------------------------#' +SET @@slave_net_timeout = 2; +ERROR HY000: Variable 'slave_net_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.slave_net_timeout = 3; +ERROR HY000: Variable 'slave_net_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.slave_net_timeout = 4; +ERROR HY000: Variable 'slave_net_timeout' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_146_05-----------------------#' +SET @@global.slave_net_timeout = -1; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '0' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1 +SET @@global.slave_net_timeout = -2147483648; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '0' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1 +SET @@global.slave_net_timeout = 2147483649*2; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '4294967298' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +31536000 +SET @@global.slave_net_timeout = 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 @@global.slave_net_timeout = 100s; +ERROR 42000: Incorrect argument type to variable 'slave_net_timeout' +SET @@global.slave_net_timeout = 7483649.56; +ERROR 42000: Incorrect argument type to variable 'slave_net_timeout' +SET @@global.slave_net_timeout = 0.6; +ERROR 42000: Incorrect argument type to variable 'slave_net_timeout' +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_146_06-----------------------#' +SET @@global.slave_net_timeout = 3000; +SELECT @@global.slave_net_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_net_timeout'; +@@global.slave_net_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_146_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_net_timeout'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_146_08-----------------------#' +SET @@global.slave_net_timeout = TRUE; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1 +SET @@global.slave_net_timeout = FALSE; +Warnings: +Warning 1292 Truncated incorrect slave_net_timeout value: '0' +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.slave_net_timeout = 60*60; +SELECT @@slave_net_timeout = @@global.slave_net_timeout; +@@slave_net_timeout = @@global.slave_net_timeout +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET slave_net_timeout = 2048; +ERROR HY000: Variable 'slave_net_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SELECT slave_net_timeout; +ERROR 42S22: Unknown column 'slave_net_timeout' in 'field list' +SELECT @@slave_net_timeout; +@@slave_net_timeout +3600 +SET global slave_net_timeout = 99; +SET @@global.slave_net_timeout = @start_global_value; +SELECT @@global.slave_net_timeout; +@@global.slave_net_timeout +3600 diff --git a/mysql-test/r/slow_launch_time_basic.result b/mysql-test/r/slow_launch_time_basic.result new file mode 100644 index 00000000000..c42942fba1a --- /dev/null +++ b/mysql-test/r/slow_launch_time_basic.result @@ -0,0 +1,130 @@ +SET @start_value = @@global.slow_launch_time; +SELECT @start_value; +@start_value +2 +'#--------------------FN_DYNVARS_150_01------------------------#' +SET @@global.slow_launch_time = 99; +SET @@global.slow_launch_time = DEFAULT; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +2 +'#---------------------FN_DYNVARS_150_02-------------------------#' +SET @@global.slow_launch_time = @start_value; +SELECT @@global.slow_launch_time = 2; +@@global.slow_launch_time = 2 +1 +'#--------------------FN_DYNVARS_150_03------------------------#' +SET @@global.slow_launch_time = 0; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +0 +SET @@global.slow_launch_time = 1; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +1 +SET @@global.slow_launch_time = 31536000; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +SET @@global.slow_launch_time = 31535999; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31535999 +SET @@global.slow_launch_time = 65536; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +65536 +'#--------------------FN_DYNVARS_150_04-------------------------#' +SET @@global.slow_launch_time = -1; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +0 +SET @@global.slow_launch_time = 31536001; +Warnings: +Warning 1292 Truncated incorrect slow_launch_time value: '31536001' +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +SET @@global.slow_launch_time = 10240022115; +Warnings: +Warning 1292 Truncated incorrect slow_launch_time value: '10240022115' +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +SET @@global.slow_launch_time = 10000.01; +ERROR 42000: Incorrect argument type to variable 'slow_launch_time' +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +SET @@global.slow_launch_time = -1024; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +0 +SET @@global.slow_launch_time = 42949672950; +Warnings: +Warning 1292 Truncated incorrect slow_launch_time value: '42949672950' +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.slow_launch_time = ON; +ERROR 42000: Incorrect argument type to variable 'slow_launch_time' +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +SET @@global.slow_launch_time = 'test'; +ERROR 42000: Incorrect argument type to variable 'slow_launch_time' +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +31536000 +'#-------------------FN_DYNVARS_150_05----------------------------#' +SET @@session.slow_launch_time = 0; +ERROR HY000: Variable 'slow_launch_time' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@slow_launch_time; +@@slow_launch_time +31536000 +'#----------------------FN_DYNVARS_150_06------------------------#' +SELECT @@global.slow_launch_time = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slow_launch_time'; +@@global.slow_launch_time = VARIABLE_VALUE +1 +SELECT @@slow_launch_time = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slow_launch_time'; +@@slow_launch_time = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_150_07----------------------#' +SET @@global.slow_launch_time = TRUE; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +1 +SET @@global.slow_launch_time = FALSE; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +0 +'#---------------------FN_DYNVARS_150_08----------------------#' +SET @@global.slow_launch_time = 1; +SELECT @@slow_launch_time = @@global.slow_launch_time; +@@slow_launch_time = @@global.slow_launch_time +1 +'#---------------------FN_DYNVARS_150_09----------------------#' +SET slow_launch_time = 1; +ERROR HY000: Variable 'slow_launch_time' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@slow_launch_time; +@@slow_launch_time +1 +SET local.slow_launch_time = 1; +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 'slow_launch_time = 1' at line 1 +SELECT local.slow_launch_time; +ERROR 42S02: Unknown table 'local' in field list +SET global.slow_launch_time = 1; +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 'slow_launch_time = 1' at line 1 +SELECT global.slow_launch_time; +ERROR 42S02: Unknown table 'global' in field list +SELECT slow_launch_time = @@session.slow_launch_time; +ERROR 42S22: Unknown column 'slow_launch_time' in 'field list' +SET @@global.slow_launch_time = @start_value; +SELECT @@global.slow_launch_time; +@@global.slow_launch_time +2 diff --git a/mysql-test/r/slow_launch_time_func.result b/mysql-test/r/slow_launch_time_func.result new file mode 100644 index 00000000000..766d7fb4dd9 --- /dev/null +++ b/mysql-test/r/slow_launch_time_func.result @@ -0,0 +1,37 @@ +SET @global_slow_launch_time = @@GLOBAL.slow_launch_time; +'#--------------------FN_DYNVARS_124_01-------------------------#' +** Connection default ** +SET @@GLOBAL.slow_launch_time=0; +SELECT @@GLOBAL.slow_launch_time; +@@GLOBAL.slow_launch_time +0 +** Connecting conn5 using username 'root' ** +** Connecting conn6 using username 'root' ** +** Connecting conn7 using username 'root' ** +** Connecting conn8 using username 'root' ** +** Connecting conn9 using username 'root' ** +** Connecting conn10 using username 'root' ** +** Connecting conn11 using username 'root' ** +** Connecting conn12 using username 'root' ** +** Connecting conn13 using username 'root' ** +** Connecting conn14 using username 'root' ** +** Connecting conn15 using username 'root' ** +** Connecting conn16 using username 'root' ** +show status like 'slow_launch_threads'; +Variable_name Value +Slow_launch_threads 12 +12 Expected +** Connection default ** +** Disconnecting conn5 ** +** Disconnecting conn6 ** +** Disconnecting conn7 ** +** Disconnecting conn8 ** +** Disconnecting conn9 ** +** Disconnecting conn10 ** +** Disconnecting conn11 ** +** Disconnecting conn12 ** +** Disconnecting conn13 ** +** Disconnecting conn14 ** +** Disconnecting conn15 ** +** Disconnecting conn16 ** +SET @@GLOBAL.slow_launch_time = @global_slow_launch_time; diff --git a/mysql-test/r/slow_query_log_basic.result b/mysql-test/r/slow_query_log_basic.result new file mode 100644 index 00000000000..716309aeaff --- /dev/null +++ b/mysql-test/r/slow_query_log_basic.result @@ -0,0 +1,94 @@ +SET @start_value = @@global.slow_query_log; +SELECT @start_value; +@start_value +1 +'#---------------------FN_DYNVARS_004_01-------------------------#' +SET @@global.slow_query_log = DEFAULT; +SELECT @@global.slow_query_log = 0; +@@global.slow_query_log = 0 +1 +'#--------------------FN_DYNVARS_004_02------------------------#' +SET @@global.slow_query_log = ON; +SELECT @@global.slow_query_log; +@@global.slow_query_log +1 +SET @@global.slow_query_log = OFF; +SELECT @@global.slow_query_log; +@@global.slow_query_log +0 +'#--------------------FN_DYNVARS_004_03-------------------------#' +SET @@global.slow_query_log = 2; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of '2' +SET @@global.slow_query_log = -1; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of '-1' +SET @@global.slow_query_log = TRUEF; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of 'TRUEF' +SET @@global.slow_query_log = TRUE_F; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of 'TRUE_F' +SET @@global.slow_query_log = FALSE0; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of 'FALSE0' +SET @@global.slow_query_log = OON; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of 'OON' +SET @@global.slow_query_log = ONN; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of 'ONN' +SET @@global.slow_query_log = OOFF; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of 'OOFF' +SET @@global.slow_query_log = 0FF; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of '0FF' +SET @@global.slow_query_log = ' '; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of ' ' +SET @@global.slow_query_log = " "; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of ' ' +SET @@global.slow_query_log = ''; +ERROR 42000: Variable 'slow_query_log' can't be set to the value of '' +'#-------------------FN_DYNVARS_004_04----------------------------#' +SET @@session.slow_query_log = OFF; +ERROR HY000: Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.slow_query_log; +ERROR HY000: Variable 'slow_query_log' is a GLOBAL variable +'#----------------------FN_DYNVARS_004_05------------------------#' +SELECT @@global.slow_query_log = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slow_query_log'; +@@global.slow_query_log = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_004_06----------------------#' +SET @@global.slow_query_log = 0; +SELECT @@global.slow_query_log; +@@global.slow_query_log +0 +SET @@global.slow_query_log = 1; +SELECT @@global.slow_query_log; +@@global.slow_query_log +1 +'#---------------------FN_DYNVARS_004_07----------------------#' +SET @@global.slow_query_log = TRUE; +SELECT @@global.slow_query_log; +@@global.slow_query_log +1 +SET @@global.slow_query_log = FALSE; +SELECT @@global.slow_query_log; +@@global.slow_query_log +0 +'#---------------------FN_DYNVARS_004_08----------------------#' +SET @@global.slow_query_log = ON; +SELECT @@slow_query_log = @@global.slow_query_log; +@@slow_query_log = @@global.slow_query_log +1 +'#---------------------FN_DYNVARS_004_09----------------------#' +SET slow_query_log = ON; +ERROR HY000: Variable 'slow_query_log' is a GLOBAL variable and should be set with SET GLOBAL +SET local.slow_query_log = OFF; +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 'slow_query_log = OFF' at line 1 +SELECT local.slow_query_log; +ERROR 42S02: Unknown table 'local' in field list +SET global.slow_query_log = ON; +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 'slow_query_log = ON' at line 1 +SELECT global.slow_query_log; +ERROR 42S02: Unknown table 'global' in field list +SELECT slow_query_log = @@session.slow_query_log; +ERROR 42S22: Unknown column 'slow_query_log' in 'field list' +SET @@global.slow_query_log = @start_value; +SELECT @@global.slow_query_log; +@@global.slow_query_log +1 diff --git a/mysql-test/r/slow_query_log_file_basic.result b/mysql-test/r/slow_query_log_file_basic.result new file mode 100644 index 00000000000..e29fc7824ff --- /dev/null +++ b/mysql-test/r/slow_query_log_file_basic.result @@ -0,0 +1,18 @@ +SET @start_value = @@global.slow_query_log_file; +SELECT @start_value; +@start_value +slowtest.log +'#---------------------FN_DYNVARS_004_01-------------------------#' +SET @@global.slow_query_log_file = DEFAULT; +SELECT RIGHT(@@global.slow_query_log_file,15); +RIGHT(@@global.slow_query_log_file,15) +master-slow.log +'#--------------------FN_DYNVARS_004_02------------------------#' +SET @@global.slow_query_log_file = mytest.log; +ERROR 42000: Variable 'slow_query_log_file' can't be set to the value of 'log' +'#----------------------FN_DYNVARS_004_03------------------------#' +SELECT @@global.slow_query_log_file = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slow_query_log_file'; +@@global.slow_query_log_file = VARIABLE_VALUE +1 diff --git a/mysql-test/r/slow_query_log_file_func.result b/mysql-test/r/slow_query_log_file_func.result new file mode 100644 index 00000000000..4b7a49c6f0b --- /dev/null +++ b/mysql-test/r/slow_query_log_file_func.result @@ -0,0 +1,3 @@ +'#--------------------FN_DYNVARS_018_01-------------------------#' +## --file_exists var/master-data/my_slow_test.log ## +## This case should pass because we have set this filename in opt file ## diff --git a/mysql-test/r/slow_query_log_func.result b/mysql-test/r/slow_query_log_func.result new file mode 100644 index 00000000000..83edb4c187e --- /dev/null +++ b/mysql-test/r/slow_query_log_func.result @@ -0,0 +1,24 @@ +SET @global_slow_query_log = @@global.slow_query_log; +SET @global_log_output = @@global.log_output; +SET @@session.long_query_time=1; +SET @@global.log_output = 'TABLE'; +'----When slow_query_log = OFF----' +SET @@global.slow_query_log = OFF; +TRUNCATE mysql.slow_log; +SELECT sleep(2); +sleep(2) +0 +SELECT count(*) FROM mysql.slow_log; +count(*) +0 +'----When slow_query_log = ON-----' +SET @@global.slow_query_log = ON; +TRUNCATE mysql.slow_log; +SELECT sleep(2); +sleep(2) +0 +SELECT count(*) FROM mysql.slow_log; +count(*) +1 +SET @@global.log_output = @global_log_output; +SET @global.slow_query_log = @global_slow_query_log; diff --git a/mysql-test/r/sql_auto_is_null_basic.result b/mysql-test/r/sql_auto_is_null_basic.result new file mode 100644 index 00000000000..b3a3eecd93a --- /dev/null +++ b/mysql-test/r/sql_auto_is_null_basic.result @@ -0,0 +1,54 @@ +'#---------------------BS_STVARS_044_01----------------------#' +SELECT COUNT(@@SESSION.sql_auto_is_null); +COUNT(@@SESSION.sql_auto_is_null) +1 +1 Expected +'#---------------------BS_STVARS_044_02----------------------#' +SET @@SESSION.sql_auto_is_null=1; +"BUG:It should give error on setting this variable as it is readonly variable" +Expected error 'Read only variable' +SELECT COUNT(@@SESSION.sql_auto_is_null); +COUNT(@@SESSION.sql_auto_is_null) +1 +1 Expected +'#---------------------BS_STVARS_044_03----------------------#' +SELECT @@SESSION.sql_auto_is_null = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_auto_is_null'; +@@SESSION.sql_auto_is_null = VARIABLE_VALUE +0 +1 Expected +SELECT COUNT(@@SESSION.sql_auto_is_null); +COUNT(@@SESSION.sql_auto_is_null) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_auto_is_null'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_044_04----------------------#' +SELECT @@sql_auto_is_null = @@SESSION.sql_auto_is_null; +@@sql_auto_is_null = @@SESSION.sql_auto_is_null +1 +1 Expected +'#---------------------BS_STVARS_044_05----------------------#' +SELECT COUNT(@@sql_auto_is_null); +COUNT(@@sql_auto_is_null) +1 +1 Expected +SELECT COUNT(@@local.sql_auto_is_null); +COUNT(@@local.sql_auto_is_null) +1 +1 Expected +SELECT COUNT(@@SESSION.sql_auto_is_null); +COUNT(@@SESSION.sql_auto_is_null) +1 +1 Expected +SELECT COUNT(@@GLOBAL.sql_auto_is_null); +ERROR HY000: Variable 'sql_auto_is_null' is a SESSION variable +Expected error 'Variable is a SESSION variable' +SELECT COUNT(sql_auto_is_null = @@GLOBAL.sql_auto_is_null); +ERROR 42S22: Unknown column 'sql_auto_is_null' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/sql_big_selects_basic.result b/mysql-test/r/sql_big_selects_basic.result new file mode 100644 index 00000000000..1171382380d --- /dev/null +++ b/mysql-test/r/sql_big_selects_basic.result @@ -0,0 +1,103 @@ +SET @session_start_value = @@session.sql_big_selects; +SELECT @session_start_value; +@session_start_value +1 +'#--------------------FN_DYNVARS_153_01------------------------#' +SET @@session.sql_big_selects = 0; +SET @@session.sql_big_selects = DEFAULT; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +'#---------------------FN_DYNVARS_153_02-------------------------#' +SET sql_big_selects = 1; +SELECT @@sql_big_selects; +@@sql_big_selects +1 +SELECT session.sql_big_selects; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_big_selects; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_big_selects = 0; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +'#--------------------FN_DYNVARS_153_03------------------------#' +SET @@session.sql_big_selects = 0; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +SET @@session.sql_big_selects = 1; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +1 +'#--------------------FN_DYNVARS_153_04-------------------------#' +SET @@session.sql_big_selects = -1; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of '-1' +SET @@session.sql_big_selects = 2; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of '2' +SET @@session.sql_big_selects = "T"; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'T' +SET @@session.sql_big_selects = "Y"; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'Y' +SET @@session.sql_big_selects = TRE; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'TRÜE' +SET @@session.sql_big_selects = N; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'ÕN' +SET @@session.sql_big_selects = OF; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +'Bug # 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_big_selects = FF; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'ÓFF' +SET @@session.sql_big_selects = ''; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of '' +SET @@session.sql_big_selects = NO; +ERROR 42000: Variable 'sql_big_selects' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_153_05----------------------------#' +SET @@global.sql_big_selects = 0; +ERROR HY000: Variable 'sql_big_selects' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_big_selects; +ERROR HY000: Variable 'sql_big_selects' is a SESSION variable +'#----------------------FN_DYNVARS_153_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_big_selects'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_153_07------------------------#' +SELECT @@session.sql_big_selects = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_selects'; +@@session.sql_big_selects = VARIABLE_VALUE +1 +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_selects'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_153_08-------------------------#' +SET @@session.sql_big_selects = OFF; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +SET @@session.sql_big_selects = ON; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +1 +'#---------------------FN_DYNVARS_153_09----------------------#' +SET @@session.sql_big_selects = TRUE; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +1 +SET @@session.sql_big_selects = FALSE; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +0 +SET @@session.sql_big_selects = @session_start_value; +SELECT @@session.sql_big_selects; +@@session.sql_big_selects +1 diff --git a/mysql-test/r/sql_big_selects_func.result b/mysql-test/r/sql_big_selects_func.result new file mode 100644 index 00000000000..fc7e1f32e00 --- /dev/null +++ b/mysql-test/r/sql_big_selects_func.result @@ -0,0 +1,74 @@ +** Setup ** + +SET @session_sql_big_selects = @@SESSION.sql_big_selects; +SET @session_max_join_size = @@SESSION.max_join_size; +SET @global_max_join_size = @@GLOBAL.max_join_size; +SET SQL_MAX_JOIN_SIZE=9; +CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20)); +CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20)); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa1','bb'); +INSERT INTO t1 VALUES('aa2','bb'); +INSERT INTO t1 VALUES('aa3','bb'); +INSERT INTO t1 VALUES('aa4','bb'); +INSERT INTO t2 VALUES('aa','bb'); +INSERT INTO t2 VALUES('aa1','bb'); +INSERT INTO t2 VALUES('aa2','bb'); +INSERT INTO t2 VALUES('aa3','bb'); +INSERT INTO t2 VALUES('aa4','bb'); +'#--------------------FN_DYNVARS_154_01-------------------------#' +Expected error "Too big select" +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay +Expected error The SELECT would examine more than MAX_JOIN_SIZE rows. +'#--------------------FN_DYNVARS_154_02-------------------------#' +SET SESSION SQL_BIG_SELECTS = 1; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +a b a b +aa bb aa bb +aa1 bb aa1 bb +aa2 bb aa2 bb +aa3 bb aa3 bb +aa4 bb aa4 bb +This should work +SET SESSION SQL_BIG_SELECTS = 0; +DELETE FROM t2 WHERE a = 'aa4'; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +a b a b +aa bb aa bb +aa1 bb aa1 bb +aa2 bb aa2 bb +aa3 bb aa3 bb +This should work +'#--------------------FN_DYNVARS_154_03-------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_big_selects; +@@SESSION.sql_big_selects +1 +1 Expected +SET SESSION sql_big_selects = 0; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_big_selects; +@@SESSION.sql_big_selects +1 +1 Expected +SET SESSION sql_big_selects = 1; +** Connection con_int1 ** +SELECT @@SESSION.sql_big_selects; +@@SESSION.sql_big_selects +0 +0 Expected +** Connection con_int2 ** +SELECT @@SESSION.sql_big_selects; +@@SESSION.sql_big_selects +1 +1 Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET @@SESSION.sql_big_selects = @session_sql_big_selects; +SET @@SESSION.max_join_size = @session_max_join_size; +SET @@GLOBAL.max_join_size = @global_max_join_size; +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/r/sql_big_tables_basic.result b/mysql-test/r/sql_big_tables_basic.result new file mode 100644 index 00000000000..bce14b2aba2 --- /dev/null +++ b/mysql-test/r/sql_big_tables_basic.result @@ -0,0 +1,108 @@ +SET @session_start_value = @@session.sql_big_tables; +SELECT @session_start_value; +@session_start_value +0 +'#--------------------FN_DYNVARS_154_01------------------------#' +SET @@session.sql_big_tables = 0; +SET @@session.sql_big_tables = DEFAULT; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +SET @@session.sql_big_tables = 1; +SET @@session.sql_big_tables = DEFAULT; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +1 +'#---------------------FN_DYNVARS_154_02-------------------------#' +SET sql_big_tables = 1; +SELECT @@sql_big_tables; +@@sql_big_tables +1 +SELECT session.sql_big_tables; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_big_tables; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_big_tables = 0; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +'#--------------------FN_DYNVARS_154_03------------------------#' +SET @@session.sql_big_tables = 0; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +SET @@session.sql_big_tables = 1; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +1 +'#--------------------FN_DYNVARS_154_04-------------------------#' +SET @@session.sql_big_tables = -1; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of '-1' +SET @@session.sql_big_tables = 2; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of '2' +SET @@session.sql_big_tables = "T"; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'T' +SET @@session.sql_big_tables = "Y"; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'Y' +SET @@session.sql_big_tables = TRE; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'TRÜE' +SET @@session.sql_big_tables = N; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'ÕN' +SET @@session.sql_big_tables = OF; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_big_tables = FF; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'ÓFF' +SET @@session.sql_big_tables = ''; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of '' +SET @@session.sql_big_tables = NO; +ERROR 42000: Variable 'sql_big_tables' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_154_05----------------------------#' +SET @@global.sql_big_tables = 0; +ERROR HY000: Variable 'sql_big_tables' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_big_tables; +ERROR HY000: Variable 'sql_big_tables' is a SESSION variable +'#----------------------FN_DYNVARS_154_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_big_tables'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_154_07------------------------#' +SELECT @@session.sql_big_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_tables'; +@@session.sql_big_tables = VARIABLE_VALUE +1 +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_tables'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_154_08-------------------------#' +SET @@session.sql_big_tables = OFF; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +SET @@session.sql_big_tables = ON; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +1 +'#---------------------FN_DYNVARS_154_09----------------------#' +SET @@session.sql_big_tables = TRUE; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +1 +SET @@session.sql_big_tables = FALSE; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 +SET @@session.sql_big_tables = @session_start_value; +SELECT @@session.sql_big_tables; +@@session.sql_big_tables +0 diff --git a/mysql-test/r/sql_big_tables_func.result b/mysql-test/r/sql_big_tables_func.result new file mode 100644 index 00000000000..9b707e439ef --- /dev/null +++ b/mysql-test/r/sql_big_tables_func.result @@ -0,0 +1,121 @@ +** Setup ** + +SET @old_big_tables = @@SESSION.sql_big_tables; +CREATE TABLE t1(a varchar(20), b varchar(20)); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +'#--------------------FN_DYNVARS_155_01-------------------------#' +SET SESSION sql_big_tables = 1; +SET @diskTableCount = 0; +SET @tempTableCount = 0; +SELECT * FROM (SELECT ta.a as a, tb.b as b +FROM t1 as ta INNER JOIN t1 as tb ON ta.a = tb.a) sub; +a b +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +aa bb +SET @diskTableCount = 1 - @diskTableCount; +SET @tempTableCount = 1 - @tempTableCount; +SELECT @diskTableCount; +@diskTableCount +1 +1 Expected +SELECT @tempTableCount; +@tempTableCount +1 +1 Expected +'#--------------------FN_DYNVARS_155_02-------------------------#' +SET SESSION sql_big_tables = 0; +SET @diskTableCount = 1; +SET @tempTableCount = 1; +SELECT * FROM (SELECT ta.b as a, tb.a as b FROM t1 as ta INNER JOIN t1 as tb ON ta.a = tb.a) sub; +a b +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +bb aa +SET @diskTableCount = 1 - @diskTableCount; +SET @tempTableCount = 2 - @tempTableCount; +SELECT @diskTableCount; +@diskTableCount +0 +0 Expected +SELECT @tempTableCount; +@tempTableCount +1 +1 Expected +'#--------------------FN_DYNVARS_155_03-------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_big_tables; +@@SESSION.sql_big_tables +0 +0 / FALSE Expected; +SET SESSION sql_big_tables = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_big_tables; +@@SESSION.sql_big_tables +0 +0 / FALSE Expected; +SET SESSION sql_big_tables = TRUE; +** Connection con_int1 ** +SELECT @@SESSION.sql_big_tables; +@@SESSION.sql_big_tables +0 +0 / FALSE Expected; +** Connection con_int2 ** +SELECT @@SESSION.sql_big_tables; +@@SESSION.sql_big_tables +1 +1 / TRUE Expected; +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET SESSION sql_big_tables = @old_big_tables; +DROP TABLE t1; diff --git a/mysql-test/r/sql_buffer_result_basic.result b/mysql-test/r/sql_buffer_result_basic.result new file mode 100644 index 00000000000..d03b688dbe6 --- /dev/null +++ b/mysql-test/r/sql_buffer_result_basic.result @@ -0,0 +1,116 @@ +SET @session_start_value = @@session.sql_buffer_result; +SELECT @session_start_value; +@session_start_value +0 +'#--------------------FN_DYNVARS_155_01------------------------#' +SET @@session.sql_buffer_result = 0; +SET @@session.sql_buffer_result = DEFAULT; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +SET @@session.sql_buffer_result = 1; +SET @@session.sql_buffer_result = DEFAULT; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +1 +'#---------------------FN_DYNVARS_155_02-------------------------#' +SET sql_buffer_result = 1; +SELECT @@sql_buffer_result; +@@sql_buffer_result +1 +SELECT session.sql_buffer_result; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_buffer_result; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_buffer_result = 0; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +'#--------------------FN_DYNVARS_155_03------------------------#' +SET @@session.sql_buffer_result = 0; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +SET @@session.sql_buffer_result = 1; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +1 +'#--------------------FN_DYNVARS_155_04-------------------------#' +SET @@session.sql_buffer_result = -1; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of '-1' +SET @@session.sql_buffer_result = 2; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of '2' +SET @@session.sql_buffer_result = "TRU"; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'TRU' +SET @@session.sql_buffer_result = 0.4; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +SET @@session.sql_buffer_result = 1.4; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +1 +'Bug: Decimal values are accepted and rounded to an integer before'; +'assingment.'; +SET @@session.sql_buffer_result = TRE; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'TRÜE' +SET @@session.sql_buffer_result = N; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'ÕN' +SET @@session.sql_buffer_result = OF; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_buffer_result = FF; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'ÓFF' +SET @@session.sql_buffer_result = ''; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of '' +SET @@session.sql_buffer_result = NO; +ERROR 42000: Variable 'sql_buffer_result' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_155_05----------------------------#' +SET @@global.sql_buffer_result = 0; +ERROR HY000: Variable 'sql_buffer_result' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_buffer_result; +ERROR HY000: Variable 'sql_buffer_result' is a SESSION variable +'#----------------------FN_DYNVARS_155_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_buffer_result'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_155_07------------------------#' +SELECT @@session.sql_buffer_result = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_buffer_result'; +@@session.sql_buffer_result = VARIABLE_VALUE +1 +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_buffer_result'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_155_08-------------------------#' +SET @@session.sql_buffer_result = OFF; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +SET @@session.sql_buffer_result = ON; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +1 +'#---------------------FN_DYNVARS_155_09----------------------#' +SET @@session.sql_buffer_result = TRUE; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +1 +SET @@session.sql_buffer_result = FALSE; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 +SET @@session.sql_buffer_result = @session_start_value; +SELECT @@session.sql_buffer_result; +@@session.sql_buffer_result +0 diff --git a/mysql-test/r/sql_buffer_result_func.result b/mysql-test/r/sql_buffer_result_func.result new file mode 100644 index 00000000000..38d7f7ecc0a --- /dev/null +++ b/mysql-test/r/sql_buffer_result_func.result @@ -0,0 +1,84 @@ +** Setup ** + +SET @original_sql_buffer_result = @@sql_buffer_result; +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +'#--------------------FN_DYNVARS_156_01-------------------------#' +SET SESSION sql_buffer_result = 1; +SHOW STATUS LIKE 'Created_tmp_tables'; +Variable_name Value +Created_tmp_tables 0 +Expected value : 0. +SELECT * FROM t1; +a b +aa bb +aa bb +aa bb +aa bb +aa bb +SHOW STATUS LIKE 'Created_tmp_tables'; +Variable_name Value +Created_tmp_tables 1 +Expected value : 1. +SELECT * FROM t1; +a b +aa bb +aa bb +aa bb +aa bb +aa bb +SHOW STATUS LIKE 'Created_tmp_tables'; +Variable_name Value +Created_tmp_tables 2 +Expected value : 2. +'#--------------------FN_DYNVARS_156_02-------------------------#' +SET SESSION sql_buffer_result = 0; +SHOW STATUS LIKE 'Created_tmp_tables'; +Variable_name Value +Created_tmp_tables 2 +Expected value : 2. +SELECT * FROM t1; +a b +aa bb +aa bb +aa bb +aa bb +aa bb +SHOW STATUS LIKE 'Created_tmp_tables'; +Variable_name Value +Created_tmp_tables 2 +Expected value : 2. +'#--------------------FN_DYNVARS_156_03-------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_buffer_result; +@@SESSION.sql_buffer_result +0 +0 / FALSE Expected +SET SESSION sql_buffer_result = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_buffer_result; +@@SESSION.sql_buffer_result +0 +0 / FALSE Expected +SET SESSION sql_buffer_result = TRUE; +** Connection con_int1 ** +SELECT @@SESSION.sql_buffer_result; +@@SESSION.sql_buffer_result +0 +0 / FALSE Expected +** Connection con_int2 ** +SELECT @@SESSION.sql_buffer_result; +@@SESSION.sql_buffer_result +1 +1 / TRUE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +** Cleanup ** +SET @@sql_buffer_result = @original_sql_buffer_result; +DROP TABLE t1; diff --git a/mysql-test/r/sql_log_bin_basic.result b/mysql-test/r/sql_log_bin_basic.result new file mode 100644 index 00000000000..4e37c2079d6 --- /dev/null +++ b/mysql-test/r/sql_log_bin_basic.result @@ -0,0 +1,106 @@ +SET @session_start_value = @@session.sql_log_bin; +SELECT @session_start_value; +@session_start_value +1 +'#--------------------FN_DYNVARS_156_01------------------------#' +SET @@session.sql_log_bin = 0; +SET @@session.sql_log_bin = DEFAULT; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +SET @@session.sql_log_bin = 1; +SET @@session.sql_log_bin = DEFAULT; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +1 +'#---------------------FN_DYNVARS_156_02-------------------------#' +SET sql_log_bin = 1; +SELECT @@sql_log_bin; +@@sql_log_bin +1 +SELECT session.sql_log_bin; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_log_bin; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_log_bin = 0; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +'#--------------------FN_DYNVARS_156_03------------------------#' +SET @@session.sql_log_bin = 0; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +SET @@session.sql_log_bin = 1; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +1 +'#--------------------FN_DYNVARS_156_04-------------------------#' +SET @@session.sql_log_bin = -1; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of '-1' +SET @@session.sql_log_bin = 2; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of '2' +SET @@session.sql_log_bin = "T"; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'T' +SET @@session.sql_log_bin = "Y"; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'Y' +SET @@session.sql_log_bin = TRE; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'TRÜE' +SET @@session.sql_log_bin = N; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'ÕN' +SET @@session.sql_log_bin = OF; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_log_bin = FF; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'ÓFF' +SET @@session.sql_log_bin = ''; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of '' +SET @@session.sql_log_bin = NO; +ERROR 42000: Variable 'sql_log_bin' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_156_05----------------------------#' +SET @@global.sql_log_bin = 0; +ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_log_bin; +ERROR HY000: Variable 'sql_log_bin' is a SESSION variable +'#----------------------FN_DYNVARS_156_06------------------------#' +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sql_log_bin'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_156_07------------------------#' +SELECT @@session.sql_log_bin = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_bin'; +@@session.sql_log_bin = VARIABLE_VALUE +1 +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_bin'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_156_08-------------------------#' +SET @@session.sql_log_bin = OFF; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +SET @@session.sql_log_bin = ON; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +1 +'#---------------------FN_DYNVARS_156_09----------------------#' +SET @@session.sql_log_bin = TRUE; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +1 +SET @@session.sql_log_bin = FALSE; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +0 +SET @@session.sql_log_bin = @session_start_value; +SELECT @@session.sql_log_bin; +@@session.sql_log_bin +1 diff --git a/mysql-test/r/sql_log_off_basic.result b/mysql-test/r/sql_log_off_basic.result new file mode 100644 index 00000000000..03846cb6ce8 --- /dev/null +++ b/mysql-test/r/sql_log_off_basic.result @@ -0,0 +1,108 @@ +SET @session_start_value = @@session.sql_log_off; +SELECT @session_start_value; +@session_start_value +0 +'#--------------------FN_DYNVARS_157_01------------------------#' +SET @@session.sql_log_off = 0; +SET @@session.sql_log_off = DEFAULT; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +SET @@session.sql_log_off = 1; +SET @@session.sql_log_off = DEFAULT; +SELECT @@session.sql_log_off; +@@session.sql_log_off +1 +'#---------------------FN_DYNVARS_157_02-------------------------#' +SET sql_log_off = 1; +SELECT @@sql_log_off; +@@sql_log_off +1 +SELECT session.sql_log_off; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_log_off; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_log_off = 0; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +'#--------------------FN_DYNVARS_157_03------------------------#' +SET @@session.sql_log_off = 0; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +SET @@session.sql_log_off = 1; +SELECT @@session.sql_log_off; +@@session.sql_log_off +1 +'#--------------------FN_DYNVARS_157_04-------------------------#' +SET @@session.sql_log_off = -1; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of '-1' +SET @@session.sql_log_off = 2; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of '2' +SET @@session.sql_log_off = "T"; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'T' +SET @@session.sql_log_off = "Y"; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'Y' +SET @@session.sql_log_off = TRE; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'TRÜE' +SET @@session.sql_log_off = N; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'ÕN' +SET @@session.sql_log_off = OF; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_log_off = FF; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'ÓFF' +SET @@session.sql_log_off = ''; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of '' +SET @@session.sql_log_off = NO; +ERROR 42000: Variable 'sql_log_off' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_157_05----------------------------#' +SET @@global.sql_log_off = 0; +ERROR HY000: Variable 'sql_log_off' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_log_off; +ERROR HY000: Variable 'sql_log_off' is a SESSION variable +'#----------------------FN_DYNVARS_157_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_log_off'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_157_07------------------------#' +SELECT @@session.sql_log_off = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_off'; +@@session.sql_log_off = VARIABLE_VALUE +1 +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_off'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_157_08-------------------------#' +SET @@session.sql_log_off = OFF; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +SET @@session.sql_log_off = ON; +SELECT @@session.sql_log_off; +@@session.sql_log_off +1 +'#---------------------FN_DYNVARS_157_09----------------------#' +SET @@session.sql_log_off = TRUE; +SELECT @@session.sql_log_off; +@@session.sql_log_off +1 +SET @@session.sql_log_off = FALSE; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 +SET @@session.sql_log_off = @session_start_value; +SELECT @@session.sql_log_off; +@@session.sql_log_off +0 diff --git a/mysql-test/r/sql_log_off_func.result b/mysql-test/r/sql_log_off_func.result new file mode 100644 index 00000000000..e51860534f1 --- /dev/null +++ b/mysql-test/r/sql_log_off_func.result @@ -0,0 +1,51 @@ +** Setup ** + +SET @default_sql_log_off = @@sql_log_off; +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +INSERT INTO t1 VALUES('aa1','bb'); +INSERT INTO t1 VALUES('aa2','bb'); +INSERT INTO t1 VALUES('aa3','bb'); +INSERT INTO t1 VALUES('aa4','bb'); +INSERT INTO t1 VALUES('aa5','bb'); +'#--------------------FN_DYNVARS_158_01-------------------------#' +SET SESSION sql_log_off = ON; +UPDATE t1 SET a = 'aa1-updated' WHERE a = 'aa1'; +Checking if log contains the executed statement +SELECT argument FROM mysql.general_log WHERE argument = 'UPDATE t1 SET a = \'aa1-updated\' WHERE a = \'aa1\''; +argument +'#--------------------FN_DYNVARS_158_02-------------------------#' +SET SESSION sql_log_off = OFF; +UPDATE t1 SET a = 'aa1' WHERE a = 'aa1-updated'; +Checking if log contains the executed statement +SELECT argument FROM mysql.general_log WHERE argument = 'UPDATE t1 SET a = \'aa1\' WHERE a = \'aa1-updated\''; +argument +UPDATE t1 SET a = 'aa1' WHERE a = 'aa1-updated' +'#--------------------FN_DYNVARS_158_03--------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_log_off; +@@SESSION.sql_log_off +0 +0 / FALSE Expected +SET SESSION sql_log_off = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_log_off; +@@SESSION.sql_log_off +0 +0 / FALSE Expected +SET SESSION sql_log_off = TRUE; +** Connection con_int2 ** +SELECT @@SESSION.sql_log_off; +@@SESSION.sql_log_off +1 +1 / TRUE Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_log_off; +@@SESSION.sql_log_off +0 +0 / FALSE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET SESSION sql_log_off = @default_sql_log_off; +DROP TABLE t1; diff --git a/mysql-test/r/sql_low_priority_updates_basic.result b/mysql-test/r/sql_low_priority_updates_basic.result new file mode 100644 index 00000000000..6a09e6720b3 --- /dev/null +++ b/mysql-test/r/sql_low_priority_updates_basic.result @@ -0,0 +1,173 @@ +SET @session_start_value = @@session.sql_low_priority_updates; +SELECT @session_start_value; +@session_start_value +0 +SET @global_start_value = @@global.sql_low_priority_updates; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_159_01------------------------#' +SET @@session.sql_low_priority_updates = 1; +SET @@session.sql_low_priority_updates = DEFAULT; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +SET @@global.sql_low_priority_updates = 1; +SET @@global.sql_low_priority_updates = DEFAULT; +ERROR 42000: Variable 'sql_low_priority_updates' doesn't have a default value +'Bug: DEFAULT value is only associated with session' +'#---------------------FN_DYNVARS_159_02-------------------------#' +SET sql_low_priority_updates = 1; +SELECT @@sql_low_priority_updates; +@@sql_low_priority_updates +1 +SELECT session.sql_low_priority_updates; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_low_priority_updates; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.sql_low_priority_updates; +ERROR 42S02: Unknown table 'global' in field list +SET session sql_low_priority_updates = 0; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +SET global sql_low_priority_updates = 0; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 +'#--------------------FN_DYNVARS_159_03------------------------#' +SET @@session.sql_low_priority_updates = 0; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +SET @@session.sql_low_priority_updates = 1; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +1 +SET @@global.sql_low_priority_updates = 0; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 +SET @@global.sql_low_priority_updates = 1; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +1 +'#--------------------FN_DYNVARS_159_04-------------------------#' +SET @@session.sql_low_priority_updates = -1; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '-1' +SET @@session.sql_low_priority_updates = 1.6; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '2' +SET @@session.sql_low_priority_updates = "T"; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'T' +SET @@session.sql_low_priority_updates = "Y"; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'Y' +SET @@session.sql_low_priority_updates = TRE; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'TRÜE' +SET @@session.sql_low_priority_updates = N; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÕN' +SET @@session.sql_low_priority_updates = OF; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_low_priority_updates = FF; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÓFF' +SET @@global.sql_low_priority_updates = -1; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '-1' +SET @@global.sql_low_priority_updates = 2; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of '2' +SET @@global.sql_low_priority_updates = "T"; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'T' +SET @@global.sql_low_priority_updates = "Y"; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'Y' +SET @@global.sql_low_priority_updates = TRE; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'TRÜE' +SET @@global.sql_low_priority_updates = N; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÕN' +SET @@global.sql_low_priority_updates = OF; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@global.sql_low_priority_updates = FF; +ERROR 42000: Variable 'sql_low_priority_updates' can't be set to the value of 'ÓFF' +'#-------------------FN_DYNVARS_159_05----------------------------#' +SET @@global.sql_low_priority_updates = 0; +SET @@session.sql_low_priority_updates = 1; +SELECT @@global.sql_low_priority_updates AS res_is_0; +res_is_0 +0 +SET @@global.sql_low_priority_updates = 0; +SELECT @@session.sql_low_priority_updates AS res_is_1; +res_is_1 +1 +'#----------------------FN_DYNVARS_159_06------------------------#' +SELECT @@global.sql_low_priority_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; +@@global.sql_low_priority_updates = VARIABLE_VALUE +1 +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; +VARIABLE_VALUE +OFF +'#----------------------FN_DYNVARS_159_07------------------------#' +SELECT @@session.sql_low_priority_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; +@@session.sql_low_priority_updates = VARIABLE_VALUE +0 +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_159_08-------------------------#' +SET @@session.sql_low_priority_updates = OFF; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +SET @@session.sql_low_priority_updates = ON; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +1 +SET @@global.sql_low_priority_updates = OFF; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 +SET @@global.sql_low_priority_updates = ON; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +1 +'#---------------------FN_DYNVARS_159_09----------------------#' +SET @@session.sql_low_priority_updates = TRUE; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +1 +SET @@session.sql_low_priority_updates = FALSE; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +SET @@global.sql_low_priority_updates = TRUE; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +1 +SET @@global.sql_low_priority_updates = FALSE; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 +SET @@session.sql_low_priority_updates = @session_start_value; +SELECT @@session.sql_low_priority_updates; +@@session.sql_low_priority_updates +0 +SET @@global.sql_low_priority_updates = @global_start_value; +SELECT @@global.sql_low_priority_updates; +@@global.sql_low_priority_updates +0 diff --git a/mysql-test/r/sql_low_priority_updates_func.result b/mysql-test/r/sql_low_priority_updates_func.result new file mode 100644 index 00000000000..f0874ae7414 --- /dev/null +++ b/mysql-test/r/sql_low_priority_updates_func.result @@ -0,0 +1,114 @@ +** Setup ** + +** Connecting con0 using root ** +** Connecting con1 using root ** +** Connection default ** +SET @global_low_priority_updates = @@GLOBAL.low_priority_updates; +SET @session_low_priority_updates = @@SESSION.low_priority_updates; +CREATE TABLE t1 (a varchar(100)); +'#--------------------FN_DYNVARS_160_01-------------------------#' +** Connection con0 ** +SET SESSION low_priority_updates = ON; +** Connection con1 ** +SET SESSION low_priority_updates = ON; +** Connection default ** +SET SESSION low_priority_updates = ON; +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); +LOCK TABLE t1 WRITE; +** Connection con1 ** +** Asynchronous Execution ** +UPDATE t1 SET a = CONCAT(a,"-updated");| +** Connection con0 ** +** Asynchronous Execution ** +LOCK TABLE t1 READ; +SELECT * FROM t1; +UNLOCK TABLES;| +** Connection default ** +Sleeping for 1 secs +UNLOCK TABLES; +** Connection con0 ** +** Asynchronous Result ** +a +1 +2 +3 +4 +5 +6 +Expected values of a without -updated; +** Connection default ** +DELETE FROM t1; +'#--------------------FN_DYNVARS_160_02-------------------------#' +** Connection con0 ** +SET SESSION low_priority_updates = OFF; +** Connection con1 ** +SET SESSION low_priority_updates = OFF; +** Connection default** +SET SESSION low_priority_updates = OFF; +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); +LOCK TABLE t1 WRITE; +** Connection con1 ** +** Asynchronous Execution ** +UPDATE t1 SET a = CONCAT(a,"-updated");| +** Connection con0 ** +** Asynchronous Execution ** +LOCK TABLE t1 READ; +SELECT * FROM t1; +UNLOCK TABLES;| +** Connection default ** +Sleeping for 1 secs +UNLOCK TABLES; +** Connection con0 ** +** Asynchronous Result ** +a +1-updated +2-updated +3-updated +4-updated +5-updated +6-updated +Expected values of a with -updated; +** Connection default** +DELETE FROM t1; +'#--------------------FN_DYNVARS_160_03-------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.low_priority_updates; +@@SESSION.low_priority_updates +0 +1 / TRUE Expected +SET SESSION low_priority_updates = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.low_priority_updates; +@@SESSION.low_priority_updates +0 +1 / TRUE Expected +SET SESSION low_priority_updates = TRUE; +** Connection con_int1 ** +SELECT @@SESSION.low_priority_updates; +@@SESSION.low_priority_updates +0 +0 / FALSE Expected +** Connection con_int2 ** +SELECT @@SESSION.low_priority_updates; +@@SESSION.low_priority_updates +1 +1 / TRUE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +** Connection default ** +Disconnecting Connections con0, con1 +DROP TABLE t1; +SET @@GLOBAL.low_priority_updates = @global_low_priority_updates; +SET @@SESSION.low_priority_updates = @session_low_priority_updates; diff --git a/mysql-test/r/sql_max_join_size_func.result b/mysql-test/r/sql_max_join_size_func.result new file mode 100644 index 00000000000..0e406f6611e --- /dev/null +++ b/mysql-test/r/sql_max_join_size_func.result @@ -0,0 +1,77 @@ +** Setup ** +SET @session_max_join_size = @@SESSION.sql_max_join_size; +SET @global_max_join_size = @@GLOBAL.sql_max_join_size; +SET @session_sql_big_selects = @@SESSION.sql_big_selects; +CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20)); +CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20)); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa1','bb'); +INSERT INTO t1 VALUES('aa2','bb'); +INSERT INTO t1 VALUES('aa3','bb'); +INSERT INTO t1 VALUES('aa4','bb'); +INSERT INTO t2 VALUES('aa','bb'); +INSERT INTO t2 VALUES('aa1','bb'); +INSERT INTO t2 VALUES('aa2','bb'); +INSERT INTO t2 VALUES('aa3','bb'); +INSERT INTO t2 VALUES('aa4','bb'); +'#--------------------FN_DYNVARS_161_01-------------------------#' +SET SESSION sql_max_join_size=9; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay +Expected error The SELECT would examine more than MAX_JOIN_SIZE rows. +'#--------------------FN_DYNVARS_161_02-------------------------#' +SET SESSION SQL_BIG_SELECTS = 1; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +a b a b +aa bb aa bb +aa1 bb aa1 bb +aa2 bb aa2 bb +aa3 bb aa3 bb +aa4 bb aa4 bb +This should work +SET SESSION sql_max_join_size=DEFAULT; +DELETE FROM t2 WHERE a = 'aa4'; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +a b a b +aa bb aa bb +aa1 bb aa1 bb +aa2 bb aa2 bb +aa3 bb aa3 bb +This should work +'#----------------------------FN_DYNVARS_136_05-------------------------#' +SET GLOBAL sql_max_join_size = 4; +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_max_join_size; +@@SESSION.sql_max_join_size +4 +4 Expected +SET SESSION sql_max_join_size = 2; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_max_join_size; +@@SESSION.sql_max_join_size +4 +4 Expected +SET SESSION sql_max_join_size = 10; +** Connection con_int2 ** +SELECT @@SESSION.sql_max_join_size; +@@SESSION.sql_max_join_size +10 +10 Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_max_join_size; +@@SESSION.sql_max_join_size +2 +2 Expected +SELECT @@GLOBAL.sql_max_join_size; +@@GLOBAL.sql_max_join_size +4 +4 Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET @@SESSION.sql_max_join_size = @session_max_join_size; +SET @@GLOBAL.sql_max_join_size = @global_max_join_size ; +SET @@SESSION.sql_big_selects = @session_sql_big_selects; +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/r/sql_mode_basic.result b/mysql-test/r/sql_mode_basic.result new file mode 100644 index 00000000000..78a9f179824 --- /dev/null +++ b/mysql-test/r/sql_mode_basic.result @@ -0,0 +1,453 @@ +SET @global_start_value = @@global.sql_mode; +SELECT @global_start_value; +@global_start_value + +SET @session_start_value = @@session.sql_mode; +SELECT @session_start_value; +@session_start_value + +'#--------------------FN_DYNVARS_152_01------------------------#' +SET @@global.sql_mode = ANSI; +SET @@global.sql_mode = DEFAULT; +SELECT @@global.sql_mode; +@@global.sql_mode + +SET @@session.sql_mode = ANSI; +SET @@session.sql_mode = DEFAULT; +SELECT @@session.sql_mode; +@@session.sql_mode + +'Bug# 34876: Default values for both session and global sql_mode is ""'; +'and not OFF.'; +'#---------------------FN_DYNVARS_152_02-------------------------#' +SET @@global.sql_mode = NULL; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NULL' +SET @@global.sql_mode = ''; +SELECT @@global.sql_mode; +@@global.sql_mode + +SET @@global.sql_mode = ' '; +SELECT @@global.sql_mode; +@@global.sql_mode + +SET @@session.sql_mode = NULL; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NULL' +SET @@session.sql_mode = ''; +SELECT @@session.sql_mode; +@@session.sql_mode + +SET @@session.sql_mode = ' '; +SELECT @@session.sql_mode; +@@session.sql_mode + +'#--------------------FN_DYNVARS_152_03------------------------#' +'Bug: Incomplete sql modes valid values at:'; +'http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html'; +SET @@global.sql_mode = ANSI; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI +SET @@global.sql_mode = STRICT_TRANS_TABLES; +SELECT @@global.sql_mode; +@@global.sql_mode +STRICT_TRANS_TABLES +SET @@global.sql_mode = TRADITIONAL; +SELECT @@global.sql_mode; +@@global.sql_mode +STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +SET @@global.sql_mode = ALLOW_INVALID_DATES; +SELECT @@global.sql_mode; +@@global.sql_mode +ALLOW_INVALID_DATES +SET @@global.sql_mode = ANSI_QUOTES; +SELECT @@global.sql_mode; +@@global.sql_mode +ANSI_QUOTES +SET @@global.sql_mode = ERROR_FOR_DIVISION_BY_ZERO; +SELECT @@global.sql_mode; +@@global.sql_mode +ERROR_FOR_DIVISION_BY_ZERO +SET @@global.sql_mode = HIGH_NOT_PRECEDENCE; +SELECT @@global.sql_mode; +@@global.sql_mode +HIGH_NOT_PRECEDENCE +SET @@global.sql_mode = IGNORE_SPACE; +SELECT @@global.sql_mode; +@@global.sql_mode +IGNORE_SPACE +SET @@global.sql_mode = NO_AUTO_CREATE_USER; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_AUTO_CREATE_USER +SET @@global.sql_mode = NO_AUTO_VALUE_ON_ZERO; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_AUTO_VALUE_ON_ZERO +SET @@global.sql_mode = NO_BACKSLASH_ESCAPES; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_BACKSLASH_ESCAPES +SET @@global.sql_mode = NO_DIR_IN_CREATE; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_DIR_IN_CREATE +SET @@global.sql_mode = NO_ENGINE_SUBSTITUTION; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_ENGINE_SUBSTITUTION +SET @@global.sql_mode = NO_FIELD_OPTIONS; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_FIELD_OPTIONS +SET @@global.sql_mode = NO_KEY_OPTIONS; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_KEY_OPTIONS +SET @@global.sql_mode = NO_TABLE_OPTIONS; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_TABLE_OPTIONS +SET @@global.sql_mode = NO_UNSIGNED_SUBTRACTION; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_UNSIGNED_SUBTRACTION +SET @@global.sql_mode = NO_ZERO_DATE; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_ZERO_DATE +SET @@global.sql_mode = NO_ZERO_IN_DATE; +SELECT @@global.sql_mode; +@@global.sql_mode +NO_ZERO_IN_DATE +SET @@global.sql_mode = ONLY_FULL_GROUP_BY; +SELECT @@global.sql_mode; +@@global.sql_mode +ONLY_FULL_GROUP_BY +SET @@global.sql_mode = PIPES_AS_CONCAT; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT +SET @@global.sql_mode = REAL_AS_FLOAT; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT +SET @@global.sql_mode = STRICT_ALL_TABLES; +SELECT @@global.sql_mode; +@@global.sql_mode +STRICT_ALL_TABLES +SET @@global.sql_mode = STRICT_TRANS_TABLES; +SELECT @@global.sql_mode; +@@global.sql_mode +STRICT_TRANS_TABLES +SET @@global.sql_mode = DB2; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS +SET @@global.sql_mode = MAXDB; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@global.sql_mode = MSSQL; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS +SET @@global.sql_mode = MYSQL323; +SELECT @@global.sql_mode; +@@global.sql_mode +MYSQL323,HIGH_NOT_PRECEDENCE +SET @@global.sql_mode = MYSQL40; +SELECT @@global.sql_mode; +@@global.sql_mode +MYSQL40,HIGH_NOT_PRECEDENCE +SET @@global.sql_mode = ORACLE; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@global.sql_mode = POSTGRESQL; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS +SET @@global.sql_mode = TRADITIONAL; +SELECT @@global.sql_mode; +@@global.sql_mode +STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +SET @@global.sql_mode = OFF; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'OFF' +'Bug: OFF is documented as an sql mode but infact it is not'; +SET @@session.sql_mode = ANSI; +SELECT @@session.sql_mode; +@@session.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI +SET @@session.sql_mode = STRICT_TRANS_TABLES; +SELECT @@session.sql_mode; +@@session.sql_mode +STRICT_TRANS_TABLES +SET @@session.sql_mode = TRADITIONAL; +SELECT @@session.sql_mode; +@@session.sql_mode +STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +SET @@session.sql_mode = ALLOW_INVALID_DATES; +SELECT @@session.sql_mode; +@@session.sql_mode +ALLOW_INVALID_DATES +SET @@session.sql_mode = ANSI_QUOTES; +SELECT @@session.sql_mode; +@@session.sql_mode +ANSI_QUOTES +SET @@session.sql_mode = ERROR_FOR_DIVISION_BY_ZERO; +SELECT @@session.sql_mode; +@@session.sql_mode +ERROR_FOR_DIVISION_BY_ZERO +SET @@session.sql_mode = HIGH_NOT_PRECEDENCE; +SELECT @@session.sql_mode; +@@session.sql_mode +HIGH_NOT_PRECEDENCE +SET @@session.sql_mode = IGNORE_SPACE; +SELECT @@session.sql_mode; +@@session.sql_mode +IGNORE_SPACE +SET @@session.sql_mode = NO_AUTO_CREATE_USER; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_AUTO_CREATE_USER +SET @@session.sql_mode = NO_AUTO_VALUE_ON_ZERO; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_AUTO_VALUE_ON_ZERO +SET @@session.sql_mode = NO_BACKSLASH_ESCAPES; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_BACKSLASH_ESCAPES +SET @@session.sql_mode = NO_DIR_IN_CREATE; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_DIR_IN_CREATE +SET @@session.sql_mode = NO_ENGINE_SUBSTITUTION; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_ENGINE_SUBSTITUTION +SET @@session.sql_mode = NO_FIELD_OPTIONS; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_FIELD_OPTIONS +SET @@session.sql_mode = NO_KEY_OPTIONS; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_KEY_OPTIONS +SET @@session.sql_mode = NO_TABLE_OPTIONS; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_TABLE_OPTIONS +SET @@session.sql_mode = NO_UNSIGNED_SUBTRACTION; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_UNSIGNED_SUBTRACTION +SET @@session.sql_mode = NO_ZERO_DATE; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_ZERO_DATE +SET @@session.sql_mode = NO_ZERO_IN_DATE; +SELECT @@session.sql_mode; +@@session.sql_mode +NO_ZERO_IN_DATE +SET @@session.sql_mode = ONLY_FULL_GROUP_BY; +SELECT @@session.sql_mode; +@@session.sql_mode +ONLY_FULL_GROUP_BY +SET @@session.sql_mode = PIPES_AS_CONCAT; +SELECT @@session.sql_mode; +@@session.sql_mode +PIPES_AS_CONCAT +SET @@session.sql_mode = REAL_AS_FLOAT; +SELECT @@session.sql_mode; +@@session.sql_mode +REAL_AS_FLOAT +SET @@session.sql_mode = STRICT_ALL_TABLES; +SELECT @@session.sql_mode; +@@session.sql_mode +STRICT_ALL_TABLES +SET @@session.sql_mode = STRICT_TRANS_TABLES; +SELECT @@session.sql_mode; +@@session.sql_mode +STRICT_TRANS_TABLES +SET @@session.sql_mode = DB2; +SELECT @@session.sql_mode; +@@session.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS +SET @@session.sql_mode = MAXDB; +SELECT @@session.sql_mode; +@@session.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@session.sql_mode = MSSQL; +SELECT @@session.sql_mode; +@@session.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS +SET @@session.sql_mode = MYSQL323; +SELECT @@session.sql_mode; +@@session.sql_mode +MYSQL323,HIGH_NOT_PRECEDENCE +SET @@session.sql_mode = MYSQL40; +SELECT @@session.sql_mode; +@@session.sql_mode +MYSQL40,HIGH_NOT_PRECEDENCE +SET @@session.sql_mode = ORACLE; +SELECT @@session.sql_mode; +@@session.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@session.sql_mode = POSTGRESQL; +SELECT @@session.sql_mode; +@@session.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS +SET @@session.sql_mode = TRADITIONAL; +SELECT @@session.sql_mode; +@@session.sql_mode +STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +SET @@session.sql_mode = OFF; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'OFF' +SET @@global.sql_mode = '?'; +SELECT @@global.sql_mode; +@@global.sql_mode +? +SET @@session.sql_mode = '?'; +SELECT @@session.sql_mode; +@@session.sql_mode +? +'Bug# 34834: ? is acceptable as a valid sql mode.' +'#--------------------FN_DYNVARS_152_04-------------------------#' +SET @@global.sql_mode = -1; +ERROR 42000: Variable 'sql_mode' can't be set to the value of '-1' +SET @@global.sql_mode = ASCII; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'ASCII' +SET @@global.sql_mode = NON_TRADITIONAL; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NON_TRADITIONAL' +SET @@global.sql_mode = 'OF'; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'OF' +SET @@global.sql_mode = NONE; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NONE' +SET @@session.sql_mode = -1; +ERROR 42000: Variable 'sql_mode' can't be set to the value of '-1' +SET @@session.sql_mode = ANSI_SINGLE_QUOTES; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'ANSI_SINGLE_QUOTES' +SET @@session.sql_mode = 'ON'; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'ON' +SET @@session.sql_mode = 'OF'; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'OF' +SET @@session.sql_mode = DISABLE; +ERROR 42000: Variable 'sql_mode' can't be set to the value of 'DISABLE' +'#-------------------FN_DYNVARS_152_05----------------------------#' +SELECT @@session.sql_mode = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_mode'; +@@session.sql_mode = VARIABLE_VALUE +1 +'#----------------------FN_DYNVARS_152_06------------------------#' +SELECT @@global.sql_mode = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_mode'; +@@global.sql_mode = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_152_07-------------------------#' +SET @@global.sql_mode = 0; +SELECT @@global.sql_mode; +@@global.sql_mode + +SET @@global.sql_mode = 1; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT +SET @@global.sql_mode = 2; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT +SET @@global.sql_mode = 3; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT +SET @@global.sql_mode = 50000; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,NO_UNSIGNED_SUBTRACTION,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@global.sql_mode = 500000; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,HIGH_NOT_PRECEDENCE +SET @@global.sql_mode = 4294967295; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH +SET @@global.sql_mode = 4294967296; +ERROR 42000: Variable 'sql_mode' can't be set to the value of '4294967296' +SET @@global.sql_mode = 0.4; +SELECT @@global.sql_mode; +@@global.sql_mode + +SET @@global.sql_mode = 1.0; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT +SET @@global.sql_mode = 40000.1; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_UNSIGNED_SUBTRACTION,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@global.sql_mode = 1.5; +SELECT @@global.sql_mode; +@@global.sql_mode +PIPES_AS_CONCAT +SET @@global.sql_mode = 124567.49; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,NO_DIR_IN_CREATE,ORACLE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE +SET @@session.sql_mode = 50000000.5; +SELECT @@session.sql_mode; +@@session.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_DIR_IN_CREATE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL40,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE +SET @@session.sql_mode = 4294967295.4; +SELECT @@session.sql_mode; +@@session.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,?,ONLY_FULL_GROUP_BY,NO_UNSIGNED_SUBTRACTION,NO_DIR_IN_CREATE,POSTGRESQL,ORACLE,MSSQL,DB2,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,MYSQL323,MYSQL40,ANSI,NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH +'Bug: Decimal values can be used within the range [0.0-4294967295.5).'; +'Values are rounded to numeric values as evident from outcome.'; +'#---------------------FN_DYNVARS_152_08----------------------#' +SET @@global.sql_mode = TRUE; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT +SET @@global.sql_mode = FALSE; +SELECT @@global.sql_mode; +@@global.sql_mode + +'#---------------------FN_DYNVARS_152_09----------------------#' +SET sql_mode = 'ANSI'; +SET session.sql_mode = 'ANSI'; +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 'sql_mode = 'ANSI'' at line 1 +SET global.sql_mode = 'ANSI'; +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 'sql_mode = 'ANSI'' at line 1 +SET session sql_mode = 1; +SELECT @@sql_mode; +@@sql_mode +REAL_AS_FLOAT +SET global sql_mode = 0; +SELECT @@global.sql_mode; +@@global.sql_mode + +'#---------------------FN_DYNVARS_152_10----------------------#' +SET @@session.sql_mode = 'TRADITIONAL,ALLOW_INVALID_DATES,ANSI_QUOTES'; +SELECT @@session.sql_mode; +@@session.sql_mode +ANSI_QUOTES,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +SET @@global.sql_mode = 'ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT,REAL_AS_FLOAT,ORACLE,POSTGRESQL'; +SELECT @@global.sql_mode; +@@global.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,POSTGRESQL,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER +SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,HIGH_OR_PRECEDENCE, +IGNORE_SPACE'; +ERROR 42000: Variable 'sql_mode' can't be set to the value of ' +IGNORE_SPACE' +SET @@global.sql_mode = @global_start_value; +SELECT @@global.sql_mode; +@@global.sql_mode + +SET @@session.sql_mode = @session_start_value; +SELECT @@session.sql_mode; +@@session.sql_mode + diff --git a/mysql-test/r/sql_mode_func.result b/mysql-test/r/sql_mode_func.result new file mode 100644 index 00000000000..dbf0db4e1ad --- /dev/null +++ b/mysql-test/r/sql_mode_func.result @@ -0,0 +1,105 @@ +** Setup ** + +SET @sql_mode_session = @@SESSION.sql_mode; +SET @sql_mode_global = @@GLOBAL.sql_mode; +CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20)); +CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20)); +'#--------------------FN_DYNVARS_153_01-------------------------#' +ANSI mode +SET SESSION sql_mode = ANSI; +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI +INSERT INTO t1 VALUES('t1a1','t1b1'); +INSERT INTO t1 VALUES('t1a2','t1b2'); +INSERT INTO t1 VALUES('t1a3','t1b3'); +INSERT INTO t1 VALUES('t1a4','t1b4'); +INSERT INTO t2 VALUES('t2a1','t2b1'); +INSERT INTO t2 VALUES('t2a2','t2b2'); +INSERT INTO t2 VALUES('t2a3','t2b3'); +INSERT INTO t2 VALUES('t2a4','t2b4'); +SELECT * FROM t1 WHERE t1.a IN (SELECT MAX(t1.b) FROM t2); +ERROR HY000: Invalid use of group function +Expected error for invalid group function +SET SESSION sql_mode = @sql_mode_session; +SET GLOBAL sql_mode = @sql_mode_global; +'#--------------------FN_DYNVARS_153_02-------------------------#' +STRICT_TRANS_TABLES mode +DELETE FROM t1; +DELETE FROM t2; +SET SESSION sql_mode = STRICT_TRANS_TABLES; +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode +STRICT_TRANS_TABLES +INSERT INTO t1 VALUES('t1a1','t1b1'); +INSERT INTO t1 VALUES('t1a2','t1b2'); +INSERT INTO t1 VALUES('t1a3','t1b3'); +INSERT INTO t1 VALUES('t1a4','t1b4'); +INSERT INTO t2 VALUES(NULL,'t2b1'); +INSERT INTO t2 VALUES('t2a2','t2b2'); +INSERT INTO t2 VALUES('t2a3','t2b3'); +INSERT INTO t2 VALUES('t2a4','t2b4'); +INSERT INTO t1 SELECT * FROM t2; +ERROR 23000: Column 'a' cannot be null +Expected error Bad NULL value +SELECT * FROM t1 WHERE a = 't2a2'; +a b +Should return no rows in columns a,b; +SET SESSION sql_mode = @sql_mode_session; +SET GLOBAL sql_mode = @sql_mode_global; +'#--------------------FN_DYNVARS_153_03-------------------------#' +TRADITIONAL mode +SET SESSION sql_mode = TRADITIONAL; +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode +STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +INSERT INTO t1 VALUES('t1a1','t1b1'); +INSERT INTO t1 VALUES('t1a2','t1b2'); +INSERT INTO t1 VALUES('t1a3','t1b3'); +INSERT INTO t1 VALUES('t1a4','t1b4'); +INSERT INTO t2 VALUES(NULL,'t2b1'); +INSERT INTO t2 VALUES('t2a2','t2b2'); +INSERT INTO t2 VALUES('t2a3','t2b3'); +INSERT INTO t2 VALUES('t2a4','t2b4'); +INSERT INTO t1 SELECT * FROM t2; +ERROR 23000: Column 'a' cannot be null +Expected error Bad NULL value +SELECT * FROM t1 WHERE a = 't2a2'; +a b +Should return no rows in columns a,b; +'#-------------------FN_DYNVARS_153_04-------------------------#' +SET GLOBAL sql_mode = ''; +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode + +'' Expected +SET SESSION sql_mode = 'TRADITIONAL'; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode + +'' Expected +SET SESSION sql_mode = 'ANSI'; +** Connection con_int2 ** +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode +REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI +'REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ANSI' Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_mode; +@@SESSION.sql_mode +STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER +'STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, TRADITIONAL' Expected +SELECT @@GLOBAL.sql_mode; +@@GLOBAL.sql_mode + +'' Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET SESSION sql_mode = @sql_mode_session; +SET GLOBAL sql_mode = @sql_mode_global; +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/r/sql_notes_basic.result b/mysql-test/r/sql_notes_basic.result new file mode 100644 index 00000000000..5dd792d8ede --- /dev/null +++ b/mysql-test/r/sql_notes_basic.result @@ -0,0 +1,106 @@ +SET @session_start_value = @@session.sql_notes; +SELECT @session_start_value; +@session_start_value +1 +'#--------------------FN_DYNVARS_161_01------------------------#' +SET @@session.sql_notes = 0; +SET @@session.sql_notes = DEFAULT; +SELECT @@session.sql_notes; +@@session.sql_notes +0 +SET @@session.sql_notes = 1; +SET @@session.sql_notes = DEFAULT; +SELECT @@session.sql_notes; +@@session.sql_notes +1 +'#---------------------FN_DYNVARS_161_02-------------------------#' +SET sql_notes = 1; +SELECT @@sql_notes; +@@sql_notes +1 +SELECT session.sql_notes; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_notes; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_notes = 0; +SELECT @@session.sql_notes; +@@session.sql_notes +0 +'#--------------------FN_DYNVARS_161_03------------------------#' +SET @@session.sql_notes = 0; +SELECT @@session.sql_notes; +@@session.sql_notes +0 +SET @@session.sql_notes = 1; +SELECT @@session.sql_notes; +@@session.sql_notes +1 +'#--------------------FN_DYNVARS_161_04-------------------------#' +SET @@session.sql_notes = -1; +ERROR 42000: Variable 'sql_notes' can't be set to the value of '-1' +SET @@session.sql_notes = 2; +ERROR 42000: Variable 'sql_notes' can't be set to the value of '2' +SET @@session.sql_notes = "T"; +ERROR 42000: Variable 'sql_notes' can't be set to the value of 'T' +SET @@session.sql_notes = "Y"; +ERROR 42000: Variable 'sql_notes' can't be set to the value of 'Y' +SET @@session.sql_notes = TRE; +ERROR 42000: Variable 'sql_notes' can't be set to the value of 'TRÜE' +SET @@session.sql_notes = N; +ERROR 42000: Variable 'sql_notes' can't be set to the value of 'ÕN' +SET @@session.sql_notes = OF; +SELECT @@session.sql_notes; +@@session.sql_notes +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_notes = FF; +ERROR 42000: Variable 'sql_notes' can't be set to the value of 'ÓFF' +SET @@session.sql_notes = ''; +ERROR 42000: Variable 'sql_notes' can't be set to the value of '' +SET @@session.sql_notes = NO; +ERROR 42000: Variable 'sql_notes' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_161_05----------------------------#' +SET @@global.sql_notes = 0; +ERROR HY000: Variable 'sql_notes' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_notes; +ERROR HY000: Variable 'sql_notes' is a SESSION variable +'#----------------------FN_DYNVARS_161_06------------------------#' +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sql_notes'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_161_07------------------------#' +SELECT @@session.sql_notes = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_notes'; +@@session.sql_notes = VARIABLE_VALUE +1 +SELECT @@session.sql_notes; +@@session.sql_notes +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_notes'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_161_08-------------------------#' +SET @@session.sql_notes = OFF; +SELECT @@session.sql_notes; +@@session.sql_notes +0 +SET @@session.sql_notes = ON; +SELECT @@session.sql_notes; +@@session.sql_notes +1 +'#---------------------FN_DYNVARS_161_09----------------------#' +SET @@session.sql_notes = TRUE; +SELECT @@session.sql_notes; +@@session.sql_notes +1 +SET @@session.sql_notes = FALSE; +SELECT @@session.sql_notes; +@@session.sql_notes +0 +SET @@session.sql_notes = @session_start_value; +SELECT @@session.sql_notes; +@@session.sql_notes +1 diff --git a/mysql-test/r/sql_notes_func.result b/mysql-test/r/sql_notes_func.result new file mode 100644 index 00000000000..87c4ecb8431 --- /dev/null +++ b/mysql-test/r/sql_notes_func.result @@ -0,0 +1,64 @@ +** Setup ** + +SET @default_sql_notes = @@sql_notes; +'#--------------------FN_DYNVARS_162_01-------------------------#' +SET SESSION sql_notes = ON; +creating a temporary table +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +conditionally dropping the table twice so that a note generates +DROP TABLE IF EXISTS t1; +SELECT @@warning_count; +@@warning_count +0 +0 Expected +DROP TABLE IF EXISTS t1; +Warnings: +Note 1051 Unknown table 't1' +SELECT @@warning_count; +@@warning_count +1 +1 Expected +'#--------------------FN_DYNVARS_162_02-------------------------#' +SET SESSION sql_notes = OFF; +creating a temporary table +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +conditionally dropping the table twice so that a note generates +DROP TABLE IF EXISTS t1; +SELECT @@warning_count; +@@warning_count +0 +0 Expected +DROP TABLE IF EXISTS t1; +SELECT @@warning_count; +@@warning_count +0 +0 Expected +'#------------------FN_DYNVARS_162_03---------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_notes; +@@SESSION.sql_notes +1 +1 / TRUE Expected +SET SESSION sql_notes = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_notes; +@@SESSION.sql_notes +1 +1 / TRUE Expected +SET SESSION sql_notes = TRUE; +** Connection con_int2 ** +SELECT @@SESSION.sql_notes; +@@SESSION.sql_notes +1 +1 / TRUE Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_notes; +@@SESSION.sql_notes +0 +0 / FALSE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET SESSION sql_notes = @default_sql_notes; +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/r/sql_quote_show_create_basic.result b/mysql-test/r/sql_quote_show_create_basic.result new file mode 100644 index 00000000000..2550f2d1057 --- /dev/null +++ b/mysql-test/r/sql_quote_show_create_basic.result @@ -0,0 +1,108 @@ +SET @session_start_value = @@session.sql_quote_show_create; +SELECT @session_start_value; +@session_start_value +1 +'#--------------------FN_DYNVARS_162_01------------------------#' +SET @@session.sql_quote_show_create = 0; +SET @@session.sql_quote_show_create = DEFAULT; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +SET @@session.sql_quote_show_create = 1; +SET @@session.sql_quote_show_create = DEFAULT; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +1 +'#---------------------FN_DYNVARS_162_02-------------------------#' +SET sql_quote_show_create = 1; +SELECT @@sql_quote_show_create; +@@sql_quote_show_create +1 +SELECT session.sql_quote_show_create; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_quote_show_create; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_quote_show_create = 0; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +'#--------------------FN_DYNVARS_162_03------------------------#' +SET @@session.sql_quote_show_create = 0; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +SET @@session.sql_quote_show_create = 1; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +1 +'#--------------------FN_DYNVARS_162_04-------------------------#' +SET @@session.sql_quote_show_create = -1; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of '-1' +SET @@session.sql_quote_show_create = 2; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of '2' +SET @@session.sql_quote_show_create = "T"; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'T' +SET @@session.sql_quote_show_create = "Y"; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'Y' +SET @@session.sql_quote_show_create = TRE; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'TRÜE' +SET @@session.sql_quote_show_create = N; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'ÕN' +SET @@session.sql_quote_show_create = OF; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_quote_show_create = FF; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'ÓFF' +SET @@session.sql_quote_show_create = ''; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of '' +SET @@session.sql_quote_show_create = NO; +ERROR 42000: Variable 'sql_quote_show_create' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_162_05----------------------------#' +SET @@global.sql_quote_show_create = 0; +ERROR HY000: Variable 'sql_quote_show_create' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_quote_show_create; +ERROR HY000: Variable 'sql_quote_show_create' is a SESSION variable +'#----------------------FN_DYNVARS_162_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_quote_show_create'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_162_07------------------------#' +SELECT @@session.sql_quote_show_create = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_quote_show_create'; +@@session.sql_quote_show_create = VARIABLE_VALUE +1 +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_quote_show_create'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_162_08-------------------------#' +SET @@session.sql_quote_show_create = OFF; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +SET @@session.sql_quote_show_create = ON; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +1 +'#---------------------FN_DYNVARS_162_09----------------------#' +SET @@session.sql_quote_show_create = TRUE; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +1 +SET @@session.sql_quote_show_create = FALSE; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +0 +SET @@session.sql_quote_show_create = @session_start_value; +SELECT @@session.sql_quote_show_create; +@@session.sql_quote_show_create +1 diff --git a/mysql-test/r/sql_quote_show_create_func.result b/mysql-test/r/sql_quote_show_create_func.result new file mode 100644 index 00000000000..9c1e751eef2 --- /dev/null +++ b/mysql-test/r/sql_quote_show_create_func.result @@ -0,0 +1,61 @@ +** Setup ** + +SET @default_sql_quote_show_create = @@sql_quote_show_create; +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +'#-----------------------------FN_DYNVARS_163_01------------------------------------#' +SET SESSION sql_quote_show_create = TRUE; +SHOW CREATE DATABASE test; +Database Create Database +test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ +EXPECTING identifiers test TO BE quoted like 'test' +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TEMPORARY TABLE `t1` ( + `a` varchar(20) DEFAULT NULL, + `b` varchar(20) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +EXPECTING identifiers a, b, t1 TO BE quoted like 'a','b','t1' +'#-----------------------------FN_DYNVARS_163_02------------------------------------#' +SET SESSION sql_quote_show_create = FALSE; +SHOW CREATE DATABASE test; +Database Create Database +test CREATE DATABASE test /*!40100 DEFAULT CHARACTER SET latin1 */ +EXPECTING identifiers test NOT TO BE quoted like 'test' +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TEMPORARY TABLE t1 ( + a varchar(20) DEFAULT NULL, + b varchar(20) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +EXPECTING identifiers a, b, t1 NOT TO BE quoted like 'a','b','t1' +'#----------------------------FN_DYNVARS_163_03--------------------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_quote_show_create; +@@SESSION.sql_quote_show_create +1 +1 / TRUE Expected +SET SESSION sql_quote_show_create = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_quote_show_create; +@@SESSION.sql_quote_show_create +1 +1 / TRUE Expected +SET SESSION sql_quote_show_create = TRUE; +** Connection con_int2 ** +SELECT @@SESSION.sql_quote_show_create; +@@SESSION.sql_quote_show_create +1 +1 / TRUE Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_quote_show_create; +@@SESSION.sql_quote_show_create +0 +0 / FALSE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 + +Cleanup +SET @@sql_quote_show_create = @default_sql_quote_show_create; +DROP TABLE t1; diff --git a/mysql-test/r/sql_safe_updates_basic.result b/mysql-test/r/sql_safe_updates_basic.result new file mode 100644 index 00000000000..539b38bb1fe --- /dev/null +++ b/mysql-test/r/sql_safe_updates_basic.result @@ -0,0 +1,108 @@ +SET @session_start_value = @@session.sql_safe_updates; +SELECT @session_start_value; +@session_start_value +0 +'#--------------------FN_DYNVARS_163_01------------------------#' +SET @@session.sql_safe_updates = 0; +SET @@session.sql_safe_updates = DEFAULT; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +SET @@session.sql_safe_updates = 1; +SET @@session.sql_safe_updates = DEFAULT; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +1 +'#---------------------FN_DYNVARS_163_02-------------------------#' +SET sql_safe_updates = 1; +SELECT @@sql_safe_updates; +@@sql_safe_updates +1 +SELECT session.sql_safe_updates; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_safe_updates; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_safe_updates = 0; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +'#--------------------FN_DYNVARS_163_03------------------------#' +SET @@session.sql_safe_updates = 0; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +SET @@session.sql_safe_updates = 1; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +1 +'#--------------------FN_DYNVARS_163_04-------------------------#' +SET @@session.sql_safe_updates = -1; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of '-1' +SET @@session.sql_safe_updates = 2; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of '2' +SET @@session.sql_safe_updates = "T"; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'T' +SET @@session.sql_safe_updates = "Y"; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'Y' +SET @@session.sql_safe_updates = TRE; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'TRÜE' +SET @@session.sql_safe_updates = N; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'ÕN' +SET @@session.sql_safe_updates = OF; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_safe_updates = FF; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'ÓFF' +SET @@session.sql_safe_updates = ''; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of '' +SET @@session.sql_safe_updates = NO; +ERROR 42000: Variable 'sql_safe_updates' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_163_05----------------------------#' +SET @@global.sql_safe_updates = 0; +ERROR HY000: Variable 'sql_safe_updates' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_safe_updates; +ERROR HY000: Variable 'sql_safe_updates' is a SESSION variable +'#----------------------FN_DYNVARS_163_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_safe_updates'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_163_07------------------------#' +SELECT @@session.sql_safe_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_safe_updates'; +@@session.sql_safe_updates = VARIABLE_VALUE +1 +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_safe_updates'; +VARIABLE_VALUE +OFF +'#---------------------FN_DYNVARS_163_08-------------------------#' +SET @@session.sql_safe_updates = OFF; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +SET @@session.sql_safe_updates = ON; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +1 +'#---------------------FN_DYNVARS_163_09----------------------#' +SET @@session.sql_safe_updates = TRUE; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +1 +SET @@session.sql_safe_updates = FALSE; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 +SET @@session.sql_safe_updates = @session_start_value; +SELECT @@session.sql_safe_updates; +@@session.sql_safe_updates +0 diff --git a/mysql-test/r/sql_safe_updates_func.result b/mysql-test/r/sql_safe_updates_func.result new file mode 100644 index 00000000000..cf8d613b683 --- /dev/null +++ b/mysql-test/r/sql_safe_updates_func.result @@ -0,0 +1,169 @@ +** Setup ** + +SET @default_sql_safe_updates = @@sql_safe_updates; +CREATE TEMPORARY TABLE t1(a int PRIMARY KEY, b varchar(20)); +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +INSERT INTO t1 VALUES(4, 'val4'); +INSERT INTO t1 VALUES(5, 'val5'); +INSERT INTO t1 VALUES(6, 'val6'); +INSERT INTO t1 VALUES(7, 'val7'); +INSERT INTO t1 VALUES(8, 'val8'); +INSERT INTO t1 VALUES(9, 'val9'); +'#-----------------------------FN_DYNVARS_164_01------------------------------------#' + +Value ON + +SET SESSION sql_safe_updates = ON; +'#-----------------------------FN_DYNVARS_164_02------------------------------------#' +Expected error : Update without key in safe mode +DELETE FROM t1; +ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column +SELECT * FROM t1; +a b +1 val1 +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +PREPARE stmt FROM 'DELETE FROM t1;'; +Expected error : Update without key in safe mode +EXECUTE stmt; +ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column +DEALLOCATE PREPARE stmt; +'#-----------------------------FN_DYNVARS_164_03------------------------------------#' +Expected error : Update without key in safe mode +DELETE FROM t1 LIMIT 2; +ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column +SELECT * FROM t1; +a b +1 val1 +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +'#-----------------------------FN_DYNVARS_164_04------------------------------------#' +Expected error : Update without key in safe mode +DELETE FROM t1 WHERE b='val1'; +ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column +SELECT * FROM t1; +a b +1 val1 +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +'#-----------------------------FN_DYNVARS_164_05------------------------------------#' +This one should work +DELETE FROM t1 WHERE a=1; +SELECT * FROM t1; +a b +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 + +Value OFF + +SET SESSION sql_safe_updates = OFF; +'#-----------------------------FN_DYNVARS_164_06------------------------------------#' +This one should work +DELETE FROM t1 WHERE b='val1'; +SELECT * FROM t1; +a b +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +'#-----------------------------FN_DYNVARS_164_07------------------------------------#' +This one should work +DELETE FROM t1 WHERE a=1; +SELECT * FROM t1; +a b +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +'#-----------------------------FN_DYNVARS_164_08------------------------------------#' +This one should work +DELETE FROM t1 LIMIT 2; +SELECT * FROM t1; +a b +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +'#-----------------------------FN_DYNVARS_164_09------------------------------------#' +This one should work +DELETE FROM t1; +Bug#35392 Unexpected error occurs in this statement Can't change size of the file +statement is remarked because the error is uncatchable by testing framework +SELECT * FROM t1; +a b +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +PREPARE stmt FROM 'DELETE FROM t1;'; +Expected error : Update without key in safe mode +Bug#35392 Unexpected error occurs in this statement Can't change size of the file +statement is remarked because the error is uncatchable by testing framework +DEALLOCATE PREPARE stmt; +'#----------------------------FN_DYNVARS_164_10--------------------------------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_safe_updates; +@@SESSION.sql_safe_updates +0 +0 / FALSE Expected +SET SESSION sql_safe_updates = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_safe_updates; +@@SESSION.sql_safe_updates +0 +0 / FALSE Expected +SET SESSION sql_safe_updates = TRUE; +** Connection con_int2 ** +SELECT @@SESSION.sql_safe_updates; +@@SESSION.sql_safe_updates +1 +1 / TRUE Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_safe_updates; +@@SESSION.sql_safe_updates +0 +0 / FALSE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET SESSION sql_safe_updates = @default_sql_safe_updates; +DROP TABLE t1; diff --git a/mysql-test/r/sql_select_limit_func.result b/mysql-test/r/sql_select_limit_func.result new file mode 100644 index 00000000000..893816e6f0f --- /dev/null +++ b/mysql-test/r/sql_select_limit_func.result @@ -0,0 +1,172 @@ +** Setup ** + +SET @session_sql_select_limit = @@SESSION.sql_select_limit; +SET @global_sql_select_limit = @@GLOBAL.sql_select_limit; +CREATE TEMPORARY TABLE t1(a int PRIMARY KEY, b varchar(20)); +CREATE TEMPORARY TABLE t2(a int PRIMARY KEY, b varchar(20)); +CREATE TEMPORARY TABLE t3(a int PRIMARY KEY, b varchar(20)); +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +INSERT INTO t1 VALUES(4, 'val4'); +INSERT INTO t1 VALUES(5, 'val5'); +INSERT INTO t1 VALUES(6, 'val6'); +INSERT INTO t1 VALUES(7, 'val7'); +INSERT INTO t1 VALUES(8, 'val8'); +INSERT INTO t1 VALUES(9, 'val9'); +INSERT INTO t2 VALUES(5, 'val5'); +INSERT INTO t2 VALUES(6, 'val6'); +INSERT INTO t2 VALUES(7, 'val7'); +INSERT INTO t2 VALUES(8, 'val8'); +INSERT INTO t2 VALUES(9, 'val9'); +'#-----------------------------FN_DYNVARS_165_01-----------------#' + +Value DEFAULT + +SET SESSION sql_select_limit = DEFAULT; +affected rows: 0 +SELECT * FROM t1; +a b +1 val1 +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +affected rows: 9 +Expecting affected rows: 9 +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +a b a b +5 val5 5 val5 +6 val6 6 val6 +7 val7 7 val7 +8 val8 8 val8 +9 val9 9 val9 +affected rows: 5 +Expecting affected rows: 5 +'#-----------------------------FN_DYNVARS_165_02---------------#' +SET SESSION sql_select_limit = 2; +affected rows: 0 +SELECT * FROM t1; +a b +1 val1 +2 val2 +affected rows: 2 +Expecting affected rows: 2 +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +a b a b +5 val5 5 val5 +6 val6 6 val6 +affected rows: 2 +Expecting affected rows: 2 +'#-----------------------------FN_DYNVARS_165_03---------------#' +SET SESSION sql_select_limit = 2; +affected rows: 0 +SELECT * FROM t1 LIMIT 4; +a b +1 val1 +2 val2 +3 val3 +4 val4 +affected rows: 4 +Expecting affected rows: 4 +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a LIMIT 3; +a b a b +5 val5 5 val5 +6 val6 6 val6 +7 val7 7 val7 +affected rows: 3 +Expecting affected rows: 3 +'#-----------------------------FN_DYNVARS_165_04----------------#' +SET SESSION sql_select_limit = 2; +affected rows: 0 +CREATE PROCEDURE TestProc() +BEGIN +SELECT * FROM t1; +END| +affected rows: 0 +call TestProc(); +a b +1 val1 +2 val2 +3 val3 +4 val4 +5 val5 +6 val6 +7 val7 +8 val8 +9 val9 +affected rows: 9 +affected rows: 0 +Expecting affected rows: 9 +DROP PROCEDURE TestProc; +affected rows: 0 +CREATE PROCEDURE TestProc() +BEGIN +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +END| +affected rows: 0 +call TestProc(); +a b a b +5 val5 5 val5 +6 val6 6 val6 +7 val7 7 val7 +8 val8 8 val8 +9 val9 9 val9 +affected rows: 5 +affected rows: 0 +Expecting affected rows: 5 +DROP PROCEDURE TestProc; +affected rows: 0 +'#-----------------------------FN_DYNVARS_165_05-----------------#' +SET SESSION sql_select_limit = 2; +affected rows: 0 +CREATE TEMPORARY TABLE t4(a int PRIMARY KEY, b varchar(20)) SELECT * FROM t2; +affected rows: 5 +info: Records: 5 Duplicates: 0 Warnings: 0 +Expecting Records: 5 +INSERT INTO t3 SELECT * FROM t1; +affected rows: 9 +info: Records: 9 Duplicates: 0 Warnings: 0 +Expecting Records: 9 +'#-----------------------------FN_DYNVARS_165_06---------------------#' +SET GLOBAL sql_select_limit = 2; +** Connecting con_int2 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_select_limit; +@@SESSION.sql_select_limit +2 +2 Expected +SET SESSION sql_select_limit = 10; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_select_limit; +@@SESSION.sql_select_limit +2 +2 Expected +SET SESSION sql_select_limit = 12; +** Connection con_int2 ** +SELECT @@SESSION.sql_select_limit; +@@SESSION.sql_select_limit +12 +12 Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_select_limit; +@@SESSION.sql_select_limit +10 +10 Expected +SELECT @@GLOBAL.sql_select_limit; +@@GLOBAL.sql_select_limit +2 +2 Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET @@SESSION.sql_select_limit = @session_sql_select_limit; +SET @@GLOBAL.sql_select_limit = @global_sql_select_limit; +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +DROP TABLE t4; diff --git a/mysql-test/r/sql_slave_skip_counter_basic.result b/mysql-test/r/sql_slave_skip_counter_basic.result new file mode 100644 index 00000000000..9ceef325483 --- /dev/null +++ b/mysql-test/r/sql_slave_skip_counter_basic.result @@ -0,0 +1,40 @@ +'#--------------------FN_DYNVARS_165_01-------------------------#' +SET @start_global_value = @@global.sql_slave_skip_counter; +ERROR HY000: Variable 'sql_slave_skip_counter' can only be set, not read +SELECT @@global.sql_slave_skip_counter; +ERROR HY000: Variable 'sql_slave_skip_counter' can only be set, not read +'Info:This value is write only. Value can not be read' +'#--------------------FN_DYNVARS_165_02-------------------------#' +SET @@global.sql_slave_skip_counter = DEFAULT; +ERROR 42000: Variable 'sql_slave_skip_counter' doesn't have a default value +'#--------------------FN_DYNVARS_165_03-------------------------#' +SET @@global.sql_slave_skip_counter = 0; +SET @@global.sql_slave_skip_counter = 5; +SET @@global.sql_slave_skip_counter = 1024; +SET @@global.sql_slave_skip_counter = 2147483648; +SET @@global.sql_slave_skip_counter = 2147483648*2; +SET @@global.sql_slave_skip_counter = 2147483648*2-1; +SET @@global.sql_slave_skip_counter = 4294967295*4294967295; +'#--------------------FN_DYNVARS_165_03-------------------------#' +SET @@global.sql_slave_skip_counter = '5'; +ERROR 42000: Incorrect argument type to variable 'sql_slave_skip_counter' +SET @@global.sql_slave_skip_counter = 5.5; +ERROR 42000: Incorrect argument type to variable 'sql_slave_skip_counter' +SET @@global.sql_slave_skip_counter = -.5; +ERROR 42000: Incorrect argument type to variable 'sql_slave_skip_counter' +SET @@global.sql_slave_skip_counter = -.0; +ERROR 42000: Incorrect argument type to variable 'sql_slave_skip_counter' +'#--------------------FN_DYNVARS_165_03-------------------------#' +SET @@global.sql_slave_skip_counter = 1024; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_slave_skip_counter'; +VARIABLE_VALUE + +'#--------------------FN_DYNVARS_165_03-------------------------#' +SET @@sql_slave_skip_counter = 10; +ERROR HY000: Variable 'sql_slave_skip_counter' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.sql_slave_skip_counter = 12; +ERROR HY000: Variable 'sql_slave_skip_counter' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.sql_slave_skip_counter = 13; +ERROR HY000: Variable 'sql_slave_skip_counter' is a GLOBAL variable and should be set with SET GLOBAL diff --git a/mysql-test/r/sql_warnings_basic.result b/mysql-test/r/sql_warnings_basic.result new file mode 100644 index 00000000000..46907c0ced8 --- /dev/null +++ b/mysql-test/r/sql_warnings_basic.result @@ -0,0 +1,109 @@ +SET @session_start_value = @@session.sql_warnings; +SELECT @session_start_value; +@session_start_value +0 +'#--------------------FN_DYNVARS_166_01------------------------#' +SET @@session.sql_warnings = 0; +SET @@session.sql_warnings = DEFAULT; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +SET @@session.sql_warnings = 1; +SET @@session.sql_warnings = DEFAULT; +SELECT @@session.sql_warnings; +@@session.sql_warnings +1 +'#---------------------FN_DYNVARS_166_02-------------------------#' +SET sql_warnings = 1; +SELECT @@sql_warnings; +@@sql_warnings +1 +SELECT session.sql_warnings; +ERROR 42S02: Unknown table 'session' in field list +SELECT local.sql_warnings; +ERROR 42S02: Unknown table 'local' in field list +SET session sql_warnings = 0; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +'#--------------------FN_DYNVARS_166_03------------------------#' +SET @@session.sql_warnings = 0; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +SET @@session.sql_warnings = 1; +SELECT @@session.sql_warnings; +@@session.sql_warnings +1 +'#--------------------FN_DYNVARS_166_04-------------------------#' +SET @@session.sql_warnings = -0.6; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of '-1' +SET @@session.sql_warnings = 1.9; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of '2' +SET @@session.sql_warnings = "T"; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'T' +SET @@session.sql_warnings = "Y"; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'Y' +SET @@session.sql_warnings = TRE; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'TRÜE' +SET @@session.sql_warnings = N; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'ÕN' +SET @@session.sql_warnings = OF; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +'Bug# 34828: OF is taken as OFF and a value of 0 is set.' +SET @@session.sql_warnings = FF; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'ÓFF' +SET @@session.sql_warnings = ''; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of '' +SET @@session.sql_warnings = NO; +ERROR 42000: Variable 'sql_warnings' can't be set to the value of 'NO' +'#-------------------FN_DYNVARS_166_05----------------------------#' +SET @@global.sql_warnings = 0; +ERROR HY000: Variable 'sql_warnings' is a SESSION variable and can't be used with SET GLOBAL +SELECT @@global.sql_warnings; +ERROR HY000: Variable 'sql_warnings' is a SESSION variable +'#----------------------FN_DYNVARS_166_06------------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_warnings'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_166_07------------------------#' +SELECT @@session.sql_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_warnings'; +@@session.sql_warnings = VARIABLE_VALUE +1 +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_warnings'; +VARIABLE_VALUE +OFF +'Bug: value in information schema does not match' +'#---------------------FN_DYNVARS_166_08-------------------------#' +SET @@session.sql_warnings = OFF; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +SET @@session.sql_warnings = ON; +SELECT @@session.sql_warnings; +@@session.sql_warnings +1 +'#---------------------FN_DYNVARS_166_09----------------------#' +SET @@session.sql_warnings = TRUE; +SELECT @@session.sql_warnings; +@@session.sql_warnings +1 +SET @@session.sql_warnings = FALSE; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 +SET @@session.sql_warnings = @session_start_value; +SELECT @@session.sql_warnings; +@@session.sql_warnings +0 diff --git a/mysql-test/r/sql_warnings_func.result b/mysql-test/r/sql_warnings_func.result new file mode 100644 index 00000000000..8b723cf8be3 --- /dev/null +++ b/mysql-test/r/sql_warnings_func.result @@ -0,0 +1,49 @@ +** Setup ** + +SET @default_sql_warnings = @@sql_warnings; +CREATE TEMPORARY TABLE t1(a varchar(5), b varchar(20)); +'#-----------------------------FN_DYNVARS_167_01------------#' +SET @@sql_warnings = DEFAULT; +affected rows: 0 +INSERT INTO t1 VALUES('abcdef', 'val1'); +affected rows: 1 +'#-----------------------------FN_DYNVARS_167_02------------------#' +SET @@sql_warnings = 0; +affected rows: 0 +INSERT INTO t1 VALUES('abcdef', 'val1'); +affected rows: 1 +'#-----------------------------FN_DYNVARS_167_03---------------#' +SET @@sql_warnings = 1; +affected rows: 0 +INSERT INTO t1 VALUES('abcdef', 'val1'); +affected rows: 1 +info: Records: 1 Duplicates: 0 Warnings: 1 +'#----------------------------FN_DYNVARS_167_04---------------#' +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.sql_warnings; +@@SESSION.sql_warnings +0 +0 / FALSE Expected +SET SESSION sql_warnings = FALSE; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.sql_warnings; +@@SESSION.sql_warnings +0 +0 / FALSE Expected +SET SESSION sql_warnings = TRUE; +** Connection con_int2 ** +SELECT @@SESSION.sql_warnings; +@@SESSION.sql_warnings +1 +1 / TRUE Expected +** Connection con_int1 ** +SELECT @@SESSION.sql_warnings; +@@SESSION.sql_warnings +0 +0 / FALSE Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +DROP TABLE t1; +SET @@sql_warnings = @default_sql_warnings; diff --git a/mysql-test/r/ssl_ca_basic.result b/mysql-test/r/ssl_ca_basic.result new file mode 100644 index 00000000000..618c5558c3e --- /dev/null +++ b/mysql-test/r/ssl_ca_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_045_01----------------------#' +SELECT COUNT(@@GLOBAL.ssl_ca); +COUNT(@@GLOBAL.ssl_ca) +1 +1 Expected +'#---------------------BS_STVARS_045_02----------------------#' +SET @@GLOBAL.ssl_ca=1; +ERROR HY000: Variable 'ssl_ca' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.ssl_ca); +COUNT(@@GLOBAL.ssl_ca) +1 +1 Expected +'#---------------------BS_STVARS_045_03----------------------#' +SELECT @@GLOBAL.ssl_ca = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_ca'; +@@GLOBAL.ssl_ca = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.ssl_ca); +COUNT(@@GLOBAL.ssl_ca) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_ca'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_045_04----------------------#' +SELECT @@ssl_ca = @@GLOBAL.ssl_ca; +@@ssl_ca = @@GLOBAL.ssl_ca +1 +1 Expected +'#---------------------BS_STVARS_045_05----------------------#' +SELECT COUNT(@@ssl_ca); +COUNT(@@ssl_ca) +1 +1 Expected +SELECT COUNT(@@local.ssl_ca); +ERROR HY000: Variable 'ssl_ca' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.ssl_ca); +ERROR HY000: Variable 'ssl_ca' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.ssl_ca); +COUNT(@@GLOBAL.ssl_ca) +1 +1 Expected +SELECT ssl_ca = @@SESSION.ssl_ca; +ERROR 42S22: Unknown column 'ssl_ca' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/ssl_capath_basic.result b/mysql-test/r/ssl_capath_basic.result new file mode 100644 index 00000000000..a2c01aab806 --- /dev/null +++ b/mysql-test/r/ssl_capath_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_046_01----------------------#' +SELECT COUNT(@@GLOBAL.ssl_capath); +COUNT(@@GLOBAL.ssl_capath) +0 +1 Expected +'#---------------------BS_STVARS_046_02----------------------#' +SET @@GLOBAL.ssl_capath=1; +ERROR HY000: Variable 'ssl_capath' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.ssl_capath); +COUNT(@@GLOBAL.ssl_capath) +0 +1 Expected +'#---------------------BS_STVARS_046_03----------------------#' +SELECT @@GLOBAL.ssl_capath = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_capath'; +@@GLOBAL.ssl_capath = VARIABLE_VALUE +NULL +1 Expected +SELECT COUNT(@@GLOBAL.ssl_capath); +COUNT(@@GLOBAL.ssl_capath) +0 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_capath'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_046_04----------------------#' +SELECT @@ssl_capath = @@GLOBAL.ssl_capath; +@@ssl_capath = @@GLOBAL.ssl_capath +NULL +1 Expected +'#---------------------BS_STVARS_046_05----------------------#' +SELECT COUNT(@@ssl_capath); +COUNT(@@ssl_capath) +0 +1 Expected +SELECT COUNT(@@local.ssl_capath); +ERROR HY000: Variable 'ssl_capath' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.ssl_capath); +ERROR HY000: Variable 'ssl_capath' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.ssl_capath); +COUNT(@@GLOBAL.ssl_capath) +0 +1 Expected +SELECT ssl_capath = @@SESSION.ssl_capath; +ERROR 42S22: Unknown column 'ssl_capath' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/ssl_cert_basic.result b/mysql-test/r/ssl_cert_basic.result new file mode 100644 index 00000000000..1571730a653 --- /dev/null +++ b/mysql-test/r/ssl_cert_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_047_01----------------------#' +SELECT COUNT(@@GLOBAL.ssl_cert); +COUNT(@@GLOBAL.ssl_cert) +1 +1 Expected +'#---------------------BS_STVARS_047_02----------------------#' +SET @@GLOBAL.ssl_cert=1; +ERROR HY000: Variable 'ssl_cert' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.ssl_cert); +COUNT(@@GLOBAL.ssl_cert) +1 +1 Expected +'#---------------------BS_STVARS_047_03----------------------#' +SELECT @@GLOBAL.ssl_cert = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cert'; +@@GLOBAL.ssl_cert = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.ssl_cert); +COUNT(@@GLOBAL.ssl_cert) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cert'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_047_04----------------------#' +SELECT @@ssl_cert = @@GLOBAL.ssl_cert; +@@ssl_cert = @@GLOBAL.ssl_cert +1 +1 Expected +'#---------------------BS_STVARS_047_05----------------------#' +SELECT COUNT(@@ssl_cert); +COUNT(@@ssl_cert) +1 +1 Expected +SELECT COUNT(@@local.ssl_cert); +ERROR HY000: Variable 'ssl_cert' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.ssl_cert); +ERROR HY000: Variable 'ssl_cert' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.ssl_cert); +COUNT(@@GLOBAL.ssl_cert) +1 +1 Expected +SELECT ssl_cert = @@SESSION.ssl_cert; +ERROR 42S22: Unknown column 'ssl_cert' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/ssl_cipher_basic.result b/mysql-test/r/ssl_cipher_basic.result new file mode 100644 index 00000000000..3c7098e1150 --- /dev/null +++ b/mysql-test/r/ssl_cipher_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_048_01----------------------#' +SELECT COUNT(@@GLOBAL.ssl_cipher); +COUNT(@@GLOBAL.ssl_cipher) +0 +1 Expected +'#---------------------BS_STVARS_048_02----------------------#' +SET @@GLOBAL.ssl_cipher=1; +ERROR HY000: Variable 'ssl_cipher' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.ssl_cipher); +COUNT(@@GLOBAL.ssl_cipher) +0 +1 Expected +'#---------------------BS_STVARS_048_03----------------------#' +SELECT @@GLOBAL.ssl_cipher = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cipher'; +@@GLOBAL.ssl_cipher = VARIABLE_VALUE +NULL +1 Expected +SELECT COUNT(@@GLOBAL.ssl_cipher); +COUNT(@@GLOBAL.ssl_cipher) +0 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cipher'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_048_04----------------------#' +SELECT @@ssl_cipher = @@GLOBAL.ssl_cipher; +@@ssl_cipher = @@GLOBAL.ssl_cipher +NULL +1 Expected +'#---------------------BS_STVARS_048_05----------------------#' +SELECT COUNT(@@ssl_cipher); +COUNT(@@ssl_cipher) +0 +1 Expected +SELECT COUNT(@@local.ssl_cipher); +ERROR HY000: Variable 'ssl_cipher' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.ssl_cipher); +ERROR HY000: Variable 'ssl_cipher' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.ssl_cipher); +COUNT(@@GLOBAL.ssl_cipher) +0 +1 Expected +SELECT ssl_cipher = @@SESSION.ssl_cipher; +ERROR 42S22: Unknown column 'ssl_cipher' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/ssl_key_basic.result b/mysql-test/r/ssl_key_basic.result new file mode 100644 index 00000000000..0869a2915e3 --- /dev/null +++ b/mysql-test/r/ssl_key_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_049_01----------------------#' +SELECT COUNT(@@GLOBAL.ssl_key); +COUNT(@@GLOBAL.ssl_key) +1 +1 Expected +'#---------------------BS_STVARS_049_02----------------------#' +SET @@GLOBAL.ssl_key=1; +ERROR HY000: Variable 'ssl_key' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.ssl_key); +COUNT(@@GLOBAL.ssl_key) +1 +1 Expected +'#---------------------BS_STVARS_049_03----------------------#' +SELECT @@GLOBAL.ssl_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_key'; +@@GLOBAL.ssl_key = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.ssl_key); +COUNT(@@GLOBAL.ssl_key) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_key'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_049_04----------------------#' +SELECT @@ssl_key = @@GLOBAL.ssl_key; +@@ssl_key = @@GLOBAL.ssl_key +1 +1 Expected +'#---------------------BS_STVARS_049_05----------------------#' +SELECT COUNT(@@ssl_key); +COUNT(@@ssl_key) +1 +1 Expected +SELECT COUNT(@@local.ssl_key); +ERROR HY000: Variable 'ssl_key' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.ssl_key); +ERROR HY000: Variable 'ssl_key' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.ssl_key); +COUNT(@@GLOBAL.ssl_key) +1 +1 Expected +SELECT ssl_key = @@SESSION.ssl_key; +ERROR 42S22: Unknown column 'ssl_key' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/storage_engine_basic.result b/mysql-test/r/storage_engine_basic.result new file mode 100644 index 00000000000..8d621ac5599 --- /dev/null +++ b/mysql-test/r/storage_engine_basic.result @@ -0,0 +1,115 @@ +SET @start_global_value = @@global.storage_engine; +SELECT @start_global_value; +@start_global_value +MyISAM +SET @start_session_value = @@session.storage_engine; +SELECT @start_session_value; +@start_session_value +MyISAM +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.storage_engine = MYISAM; +SET @@global.storage_engine = DEFAULT; +ERROR 42000: Variable 'storage_engine' doesn't have a default value +SELECT @@global.storage_engine; +@@global.storage_engine +MyISAM +SET @@session.storage_engine = INNODB; +SET @@session.storage_engine = DEFAULT; +SELECT @@session.storage_engine; +@@session.storage_engine +MyISAM +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.storage_engine = MYISAM; +SELECT @@global.storage_engine; +@@global.storage_engine +MyISAM +SET @@global.storage_engine = MERGE; +SELECT @@global.storage_engine; +@@global.storage_engine +MRG_MYISAM +SET @@global.storage_engine = MEMORY; +SELECT @@global.storage_engine; +@@global.storage_engine +MEMORY +SET @@global.storage_engine = INNODB; +SELECT @@global.storage_engine; +@@global.storage_engine +InnoDB +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@session.storage_engine = MYISAM; +SELECT @@session.storage_engine; +@@session.storage_engine +MyISAM +SET @@session.storage_engine = MERGE; +SELECT @@session.storage_engine; +@@session.storage_engine +MRG_MYISAM +SET @@session.storage_engine = MEMORY; +SELECT @@session.storage_engine; +@@session.storage_engine +MEMORY +SET @@session.storage_engine = INNODB; +SELECT @@session.storage_engine; +@@session.storage_engine +InnoDB +'#------------------FN_DYNVARS_005_04-----------------------#' +SET @@global.storage_engine = 8199; +ERROR 42000: Incorrect argument type to variable 'storage_engine' +SET @@global.storage_engine = -1024; +ERROR 42000: Incorrect argument type to variable 'storage_engine' +SET @@global.storage_engine = 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 @@global.storage_engine = FILE; +ERROR 42000: Unknown table engine 'FILE' +SET @@session.storage_engine = 8199; +ERROR 42000: Incorrect argument type to variable 'storage_engine' +SET @@session.storage_engine = 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.storage_engine = RECORD; +ERROR 42000: Unknown table engine 'RECORD' +'#------------------FN_DYNVARS_005_05-----------------------#' +SELECT @@global.storage_engine = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='storage_engine'; +@@global.storage_engine = +VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@session.storage_engine = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='storage_engine'; +@@session.storage_engine = +VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SET @@global.storage_engine = TRUE; +ERROR 42000: Incorrect argument type to variable 'storage_engine' +SET @@global.storage_engine = FALSE; +ERROR 42000: Incorrect argument type to variable 'storage_engine' +'#---------------------FN_DYNVARS_001_8----------------------#' +SET @@storage_engine = MYISAM; +SELECT @@storage_engine = @@local.storage_engine; +@@storage_engine = @@local.storage_engine +1 +SELECT @@local.storage_engine = @@session.storage_engine; +@@local.storage_engine = @@session.storage_engine +1 +'#---------------------FN_DYNVARS_001_9----------------------#' +SET storage_engine = MEMORY; +SELECT @@storage_engine; +@@storage_engine +MEMORY +SELECT local.storage_engine; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.storage_engine; +ERROR 42S02: Unknown table 'session' in field list +SELECT storage_engine = @@session.storage_engine; +ERROR 42S22: Unknown column 'storage_engine' in 'field list' +SET @@global.storage_engine = @start_global_value; +SELECT @@global.storage_engine; +@@global.storage_engine +MyISAM +SET @@session.storage_engine = @start_session_value; +SELECT @@session.storage_engine; +@@session.storage_engine +MyISAM diff --git a/mysql-test/r/sync_frm_basic.result b/mysql-test/r/sync_frm_basic.result new file mode 100644 index 00000000000..9792307d17f --- /dev/null +++ b/mysql-test/r/sync_frm_basic.result @@ -0,0 +1,97 @@ +SET @start_value = @@global.sync_frm; +SELECT @start_value; +@start_value +1 +'#--------------------FN_DYNVARS_169_01------------------------#' +SET @@global.sync_frm = FALSE; +SET @@global.sync_frm = DEFAULT; +SELECT @@global.sync_frm; +@@global.sync_frm +1 +'#---------------------FN_DYNVARS_169_02-------------------------#' +SET @@global.sync_frm = DEFAULT; +SELECT @@global.sync_frm = TRUE; +@@global.sync_frm = TRUE +1 +'#--------------------FN_DYNVARS_169_03------------------------#' +SET @@global.sync_frm = ON; +SELECT @@global.sync_frm; +@@global.sync_frm +1 +SET @@global.sync_frm = OFF; +SELECT @@global.sync_frm; +@@global.sync_frm +0 +SET @@global.sync_frm = 0; +SELECT @@global.sync_frm; +@@global.sync_frm +0 +SET @@global.sync_frm = 1; +SELECT @@global.sync_frm; +@@global.sync_frm +1 +SET @@global.sync_frm = TRUE; +SELECT @@global.sync_frm; +@@global.sync_frm +1 +SET @@global.sync_frm = FALSE; +SELECT @@global.sync_frm; +@@global.sync_frm +0 +'#--------------------FN_DYNVARS_169_04-------------------------#' +SET @@global.sync_frm = 2; +ERROR 42000: Variable 'sync_frm' can't be set to the value of '2' +SET @@global.sync_frm = -1; +ERROR 42000: Variable 'sync_frm' can't be set to the value of '-1' +SET @@global.sync_frm = TRUEF; +ERROR 42000: Variable 'sync_frm' can't be set to the value of 'TRUEF' +SET @@global.sync_frm = TRUE_F; +ERROR 42000: Variable 'sync_frm' can't be set to the value of 'TRUE_F' +SET @@global.sync_frm = FALSE0; +ERROR 42000: Variable 'sync_frm' can't be set to the value of 'FALSE0' +SET @@global.sync_frm = OON; +ERROR 42000: Variable 'sync_frm' can't be set to the value of 'OON' +SET @@global.sync_frm = ONN; +ERROR 42000: Variable 'sync_frm' can't be set to the value of 'ONN' +SET @@global.sync_frm = OOFF; +ERROR 42000: Variable 'sync_frm' can't be set to the value of 'OOFF' +SET @@global.sync_frm = 0FF; +ERROR 42000: Variable 'sync_frm' can't be set to the value of '0FF' +SET @@global.sync_frm = ' '; +ERROR 42000: Variable 'sync_frm' can't be set to the value of ' ' +SET @@global.sync_frm = " "; +ERROR 42000: Variable 'sync_frm' can't be set to the value of ' ' +SET @@global.sync_frm = ''; +ERROR 42000: Variable 'sync_frm' can't be set to the value of '' +'#-------------------FN_DYNVARS_169_05----------------------------#' +SET @@session.sync_frm = 1; +ERROR HY000: Variable 'sync_frm' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.sync_frm; +ERROR HY000: Variable 'sync_frm' is a GLOBAL variable +'#----------------------FN_DYNVARS_169_06------------------------#' +SELECT @@global.sync_frm = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sync_frm'; +@@global.sync_frm = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_169_07----------------------#' +SET @@global.sync_frm = 1; +SELECT @@sync_frm = @@global.sync_frm; +@@sync_frm = @@global.sync_frm +1 +'#---------------------FN_DYNVARS_169_08----------------------#' +SET sync_frm = 1; +ERROR HY000: Variable 'sync_frm' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@sync_frm; +@@sync_frm +1 +SET global.sync_frm = 1; +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 'sync_frm = 1' at line 1 +SELECT global.sync_frm; +ERROR 42S02: Unknown table 'global' in field list +SELECT sync_frm = @@session.sync_frm; +ERROR 42S22: Unknown column 'sync_frm' in 'field list' +SET @@global.sync_frm = @start_value; +SELECT @@global.sync_frm; +@@global.sync_frm +1 diff --git a/mysql-test/r/system_time_zone_basic.result b/mysql-test/r/system_time_zone_basic.result new file mode 100644 index 00000000000..c398e5bd93b --- /dev/null +++ b/mysql-test/r/system_time_zone_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_050_01----------------------#' +SELECT COUNT(@@GLOBAL.system_time_zone); +COUNT(@@GLOBAL.system_time_zone) +1 +1 Expected +'#---------------------BS_STVARS_050_02----------------------#' +SET @@GLOBAL.system_time_zone=1; +ERROR HY000: Variable 'system_time_zone' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.system_time_zone); +COUNT(@@GLOBAL.system_time_zone) +1 +1 Expected +'#---------------------BS_STVARS_050_03----------------------#' +SELECT @@GLOBAL.system_time_zone = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='system_time_zone'; +@@GLOBAL.system_time_zone = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.system_time_zone); +COUNT(@@GLOBAL.system_time_zone) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='system_time_zone'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_050_04----------------------#' +SELECT @@system_time_zone = @@GLOBAL.system_time_zone; +@@system_time_zone = @@GLOBAL.system_time_zone +1 +1 Expected +'#---------------------BS_STVARS_050_05----------------------#' +SELECT COUNT(@@system_time_zone); +COUNT(@@system_time_zone) +1 +1 Expected +SELECT COUNT(@@local.system_time_zone); +ERROR HY000: Variable 'system_time_zone' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.system_time_zone); +ERROR HY000: Variable 'system_time_zone' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.system_time_zone); +COUNT(@@GLOBAL.system_time_zone) +1 +1 Expected +SELECT system_time_zone = @@SESSION.system_time_zone; +ERROR 42S22: Unknown column 'system_time_zone' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/table_definition_cache_basic.result b/mysql-test/r/table_definition_cache_basic.result new file mode 100644 index 00000000000..56bfb40b2f8 --- /dev/null +++ b/mysql-test/r/table_definition_cache_basic.result @@ -0,0 +1,102 @@ +SET @start_value = @@global.table_definition_cache; +SELECT @start_value; +@start_value +128 +'#--------------------FN_DYNVARS_019_01------------------------#' +SET @@global.table_definition_cache = 100; +SET @@global.table_definition_cache = DEFAULT; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +128 +'#---------------------FN_DYNVARS_019_02-------------------------#' +SET @@global.table_definition_cache = DEFAULT; +SELECT @@global.table_definition_cache = 128; +@@global.table_definition_cache = 128 +1 +'#--------------------FN_DYNVARS_019_03------------------------#' +SET @@global.table_definition_cache = 1; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +1 +SET @@global.table_definition_cache = 2; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +2 +SET @@global.table_definition_cache = 524287; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +524287 +SET @@global.table_definition_cache = 524288; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +524288 +'#--------------------FN_DYNVARS_019_04-------------------------#' +SET @@global.table_definition_cache = 0; +Warnings: +Warning 1292 Truncated incorrect table_definition_cache value: '0' +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +1 +SET @@global.table_definition_cache = -1024; +Warnings: +Warning 1292 Truncated incorrect table_definition_cache value: '0' +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +1 +SET @@global.table_definition_cache = 524289; +Warnings: +Warning 1292 Truncated incorrect table_definition_cache value: '524289' +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +524288 +SET @@global.table_definition_cache = 42949672950; +Warnings: +Warning 1292 Truncated incorrect table_definition_cache value: '42949672950' +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +524288 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.table_definition_cache = 21221204.10; +ERROR 42000: Incorrect argument type to variable 'table_definition_cache' +SET @@global.table_definition_cache = ON; +ERROR 42000: Incorrect argument type to variable 'table_definition_cache' +'#-------------------FN_DYNVARS_019_05----------------------------#' +SET @@session.table_definition_cache = 0; +ERROR HY000: Variable 'table_definition_cache' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.table_definition_cache; +ERROR HY000: Variable 'table_definition_cache' is a GLOBAL variable +'#----------------------FN_DYNVARS_019_06------------------------#' +SELECT @@global.table_definition_cache = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='table_definition_cache'; +@@global.table_definition_cache = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_019_07----------------------#' +SET @@global.table_definition_cache = TRUE; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +1 +SET @@global.table_definition_cache = FALSE; +Warnings: +Warning 1292 Truncated incorrect table_definition_cache value: '0' +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +1 +'#---------------------FN_DYNVARS_019_08----------------------#' +SET @@global.table_definition_cache = 5; +SELECT @@table_definition_cache = @@global.table_definition_cache; +@@table_definition_cache = @@global.table_definition_cache +1 +'#---------------------FN_DYNVARS_019_09----------------------#' +SET table_definition_cache = 1; +ERROR HY000: Variable 'table_definition_cache' is a GLOBAL variable and should be set with SET GLOBAL +SET global.table_definition_cache = 1; +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 'table_definition_cache = 1' at line 1 +SELECT global.table_definition_cache; +ERROR 42S02: Unknown table 'global' in field list +SELECT table_definition_cache = @@session.table_definition_cache; +ERROR 42S22: Unknown column 'table_definition_cache' in 'field list' +SET @@global.table_definition_cache = @start_value; +SELECT @@global.table_definition_cache; +@@global.table_definition_cache +128 diff --git a/mysql-test/r/table_lock_wait_timeout_basic.result b/mysql-test/r/table_lock_wait_timeout_basic.result new file mode 100644 index 00000000000..13771980188 --- /dev/null +++ b/mysql-test/r/table_lock_wait_timeout_basic.result @@ -0,0 +1,99 @@ +SET @start_value = @@global.table_lock_wait_timeout; +SELECT @start_value; +@start_value +50 +'#--------------------FN_DYNVARS_001_01------------------------#' +SET @@global.table_lock_wait_timeout = 99; +SET @@global.table_lock_wait_timeout = DeFAULT; +SELECT @@global.table_lock_wait_timeout; +@@global.table_lock_wait_timeout +50 +'#---------------------FN_DYNVARS_001_02-------------------------#' +SET @@global.table_lock_wait_timeout =Default; +SELECT @@global.table_lock_wait_timeout = 50; +@@global.table_lock_wait_timeout = 50 +1 +'#--------------------FN_DYNVARS_001_03------------------------#' +SET @@global.table_lock_wait_timeout = 8; +SELECT @@global.table_lock_wait_timeout ; +@@global.table_lock_wait_timeout +8 +SET @@global.table_lock_wait_timeout = 1; +SELECT @@global.table_lock_wait_timeout ; +@@global.table_lock_wait_timeout +1 +SET @@global.table_lock_wait_timeout = 1073741824; +SELECT @@global.table_lock_wait_timeout ; +@@global.table_lock_wait_timeout +1073741824 +SET @@global.table_lock_wait_timeout = 18000; +SELECT @@global.table_lock_wait_timeout ; +@@global.table_lock_wait_timeout +18000 +SET @@global.table_lock_wait_timeout = 65535; +SELECT @@global.table_lock_wait_timeout ; +@@global.table_lock_wait_timeout +65535 +'#--------------------FN_DYNVARS_001_04-------------------------#' +SET @@global.table_lock_wait_timeout = -1; +Warnings: +Warning 1292 Truncated incorrect table_lock_wait_timeout value: '0' +SET @@global.table_lock_wait_timeout= 100000000000; +Warnings: +Warning 1292 Truncated incorrect table_lock_wait_timeout value: '100000000000' +SET @@global.table_lock_wait_timeout= -1024; +Warnings: +Warning 1292 Truncated incorrect table_lock_wait_timeout value: '0' +SET @@global.table_lock_wait_timeout= 0; +Warnings: +Warning 1292 Truncated incorrect table_lock_wait_timeout value: '0' +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.table_lock_wait_timeout= 10000.01; +ERROR 42000: Incorrect argument type to variable 'table_lock_wait_timeout' +SET @@global.table_lock_wait_timeout= ON; +ERROR 42000: Incorrect argument type to variable 'table_lock_wait_timeout' +SET @@global.table_lock_wait_timeout= 'test'; +ERROR 42000: Incorrect argument type to variable 'table_lock_wait_timeout' +SET @@global.table_lock_wait_timeout= ''; +ERROR 42000: Incorrect argument type to variable 'table_lock_wait_timeout' +'#-------------------FN_DYNVARS_001_05----------------------------#' +SET @@session.table_lock_wait_timeout= 0; +ERROR HY000: Variable 'table_lock_wait_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@table_lock_wait_timeout; +@@table_lock_wait_timeout +1 +'#----------------------FN_DYNVARS_001_06------------------------#' +SELECT @@global.table_lock_wait_timeout= VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='table_lock_wait_timeout'; +@@global.table_lock_wait_timeout= VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.table_lock_wait_timeout= TRUE; +SELECT @@global.table_lock_wait_timeout; +@@global.table_lock_wait_timeout +1 +SET @@global.table_lock_wait_timeout= FALSE; +Warnings: +Warning 1292 Truncated incorrect table_lock_wait_timeout value: '0' +SELECT @@global.table_lock_wait_timeout; +@@global.table_lock_wait_timeout +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@global.table_lock_wait_timeout= 10; +SELECT @@table_lock_wait_timeout= @@global.table_lock_wait_timeout; +@@table_lock_wait_timeout= @@global.table_lock_wait_timeout +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET table_lock_wait_timeout= 8; +ERROR HY000: Variable 'table_lock_wait_timeout' is a GLOBAL variable and should be set with SET GLOBAL +SET global.table_lock_wait_timeout= 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 'table_lock_wait_timeout= 10' at line 1 +SELECT global.table_lock_wait_timeout; +ERROR 42S02: Unknown table 'global' in field list +SELECT table_lock_wait_timeout= @@session.table_lock_wait_timeout; +ERROR 42S22: Unknown column 'table_lock_wait_timeout' in 'field list' +SET @@global.table_lock_wait_timeout= @start_value; +SELECT @@global.table_lock_wait_timeout; +@@global.table_lock_wait_timeout +50 diff --git a/mysql-test/r/table_open_cache_basic.result b/mysql-test/r/table_open_cache_basic.result new file mode 100644 index 00000000000..ca02d32386f --- /dev/null +++ b/mysql-test/r/table_open_cache_basic.result @@ -0,0 +1,108 @@ +SET @start_value = @@global.table_open_cache ; +SELECT @start_value; +@start_value +64 +'#--------------------FN_DYNVARS_001_01------------------------#' +SET @@global.table_open_cache = 99; +SET @@global.table_open_cache = DeFAULT; +SELECT @@global.table_open_cache; +@@global.table_open_cache +64 +'#---------------------FN_DYNVARS_001_02-------------------------#' +SET @@global.table_open_cache = Default; +SELECT @@global.table_open_cache = 64; +@@global.table_open_cache = 64 +1 +'#--------------------FN_DYNVARS_001_03------------------------#' +SET @@global.table_open_cache = 8; +SELECT @@global.table_open_cache ; +@@global.table_open_cache +8 +SET @@global.table_open_cache = 1; +SELECT @@global.table_open_cache ; +@@global.table_open_cache +1 +SET @@global.table_open_cache = 1073741824; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '1073741824' +SELECT @@global.table_open_cache ; +@@global.table_open_cache +524288 +SET @@global.table_open_cache = 18000; +SELECT @@global.table_open_cache ; +@@global.table_open_cache +18000 +SET @@global.table_open_cache = 65535; +SELECT @@global.table_open_cache ; +@@global.table_open_cache +65535 +'#--------------------FN_DYNVARS_001_04-------------------------#' +SET @@global.table_open_cache = -1; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '0' +SELECT @@global.table_open_cache ; +@@global.table_open_cache +1 +SET @@global.table_open_cache = 100000000000; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '100000000000' +SELECT @@global.table_open_cache ; +@@global.table_open_cache +524288 +SET @@global.table_open_cache = -1024; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '0' +SELECT @@global.table_open_cache ; +@@global.table_open_cache +1 +SET @@global.table_open_cache = 0; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '0' +SELECT @@global.table_open_cache ; +@@global.table_open_cache +1 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.table_open_cache = 10000.01; +ERROR 42000: Incorrect argument type to variable 'table_open_cache' +SET @@global.table_open_cache = ON; +ERROR 42000: Incorrect argument type to variable 'table_open_cache' +SET @@global.table_open_cache= 'test'; +ERROR 42000: Incorrect argument type to variable 'table_open_cache' +SET @@global.table_open_cache = ''; +ERROR 42000: Incorrect argument type to variable 'table_open_cache' +'#-------------------FN_DYNVARS_001_05----------------------------#' +SET @@session.table_open_cache = 0; +ERROR HY000: Variable 'table_open_cache' is a GLOBAL variable and should be set with SET GLOBAL +'#----------------------FN_DYNVARS_001_06------------------------#' +SELECT @@global.table_open_cache = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='table_open_cache '; +@@global.table_open_cache = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.table_open_cache = TRUE; +SELECT @@global.table_open_cache ; +@@global.table_open_cache +1 +SET @@global.table_open_cache = FALSE; +Warnings: +Warning 1292 Truncated incorrect table_open_cache value: '0' +SELECT @@global.table_open_cache ; +@@global.table_open_cache +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@global.table_open_cache = 10; +SELECT @@table_open_cache = @@global.table_open_cache ; +@@table_open_cache = @@global.table_open_cache +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET table_open_cache = 8; +ERROR HY000: Variable 'table_open_cache' is a GLOBAL variable and should be set with SET GLOBAL +SET global.table_open_cache = 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 'table_open_cache = 10' at line 1 +SELECT global.table_open_cache ; +ERROR 42S02: Unknown table 'global' in field list +SELECT table_open_cache = @@session.table_open_cache ; +ERROR 42S22: Unknown column 'table_open_cache' in 'field list' +SET @@global.table_open_cache = @start_value; +SELECT @@global.table_open_cache ; +@@global.table_open_cache +64 diff --git a/mysql-test/r/thread_cache_size_func.result b/mysql-test/r/thread_cache_size_func.result new file mode 100644 index 00000000000..ccca75bd316 --- /dev/null +++ b/mysql-test/r/thread_cache_size_func.result @@ -0,0 +1,68 @@ +SET @global_thread_cache_size = @@GLOBAL.thread_cache_size; +FLUSH STATUS; +'# Test1#' +SET @@GLOBAL.thread_cache_size=3; +Saving threads cached, threads created values +SHOW STATUS LIKE 'Threads_cached'; +Variable_name Value +Threads_cached 0 +0 Expected +'#Old value for thread_cache'# +** Connecting conn1 using username 'root' ** +** Connecting conn2 using username 'root' ** +** Connecting conn3 using username 'root' ** +** Connecting conn4 using username 'root' ** +Saving threads cached, threads created values +Threads Created Difference +4 +4 Expected +SHOW STATUS LIKE 'Threads_cached'; +Variable_name Value +Threads_cached 0 +0 Expected +** Connection default ** +** Disconnecting conn1,conn2,conn3,conn4 ** +'#new values for thread cache after disconnecting'# +Saving threads cached, threads created values +Threads Created Difference +0 +0 Expected +SHOW STATUS LIKE 'Threads_cached'; +Variable_name Value +Threads_cached 3 +3 Expected +SET @@GLOBAL.thread_cache_size=1; +Saving threads cached, threads created values +Threads Created Difference +0 +0 Expected +SHOW STATUS LIKE 'Threads_cached'; +Variable_name Value +Threads_cached 3 +1 Expected +Bug: The number of threads cached should have decreased with cache size decrease. +** Connecting conn1 using username 'root' ** +** Connecting conn2 using username 'root' ** +Saving threads cached, threads created values +Threads Created Difference +0 +1 Expected +Bug: The number of threads created should have increased because the cache should have 1 thread only +SHOW STATUS LIKE 'Threads_cached'; +Variable_name Value +Threads_cached 1 +0 Expected +Bug: The number of threads created should have decreased because atleast 1 new connection came in +** Connection default ** +** Disconnecting conn1,conn2 ** +'#new status values for thread cache'# +Saving threads cached, threads created values +Threads Created Difference +0 +0 Expected +SHOW STATUS LIKE 'Threads_cached'; +Variable_name Value +Threads_cached 1 +1 Expected +Saving threads cached, threads created values +SET @@GLOBAL.thread_cache_size = @global_thread_cache_size; diff --git a/mysql-test/r/thread_handling_basic.result b/mysql-test/r/thread_handling_basic.result new file mode 100644 index 00000000000..f5a333ac033 --- /dev/null +++ b/mysql-test/r/thread_handling_basic.result @@ -0,0 +1,55 @@ +'#---------------------BS_STVARS_051_01----------------------#' +SELECT COUNT(@@GLOBAL.thread_handling); +COUNT(@@GLOBAL.thread_handling) +1 +1 Expected +'#---------------------BS_STVARS_051_02----------------------#' +SET @@GLOBAL.thread_handling=1; +ERROR HY000: Variable 'thread_handling' is a read only variable +Expected error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@GLOBAL.thread_handling); +COUNT(@@GLOBAL.thread_handling) +1 +1 Expected +'#---------------------BS_STVARS_051_03----------------------#' +SELECT @@GLOBAL.thread_handling = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='thread_handling'; +@@GLOBAL.thread_handling = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.thread_handling); +COUNT(@@GLOBAL.thread_handling) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='thread_handling'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_051_04----------------------#' +SELECT @@thread_handling = @@GLOBAL.thread_handling; +@@thread_handling = @@GLOBAL.thread_handling +1 +1 Expected +'#---------------------BS_STVARS_051_05----------------------#' +SELECT COUNT(@@thread_handling); +COUNT(@@thread_handling) +1 +1 Expected +SELECT COUNT(@@local.thread_handling); +ERROR HY000: Variable 'thread_handling' is a GLOBAL variable +Bug:Variable is global so it can not be accessed by local there should be error ER_INCORRECT_GLOBAL_LOCAL_VAR +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.thread_handling); +ERROR HY000: Variable 'thread_handling' is a GLOBAL variable +Bug:Variable is global so it can not be accessed by session there should be error ER_INCORRECT_GLOBAL_LOCAL_VAR +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.thread_handling); +COUNT(@@GLOBAL.thread_handling) +1 +1 Expected +SELECT thread_handling = @@SESSION.thread_handling; +ERROR 42S22: Unknown column 'thread_handling' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/time_zone_basic.result b/mysql-test/r/time_zone_basic.result new file mode 100644 index 00000000000..e7d419f28b5 --- /dev/null +++ b/mysql-test/r/time_zone_basic.result @@ -0,0 +1,230 @@ +SET @global_start_value = @@global.time_zone; +SELECT @global_start_value; +@global_start_value +SYSTEM +SET @session_start_value = @@session.time_zone; +SELECT @session_start_value; +@session_start_value +SYSTEM +'#--------------------FN_DYNVARS_001_01------------------------#' +SET @@time_zone = "+02:00"; +SET @@time_zone = DEFAULT; +SELECT @@time_zone; +@@time_zone +SYSTEM +SET @@global.time_zone = "-00:30"; +SET @@global.time_zone = DEFAULT; +SELECT @@global.time_zone; +@@global.time_zone +SYSTEM +'#---------------------FN_DYNVARS_001_02-------------------------#' +SET @@session.time_zone = "+02:00"; +SELECT @@session.time_zone; +@@session.time_zone ++02:00 +SET @@global.time_zone = "+05:00"; +SELECT @@global.time_zone; +@@global.time_zone ++05:00 +SELECT @@session.time_zone AS res_is_02_00; +res_is_02_00 ++02:00 +SET @@session.time_zone = "-02:00"; +SELECT @@session.time_zone; +@@session.time_zone +-02:00 +SELECT @@global.time_zone AS res_is_05_00; +res_is_05_00 ++05:00 +SELECT @@global.time_zone=@@session.time_zone AS res_is_false; +res_is_false +0 +'#--------------------FN_DYNVARS_001_03------------------------#' +SET @@time_zone = "+13:00"; +SELECT @@time_zone; +@@time_zone ++13:00 +SET @@time_zone = "-12:00"; +SELECT @@time_zone; +@@time_zone +-12:00 +SET @@time_zone = "+12:59"; +SELECT @@time_zone; +@@time_zone ++12:59 +SET @@time_zone = "-11:30"; +SELECT @@time_zone; +@@time_zone +-11:30 +SET @@time_zone = "+00:00"; +SELECT @@time_zone; +@@time_zone ++00:00 +SET @@time_zone = "-12:59"; +SELECT @@time_zone; +@@time_zone +-12:59 +SET @@time_zone = "-00:00"; +SELECT @@time_zone; +@@time_zone ++00:00 +SET @@time_zone = "+10:00"; +SELECT @@time_zone; +@@time_zone ++10:00 +SET @@time_zone = "+0:0"; +SELECT @@time_zone; +@@time_zone ++00:00 +SET @@time_zone = "-10:00"; +SELECT @@time_zone; +@@time_zone +-10:00 +SET @@time_zone = "+2:00"; +SELECT @@time_zone; +@@time_zone ++02:00 +SET @@global.time_zone = "+13:00"; +SELECT @@global.time_zone; +@@global.time_zone ++13:00 +SET @@global.time_zone = "-12:00"; +SELECT @@global.time_zone; +@@global.time_zone +-12:00 +SET @@global.time_zone = "+12:59"; +SELECT @@global.time_zone; +@@global.time_zone ++12:59 +SET @@global.time_zone = "-11:30"; +SELECT @@global.time_zone; +@@global.time_zone +-11:30 +SET @@global.time_zone = "+00:00"; +SELECT @@global.time_zone; +@@global.time_zone ++00:00 +SET @@global.time_zone = "-12:59"; +SELECT @@global.time_zone; +@@global.time_zone +-12:59 +SET @@global.time_zone = "-00:00"; +SELECT @@global.time_zone; +@@global.time_zone ++00:00 +SET @@global.time_zone = "+10:00"; +SELECT @@global.time_zone; +@@global.time_zone ++10:00 +SET @@global.time_zone = "+0:0"; +SELECT @@global.time_zone; +@@global.time_zone ++00:00 +SET @@global.time_zone = "-10:00"; +SELECT @@global.time_zone; +@@global.time_zone +-10:00 +SET @@global.time_zone = "+2:00"; +SELECT @@global.time_zone; +@@global.time_zone ++02:00 +'#--------------------FN_DYNVARS_001_04-------------------------#' +SET @@time_zone = "+24:00"; +ERROR HY000: Unknown or incorrect time zone: '+24:00' +SET @@time_zone = "+23:59"; +ERROR HY000: Unknown or incorrect time zone: '+23:59' +SET @@time_zone = "+13:01"; +ERROR HY000: Unknown or incorrect time zone: '+13:01' +SET @@time_zone = "-13:01"; +ERROR HY000: Unknown or incorrect time zone: '-13:01' +SET @@global.time_zone = "+24:00"; +ERROR HY000: Unknown or incorrect time zone: '+24:00' +SET @@global.time_zone = "+23:59"; +ERROR HY000: Unknown or incorrect time zone: '+23:59' +SET @@global.time_zone = "+13:01"; +ERROR HY000: Unknown or incorrect time zone: '+13:01' +SET @@global.time_zone = "-13:01"; +ERROR HY000: Unknown or incorrect time zone: '-13:01' +'#-------------------FN_DYNVARS_001_05----------------------------#' +SET @@global.time_zone = 'SYSTEM'; +SELECT @@global.time_zone; +@@global.time_zone +SYSTEM +SET @@time_zone = 'SYSTEM'; +SELECT @@time_zone; +@@time_zone +SYSTEM +'#----------------------FN_DYNVARS_001_06------------------------#' +SELECT @@time_zone = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='time_zone'; +@@time_zone = VARIABLE_VALUE +1 +'#----------------------FN_DYNVARS_001_07------------------------#' +SELECT @@global.time_zone = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='time_zone'; +@@global.time_zone = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08-------------------------#' +SET @@time_zone = OFF; +ERROR HY000: Unknown or incorrect time zone: 'OFF' +SET @@time_zone = ON; +ERROR HY000: Unknown or incorrect time zone: 'ON' +SET @@time_zone = TRUE; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@time_zone = FALSE; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@global.time_zone = OFF; +ERROR HY000: Unknown or incorrect time zone: 'OFF' +SET @@global.time_zone = ON; +ERROR HY000: Unknown or incorrect time zone: 'ON' +SET @@global.time_zone = TRUE; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@global.time_zone = FALSE; +ERROR 42000: Incorrect argument type to variable 'time_zone' +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@time_zone = 1; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@time_zone = +0200; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@time_zone = GMT+; +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 @@time_zone = ""; +ERROR HY000: Unknown or incorrect time zone: '' +SET @@global.time_zone = 1; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@global.time_zone = +0200; +ERROR 42000: Incorrect argument type to variable 'time_zone' +SET @@global.time_zone = GMT+; +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 @@global.time_zone = ""; +ERROR HY000: Unknown or incorrect time zone: '' +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@time_zone = '+02:30'; +SELECT @@time_zone = @@local.time_zone and @@time_zone = @@session.time_zone; +@@time_zone = @@local.time_zone and @@time_zone = @@session.time_zone +1 +SET @@time_zone = '-01:30'; +SELECT @@time_zone = @@local.time_zone and @@time_zone = @@session.time_zone; +@@time_zone = @@local.time_zone and @@time_zone = @@session.time_zone +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET time_zone = "+01:00"; +SELECT @@time_zone; +@@time_zone ++01:00 +SELECT local.time_zone; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.time_zone; +ERROR 42S02: Unknown table 'session' in field list +SELECT time_zone = @@session.time_zone; +ERROR 42S22: Unknown column 'time_zone' in 'field list' +SET @@time_zone = @session_start_value; +SELECT @@time_zone; +@@time_zone +SYSTEM +SET @@global.time_zone = @global_start_value; +SELECT @@global.time_zone; +@@global.time_zone +SYSTEM diff --git a/mysql-test/r/time_zone_func.result b/mysql-test/r/time_zone_func.result new file mode 100644 index 00000000000..2153a3f58ff --- /dev/null +++ b/mysql-test/r/time_zone_func.result @@ -0,0 +1,185 @@ +** Setup ** + +SET @session_time_zone = @@SESSION.time_zone; +SET @global_time_zone = @@GLOBAL.time_zone; +CREATE TABLE t1 (a datetime); +CREATE TABLE t2 (a timestamp); +'#-----------------------------FN_DYNVARS_177_01--------------------#' +SET @@time_zone = DEFAULT; +SELECT @@time_zone; +@@time_zone +SYSTEM +SYSTEM Expected +'#-----------------------------FN_DYNVARS_177_02-------------------#' +SET @@time_zone = '+05:00'; +SELECT @@time_zone; +@@time_zone ++05:00 ++05:00 Expected +SET @@time_zone = '-01:00'; +SELECT @@time_zone; +@@time_zone +-01:00 +-01:00 Expected +SET @@time_zone = '+00:00'; +SELECT @@time_zone; +@@time_zone ++00:00 ++00:00 Expected +SET @@time_zone = '-00:00'; +SELECT @@time_zone; +@@time_zone ++00:00 +-00:00 Expected +'#-----------------------------FN_DYNVARS_177_03----------------#' +SET @@time_zone = '+00:00'; +INSERT INTO t1 VALUES('2008-03-05 16:28:00'); +INSERT INTO t1 VALUES('1970-01-01 00:05:00'),('1970-01-01 01:05:00'); +INSERT INTO t2 VALUES(20080305162800); +INSERT INTO t2 VALUES(19730101235900); +INSERT INTO t2 VALUES('1970-01-01 00:05:00'),('1970-01-01 01:05:00'); +INSERT INTO t2 VALUES(19700101000500); +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204734480 +1970-01-01 00:05:00 300 +1970-01-01 01:05:00 3900 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204734480 +1973-01-01 23:59:00 94780740 +1970-01-01 00:05:00 300 +1970-01-01 01:05:00 3900 +1970-01-01 00:05:00 300 +SET @@time_zone = 'MET'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204730880 +1970-01-01 00:05:00 0 +1970-01-01 01:05:00 300 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 17:28:00 1204734480 +1973-01-02 00:59:00 94780740 +1970-01-01 01:05:00 300 +1970-01-01 02:05:00 3900 +1970-01-01 01:05:00 300 +SET @@time_zone = '+05:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204716480 +1970-01-01 00:05:00 0 +1970-01-01 01:05:00 0 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 21:28:00 1204734480 +1973-01-02 04:59:00 94780740 +1970-01-01 05:05:00 300 +1970-01-01 06:05:00 3900 +1970-01-01 05:05:00 300 +SET @@time_zone = '+06:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204712880 +1970-01-01 00:05:00 0 +1970-01-01 01:05:00 0 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 22:28:00 1204734480 +1973-01-02 05:59:00 94780740 +1970-01-01 06:05:00 300 +1970-01-01 07:05:00 3900 +1970-01-01 06:05:00 300 +SET @@time_zone = '+01:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204730880 +1970-01-01 00:05:00 0 +1970-01-01 01:05:00 300 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 17:28:00 1204734480 +1973-01-02 00:59:00 94780740 +1970-01-01 01:05:00 300 +1970-01-01 02:05:00 3900 +1970-01-01 01:05:00 300 +SET @@time_zone = '+02:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204727280 +1970-01-01 00:05:00 0 +1970-01-01 01:05:00 0 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 18:28:00 1204734480 +1973-01-02 01:59:00 94780740 +1970-01-01 02:05:00 300 +1970-01-01 03:05:00 3900 +1970-01-01 02:05:00 300 +SET @@time_zone = '+00:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204734480 +1970-01-01 00:05:00 300 +1970-01-01 01:05:00 3900 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204734480 +1973-01-01 23:59:00 94780740 +1970-01-01 00:05:00 300 +1970-01-01 01:05:00 3900 +1970-01-01 00:05:00 300 +SET @@time_zone = '+06:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +a UNIX_TIMESTAMP(a) +2008-03-05 16:28:00 1204712880 +1970-01-01 00:05:00 0 +1970-01-01 01:05:00 0 +SELECT a,UNIX_TIMESTAMP(a) FROM t2; +a UNIX_TIMESTAMP(a) +2008-03-05 22:28:00 1204734480 +1973-01-02 05:59:00 94780740 +1970-01-01 06:05:00 300 +1970-01-01 07:05:00 3900 +1970-01-01 06:05:00 300 +Potential Feature: upon recovery of timezone, +the original value of the timestamp should be recovered. +'#-----------------------------FN_DYNVARS_177_04--------------------#' +SET @@time_zone = '6'; +ERROR HY000: Unknown or incorrect time zone: '6' +'#-----------------------------FN_DYNVARS_177_05---------------#' +SET GLOBAL time_zone = 'SYSTEM'; +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.time_zone; +@@SESSION.time_zone +SYSTEM +SYSTEM Expected +SET SESSION time_zone = '+05:00'; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.time_zone; +@@SESSION.time_zone +SYSTEM +SYSTEM Expected +SET SESSION time_zone = '-10:00'; +** Connection con_int2 ** +SELECT @@SESSION.time_zone; +@@SESSION.time_zone +-10:00 +-10:00 Expected +** Connection con_int1 ** +SELECT @@SESSION.time_zone; +@@SESSION.time_zone ++05:00 ++05:00 Expected +SELECT @@GLOBAL.time_zone; +@@GLOBAL.time_zone +SYSTEM +SYSTEM Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET @@SESSION.time_zone = @session_time_zone; +SET @@GLOBAL.time_zone = @global_time_zone; +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/r/timed_mutexes_basic.result b/mysql-test/r/timed_mutexes_basic.result new file mode 100644 index 00000000000..d8bd2cd975f --- /dev/null +++ b/mysql-test/r/timed_mutexes_basic.result @@ -0,0 +1,104 @@ +SET @global_start_value = @@global.timed_mutexes; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_177_01------------------------#' +SET @@global.timed_mutexes = 1; +SET @@global.timed_mutexes = DEFAULT; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +0 +'#---------------------FN_DYNVARS_177_02-------------------------#' +SET timed_mutexes = 1; +ERROR HY000: Variable 'timed_mutexes' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@timed_mutexes; +@@timed_mutexes +0 +SELECT global.timed_mutexes; +ERROR 42S02: Unknown table 'global' in field list +SET global timed_mutexes = 1; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +1 +'#--------------------FN_DYNVARS_177_03------------------------#' +SET @@global.timed_mutexes = 0; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +0 +SET @@global.timed_mutexes = 1; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +1 +'#--------------------FN_DYNVARS_177_04-------------------------#' +SET @@global.timed_mutexes = -1; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '-1' +SET @@global.timed_mutexes = 2; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '2' +SET @@global.timed_mutexes = "T"; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of 'T' +SET @@global.timed_mutexes = "Y"; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of 'Y' +SET @@global.timed_mutexes = _true; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '_true' +SET @@global.timed_mutexes = 0N; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '0N' +SET @@global.timed_mutexes = 1+1; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '2' +SET @@global.timed_mutexes = 0FF; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '0FF' +SET @@global.timed_mutexes = '0'; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of '0' +SET @@global.timed_mutexes = N; +ERROR 42000: Variable 'timed_mutexes' can't be set to the value of 'N' +'#-------------------FN_DYNVARS_177_05----------------------------#' +SET @@session.timed_mutexes = 0; +ERROR HY000: Variable 'timed_mutexes' is a GLOBAL variable and should be set with SET GLOBAL +SET @@timed_mutexes = 0; +ERROR HY000: Variable 'timed_mutexes' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.timed_mutexes = 0; +ERROR HY000: Variable 'timed_mutexes' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.timed_mutexes; +ERROR HY000: Variable 'timed_mutexes' is a GLOBAL variable +SELECT @@local.timed_mutexes; +ERROR HY000: Variable 'timed_mutexes' is a GLOBAL variable +'#----------------------FN_DYNVARS_177_06------------------------#' +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='timed_mutexes'; +count(VARIABLE_VALUE) +1 +'#----------------------FN_DYNVARS_177_07------------------------#' +SELECT @@global.timed_mutexes = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='timed_mutexes'; +@@global.timed_mutexes = VARIABLE_VALUE +0 +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +1 +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='timed_mutexes'; +VARIABLE_VALUE +ON +'#---------------------FN_DYNVARS_177_08-------------------------#' +SET @@global.timed_mutexes = OFF; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +0 +SET @@global.timed_mutexes = ON; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +1 +'#---------------------FN_DYNVARS_177_09----------------------#' +SET @@global.timed_mutexes = TRUE; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +1 +SET @@global.timed_mutexes = FALSE; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +0 +SET @@global.timed_mutexes = @global_start_value; +SELECT @@global.timed_mutexes; +@@global.timed_mutexes +0 diff --git a/mysql-test/r/timestamp_func.result b/mysql-test/r/timestamp_func.result new file mode 100644 index 00000000000..62837626ca2 --- /dev/null +++ b/mysql-test/r/timestamp_func.result @@ -0,0 +1,33 @@ +** Setup ** + +** Connecting con0 using root ** +** Connecting con1 using root ** +'#-----------------------------FN_DYNVARS_179_01------------------#' +** Connection con0 ** +SET @ts_old = @@SESSION.timestamp; +waiting 1 sec +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +Timestamp Difference +1 +1 Expected +** Connection con1 ** +SET @ts_old = @@SESSION.timestamp; +waiting 4 sec +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +Timestamp Difference +4 +4 Expected +'#-----------------------------FN_DYNVARS_179_02---------------------#' +SET @ts_old = @@SESSION.timestamp; +Changing time zone +SET time_zone = 'MET'; +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +Timestamp Difference +1 +1 Expected +** Cleanup ** +** Connection default ** +Disconnecting Connections con0, con1 diff --git a/mysql-test/r/tmpdir_basic.result b/mysql-test/r/tmpdir_basic.result new file mode 100644 index 00000000000..613cc8ec3cd --- /dev/null +++ b/mysql-test/r/tmpdir_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_052_01----------------------#' +SELECT COUNT(@@GLOBAL.tmpdir); +COUNT(@@GLOBAL.tmpdir) +1 +1 Expected +'#---------------------BS_STVARS_052_02----------------------#' +SET @@GLOBAL.tmpdir=1; +ERROR HY000: Variable 'tmpdir' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.tmpdir); +COUNT(@@GLOBAL.tmpdir) +1 +1 Expected +'#---------------------BS_STVARS_052_03----------------------#' +SELECT @@GLOBAL.tmpdir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='tmpdir'; +@@GLOBAL.tmpdir = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.tmpdir); +COUNT(@@GLOBAL.tmpdir) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='tmpdir'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_052_04----------------------#' +SELECT @@tmpdir = @@GLOBAL.tmpdir; +@@tmpdir = @@GLOBAL.tmpdir +1 +1 Expected +'#---------------------BS_STVARS_052_05----------------------#' +SELECT COUNT(@@tmpdir); +COUNT(@@tmpdir) +1 +1 Expected +SELECT COUNT(@@local.tmpdir); +ERROR HY000: Variable 'tmpdir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.tmpdir); +ERROR HY000: Variable 'tmpdir' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.tmpdir); +COUNT(@@GLOBAL.tmpdir) +1 +1 Expected +SELECT tmpdir = @@SESSION.tmpdir; +ERROR 42S22: Unknown column 'tmpdir' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/tx_isolation_basic.result b/mysql-test/r/tx_isolation_basic.result new file mode 100644 index 00000000000..d487a6d92a8 --- /dev/null +++ b/mysql-test/r/tx_isolation_basic.result @@ -0,0 +1,176 @@ +SET @global_start_value = @@global.tx_isolation; +SELECT @global_start_value; +@global_start_value +REPEATABLE-READ +SET @session_start_value = @@session.tx_isolation; +SELECT @session_start_value; +@session_start_value +REPEATABLE-READ +'#--------------------FN_DYNVARS_183_01------------------------#' +SET @@global.tx_isolation = 'READ-UNCOMMITTED'; +SET @@global.tx_isolation = DEFAULT; +ERROR 42000: Variable 'tx_isolation' doesn't have a default value +'Bug# 34878: Documentation specifies a DEFAULT value of REPEATABLE-READ'; +'where as DEFAULT is not supported here.'; +SET @@session.tx_isolation = 'SERIALIZABLE'; +SET @@session.tx_isolation = DEFAULT; +SELECT @@session.tx_isolation; +@@session.tx_isolation +READ-UNCOMMITTED +'Bug# 34876: Documentation specifies a DEFAULT value of REPEATABLE-READ'; +'where as DEFAULT here as no effect.'; +'#---------------------FN_DYNVARS_183_02-------------------------#' +SET @@global.tx_isolation = NULL; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'NULL' +SET @@global.tx_isolation = ''; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of '' +SET @@session.tx_isolation = NULL; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'NULL' +SET @@session.tx_isolation = ''; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of '' +'#--------------------FN_DYNVARS_183_03------------------------#' +SET @@global.tx_isolation = 'READ-UNCOMMITTED'; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-UNCOMMITTED +SET @@global.tx_isolation = 'read-COMMITTED'; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-COMMITTED +SET @@global.tx_isolation = 'REPEATABLE-READ'; +SELECT @@global.tx_isolation; +@@global.tx_isolation +REPEATABLE-READ +SET @@global.tx_isolation = 'SERIALIZable'; +SELECT @@global.tx_isolation; +@@global.tx_isolation +SERIALIZABLE +SET @@session.tx_isolation = 'READ-UNCOMMITTED'; +SELECT @@session.tx_isolation; +@@session.tx_isolation +READ-UNCOMMITTED +SET @@session.tx_isolation = 'READ-COMMITTED'; +SELECT @@session.tx_isolation; +@@session.tx_isolation +READ-COMMITTED +SET @@session.tx_isolation = 'REPEATABLE-READ'; +SELECT @@session.tx_isolation; +@@session.tx_isolation +REPEATABLE-READ +SET @@session.tx_isolation = 'serializable'; +SELECT @@session.tx_isolation; +@@session.tx_isolation +SERIALIZABLE +'#--------------------FN_DYNVARS_183_04-------------------------#' +SET @@global.tx_isolation = -1; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of '-1' +SET @@global.tx_isolation = READUNCOMMITTED; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'READUNCOMMITTED' +SET @@global.tx_isolation = 'REPEATABLE'; +SELECT @@global.tx_isolation; +@@global.tx_isolation +REPEATABLE-READ +'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level' +SET @@global.tx_isolation = OFF; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'OFF' +SET @@global.tx_isolation = ON; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'ON' +SET @@global.tx_isolation = 'NON-SERIALIZABLE'; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'NON-SERIALIZABLE' +SET @@tx_isolation = -1; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of '-1' +SET @@tx_isolation = READUNCOMMITTED; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'READUNCOMMITTED' +SET @@tx_isolation = 'REPEATABLE'; +SELECT @@tx_isolation; +@@tx_isolation +REPEATABLE-READ +'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level' +SET @@tx_isolation = 'NONE'; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'NONE' +SET @@tx_isolation = 'ALL'; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of 'ALL' +'#-------------------FN_DYNVARS_183_05----------------------------#' +SELECT @@session.tx_isolation = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='tx_isolation'; +@@session.tx_isolation = VARIABLE_VALUE +1 +'#----------------------FN_DYNVARS_183_06------------------------#' +SELECT @@global.tx_isolation = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='tx_isolation'; +@@global.tx_isolation = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_183_07-------------------------#' +SET @@global.tx_isolation = 0; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-UNCOMMITTED +SET @@global.tx_isolation = 1; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-COMMITTED +SET @@global.tx_isolation = 2; +SELECT @@global.tx_isolation; +@@global.tx_isolation +REPEATABLE-READ +SET @@global.tx_isolation = 3; +SELECT @@global.tx_isolation; +@@global.tx_isolation +SERIALIZABLE +SET @@global.tx_isolation = 0.4; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-UNCOMMITTED +SET @@global.tx_isolation = 1.1; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-COMMITTED +SET @@global.tx_isolation = 1.5; +SELECT @@global.tx_isolation; +@@global.tx_isolation +REPEATABLE-READ +SET @@global.tx_isolation = 2.9; +SELECT @@global.tx_isolation; +@@global.tx_isolation +SERIALIZABLE +SET @@session.tx_isolation = 3.49; +SELECT @@session.tx_isolation; +@@session.tx_isolation +SERIALIZABLE +SET @@session.tx_isolation = 3.6; +ERROR 42000: Variable 'tx_isolation' can't be set to the value of '4' +'Bug: Decimal values can be used within the range [0.0-3.5).'; +'Values are rounded to 0,1,2,3 as evident from outcome.'; +'#---------------------FN_DYNVARS_183_08----------------------#' +SET @@global.tx_isolation = TRUE; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-COMMITTED +SET @@global.tx_isolation = FALSE; +SELECT @@global.tx_isolation; +@@global.tx_isolation +READ-UNCOMMITTED +'#---------------------FN_DYNVARS_183_09----------------------#' +SET tx_isolation = 'REPEATABLE-READ'; +SET session.tx_isolation = 'REPEATABLE-READ'; +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 'tx_isolation = 'REPEATABLE-READ'' at line 1 +SET global.tx_isolation = 'REPEATABLE-READ'; +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 'tx_isolation = 'REPEATABLE-READ'' at line 1 +SET session tx_isolation = 'REPEATABLE-READ'; +SELECT @@tx_isolation; +@@tx_isolation +REPEATABLE-READ +SET global tx_isolation = 'REPEATABLE-READ'; +SELECT @@global.tx_isolation; +@@global.tx_isolation +REPEATABLE-READ +SET @@global.tx_isolation = @global_start_value; +SELECT @@global.tx_isolation; +@@global.tx_isolation +REPEATABLE-READ +SET @@session.tx_isolation = @session_start_value; +SELECT @@session.tx_isolation; +@@session.tx_isolation +REPEATABLE-READ diff --git a/mysql-test/r/tx_isolation_func.result b/mysql-test/r/tx_isolation_func.result new file mode 100644 index 00000000000..8b763edd70c --- /dev/null +++ b/mysql-test/r/tx_isolation_func.result @@ -0,0 +1,380 @@ +** Setup ** +SET @session_tx_isolation = @@SESSION.tx_isolation; +SET @global_tx_isolation = @@GLOBAL.tx_isolation; +** Connecting con0 using root ** +** Connection con0 ** +SET SESSION AUTOCOMMIT = OFF; +** Connecting con1 using root ** +** Connection con1 ** +SET SESSION AUTOCOMMIT = OFF; +** Connection default ** +CREATE TABLE t1 (a int PRIMARY KEY, b int) ENGINE=INNODB; +INSERT INTO t1 VALUES(2, 2); +INSERT INTO t1 VALUES(4, 4); +INSERT INTO t1 VALUES(6, 6); +INSERT INTO t1 VALUES(8, 8); +INSERT INTO t1 VALUES(16, 16); +INSERT INTO t1 VALUES(18, 18); +INSERT INTO t1 VALUES(20, 20); +INSERT INTO t1 VALUES(22, 22); +INSERT INTO t1 VALUES(24, 24); +'#----------------------------FN_DYNVARS_184_01--------------------------------------#' +** Connection con0 ** +SET SESSION tx_isolation = 'READ-UNCOMMITTED'; +** Connection con1 ** +SET SESSION tx_isolation = 'READ-UNCOMMITTED'; +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a IN (2,4,6,8) FOR UPDATE; +a b +2 2 +4 4 +6 6 +8 8 +UPDATE t1 SET b = 10 WHERE a IN (2,4,6,8); +** Connection con1 ** +START TRANSACTION; +SELECT * FROM t1; +a b +2 10 +4 10 +6 10 +8 10 +16 16 +18 18 +20 20 +22 22 +24 24 +INSERT INTO t1 VALUES(1, 1); +INSERT INTO t1 VALUES(3, 3); +SELECT * FROM t1; +a b +1 1 +2 10 +3 3 +4 10 +6 10 +8 10 +16 16 +18 18 +20 20 +22 22 +24 24 +COMMIT; +** Connection con0 ** +DELETE FROM t1 WHERE a = 1 OR a = 3; +COMMIT; +'#----------------------------FN_DYNVARS_184_02--------------------------------------#' +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +a b +2 10 +4 10 +6 10 +8 10 +16 16 +18 18 +20 20 +22 22 +24 24 +UPDATE t1 SET b = 10 WHERE a % 2 = 0; +** Connection con1 ** +START TRANSACTION; +SELECT * FROM t1; +a b +2 10 +4 10 +6 10 +8 10 +16 10 +18 10 +20 10 +22 10 +24 10 +INSERT INTO t1 VALUES(23, 23); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 VALUES(25, 25); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +Bug: Only even rows are being locked, error 1205 should'nt have occured +SELECT * FROM t1; +a b +2 10 +4 10 +6 10 +8 10 +16 10 +18 10 +20 10 +22 10 +24 10 +COMMIT; +** Connection con0 ** +COMMIT; +'#----------------------------FN_DYNVARS_184_03--------------------------------------#' +** Connection con0 ** +SET SESSION tx_isolation = 'READ-COMMITTED'; +** Connection con1 ** +SET SESSION tx_isolation = 'READ-COMMITTED'; +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +a b +2 10 +4 10 +6 10 +8 10 +16 10 +18 10 +20 10 +22 10 +24 10 +UPDATE t1 SET b = 11 WHERE a % 2 = 0; +** Connection con1 ** +START TRANSACTION; +SELECT * FROM t1; +a b +2 10 +4 10 +6 10 +8 10 +16 10 +18 10 +20 10 +22 10 +24 10 +INSERT INTO t1 VALUES(5, 5); +INSERT INTO t1 VALUES(7, 7); +SELECT * FROM t1; +a b +2 10 +4 10 +5 5 +6 10 +7 7 +8 10 +16 10 +18 10 +20 10 +22 10 +24 10 +COMMIT; +** Connection con0 ** +COMMIT; +'#----------------------------FN_DYNVARS_184_04--------------------------------------#' +** Connection con0 ** +SET SESSION tx_isolation = 'REPEATABLE-READ'; +** Connection con1 ** +SET SESSION tx_isolation = 'REPEATABLE-READ'; +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +a b +2 11 +4 11 +6 11 +8 11 +16 11 +18 11 +20 11 +22 11 +24 11 +UPDATE t1 SET b = 12 WHERE a % 2 = 0; +** Connection con1 ** +START TRANSACTION; +SELECT * FROM t1; +a b +2 11 +4 11 +5 5 +6 11 +7 7 +8 11 +16 11 +18 11 +20 11 +22 11 +24 11 +INSERT INTO t1 VALUES(9, 9); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 VALUES(13, 13); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +Expected error "Lock wait timeout" +SELECT * FROM t1; +a b +2 11 +4 11 +5 5 +6 11 +7 7 +8 11 +16 11 +18 11 +20 11 +22 11 +24 11 +COMMIT; +** Connection con0 ** +COMMIT; +'#----------------------------FN_DYNVARS_184_05--------------------------------------#' +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0 FOR UPDATE; +a b +5 5 +7 7 +UPDATE t1 SET b = 13 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0; +** Connection con1 ** +START TRANSACTION; +SELECT * FROM t1; +a b +2 12 +4 12 +5 5 +6 12 +7 7 +8 12 +16 12 +18 12 +20 12 +22 12 +24 12 +INSERT INTO t1 VALUES(9, 9); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 VALUES(13, 13); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +Expected error "Lock wait timeout" +SELECT * FROM t1; +a b +2 12 +4 12 +5 5 +6 12 +7 7 +8 12 +16 12 +18 12 +20 12 +22 12 +24 12 +COMMIT; +** Connection con0 ** +COMMIT; +'#----------------------------FN_DYNVARS_184_06--------------------------------------#' +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a IN (2,4,6,8) = 0 FOR UPDATE; +a b +5 13 +7 13 +16 12 +18 12 +20 12 +22 12 +24 12 +UPDATE t1 SET b = 14 WHERE a IN (2,4,6,8) = 0; +** Connection con1 ** +START TRANSACTION; +SELECT * FROM t1; +a b +2 12 +4 12 +5 13 +6 12 +7 13 +8 12 +16 12 +18 12 +20 12 +22 12 +24 12 +INSERT INTO t1 VALUES(9, 9); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 VALUES(13, 13); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +Expected error "Lock wait timeout" +SELECT * FROM t1; +a b +2 12 +4 12 +5 13 +6 12 +7 13 +8 12 +16 12 +18 12 +20 12 +22 12 +24 12 +COMMIT; +** Connection con0 ** +COMMIT; +'#----------------------------FN_DYNVARS_184_07--------------------------------------#' +** Connection con0 ** +SET SESSION tx_isolation = 'SERIALIZABLE'; +** Connection con0 ** +SET SESSION tx_isolation = 'SERIALIZABLE'; +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +a b +2 12 +4 12 +6 12 +8 12 +16 14 +18 14 +20 14 +22 14 +24 14 +UPDATE t1 SET b = 15 WHERE a % 2 = 0; +** Connection con0 ** +START TRANSACTION; +SELECT * FROM t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 VALUES(15, 15); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 VALUES(17, 17); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +SELECT * FROM t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +COMMIT; +** Connection con0 ** +COMMIT; +'#----------------------------FN_DYNVARS_184_08--------------------------------------#' +SET GLOBAL tx_isolation = 'READ-UNCOMMITTED'; +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.tx_isolation; +@@SESSION.tx_isolation +READ-UNCOMMITTED +READ-UNCOMMITTED Expected +SET SESSION tx_isolation = 'SERIALIZABLE'; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.tx_isolation; +@@SESSION.tx_isolation +READ-UNCOMMITTED +READ-UNCOMMITTED Expected +SET SESSION tx_isolation = 'REPEATABLE-READ'; +** Connection con_int2 ** +SELECT @@SESSION.tx_isolation; +@@SESSION.tx_isolation +REPEATABLE-READ +REPEATABLE-READ Expected +** Connection con_int1 ** +SELECT @@SESSION.tx_isolation; +@@SESSION.tx_isolation +SERIALIZABLE +SERIALIZABLE Expected +SELECT @@GLOBAL.tx_isolation; +@@GLOBAL.tx_isolation +READ-UNCOMMITTED +READ-UNCOMMITTED Expected +** Connection default ** +Disconnecting Connections con_int1, con_int2 +SET @@SESSION.tx_isolation = @session_tx_isolation; +SET @@GLOBAL.tx_isolation = @global_tx_isolation; +** Connection default ** +Disconnecting Connections con0, con1 +DROP TABLE t1; diff --git a/mysql-test/r/unique_checks_basic.result b/mysql-test/r/unique_checks_basic.result new file mode 100644 index 00000000000..cc22c1c7f98 --- /dev/null +++ b/mysql-test/r/unique_checks_basic.result @@ -0,0 +1,89 @@ +SET @start_session_value = @@session.unique_checks; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@session.unique_checks= 1; +SET @@session.unique_checks= DEFAULT; +SELECT @@session.unique_checks; +@@session.unique_checks +1 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@session.unique_checks = DEFAULT; +SELECT @@session.unique_checks =1; +@@session.unique_checks =1 +1 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.unique_checks =1; +SELECT @@session.unique_checks; +@@session.unique_checks +1 +SET @@session.unique_checks = 0; +SELECT @@session.unique_checks; +@@session.unique_checks +0 +SET @@session.unique_checks = True; +SELECT @@session.unique_checks; +@@session.unique_checks +1 +SET @@session.unique_checks = False; +SELECT @@session.unique_checks; +@@session.unique_checks +0 +SET @@session.unique_checks = "ON"; +SELECT @@session.unique_checks; +@@session.unique_checks +1 +SET @@session.unique_checks = "OFF"; +SELECT @@session.unique_checks; +@@session.unique_checks +0 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@session.unique_checks = 'No'; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'No' +SET @@session.unique_checks = "yes"; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'yes' +SET @@session.unique_checks = yes; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'yes' +SET @@session.unique_checks = NO; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'NO' +SET @@session.unique_checks = "True"; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'True' +SET @@session.unique_checks = "False"; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'False' +SET @@session.unique_checks = "Test"; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'Test' +SET @@session.unique_checks = 'test'; +ERROR 42000: Variable 'unique_checks' can't be set to the value of 'test' +SET @@session.unique_checks = 123456789031; +ERROR 42000: Variable 'unique_checks' can't be set to the value of '123456789031' +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.unique_checks = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='unique_checks'; +@@session.unique_checks = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@unique_checks = 1; +SELECT @@unique_checks = @@local.unique_checks; +@@unique_checks = @@local.unique_checks +1 +SELECT @@local.unique_checks = @@session.unique_checks; +@@local.unique_checks = @@session.unique_checks +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET unique_checks = 1027; +ERROR 42000: Variable 'unique_checks' can't be set to the value of '1027' +SELECT @@unique_checks; +@@unique_checks +1 +SELECT local.unique_checks; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.unique_checks; +ERROR 42S02: Unknown table 'session' in field list +SELECT unique_checks = @@session.unique_checks; +ERROR 42S22: Unknown column 'unique_checks' in 'field list' +SET @@session.unique_checks = @start_session_value; +SELECT @@session.unique_checks; +@@session.unique_checks +1 diff --git a/mysql-test/r/updatable_views_with_limit_basic.result b/mysql-test/r/updatable_views_with_limit_basic.result new file mode 100644 index 00000000000..e2eebbd7a2c --- /dev/null +++ b/mysql-test/r/updatable_views_with_limit_basic.result @@ -0,0 +1,183 @@ +SET @start_global_value = @@global.updatable_views_with_limit; +SELECT @start_global_value; +@start_global_value +YES +SET @start_session_value = @@session.updatable_views_with_limit; +SELECT @start_session_value; +@start_session_value +YES +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.updatable_views_with_limit = 'NO'; +SET @@global.updatable_views_with_limit = DEFAULT; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = 'NO'; +SET @@session.updatable_views_with_limit = DEFAULT; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.updatable_views_with_limit = DEFAULT; +SELECT @@global.updatable_views_with_limit = 'Yes'; +@@global.updatable_views_with_limit = 'Yes' +1 +SET @@session.updatable_views_with_limit = DEFAULT; +SELECT @@session.updatable_views_with_limit ='Yes'; +@@session.updatable_views_with_limit ='Yes' +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.updatable_views_with_limit = NO; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +NO +SET @@global.updatable_views_with_limit = 'NO'; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +NO +SET @@global.updatable_views_with_limit = YES; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@global.updatable_views_with_limit = 'YES'; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@global.updatable_views_with_limit = "NO"; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +NO +SET @@global.updatable_views_with_limit = "YES"; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@global.updatable_views_with_limit = 1; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@global.updatable_views_with_limit = 0; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +NO +SET @@global.updatable_views_with_limit = TRUE; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@global.updatable_views_with_limit = False; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +NO +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.updatable_views_with_limit = NO; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +NO +SET @@session.updatable_views_with_limit = 'NO'; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +NO +SET @@session.updatable_views_with_limit = YES; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = 'YES'; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = "YES"; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = "NO"; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +NO +SET @@session.updatable_views_with_limit =1; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = 0; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +NO +SET @@session.updatable_views_with_limit = True; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = False; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +NO +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.updatable_views_with_limit = "TRUE"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'TRUE' +SET @@global.updatable_views_with_limit = -1024; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of '-1024' +SET @@global.updatable_views_with_limit = 2345; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of '2345' +SET @@global.updatable_views_with_limit = "FALSE"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'FALSE' +SET @@global.updatable_views_with_limit = 65530.34; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of '65530' +SET @@global.updatable_views_with_limit ="Testing"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'Testing' +SET @@session.updatable_views_with_limit = "ON"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'ON' +SET @@session.updatable_views_with_limit = "OFF"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'OFF' +SET @@session.updatable_views_with_limit = "True"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'True' +SET @@session.updatable_views_with_limit = "False"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'False' +SET @@session.updatable_views_with_limit = "Test"; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'Test' +SET @@session.updatable_views_with_limit = 'test'; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of 'test' +SET @@session.updatable_views_with_limit = 123456789031; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of '123456789031' +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.updatable_views_with_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='updatable_views_with_limit'; +@@global.updatable_views_with_limit = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.updatable_views_with_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='updatable_views_with_limit'; +@@session.updatable_views_with_limit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@global.updatable_views_with_limit = NO; +SET @@session.updatable_views_with_limit = YES; +SELECT @@updatable_views_with_limit = @@global.updatable_views_with_limit; +@@updatable_views_with_limit = @@global.updatable_views_with_limit +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@updatable_views_with_limit = YES; +SELECT @@updatable_views_with_limit = @@local.updatable_views_with_limit; +@@updatable_views_with_limit = @@local.updatable_views_with_limit +1 +SELECT @@local.updatable_views_with_limit = @@session.updatable_views_with_limit; +@@local.updatable_views_with_limit = @@session.updatable_views_with_limit +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET updatable_views_with_limit = 1027; +ERROR 42000: Variable 'updatable_views_with_limit' can't be set to the value of '1027' +SELECT @@updatable_views_with_limit; +@@updatable_views_with_limit +YES +SELECT local.updatable_views_with_limit; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.updatable_views_with_limit; +ERROR 42S02: Unknown table 'session' in field list +SELECT updatable_views_with_limit = @@session.updatable_views_with_limit; +ERROR 42S22: Unknown column 'updatable_views_with_limit' in 'field list' +SET @@global.updatable_views_with_limit = @start_global_value; +SELECT @@global.updatable_views_with_limit; +@@global.updatable_views_with_limit +YES +SET @@session.updatable_views_with_limit = @start_session_value; +SELECT @@session.updatable_views_with_limit; +@@session.updatable_views_with_limit +YES diff --git a/mysql-test/r/updatable_views_with_limit_func.result b/mysql-test/r/updatable_views_with_limit_func.result new file mode 100644 index 00000000000..0fdd4cbbb1b --- /dev/null +++ b/mysql-test/r/updatable_views_with_limit_func.result @@ -0,0 +1,66 @@ +SET @session_updatable_views_with_limit = @@Session.UPDATABLE_VIEWS_WITH_LIMIT; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a INT, b INT, c INT, PRIMARY KEY(a,b)); +INSERT INTO t1 VALUES (10,2,-1), (20,3,-2), +(30,4,-3), (40,5,-4); +CREATE VIEW v1 (x,y) AS SELECT a, c FROM t1; +** Connecting test_con1 using username 'root' ** +** Connection test_con1 ** +SET @@Session.UPDATABLE_VIEWS_WITH_LIMIT=YES; +Warning expected, 'View does not contain complete key of the table' +UPDATE v1 SET x=x+6 LIMIT 1; +Warnings: +Note 1355 View being updated does not have complete key of underlying table in it +SELECT * FROM t1; +a b c +16 2 -1 +20 3 -2 +30 4 -3 +40 5 -4 +UPDATE v1 SET x=x+5; +SELECT * FROM t1; +a b c +21 2 -1 +25 3 -2 +35 4 -3 +45 5 -4 +** Connecting test_con2 using username 'root' ** +** Connection test_con2 ** +SET @@Session.UPDATABLE_VIEWS_WITH_LIMIT=NO; +SELECT @@SESSION.UPDATABLE_VIEWS_WITH_LIMIT; +@@SESSION.UPDATABLE_VIEWS_WITH_LIMIT +NO +UPDATE v1 SET x=x+10 LIMIT 1; +ERROR HY000: The target table v1 of the UPDATE is not updatable +Expected error 'Non updatable table' +SELECT * FROM t1; +a b c +21 2 -1 +25 3 -2 +35 4 -3 +45 5 -4 +'#---------------------FN_DYNVARS_039_01----------------------#' +SET UPDATABLE_VIEWS_WITH_LIMIT=NO; +UPDATE v1 SET x=x+1 LIMIT 1; +ERROR HY000: The target table v1 of the UPDATE is not updatable +Expected error 'Non updatable table' +SET UPDATABLE_VIEWS_WITH_LIMIT=0; +UPDATE v1 SET x=x+1 LIMIT 1; +ERROR HY000: The target table v1 of the UPDATE is not updatable +Expected error 'Non updatable table' +'#---------------------FN_DYNVARS_039_02----------------------#' +Warning expected, 'View does not contain complete key of the table' +SET UPDATABLE_VIEWS_WITH_LIMIT=DEFAULT; +UPDATE v1 SET x=x+1 LIMIT 1; +Warnings: +Note 1355 View being updated does not have complete key of underlying table in it +Warning expected, 'View does not contain complete key of the table' +SET UPDATABLE_VIEWS_WITH_LIMIT=YES; +UPDATE v1 SET x=x+2 LIMIT 1; +Warnings: +Note 1355 View being updated does not have complete key of underlying table in it +** Connection default ** +** Disconnecting test_con1, test_con2 ** +SET @@SESSION.updatable_views_with_limit = @session_updatable_views_with_limit; +DROP VIEW IF EXISTS v1; +DROP TABLE IF EXISTS t1; diff --git a/mysql-test/r/version_basic.result b/mysql-test/r/version_basic.result new file mode 100644 index 00000000000..01710426ac9 --- /dev/null +++ b/mysql-test/r/version_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_053_01----------------------#' +SELECT COUNT(@@GLOBAL.version); +COUNT(@@GLOBAL.version) +1 +1 Expected +'#---------------------BS_STVARS_053_02----------------------#' +SET @@GLOBAL.version=1; +ERROR HY000: Variable 'version' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.version); +COUNT(@@GLOBAL.version) +1 +1 Expected +'#---------------------BS_STVARS_053_03----------------------#' +SELECT @@GLOBAL.version = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version'; +@@GLOBAL.version = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.version); +COUNT(@@GLOBAL.version) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_053_04----------------------#' +SELECT @@version = @@GLOBAL.version; +@@version = @@GLOBAL.version +1 +1 Expected +'#---------------------BS_STVARS_053_05----------------------#' +SELECT COUNT(@@version); +COUNT(@@version) +1 +1 Expected +SELECT COUNT(@@local.version); +ERROR HY000: Variable 'version' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.version); +ERROR HY000: Variable 'version' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.version); +COUNT(@@GLOBAL.version) +1 +1 Expected +SELECT version = @@SESSION.version; +ERROR 42S22: Unknown column 'version' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/version_comment_basic.result b/mysql-test/r/version_comment_basic.result new file mode 100644 index 00000000000..5ef4bdbdd87 --- /dev/null +++ b/mysql-test/r/version_comment_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_054_01----------------------#' +SELECT COUNT(@@GLOBAL.version_comment); +COUNT(@@GLOBAL.version_comment) +1 +1 Expected +'#---------------------BS_STVARS_054_02----------------------#' +SET @@GLOBAL.version_comment=1; +ERROR HY000: Variable 'version_comment' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.version_comment); +COUNT(@@GLOBAL.version_comment) +1 +1 Expected +'#---------------------BS_STVARS_054_03----------------------#' +SELECT @@GLOBAL.version_comment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_comment'; +@@GLOBAL.version_comment = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.version_comment); +COUNT(@@GLOBAL.version_comment) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_comment'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_054_04----------------------#' +SELECT @@version_comment = @@GLOBAL.version_comment; +@@version_comment = @@GLOBAL.version_comment +1 +1 Expected +'#---------------------BS_STVARS_054_05----------------------#' +SELECT COUNT(@@version_comment); +COUNT(@@version_comment) +1 +1 Expected +SELECT COUNT(@@local.version_comment); +ERROR HY000: Variable 'version_comment' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.version_comment); +ERROR HY000: Variable 'version_comment' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.version_comment); +COUNT(@@GLOBAL.version_comment) +1 +1 Expected +SELECT version_comment = @@SESSION.version_comment; +ERROR 42S22: Unknown column 'version_comment' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/version_compile_machine_basic.result b/mysql-test/r/version_compile_machine_basic.result new file mode 100644 index 00000000000..eb239041929 --- /dev/null +++ b/mysql-test/r/version_compile_machine_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_055_01----------------------#' +SELECT COUNT(@@GLOBAL.version_compile_machine); +COUNT(@@GLOBAL.version_compile_machine) +1 +1 Expected +'#---------------------BS_STVARS_055_02----------------------#' +SET @@GLOBAL.version_compile_machine=1; +ERROR HY000: Variable 'version_compile_machine' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.version_compile_machine); +COUNT(@@GLOBAL.version_compile_machine) +1 +1 Expected +'#---------------------BS_STVARS_055_03----------------------#' +SELECT @@GLOBAL.version_compile_machine = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_machine'; +@@GLOBAL.version_compile_machine = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.version_compile_machine); +COUNT(@@GLOBAL.version_compile_machine) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_machine'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_055_04----------------------#' +SELECT @@version_compile_machine = @@GLOBAL.version_compile_machine; +@@version_compile_machine = @@GLOBAL.version_compile_machine +1 +1 Expected +'#---------------------BS_STVARS_055_05----------------------#' +SELECT COUNT(@@version_compile_machine); +COUNT(@@version_compile_machine) +1 +1 Expected +SELECT COUNT(@@local.version_compile_machine); +ERROR HY000: Variable 'version_compile_machine' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.version_compile_machine); +ERROR HY000: Variable 'version_compile_machine' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.version_compile_machine); +COUNT(@@GLOBAL.version_compile_machine) +1 +1 Expected +SELECT version_compile_machine = @@SESSION.version_compile_machine; +ERROR 42S22: Unknown column 'version_compile_machine' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/version_compile_os_basic.result b/mysql-test/r/version_compile_os_basic.result new file mode 100644 index 00000000000..64dcb761ae1 --- /dev/null +++ b/mysql-test/r/version_compile_os_basic.result @@ -0,0 +1,53 @@ +'#---------------------BS_STVARS_056_01----------------------#' +SELECT COUNT(@@GLOBAL.version_compile_os); +COUNT(@@GLOBAL.version_compile_os) +1 +1 Expected +'#---------------------BS_STVARS_056_02----------------------#' +SET @@GLOBAL.version_compile_os=1; +ERROR HY000: Variable 'version_compile_os' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@GLOBAL.version_compile_os); +COUNT(@@GLOBAL.version_compile_os) +1 +1 Expected +'#---------------------BS_STVARS_056_03----------------------#' +SELECT @@GLOBAL.version_compile_os = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_os'; +@@GLOBAL.version_compile_os = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@GLOBAL.version_compile_os); +COUNT(@@GLOBAL.version_compile_os) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_os'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_056_04----------------------#' +SELECT @@version_compile_os = @@GLOBAL.version_compile_os; +@@version_compile_os = @@GLOBAL.version_compile_os +1 +1 Expected +'#---------------------BS_STVARS_056_05----------------------#' +SELECT COUNT(@@version_compile_os); +COUNT(@@version_compile_os) +1 +1 Expected +SELECT COUNT(@@local.version_compile_os); +ERROR HY000: Variable 'version_compile_os' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@SESSION.version_compile_os); +ERROR HY000: Variable 'version_compile_os' is a GLOBAL variable +Expected error 'Variable is a GLOBAL variable' +SELECT COUNT(@@GLOBAL.version_compile_os); +COUNT(@@GLOBAL.version_compile_os) +1 +1 Expected +SELECT version_compile_os = @@SESSION.version_compile_os; +ERROR 42S22: Unknown column 'version_compile_os' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/r/wait_timeout_func.result b/mysql-test/r/wait_timeout_func.result new file mode 100644 index 00000000000..35fe10a1889 --- /dev/null +++ b/mysql-test/r/wait_timeout_func.result @@ -0,0 +1,30 @@ +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_186_01-------------------------#' +## Creating new connection test_con1 ## +## Setting value of variable to 5 ## +SET @@session.wait_timeout = 5; +## Inserting record in table t1 ## +INSERT into t1(name) values('Record_1'); +## Using sleep to check timeout ## +'#--------------------FN_DYNVARS_186_02-------------------------#' +## Setting value of variable ## +SET @@global.wait_timeout = 5; +## Creating new connection test_con2 ## +INSERT into t1(name) values('Record_2'); +## Using sleep to check timeout ## +'#--------------------FN_DYNVARS_186_03-------------------------#' +## Setting value of variable to 1 ## +SET @@global.wait_timeout = 1; +## Creating new connection ## +INSERT into t1(name) values('Record_3'); +## Using sleep to check timeout ## +## We cannot test it further because the server stops due to wait_timeout ## +SELECT * from t1; +ERROR HY000: MySQL server has gone away diff --git a/mysql-test/r/warning_count_basic.result b/mysql-test/r/warning_count_basic.result new file mode 100644 index 00000000000..0ce85c7bbf9 --- /dev/null +++ b/mysql-test/r/warning_count_basic.result @@ -0,0 +1,54 @@ +'#---------------------BS_STVARS_057_01----------------------#' +SELECT COUNT(@@SESSION.warning_count); +COUNT(@@SESSION.warning_count) +1 +1 Expected +'#---------------------BS_STVARS_057_02----------------------#' +SET @@SESSION.warning_count=1; +ERROR HY000: Variable 'warning_count' is a read only variable +Expected error 'Read only variable' +SELECT COUNT(@@SESSION.warning_count); +COUNT(@@SESSION.warning_count) +1 +1 Expected +'#---------------------BS_STVARS_057_03----------------------#' +SELECT @@SESSION.warning_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='warning_count'; +@@SESSION.warning_count = VARIABLE_VALUE +1 +1 Expected +SELECT COUNT(@@SESSION.warning_count); +COUNT(@@SESSION.warning_count) +1 +1 Expected +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='warning_count'; +COUNT(VARIABLE_VALUE) +1 +1 Expected +'#---------------------BS_STVARS_057_04----------------------#' +SELECT @@warning_count = @@SESSION.warning_count; +@@warning_count = @@SESSION.warning_count +1 +1 Expected +'#---------------------BS_STVARS_057_05----------------------#' +SELECT COUNT(@@warning_count); +COUNT(@@warning_count) +1 +1 Expected +SELECT COUNT(@@local.warning_count); +COUNT(@@local.warning_count) +1 +1 Expected +SELECT COUNT(@@SESSION.warning_count); +COUNT(@@SESSION.warning_count) +1 +1 Expected +SELECT COUNT(@@GLOBAL.warning_count); +ERROR HY000: Variable 'warning_count' is a SESSION variable +Expected error 'Variable is a SESSION variable' +SELECT COUNT(warning_count = @@GLOBAL.warning_count); +ERROR 42S22: Unknown column 'warning_count' in 'field list' +Expected error 'Readonly variable' diff --git a/mysql-test/std_data/charset_utf8.txt b/mysql-test/std_data/charset_utf8.txt new file mode 100644 index 00000000000..3fd23d10f04 --- /dev/null +++ b/mysql-test/std_data/charset_utf8.txt @@ -0,0 +1,2527 @@ +! +" +# +$ +% +& +' +( +) +* ++ +, +- +. +/ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +: +; +< += +> +? +@ +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +[ +\ +] +^ +_ +` +a +b +c +d +e +f +g +h +i +j +k +l +m +n +o +p +q +r +s +t +u +v +w +x +y +z +{ +| +} +~ + +€ + +‚ +ƒ +„ +… +† +‡ +ˆ +‰ +Š +‹ +Œ + +Ž + + +‘ +’ +“ +” +• +– +— +˜ +™ +š +› +œ + +ž +Ÿ +  +¡ +¢ +£ +¤ +¥ +¦ +§ +¨ +© +ª +« +¬ +­ +® +¯ +° +± +² +³ +´ +µ +¶ +· +¸ +¹ +º +» +¼ +½ +¾ +¿ +À +Á + +à +Ä +Å +Æ +Ç +È +É +Ê +Ë +Ì +Í +Î +Ï +Ð +Ñ +Ò +Ó +Ô +Õ +Ö +× +Ø +Ù +Ú +Û +Ü +Ý +Þ +ß +à +á +â +ã +ä +å +æ +ç +è +é +ê +ë +ì +í +î +ï +ð +ñ +ò +ó +ô +õ +ö +÷ +ø +ù +ú +û +ü +ý +þ +ÿ +Ā +ā +Ă +ă +Ą +ą +Ć +ć +Ĉ +ĉ +Ċ +ċ +Č +č +Ď +ď +Đ +đ +Ē +ē +Ĕ +ĕ +Ė +ė +Ę +ę +Ě +ě +Ĝ +ĝ +Ğ +ğ +Ġ +ġ +Ģ +ģ +Ĥ +ĥ +Ħ +ħ +Ĩ +ĩ +Ī +ī +Ĭ +ĭ +Į +į +İ +ı +IJ +ij +Ĵ +ĵ +Ķ +ķ +ĸ +Ĺ +ĺ +Ļ +ļ +Ľ +ľ +Ŀ +ŀ +Ł +ł +Ń +ń +Ņ +ņ +Ň +ň +ʼn +Ŋ +ŋ +Ō +ō +Ŏ +ŏ +Ő +ő +Œ +œ +Ŕ +ŕ +Ŗ +ŗ +Ř +ř +Ś +ś +Ŝ +ŝ +Ş +ş +Š +š +Ţ +ţ +Ť +ť +Ŧ +ŧ +Ũ +ũ +Ū +ū +Ŭ +ŭ +Ů +ů +Ű +ű +Ų +ų +Ŵ +ŵ +Ŷ +ŷ +Ÿ +Ź +ź +Ż +ż +Ž +ž +ſ +ƀ +Ɓ +Ƃ +ƃ +Ƅ +ƅ +Ɔ +Ƈ +ƈ +Ɖ +Ɗ +Ƌ +ƌ +ƍ +Ǝ +Ə +Ɛ +Ƒ +ƒ +Ɠ +Ɣ +ƕ +Ɩ +Ɨ +Ƙ +ƙ +ƚ +ƛ +Ɯ +Ɲ +ƞ +Ɵ +Ơ +ơ +Ƣ +ƣ +Ƥ +ƥ +Ʀ +Ƨ +ƨ +Ʃ +ƪ +ƫ +Ƭ +ƭ +Ʈ +Ư +ư +Ʊ +Ʋ +Ƴ +ƴ +Ƶ +ƶ +Ʒ +Ƹ +ƹ +ƺ +ƻ +Ƽ +ƽ +ƾ +ƿ +ǀ +ǁ +ǂ +ǃ +DŽ +Dž +dž +LJ +Lj +lj +NJ +Nj +nj +Ǎ +ǎ +Ǐ +ǐ +Ǒ +ǒ +Ǔ +ǔ +Ǖ +ǖ +Ǘ +ǘ +Ǚ +ǚ +Ǜ +ǜ +ǝ +Ǟ +ǟ +Ǡ +ǡ +Ǣ +ǣ +Ǥ +ǥ +Ǧ +ǧ +Ǩ +ǩ +Ǫ +ǫ +Ǭ +ǭ +Ǯ +ǯ +ǰ +DZ +Dz +dz +Ǵ +ǵ +Ƕ +Ƿ +Ǹ +ǹ +Ǻ +ǻ +Ǽ +ǽ +Ǿ +ǿ +Ȁ +ȁ +Ȃ +ȃ +Ȅ +ȅ +Ȇ +ȇ +Ȉ +ȉ +Ȋ +ȋ +Ȍ +ȍ +Ȏ +ȏ +Ȑ +ȑ +Ȓ +ȓ +Ȕ +ȕ +Ȗ +ȗ +Ș +ș +Ț +ț +Ȝ +ȝ +Ȟ +ȟ +Ƞ +ȡ +Ȣ +ȣ +Ȥ +ȥ +Ȧ +ȧ +Ȩ +ȩ +Ȫ +ȫ +Ȭ +ȭ +Ȯ +ȯ +Ȱ +ȱ +Ȳ +ȳ +ȴ +ȵ +ȶ +ȷ +ȸ +ȹ +Ⱥ +Ȼ +ȼ +Ƚ +Ⱦ +ȿ +ɀ +Ɂ +ɂ +Ƀ +Ʉ +Ʌ +Ɇ +ɇ +Ɉ +ɉ +Ɋ +ɋ +Ɍ +ɍ +Ɏ +ɏ +ɐ +ɑ +ɒ +ɓ +ɔ +ɕ +ɖ +ɗ +ɘ +ə +ɚ +ɛ +ɜ +ɝ +ɞ +ɟ +ɠ +ɡ +ɢ +ɣ +ɤ +ɥ +ɦ +ɧ +ɨ +ɩ +ɪ +ɫ +ɬ +ɭ +ɮ +ɯ +ɰ +ɱ +ɲ +ɳ +ɴ +ɵ +ɶ +ɷ +ɸ +ɹ +ɺ +ɻ +ɼ +ɽ +ɾ +ɿ +ʀ +ʁ +ʂ +ʃ +ʄ +ʅ +ʆ +ʇ +ʈ +ʉ +ʊ +ʋ +ʌ +ʍ +ʎ +ʏ +ʐ +ʑ +ʒ +ʓ +ʔ +ʕ +ʖ +ʗ +ʘ +ʙ +ʚ +ʛ +ʜ +ʝ +ʞ +ʟ +ʠ +ʡ +ʢ +ʣ +ʤ +ʥ +ʦ +ʧ +ʨ +ʩ +ʪ +ʫ +ʬ +ʭ +ʮ +ʯ +ʰ +ʱ +ʲ +ʳ +ʴ +ʵ +ʶ +ʷ +ʸ +ʹ +ʺ +ʻ +ʼ +ʽ +ʾ +ʿ +ˀ +ˁ +˂ +˃ +˄ +˅ +ˆ +ˇ +ˈ +ˉ +ˊ +ˋ +ˌ +ˍ +ˎ +ˏ +ː +ˑ +˒ +˓ +˔ +˕ +˖ +˗ +˘ +˙ +˚ +˛ +˜ +˝ +˞ +˟ +ˠ +ˡ +ˢ +ˣ +ˤ +˥ +˦ +˧ +˨ +˩ +˪ +˫ +ˬ +˭ +ˮ +˯ +˰ +˱ +˲ +˳ +˴ +˵ +˶ +˷ +˸ +˹ +˺ +˻ +˼ +˽ +˾ +˿ +̀ +́ +̂ +̃ +̄ +̅ +̆ +̇ +̈ +̉ +̊ +̋ +̌ +̍ +̎ +̏ +̐ +̑ +̒ +̓ +̔ +̕ +̖ +̗ +̘ +̙ +̚ +̛ +̜ +̝ +̞ +̟ +̠ +̡ +̢ +̣ +̤ +̥ +̦ +̧ +̨ +̩ +̪ +̫ +̬ +̭ +̮ +̯ +̰ +̱ +̲ +̳ +̴ +̵ +̶ +̷ +̸ +̹ +̺ +̻ +̼ +̽ +̾ +̿ +̀ +́ +͂ +̓ +̈́ +ͅ +͆ +͇ +͈ +͉ +͊ +͋ +͌ +͍ +͎ +͏ +͐ +͑ +͒ +͓ +͔ +͕ +͖ +͗ +͘ +͙ +͚ +͛ +͜ +͝ +͞ +͟ +͠ +͡ +͢ +ͣ +ͤ +ͥ +ͦ +ͧ +ͨ +ͩ +ͪ +ͫ +ͬ +ͭ +ͮ +ͯ +Ͱ +ͱ +Ͳ +ͳ +ʹ +͵ +Ͷ +ͷ +͸ +͹ +ͺ +ͻ +ͼ +ͽ +; +Ϳ +΀ +΁ +΂ +΃ +΄ +΅ +Ά +· +Έ +Ή +Ί +΋ +Ό +΍ +Ύ +Ώ +ΐ +Α +Β +Γ +Δ +Ε +Ζ +Η +Θ +Ι +Κ +Λ +Μ +Ν +Ξ +Ο +Π +Ρ +΢ +Σ +Τ +Υ +Φ +Χ +Ψ +Ω +Ϊ +Ϋ +ά +έ +ή +ί +ΰ +α +β +γ +δ +ε +ζ +η +θ +ι +κ +λ +μ +ν +ξ +ο +π +ρ +ς +σ +τ +υ +φ +χ +ψ +ω +ϊ +ϋ +ό +ύ +ώ +Ϗ +ϐ +ϑ +ϒ +ϓ +ϔ +ϕ +ϖ +ϗ +Ϙ +ϙ +Ϛ +ϛ +Ϝ +ϝ +Ϟ +ϟ +Ϡ +ϡ +Ϣ +ϣ +Ϥ +ϥ +Ϧ +ϧ +Ϩ +ϩ +Ϫ +ϫ +Ϭ +ϭ +Ϯ +ϯ +ϰ +ϱ +ϲ +ϳ +ϴ +ϵ +϶ +Ϸ +ϸ +Ϲ +Ϻ +ϻ +ϼ +Ͻ +Ͼ +Ͽ +Ѐ +Ё +Ђ +Ѓ +Є +Ѕ +І +Ї +Ј +Љ +Њ +Ћ +Ќ +Ѝ +Ў +Џ +А +Б +В +Г +Д +Е +Ж +З +И +Й +К +Л +М +Н +О +П +Р +С +Т +У +Ф +Х +Ц +Ч +Ш +Щ +Ъ +Ы +Ь +Э +Ю +Я +а +б +в +г +д +е +ж +з +и +й +к +л +м +н +о +п +р +с +т +у +ф +х +ц +ч +ш +щ +ъ +ы +ь +э +ю +я +ѐ +ё +ђ +ѓ +є +ѕ +і +ї +ј +љ +њ +ћ +ќ +ѝ +ў +џ +Ѡ +ѡ +Ѣ +ѣ +Ѥ +ѥ +Ѧ +ѧ +Ѩ +ѩ +Ѫ +ѫ +Ѭ +ѭ +Ѯ +ѯ +Ѱ +ѱ +Ѳ +ѳ +Ѵ +ѵ +Ѷ +ѷ +Ѹ +ѹ +Ѻ +ѻ +Ѽ +ѽ +Ѿ +ѿ +Ҁ +ҁ +҂ +҃ +҄ +҅ +҆ +҇ +҈ +҉ +Ҋ +ҋ +Ҍ +ҍ +Ҏ +ҏ +Ґ +ґ +Ғ +ғ +Ҕ +ҕ +Җ +җ +Ҙ +ҙ +Қ +қ +Ҝ +ҝ +Ҟ +ҟ +Ҡ +ҡ +Ң +ң +Ҥ +ҥ +Ҧ +ҧ +Ҩ +ҩ +Ҫ +ҫ +Ҭ +ҭ +Ү +ү +Ұ +ұ +Ҳ +ҳ +Ҵ +ҵ +Ҷ +ҷ +Ҹ +ҹ +Һ +һ +Ҽ +ҽ +Ҿ +ҿ +Ӏ +Ӂ +ӂ +Ӄ +ӄ +Ӆ +ӆ +Ӈ +ӈ +Ӊ +ӊ +Ӌ +ӌ +Ӎ +ӎ +ӏ +Ӑ +ӑ +Ӓ +ӓ +Ӕ +ӕ +Ӗ +ӗ +Ә +ә +Ӛ +ӛ +Ӝ +ӝ +Ӟ +ӟ +Ӡ +ӡ +Ӣ +ӣ +Ӥ +ӥ +Ӧ +ӧ +Ө +ө +Ӫ +ӫ +Ӭ +ӭ +Ӯ +ӯ +Ӱ +ӱ +Ӳ +ӳ +Ӵ +ӵ +Ӷ +ӷ +Ӹ +ӹ +Ӻ +ӻ +Ӽ +ӽ +Ӿ +ӿ +Ԁ +ԁ +Ԃ +ԃ +Ԅ +ԅ +Ԇ +ԇ +Ԉ +ԉ +Ԋ +ԋ +Ԍ +ԍ +Ԏ +ԏ +Ԑ +ԑ +Ԓ +ԓ +Ԕ +ԕ +Ԗ +ԗ +Ԙ +ԙ +Ԛ +ԛ +Ԝ +ԝ +Ԟ +ԟ +Ԡ +ԡ +Ԣ +ԣ +Ԥ +ԥ +Ԧ +ԧ +Ԩ +ԩ +Ԫ +ԫ +Ԭ +ԭ +Ԯ +ԯ +԰ +Ա +Բ +Գ +Դ +Ե +Զ +Է +Ը +Թ +Ժ +Ի +Լ +Խ +Ծ +Կ +Հ +Ձ +Ղ +Ճ +Մ +Յ +Ն +Շ +Ո +Չ +Պ +Ջ +Ռ +Ս +Վ +Տ +Ր +Ց +Ւ +Փ +Ք +Օ +Ֆ +՗ +՘ +ՙ +՚ +՛ +՜ +՝ +՞ +՟ +ՠ +ա +բ +գ +դ +ե +զ +է +ը +թ +ժ +ի +լ +խ +ծ +կ +հ +ձ +ղ +ճ +մ +յ +ն +շ +ո +չ +պ +ջ +ռ +ս +վ +տ +ր +ց +ւ +փ +ք +օ +ֆ +և +ֈ +։ +֊ +֋ +֌ +֍ +֎ +֏ +֐ +֑ +֒ +֓ +֔ +֕ +֖ +֗ +֘ +֙ +֚ +֛ +֜ +֝ +֞ +֟ +֠ +֡ +֢ +֣ +֤ +֥ +֦ +֧ +֨ +֩ +֪ +֫ +֬ +֭ +֮ +֯ +ְ +ֱ +ֲ +ֳ +ִ +ֵ +ֶ +ַ +ָ +ֹ +ֺ +ֻ +ּ +ֽ +־ +ֿ +׀ +ׁ +ׂ +׃ +ׄ +ׅ +׆ +ׇ +׈ +׉ +׊ +׋ +׌ +׍ +׎ +׏ +א +ב +ג +ד +ה +ו +ז +ח +ט +י +ך +כ +ל +ם +מ +ן +נ +ס +ע +ף +פ +ץ +צ +ק +ר +ש +ת +׫ +׬ +׭ +׮ +ׯ +װ +ױ +ײ +׳ +״ +׵ +׶ +׷ +׸ +׹ +׺ +׻ +׼ +׽ +׾ +׿ +؀ +؁ +؂ +؃ +؄ +؅ +؆ +؇ +؈ +؉ +؊ +؋ +، +؍ +؎ +؏ +ؐ +ؑ +ؒ +ؓ +ؔ +ؕ +ؖ +ؗ +ؘ +ؙ +ؚ +؛ +؜ +؝ +؞ +؟ +ؠ +ء +آ +أ +ؤ +إ +ئ +ا +ب +ة +ت +ث +ج +ح +خ +د +ذ +ر +ز +س +ش +ص +ض +ط +ظ +ع +غ +ػ +ؼ +ؽ +ؾ +ؿ +ـ +ف +ق +ك +ل +م +ن +ه +و +ى +ي +ً +ٌ +ٍ +َ +ُ +ِ +ّ +ْ +ٓ +ٔ +ٕ +ٖ +ٗ +٘ +ٙ +ٚ +ٛ +ٜ +ٝ +ٞ +ٟ +٠ +١ +٢ +٣ +٤ +٥ +٦ +٧ +٨ +٩ +٪ +٫ +٬ +٭ +ٮ +ٯ +ٰ +ٱ +ٲ +ٳ +ٴ +ٵ +ٶ +ٷ +ٸ +ٹ +ٺ +ٻ +ټ +ٽ +پ +ٿ +ڀ +ځ +ڂ +ڃ +ڄ +څ +چ +ڇ +ڈ +ډ +ڊ +ڋ +ڌ +ڍ +ڎ +ڏ +ڐ +ڑ +ڒ +ړ +ڔ +ڕ +ږ +ڗ +ژ +ڙ +ښ +ڛ +ڜ +ڝ +ڞ +ڟ +ڠ +ڡ +ڢ +ڣ +ڤ +ڥ +ڦ +ڧ +ڨ +ک +ڪ +ګ +ڬ +ڭ +ڮ +گ +ڰ +ڱ +ڲ +ڳ +ڴ +ڵ +ڶ +ڷ +ڸ +ڹ +ں +ڻ +ڼ +ڽ +ھ +ڿ +ۀ +ہ +ۂ +ۃ +ۄ +ۅ +ۆ +ۇ +ۈ +ۉ +ۊ +ۋ +ی +ۍ +ێ +ۏ +ې +ۑ +ے +ۓ +۔ +ە +ۖ +ۗ +ۘ +ۙ +ۚ +ۛ +ۜ +۝ +۞ +۟ +۠ +ۡ +ۢ +ۣ +ۤ +ۥ +ۦ +ۧ +ۨ +۩ +۪ +۫ +۬ +ۭ +ۮ +ۯ +۰ +۱ +۲ +۳ +۴ +۵ +۶ +۷ +۸ +۹ +ۺ +ۻ +ۼ +۽ +۾ +ۿ +܀ +܁ +܂ +܃ +܄ +܅ +܆ +܇ +܈ +܉ +܊ +܋ +܌ +܍ +܎ +܏ +ܐ +ܑ +ܒ +ܓ +ܔ +ܕ +ܖ +ܗ +ܘ +ܙ +ܚ +ܛ +ܜ +ܝ +ܞ +ܟ +ܠ +ܡ +ܢ +ܣ +ܤ +ܥ +ܦ +ܧ +ܨ +ܩ +ܪ +ܫ +ܬ +ܭ +ܮ +ܯ +ܰ +ܱ +ܲ +ܳ +ܴ +ܵ +ܶ +ܷ +ܸ +ܹ +ܺ +ܻ +ܼ +ܽ +ܾ +ܿ +݀ +݁ +݂ +݃ +݄ +݅ +݆ +݇ +݈ +݉ +݊ +݋ +݌ +ݍ +ݎ +ݏ +ݐ +ݑ +ݒ +ݓ +ݔ +ݕ +ݖ +ݗ +ݘ +ݙ +ݚ +ݛ +ݜ +ݝ +ݞ +ݟ +ݠ +ݡ +ݢ +ݣ +ݤ +ݥ +ݦ +ݧ +ݨ +ݩ +ݪ +ݫ +ݬ +ݭ +ݮ +ݯ +ݰ +ݱ +ݲ +ݳ +ݴ +ݵ +ݶ +ݷ +ݸ +ݹ +ݺ +ݻ +ݼ +ݽ +ݾ +ݿ +ހ +ށ +ނ +ރ +ބ +ޅ +ކ +އ +ވ +މ +ފ +ދ +ތ +ލ +ގ +ޏ +ސ +ޑ +ޒ +ޓ +ޔ +ޕ +ޖ +ޗ +ޘ +ޙ +ޚ +ޛ +ޜ +ޝ +ޞ +ޟ +ޠ +ޡ +ޢ +ޣ +ޤ +ޥ +ަ +ާ +ި +ީ +ު +ޫ +ެ +ޭ +ޮ +ޯ +ް +ޱ +޲ +޳ +޴ +޵ +޶ +޷ +޸ +޹ +޺ +޻ +޼ +޽ +޾ +޿ +߀ +߁ +߂ +߃ +߄ +߅ +߆ +߇ +߈ +߉ +ߊ +ߋ +ߌ +ߍ +ߎ +ߏ +ߐ +ߑ +ߒ +ߓ +ߔ +ߕ +ߖ +ߗ +ߘ +ߙ +ߚ +ߛ +ߜ +ߝ +ߞ +ߟ +ߠ +ߡ +ߢ +ߣ +ߤ +ߥ +ߦ +ߧ +ߨ +ߩ +ߪ +߫ +߬ +߭ +߮ +߯ +߰ +߱ +߲ +߳ +ߴ +ߵ +߶ +߷ +߸ +߹ +ߺ +߻ +߼ +߽ +߾ +߿ +一 +丁 +丂 +七 +丄 +丅 +丆 +万 +丈 +三 +上 +下 +丌 +不 +与 +丏 +丐 +丑 +丒 +专 +且 +丕 +世 +丗 +丘 +丙 +业 +丛 +东 +丝 +丞 +丟 +丠 +両 +丢 +丣 +两 +严 +並 +丧 +丨 +丩 +个 +丫 +丬 +中 +丮 +丯 +丰 +丱 +串 +丳 +临 +丵 +丶 +丷 +丸 +丹 +为 +主 +丼 +丽 +举 +丿 +乀 +乁 +乂 +乃 +乄 +久 +乆 +乇 +么 +义 +乊 +之 +乌 +乍 +乎 +乏 +乐 +乑 +乒 +乓 +乔 +乕 +乖 +乗 +乘 +乙 +乚 +乛 +乜 +九 +乞 +也 +习 +乡 +乢 +乣 +乤 +乥 +书 +乧 +乨 +乩 +乪 +乫 +乬 +乭 +乮 +乯 +买 +乱 +乲 +乳 +乴 +乵 +乶 +乷 +乸 +乹 +乺 +乻 +乼 +乽 +乾 +乿 +亀 +亁 +亂 +亃 +亄 +亅 +了 +亇 +予 +争 +亊 +事 +二 +亍 +于 +亏 +亐 +云 +互 +亓 +五 +井 +亖 +亗 +亘 +亙 +亚 +些 +亜 +亝 +亞 +亟 +亠 +亡 +亢 +亣 +交 +亥 +亦 +产 +亨 +亩 +亪 +享 +京 +亭 +亮 +亯 +亰 +亱 +亲 +亳 +亴 +亵 +亶 +亷 +亸 +亹 +人 +亻 +亼 +亽 +亾 +亿 +什 +仁 +仂 +仃 +仄 +仅 +仆 +仇 +仈 +仉 +今 +介 +仌 +仍 +从 +仏 +仐 +仑 +仒 +仓 +仔 +仕 +他 +仗 +付 +仙 +仚 +仛 +仜 +仝 +仞 +仟 +仠 +仡 +仢 +代 +令 +以 +仦 +仧 +仨 +仩 +仪 +仫 +们 +仭 +仮 +仯 +仰 +仱 +仲 +仳 +仴 +仵 +件 +价 +仸 +仹 +仺 +任 +仼 +份 +仾 +仿 +伀 +企 +伂 +伃 +伄 +伅 +伆 +伇 +伈 +伉 +伊 +伋 +伌 +伍 +伎 +伏 +伐 +休 +伒 +伓 +伔 +伕 +伖 +众 +优 +伙 +会 +伛 +伜 +伝 +伞 +伟 +传 +伡 +伢 +伣 +伤 +伥 +伦 +伧 +伨 +伩 +伪 +伫 +伬 +伭 +伮 +伯 +估 +伱 +伲 +伳 +伴 +伵 +伶 +伷 +伸 +伹 +伺 +伻 +似 +伽 +伾 +伿 +佀 +佁 +佂 +佃 +佄 +佅 +但 +佇 +佈 +佉 +佊 +佋 +佌 +位 +低 +住 +佐 +佑 +佒 +体 +佔 +何 +佖 +佗 +佘 +余 +佚 +佛 +作 +佝 +佞 +佟 +你 +佡 +佢 +佣 +佤 +佥 +佦 +佧 +佨 +佩 +佪 +佫 +佬 +佭 +佮 +佯 +佰 +佱 +佲 +佳 +佴 +併 +佶 +佷 +佸 +佹 +佺 +佻 +佼 +佽 +佾 +使 +侀 +侁 +侂 +侃 +侄 +侅 +來 +侇 +侈 +侉 +侊 +例 +侌 +侍 +侎 +侏 +侐 +侑 +侒 +侓 +侔 +侕 +侖 +侗 +侘 +侙 +侚 +供 +侜 +依 +侞 +侟 +侠 +価 +侢 +侣 +侤 +侥 +侦 +侧 +侨 +侩 +侪 +侫 +侬 +侭 +侮 +侯 +侰 +侱 +侲 +侳 +侴 +侵 +侶 +侷 +侸 +侹 +侺 +侻 +侼 +侽 +侾 +便 +俀 +俁 +係 +促 +俄 +俅 +俆 +俇 +俈 +俉 +俊 +俋 +俌 +俍 +俎 +俏 +俐 +俑 +俒 +俓 +俔 +俕 +俖 +俗 +俘 +俙 +俚 +俛 +俜 +保 +俞 +俟 +俠 +信 +俢 +俣 +俤 +俥 +俦 +俧 +俨 +俩 +俪 +俫 +俬 +俭 +修 +俯 +俰 +俱 +俲 +俳 +俴 +俵 +俶 +俷 +俸 +俹 +俺 +俻 +俼 +俽 +俾 +俿 diff --git a/mysql-test/std_data/numbers.txt b/mysql-test/std_data/numbers.txt new file mode 100644 index 00000000000..483dd4ad31d --- /dev/null +++ b/mysql-test/std_data/numbers.txt @@ -0,0 +1,9 @@ +2 +3 +5 +7 +11 +13 +17 +23 +29 diff --git a/mysql-test/t/auto_commit_basic.test b/mysql-test/t/auto_commit_basic.test new file mode 100644 index 00000000000..0ea070ded59 --- /dev/null +++ b/mysql-test/t/auto_commit_basic.test @@ -0,0 +1,190 @@ +############## mysql-test\t\auto_commit_basic.test ############################# +# # +# Variable Name: autocommit # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: NA # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "autocommit" # +# that checks behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: (Not Mentioned on website) # +# # +################################################################################ + +--source include/load_sysvars.inc + +######################################################################## +# START OF autocommit TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of autocommit in a temporary variable # +######################################################################## + +SET @start_value = @@autocommit; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_003_01------------------------#' +######################################################################## +# Display the DEFAULT value of autocommit # +######################################################################## + +SET @@autocommit = 0; +SET @@autocommit = DEFAULT; +SELECT @@autocommit; +echo 'Bug: variable DEFAULT value not working and is not throwing error'; + +--echo '#---------------------FN_DYNVARS_003_02-------------------------#' +############################################### +# Check default value of variable # +############################################### + +SET @@autocommit = @start_value; +SELECT @@autocommit = 1; + + +--echo '#--------------------FN_DYNVARS_003_03------------------------#' +######################################################################## +# Change the value of autocommit to a valid value # +######################################################################## +SET @@autocommit = 0; +SELECT @@autocommit; +SET @@autocommit = 1; +SELECT @@autocommit; + + +--echo '#--------------------FN_DYNVARS_003_04-------------------------#' +########################################################################### +# Change the value of autocommit to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@autocommit = ''; + + +--echo '#-------------------FN_DYNVARS_003_05----------------------------#' +########################################################################### +# Test if accessing global autocommit gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.autocommit = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.autocommit; + + +--echo '#----------------------FN_DYNVARS_003_06------------------------#' +######################################################################### +# Check if the value in SESSION Table matches value in variable # +######################################################################### + +SELECT @@session.autocommit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='autocommit'; +--echo Bug # 34839: Values in variable and information_schema do not match for autocommit + +--echo '#----------------------FN_DYNVARS_003_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SET @@autocommit = 1; +SELECT @@autocommit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='autocommit'; + +--echo '#---------------------FN_DYNVARS_003_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@autocommit = OFF; +SELECT @@autocommit; +SET @@autocommit = ON; +SELECT @@autocommit; + +--echo '#---------------------FN_DYNVARS_003_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@autocommit = TRUE; +SELECT @@autocommit; +SET @@autocommit = FALSE; +SELECT @@autocommit; + + +--echo '#---------------------FN_DYNVARS_003_10----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@autocommit = 0; +SELECT @@autocommit = @@local.autocommit; +SELECT @@local.autocommit = @@session.autocommit; +SET @@autocommit = 1; +SELECT @@autocommit = @@local.autocommit; +SELECT @@session.autocommit = @@autocommit; + + +--echo '#---------------------FN_DYNVARS_003_11----------------------#' +##################################################################### +# Check if autocommit can be accessed with and without @@ sign # +##################################################################### + +SET autocommit = 1; +SELECT @@autocommit; +--Error ER_UNKNOWN_TABLE +SELECT local.autocommit; +--Error ER_UNKNOWN_TABLE +SELECT session.autocommit; +--Error ER_BAD_FIELD_ERROR +SELECT autocommit = @@session.autocommit; + + +############################## +# Restore initial value # +############################## + +SET @@autocommit = @start_value; +SELECT @@autocommit; + +######################################################################## +# END OF autocommit TESTS # +######################################################################## diff --git a/mysql-test/t/auto_increment_increment_basic.test b/mysql-test/t/auto_increment_increment_basic.test new file mode 100644 index 00000000000..4acfb8f503b --- /dev/null +++ b/mysql-test/t/auto_increment_increment_basic.test @@ -0,0 +1,208 @@ +############## mysql-test\t\auto_increment_increment_basic.test ################ +# # +# Variable Name: auto_increment_increment # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "auto_increment_increment"# +# that checks 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#option_mysqld_auto-increment-increment # +# # +################################################################################ + +--source include/load_sysvars.inc + +######################################################################## +# START OF auto_increment_increment TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.auto_increment_increment; +SELECT @start_global_value; +SET @start_session_value = @@session.auto_increment_increment; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_001_01-------------------------#' +######################################################################## +# Display the DEFAULT value of auto_increment_increment # +######################################################################## + +SET @@global.auto_increment_increment = 100; +SET @@global.auto_increment_increment = DEFAULT; +SELECT @@global.auto_increment_increment; + +SET @@session.auto_increment_increment = 200; +SET @@session.auto_increment_increment = DEFAULT; +SELECT @@session.auto_increment_increment; + + +--echo '#--------------------FN_DYNVARS_001_02-------------------------#' +######################################################################## +# Check the DEFAULT value of auto_increment_increment # +######################################################################## + +SET @@global.auto_increment_increment = DEFAULT; +SELECT @@global.auto_increment_increment = 1; + +SET @@session.auto_increment_increment = DEFAULT; +SELECT @@session.auto_increment_increment = 1; + + +--echo '#--------------------FN_DYNVARS_001_03-------------------------#' +################################################################## +# Change the value of variable to a valid value for GLOBAL Scope # +################################################################## + +SET @@global.auto_increment_increment = 1; +SELECT @@global.auto_increment_increment; +SET @@global.auto_increment_increment = 60020; +SELECT @@global.auto_increment_increment; +SET @@global.auto_increment_increment = 65535; +SELECT @@global.auto_increment_increment; + + +--echo '#--------------------FN_DYNVARS_001_04-------------------------#' +################################################################### +# Change the value of variable to a valid value for SESSION Scope # +################################################################### + +SET @@session.auto_increment_increment = 1; +SELECT @@session.auto_increment_increment; +SET @@session.auto_increment_increment = 50050; +SELECT @@session.auto_increment_increment; +SET @@session.auto_increment_increment = 65535; +SELECT @@session.auto_increment_increment; + + +--echo '#------------------FN_DYNVARS_001_05-----------------------#' +#################################################################### +# Change the value of auto_increment_increment to an invalid value # +#################################################################### + +SET @@global.auto_increment_increment = 0; +SELECT @@global.auto_increment_increment; +SET @@global.auto_increment_increment = -1024; +SELECT @@global.auto_increment_increment; +SET @@global.auto_increment_increment = 65536; +SELECT @@global.auto_increment_increment; +--Error ER_PARSE_ERROR +SET @@global.auto_increment_increment = 65530.34.; +SELECT @@global.auto_increment_increment; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.auto_increment_increment = test; +SELECT @@global.auto_increment_increment; + +SET @@session.auto_increment_increment = 0; +SELECT @@session.auto_increment_increment; +SET @@session.auto_increment_increment = -2; +SELECT @@session.auto_increment_increment; +--Error ER_PARSE_ERROR +SET @@session.auto_increment_increment = 65530.34.; +SET @@session.auto_increment_increment = 65550; +SELECT @@session.auto_increment_increment; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.auto_increment_increment = test; +SELECT @@session.auto_increment_increment; + + +--echo '#------------------FN_DYNVARS_001_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.auto_increment_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='auto_increment_increment'; + + +--echo '#------------------FN_DYNVARS_001_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.auto_increment_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='auto_increment_increment'; + + +--echo '#------------------FN_DYNVARS_001_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.auto_increment_increment = TRUE; +SELECT @@global.auto_increment_increment; +SET @@global.auto_increment_increment = FALSE; +SELECT @@global.auto_increment_increment; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +############################################################################### +# Check if global and session variables are independant of each other # +############################################################################### + +SET @@global.auto_increment_increment = 10; +SET @@session.auto_increment_increment = 11; +SELECT @@auto_increment_increment = @@global.auto_increment_increment; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@auto_increment_increment = 100; +SELECT @@auto_increment_increment = @@local.auto_increment_increment; +SELECT @@local.auto_increment_increment = @@session.auto_increment_increment; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +############################################################################### +# Check if auto_increment_increment can be accessed with and without @@ sign # +############################################################################### + +SET auto_increment_increment = 1; +SELECT @@auto_increment_increment; +--Error ER_UNKNOWN_TABLE +SELECT local.auto_increment_increment; +--Error ER_UNKNOWN_TABLE +SELECT session.auto_increment_increment; +--Error ER_BAD_FIELD_ERROR +SELECT auto_increment_increment = @@session.auto_increment_increment; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.auto_increment_increment = @start_global_value; +SELECT @@global.auto_increment_increment; +SET @@session.auto_increment_increment = @start_session_value; +SELECT @@session.auto_increment_increment; + + +############################################################# +# END OF auto_increment_increment TESTS # +############################################################# + diff --git a/mysql-test/t/auto_increment_increment_func.test b/mysql-test/t/auto_increment_increment_func.test new file mode 100644 index 00000000000..7822775fb35 --- /dev/null +++ b/mysql-test/t/auto_increment_increment_func.test @@ -0,0 +1,202 @@ +############## mysql-test\t\auto_increment_increment_func.test ################ +# # +# Variable Name: auto_increment_increment # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "auto_increment_increment"# +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_auto-increment-increment # +# # +################################################################################ + +# save vars +SET @global_auto_increment_increment = @@global.auto_increment_increment; +SET @session_auto_increment_increment = @@session.auto_increment_increment; +SET @global_auto_increment_offset = @@global.auto_increment_offset; +SET @session_auto_increment_offset = @@session.auto_increment_offset; + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_001_01-------------------------#' +########################################################## +# Setting initial value of auto_increment_increment # +########################################################## + +--echo ## Setting initial value of auto_increment_increment to 5 ## +SET @@auto_increment_increment = 5; + + +--echo '#--------------------FN_DYNVARS_001_02-------------------------#' +########################################################################### +# Inserting first value in table to check auto_increment_increment initial +# behavior +########################################################################### + +--echo ## Inserting first record in table to check behavior of the variable ## +INSERT into t1(name) values('Record_1'); +SELECT * from t1; + +--echo ## Changing value of variable to 10 ## +SET @@global.auto_increment_increment = 10; + +--echo ## Inserting record and verifying value of column id ## +INSERT into t1(name) values('Record_2'); +SELECT * from t1; + + +--echo ## Test behavior of variable after assigning some larger value to it ## +SELECT @@auto_increment_increment; +SET @@auto_increment_increment = 100; +INSERT into t1(name) values('Record_5'); +SELECT * from t1; + + +--echo '#--------------------FN_DYNVARS_001_03-------------------------#' +########################################################## +# Test behavior of variable on new connection # 01 # +########################################################## + +--echo ## Creating new connection test_con1 ## +CONNECT (test_con1,localhost,root,,); +CONNECTION test_con1; + +--echo ## Value of session & global vairable here should be 10 ## +SELECT @@global.auto_increment_increment = 10; +SELECT @@session.auto_increment_increment = 10; + +--echo ## Setting global value of variable and inserting data in table ## +SET @@global.auto_increment_increment = 20; +SELECT @@global.auto_increment_increment; +INSERT into t1(name) values('Record_6'); +SELECT * from t1; + +--echo ## Setting session value of variable and inserting data in table ## +SET @@session.auto_increment_increment = 2; +SELECT @@session.auto_increment_increment; +INSERT into t1(name) values('Record_8'); +INSERT into t1(name) values('Record_9'); +SELECT * from t1; + + +--echo '#--------------------FN_DYNVARS_001_04-------------------------#' +########################################################## +# Test behavior of variable on new connection # 02 # +########################################################## + +--echo ## Creating another new connection test_con2 ## +CONNECT (test_con2,localhost,root,,); +connection test_con2; + +--echo ## Verifying initial values of variable in global & session scope ## +--echo ## global & session initial value should be 20 ## +SELECT @@global.auto_increment_increment = 20; +SELECT @@session.auto_increment_increment = 20; + +--echo ## Setting value of session variable to 5 and verifying its behavior ## +SET @@session.auto_increment_increment = 5; +INSERT into t1(name) values('Record_10'); +SELECT * from t1; +--echo 'Bug#35362: Here Record_10 id should be 120 instead of 115 because we' +--echo 'have set the value of variable to 5' + +SET @@session.auto_increment_increment = 1; +SELECT @@auto_increment_increment; +SELECT @@global.auto_increment_increment; + + +--echo '#--------------------FN_DYNVARS_001_05-------------------------#' +##################################################################### +# Verify variable's value of connection # 01 after processing on +# connection # 02 +##################################################################### + +--echo ## Switching to test_con1 ## +connection test_con1; + +--echo ## Verifying values of global & session value of variable ## +--echo ## global value should be 20 ## +SELECT @@global.auto_increment_increment = 20; + +--echo ## session value should be 2 ## +SELECT @@session.auto_increment_increment = 2; + +INSERT into t1(name) values('Record_11'); +INSERT into t1(name) values('Record_12'); +SELECT * from t1; + + +--echo '#--------------------FN_DYNVARS_001_06-------------------------#' +############################################################################### +# Altering table field to different datatypes and checking their behavior # +############################################################################### + +--echo ## Changing column's datatype to SmallInt and verifying variable's behavior ## +ALTER table t1 MODIFY id SMALLINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_13'); +INSERT into t1(name) values('Record_14'); +SELECT * from t1; + +--echo ## Changing column's datatype to BigInt and verifying variable's behavior ## +ALTER table t1 MODIFY id BIGINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_15'); +INSERT into t1(name) values('Record_16'); +SELECT * from t1; + +--echo '#--------------------FN_DYNVARS_001_07-------------------------#' +############################################################################### +# Check behavior of variable after assigning invalid value # +############################################################################### + +--echo ## Verifying behavior of variable with negative value ## +SET @@auto_increment_increment = -10; +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +SELECT * from t1; + +--echo 'Bug#35364: Variable is incrementing some random values on assigning -ve value' + + +############################################################ +# Disconnecting all connection & dropping table # +############################################################ + +--echo ## Disconnecting test_con2 ## +DISCONNECT test_con2; + +--echo ## Dropping table t1 ## +DROP table if exists t1; + +--echo ## Disconnecting test_con1 ## +DISCONNECT test_con1; + +--echo ## switching to default connection ## +connection default; + +# restore vars +SET @@global.auto_increment_increment = @global_auto_increment_increment; +SET @@session.auto_increment_increment = @session_auto_increment_increment; +SET @@global.auto_increment_offset = @global_auto_increment_offset; +SET @@session.auto_increment_offset = @session_auto_increment_offset; diff --git a/mysql-test/t/auto_increment_offset_basic.test b/mysql-test/t/auto_increment_offset_basic.test new file mode 100644 index 00000000000..a98fd6467ad --- /dev/null +++ b/mysql-test/t/auto_increment_offset_basic.test @@ -0,0 +1,214 @@ +############## mysql-test\t\auto_increment_offset_basic.test ################### +# # +# Variable Name: auto_increment_offset # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "auto_increment_offset" # +# that checks 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#option_mysqld_auto-increment-offset # +# # +################################################################################ + +--source include/load_sysvars.inc + +##################################################################### +# START OF auto_increment_offset TESTS # +##################################################################### + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.auto_increment_offset; +SELECT @start_global_value; +SET @start_session_value = @@session.auto_increment_offset; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_002_01-------------------------#' +##################################################################### +# Display the DEFAULT value of auto_increment_offset # +##################################################################### + +SET @@global.auto_increment_offset = 100; +SET @@global.auto_increment_offset = DEFAULT; +SELECT @@global.auto_increment_offset; + +SET @@session.auto_increment_offset = 200; +SET @@session.auto_increment_offset = DEFAULT; +SELECT @@session.auto_increment_offset; + + +--echo '#--------------------FN_DYNVARS_002_02-------------------------#' +##################################################################### +# Check the DEFAULT value of auto_increment_offset # +##################################################################### + +SET @@global.auto_increment_offset = @start_global_value; +SELECT @@global.auto_increment_offset = 1; +SET @@session.auto_increment_offset = @start_session_value; +SELECT @@session.auto_increment_offset = 1; + + +--echo '#--------------------FN_DYNVARS_002_03-------------------------#' +############################################################################### +# Change the value of auto_increment_offset to a valid value for GLOBAL Scope # +############################################################################### + +SET @@global.auto_increment_offset = 1; +SELECT @@global.auto_increment_offset; +SET @@global.auto_increment_offset = 60020; +SELECT @@global.auto_increment_offset; +SET @@global.auto_increment_offset = 65535; +SELECT @@global.auto_increment_offset; + + +--echo '#--------------------FN_DYNVARS_002_04-------------------------#' +############################################################################### +# Change the value of auto_increment_offset to a valid value for SESSION Scope# +############################################################################### + +SET @@session.auto_increment_offset = 1; +SELECT @@session.auto_increment_offset; +SET @@session.auto_increment_offset = 50050; +SELECT @@session.auto_increment_offset; +SET @@session.auto_increment_offset = 65535; +SELECT @@session.auto_increment_offset; + + +--echo '#------------------FN_DYNVARS_002_05-----------------------#' +################################################################# +# Change the value of auto_increment_offset to an invalid value # +################################################################# +# for global scope +SET @@global.auto_increment_offset = 0; +SELECT @@global.auto_increment_offset; +SET @@global.auto_increment_offset = -1024; +SELECT @@global.auto_increment_offset; +SET @@global.auto_increment_offset = 65536; +SELECT @@global.auto_increment_offset; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.auto_increment_offset = ON; +SELECT @@global.auto_increment_offset; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.auto_increment_offset = OFF; +SELECT @@global.auto_increment_offset; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.auto_increment_offset = test; +SELECT @@global.auto_increment_offset; +# for session scope +SET @@session.auto_increment_offset = 0; +SELECT @@session.auto_increment_offset; +SET @@session.auto_increment_offset = -2; +SELECT @@session.auto_increment_offset; +SET @@session.auto_increment_offset = 65550; +SELECT @@session.auto_increment_offset; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.auto_increment_offset = ON; +SELECT @@session.auto_increment_offset; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.auto_increment_offset = OFF; +SELECT @@session.auto_increment_offset; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.auto_increment_offset = test; +SELECT @@session.auto_increment_offset; + + + +--echo '#------------------FN_DYNVARS_002_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.auto_increment_offset = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='auto_increment_offset'; + + +--echo '#------------------FN_DYNVARS_002_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.auto_increment_offset = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='auto_increment_offset'; + + +--echo '#------------------FN_DYNVARS_002_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.auto_increment_offset = TRUE; +SELECT @@global.auto_increment_offset; +SET @@global.auto_increment_offset = FALSE; +SELECT @@global.auto_increment_offset; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +############################################################################### +# Check if global and session variables are independant of each other # +############################################################################### + +SET @@global.auto_increment_offset = 10; +SET @@session.auto_increment_offset = 11; +SELECT @@auto_increment_offset = @@global.auto_increment_offset; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@auto_increment_offset = 100; +SELECT @@auto_increment_offset = @@local.auto_increment_offset; +SELECT @@local.auto_increment_offset = @@session.auto_increment_offset; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +############################################################################### +# Check if auto_increment_offset can be accessed with and without @@ sign # +############################################################################### + +SET auto_increment_offset = 1; +SELECT @@auto_increment_offset; +--Error ER_UNKNOWN_TABLE +SELECT local.auto_increment_offset; +--Error ER_UNKNOWN_TABLE +SELECT session.auto_increment_offset; +--Error ER_BAD_FIELD_ERROR +SELECT auto_increment_offset = @@session.auto_increment_offset; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.auto_increment_offset = @start_global_value; +SELECT @@global.auto_increment_offset; +SET @@session.auto_increment_offset = @start_session_value; +SELECT @@session.auto_increment_offset; + + +################################################### +# END OF auto_increment_offset TESTS # +################################################### + diff --git a/mysql-test/t/auto_increment_offset_func.test b/mysql-test/t/auto_increment_offset_func.test new file mode 100644 index 00000000000..7e1668452cc --- /dev/null +++ b/mysql-test/t/auto_increment_offset_func.test @@ -0,0 +1,200 @@ +############## mysql-test\t\auto_increment_offset_func.test #################### +# # +# Variable Name: auto_increment_offset # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "auto_increment_offset" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_auto-increment-offset # +# # +################################################################################ + +# save vars +SET @global_auto_increment_increment = @@global.auto_increment_increment; +SET @session_auto_increment_increment = @@session.auto_increment_increment; +SET @global_auto_increment_offset = @@global.auto_increment_offset; +SET @session_auto_increment_offset = @@session.auto_increment_offset; + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating New Table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_002_01-------------------------#' +####################################################### +# Setting initial value of auto_increment_offset # +####################################################### + +--echo ## Setting initial value of variable to 5 ## +SET @@auto_increment_increment = 10; +SET @@auto_increment_offset = 5; + + +--echo '#--------------------FN_DYNVARS_002_02-------------------------#' +########################################################################### +# Inserting first value in table to check auto_increment_offset initial +# behavior +########################################################################### + +--echo ## Inserting records in table and verifying variable's behavior ## +INSERT into t1(name) values('Record_1'); +SELECT * from t1; +INSERT into t1(name) values('Record_2'); +SELECT * from t1; + +--echo ## Test behavior of variable after updating value of variable ## +SET @@auto_increment_offset = 24; +SELECT @@auto_increment_offset; +INSERT into t1(name) values('Record_3'); +SELECT * from t1; +INSERT into t1(name) values('Record_4'); +SELECT * from t1; + + +--echo '#--------------------FN_DYNVARS_002_03-------------------------#' +########################################################## +# Test behavior of variable on new connection # 01 # +########################################################## + +--echo ## Changing value of global scope before opening new connection ## + +SET @@global.auto_increment_increment = 15; +SET @@global.auto_increment_offset = 36; + +--echo ## New connection test_con1 ## +CONNECT (test_con1,localhost,root,,); +CONNECTION test_con1; + +--echo ## Value of session & global vairable here should be 10 ## +SELECT @@global.auto_increment_offset = 36; +SELECT @@session.auto_increment_offset = 36; + +--echo ## Verify global value effect of variable by inserting new rows in table ## +INSERT into t1(name) values('Record_5'); +INSERT into t1(name) values('Record_6'); +SELECT * from t1; + +--echo ## Setting session value of variable and inserting data in table ## +SET @@session.auto_increment_offset = 54; +INSERT into t1(name) values('Record_7'); +INSERT into t1(name) values('Record_8'); +SELECT * from t1; + + +--echo '#--------------------FN_DYNVARS_002_04-------------------------#' +###################################################################### +# Test behavior of variable on assigning value to variable that is +# less than last index id +###################################################################### + +--echo ## Setting value of variable less than last insert id ## +SET @@session.auto_increment_offset = 5; +INSERT into t1(name) values('Record_9'); +--echo 'Bug#35367: Random value of id is increasing on assigning value to'; +--echo 'variable that is less than current offset'; +INSERT into t1(name) values('Record_10'); +INSERT into t1(name) values('Record_11'); +INSERT into t1(name) values('Record_12'); +SELECT * from t1; + + + +--echo '#--------------------FN_DYNVARS_002_05-------------------------#' +##################################################################### +# Verify variable's behavior on assigning value greater than +# auto_increment_increment value +##################################################################### + +--echo ## Assigning value to variable greater than auto_increment_incrent value ## +SET @@auto_increment_offset = 140; +SET @@auto_increment_increment = 10; + +INSERT into t1(name) values('Record_13'); +INSERT into t1(name) values('Record_14'); +SELECT * from t1; +--echo 'Bug#35369: Some invalid value of id is increasing on assigning value to'; +--echo 'variable that is greater than auto_increment_increment'; + + +--echo '#--------------------FN_DYNVARS_002_06-------------------------#' +############################################################################### +# Altering table field to different datatypes and checking their behavior # +############################################################################### + +--echo ## Changing datatype of column id with primary key to SmallInt ## +ALTER table t1 modify id SMALLINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_15'); +INSERT into t1(name) values('Record_16'); +SELECT * from t1; + +--echo ## Changing datatype of column id with primary key to BigInt ## +ALTER table t1 modify id BIGINT NOT NULL auto_increment; +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +SELECT * from t1; + +--echo '#--------------------FN_DYNVARS_002_07-------------------------#' +############################################################################### +# Check behavior of variable after assigning invalid values to variable # +############################################################################### + +--echo ## Assigning -ve value to variable ## +SET @@auto_increment_offset = -10; +SELECT @@auto_increment_offset = -10; +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +SELECT * from t1; +--echo 'Bug#35370: Some invalid value of id is increasing on assigning negative'; +--echo ' value in variable'; + +--echo ## Assigning value that is out of range of variable ## +SET @@auto_increment_offset = 65536; +SELECT @@auto_increment_offset; +INSERT into t1(name) values('Record_17'); +INSERT into t1(name) values('Record_18'); +INSERT into t1(name) values('Record_19'); +INSERT into t1(name) values('Record_20'); +SELECT * from t1; + +--echo ## No effect of auto_increment_offset since value of this variable is greater ## +--echo ## than auto_increment_increment ## + +############################################################ +# Disconnecting all connection & dropping table # +############################################################ + +--echo ## Dropping table ## +DROP table if exists t1; + +--echo ## Disconnecting connection ## +DISCONNECT test_con1; + +--echo ## switching to default connection ## +connection default; + +# restore vars +SET @@global.auto_increment_increment = @global_auto_increment_increment; +SET @@session.auto_increment_increment = @session_auto_increment_increment; +SET @@global.auto_increment_offset = @global_auto_increment_offset; +SET @@session.auto_increment_offset = @session_auto_increment_offset; diff --git a/mysql-test/t/autocommit_func-master.opt b/mysql-test/t/autocommit_func-master.opt new file mode 100644 index 00000000000..627becdbfb5 --- /dev/null +++ b/mysql-test/t/autocommit_func-master.opt @@ -0,0 +1 @@ +--innodb diff --git a/mysql-test/t/autocommit_func.test b/mysql-test/t/autocommit_func.test new file mode 100644 index 00000000000..07e15ce40da --- /dev/null +++ b/mysql-test/t/autocommit_func.test @@ -0,0 +1,164 @@ +############## mysql-test\t\auto_commit_func.test ############################# +# # +# Variable Name: autocommit # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: NA # +# Range: NA # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "autocommit" # +# that checks functionality of this variable # +# # +# Reference: (Not Mentioned on website) # +# # +################################################################################ + +--source include/have_innodb.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name varchar(30) +) ENGINE = INNODB; + +--echo '#--------------------FN_DYNVARS_003_01-------------------------#' +##################################################### +# Setting initial value of auto_commit to zero # +##################################################### + +--echo ## Setting variable's value to 0 i.e false ## +SET @@autocommit = 0; + + +--echo '#--------------------FN_DYNVARS_003_02-------------------------#' +###################################################################### +# Creating 2 different connections & testing behavior of autocommit +# after updating record in 1st connection +###################################################################### + +--echo ## Creating new connection ## +CONNECT (test_con1,localhost,root,,); +CONNECTION test_con1; + +--echo ## Checking value of variable after opening new connection ## + +SELECT @@autocommit; + +--echo ## Setting value of variable to zero and inserting some rows ## +SET @@autocommit = 0; + +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +SELECT * from t1; + +--echo ## Creating another connection and verifying records in table ## + +--echo ## New Connection test_con2 ## +CONNECT (test_con2,localhost,root,,); +CONNECTION test_con2; +SELECT * from t1; + + +--echo '#--------------------FN_DYNVARS_003_03-------------------------#' +###################################################################### +# Creating 2 different connections & testing behavior of autocommit +# after updating record in 1st connection and using COMMIT in first +# connection +###################################################################### + +--echo ## Verifying behavior of variable by commiting rows in test_con1 ## +--echo ## Connecting with connection # 01 ## +CONNECTION test_con1; +SELECT * from t1; +COMMIT; + + +--echo ## New Connection test_con2 ## +--echo ## Now verifying records in table from connection # 02 ## +CONNECTION test_con2; +SELECT * from t1; + +--echo '#--------------------FN_DYNVARS_003_04-------------------------#' +###################################################################### +# Creating 2 different connections & testing behavior of autocommit +# after updating record in 1st connection and using ROLLBACK in +# first connection +###################################################################### + +--echo ## Connecting to connection # 01 ## +CONNECTION test_con1; +SELECT * from t1; + +--echo ## Updating value of first row ## +UPDATE t1 set name = 'Record_12' where name = 'Record_1'; +SELECT * from t1; + +--echo ## Connecting to connecting # 02 and verifying effect of update query ## +CONNECTION test_con2; +SELECT * from t1; + +--echo ## Now connecting with connection # 01 and using ROLLBACK after it ## +CONNECTION test_con1; +ROLLBACK; +SELECT * from t1; + + + +--echo '#--------------------FN_DYNVARS_003_05-------------------------#' +###################################################################### +# Creating 2 different connections & testing behavior of autocommit +# after updating records in 1st connection and setting AUTOCOMMIT +# to 1 in second connection +###################################################################### + + +--echo ## Connecting with connection # 01 ## +CONNECTION test_con1; +INSERT into t1(name) values('Record_3'); + + +--echo ## Connection test_con2 ## +--echo ## Now verifying records in table from connection # 02 and changing value ## +--echo ## of autocommit to true ## +CONNECTION test_con2; +SELECT * from t1; +SET @@autocommit = 1; +INSERT into t1(name) values('Record_4'); +INSERT into t1(name) values('Record_5'); +SELECT * from t1; + +--echo ## Connecting with connection # 01 and inserting few records ## +CONNECTION test_con1; +SELECT * from t1; +--echo 'Bug#35373: Records donot get committed in transaction on switching connections' +INSERT into t1(name) values('Record_6'); +SELECT * from t1; + +--echo ## Now verifying the effect of these new records in second connection ## +CONNECTION test_con2; +SELECT * from t1; + +--echo ## Dropping table t1 ## +DROP table t1; + +--echo ## Disconnecting both connections ## +DISCONNECT test_con1; +DISCONNECT test_con2; + + + diff --git a/mysql-test/t/automatic_sp_privileges_basic.test b/mysql-test/t/automatic_sp_privileges_basic.test new file mode 100644 index 00000000000..74da0904454 --- /dev/null +++ b/mysql-test/t/automatic_sp_privileges_basic.test @@ -0,0 +1,179 @@ +############## mysql-test\t\automatic_sp_privileges_basic.test ################# +# # +# Variable Name: automatic_sp_privileges # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: TRUE # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "automatic_sp_privileges" # +# that checks 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#option_mysqld_automatic_sp_privileges # +# # +################################################################################ + +--source include/load_sysvars.inc + +####################################################################### +# START OF automatic_sp_privileges TESTS # +####################################################################### + + +############################################################################### +# Saving initial value of automatic_sp_privileges in a temporary variable # +############################################################################### + +SET @start_value = @@global.automatic_sp_privileges; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_004_01------------------------#' +############################################################################### +# Display the DEFAULT value of automatic_sp_privileges # +############################################################################### + +SET @@global.automatic_sp_privileges = 0; +SET @@global.automatic_sp_privileges = DEFAULT; +SELECT @@global.automatic_sp_privileges; + + +--echo '#---------------------FN_DYNVARS_004_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.automatic_sp_privileges = @start_value; +SELECT @@global.automatic_sp_privileges = TRUE; + + +--echo '#--------------------FN_DYNVARS_004_03------------------------#' +############################################################################### +# Change the value of automatic_sp_privileges to a valid value # +############################################################################### + +SET @@global.automatic_sp_privileges = 0; +SELECT @@global.automatic_sp_privileges; +SET @@global.automatic_sp_privileges = 1; +SELECT @@global.automatic_sp_privileges; + +--echo '#--------------------FN_DYNVARS_004_04-------------------------#' +############################################################################### +# Change the value of automatic_sp_privileges to invalid value # +############################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.automatic_sp_privileges = ''; + + +--echo '#-------------------FN_DYNVARS_004_05----------------------------#' +########################################################################### +# Test if accessing session automatic_sp_privileges gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.automatic_sp_privileges = 1; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.automatic_sp_privileges; + + +--echo '#----------------------FN_DYNVARS_004_06------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.automatic_sp_privileges = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='automatic_sp_privileges'; +echo 'Bug# 34839: Values in variable and information_schema donot match'; + +--echo '#---------------------FN_DYNVARS_004_07----------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@global.automatic_sp_privileges = OFF; +SELECT @@global.automatic_sp_privileges; +SET @@global.automatic_sp_privileges = ON; +SELECT @@global.automatic_sp_privileges; + +--echo '#---------------------FN_DYNVARS_004_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.automatic_sp_privileges = TRUE; +SELECT @@global.automatic_sp_privileges; +SET @@global.automatic_sp_privileges = FALSE; +SELECT @@global.automatic_sp_privileges; + +--echo '#---------------------FN_DYNVARS_004_09----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@global.automatic_sp_privileges = 1; +SELECT @@automatic_sp_privileges = @@global.automatic_sp_privileges; + +--echo '#---------------------FN_DYNVARS_004_10----------------------#' +############################################################################### +# Check if automatic_sp_privileges can be accessed with and without @@ sign # +############################################################################### +--Error ER_GLOBAL_VARIABLE +SET automatic_sp_privileges = 1; +--Error ER_PARSE_ERROR +SET local.automatic_sp_privileges = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.automatic_sp_privileges; +--Error ER_PARSE_ERROR +SET global.automatic_sp_privileges = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.automatic_sp_privileges; +--Error ER_BAD_FIELD_ERROR +SELECT automatic_sp_privileges = @@session.automatic_sp_privileges; + + + +############################## +# Restore initial value # +############################## + +SET @@global.automatic_sp_privileges = @start_value; +SELECT @@global.automatic_sp_privileges; + + +############################################################# +# END OF automatic_sp_privileges TESTS # +############################################################# diff --git a/mysql-test/t/automatic_sp_privileges_func.test b/mysql-test/t/automatic_sp_privileges_func.test new file mode 100644 index 00000000000..afbacbcef0f --- /dev/null +++ b/mysql-test/t/automatic_sp_privileges_func.test @@ -0,0 +1,148 @@ +############# mysql-test\t\automatic_sp_privileges_func.test ############################ +# # +# Variable Name: automatic_sp_privileges # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-03-04 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "automatic_sp_privileges" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_automatic_sp_privileges # +# # +######################################################################################### + +# +# Setup +# + +--echo ** Setup ** +SET @global_automatic_sp_privileges = @@GLOBAL.automatic_sp_privileges; + +CREATE TABLE t1 (a varchar(200)); + +INSERT INTO t1 VALUES('Procedure Executed.'); + +# +# Creating test user +# + +CREATE USER 'userTest'@'localhost'; +CREATE USER 'userTest1'@'localhost'; + +# +# Value TRUE +# +--echo ** Connection default ** +connection default; +SET GLOBAL automatic_sp_privileges = TRUE; + +--echo ** Connecting using userTest ** +connect (conUser,localhost,userTest,,); +--echo ** Connection conUser ** +connection conUser; + +delimiter |; + +CREATE PROCEDURE testProc () +BEGIN +SELECT * FROM t1; +END;| + +delimiter ;| + +CALL testProc(); +--echo Expecting SELECT executed + +# +# Value FALSE +# +--echo ** Connection default** +connection default; +SET GLOBAL automatic_sp_privileges = FALSE; + +--echo ** Connecting using userTest1 ** +connect (conUser1,localhost,userTest1,,); +--echo ** Connection conUser1 ** +connection conUser1; + +delimiter |; + +CREATE PROCEDURE testProc1 () +BEGIN +SELECT * FROM t1; +END;| + +delimiter ;| + +--echo +--echo Expected error access denied +--error ER_PROCACCESS_DENIED_ERROR +CALL testProc1(); + +--echo +--echo Expected error access denied +--error ER_PROCACCESS_DENIED_ERROR +ALTER PROCEDURE testProc1 COMMENT 'My Comment'; + +--echo +--echo Expected error access denied +--error ER_PROCACCESS_DENIED_ERROR +DROP PROCEDURE testProc1; + +--echo ** Connection default ** +connection default; + +GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE testProc1 TO 'userTest1'@'localhost'; + +--echo ** Connection conUser1 ** +connection conUser1; + +CALL testProc1(); +--echo Expecting seelect executed + +ALTER PROCEDURE testProc1 COMMENT 'My Comment'; + +--echo +# +# Cleanup +# +--echo ** Cleanup ** +--echo ** Connection default ** +connection default; + +--echo disconnecting connections +disconnect conUser; +disconnect conUser1; + +SET GLOBAL automatic_sp_privileges = @global_automatic_sp_privileges; + +# Disabled due to differences in results: Bug#35384 +#SHOW GRANTS FOR 'userTest'@'localhost'; + +# on Linux (5.1.24) successful, on Windows (5.1.23) error +--error 0,ER_NONEXISTING_PROC_GRANT +REVOKE EXECUTE, ALTER ROUTINE ON PROCEDURE testProc FROM 'userTest'@'localhost'; + +--error 0,ER_NONEXISTING_PROC_GRANT +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'userTest'@'localhost'; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'userTest1'@'localhost'; + +--disable_warnings +DROP PROCEDURE testProc; +--enable_warnings +DROP PROCEDURE testProc1; + +DROP USER 'userTest'@'localhost'; +DROP USER 'userTest1'@'localhost'; + +DROP TABLE t1; diff --git a/mysql-test/t/basedir_basic.test b/mysql-test/t/basedir_basic.test new file mode 100644 index 00000000000..480e46ca8a0 --- /dev/null +++ b/mysql-test/t/basedir_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\basedir_basic.test ############################ +# # +# Variable Name: basedir # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable basedir # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_001_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.basedir); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_001_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.basedir=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.basedir); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_001_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.basedir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='basedir'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.basedir); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='basedir'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_001_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@basedir = @@GLOBAL.basedir; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_001_05----------------------#' +################################################################################ +# Check if basedir can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@basedir); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.basedir); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.basedir); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.basedir); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT basedir = @@SESSION.basedir; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/big_tables_basic.test b/mysql-test/t/big_tables_basic.test new file mode 100644 index 00000000000..8665895bb19 --- /dev/null +++ b/mysql-test/t/big_tables_basic.test @@ -0,0 +1,179 @@ +##################### mysql-test\t\big_tables_basic.test ####################### +# # +# Variable Name: big_tables # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: NA # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "big_tables" # +# that checks 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-options.html#option_mysqld_big-tables # +# # +################################################################################ + +--source include/load_sysvars.inc + +########################################################## +# START OF big_tables TESTS # +########################################################## + + +################################################################## +# Saving initial value of big_tables in a temporary variable # +################################################################## + +SET @start_value = @@big_tables; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_005_01------------------------#' +############################################################# +# Display the DEFAULT value of big_tables # +############################################################# + +SET @@big_tables = 1; +SET @@big_tables = DEFAULT; +SELECT @@big_tables; +--echo 'Bug# 34829: No default value for variable and setting default does not raise error'; + + +--echo '#--------------------FN_DYNVARS_005_02------------------------#' +############################################################# +# Change the value of big_tables to a valid value # +############################################################# + +SET @@big_tables = 0; +SELECT @@big_tables; +SET @@big_tables = 1; +SELECT @@big_tables; + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +########################################################################### +# Change the value of big_tables to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@big_tables = ''; + + + +--echo '#-------------------FN_DYNVARS_005_04----------------------------#' +########################################################################### +# Test if accessing global big_tables gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.big_tables = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.big_tables; + + +--echo '#----------------------FN_DYNVARS_005_05------------------------#' +############################################################################## +# Check if the value in SESSION Tables matches values in variable # +############################################################################## + +SELECT @@big_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='big_tables'; +--echo Bug # 34839: Values in variable and information_schema do not match for autocommit + + +--echo '#---------------------FN_DYNVARS_005_06----------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@big_tables = OFF; +SELECT @@big_tables; +SET @@big_tables = ON; +SELECT @@big_tables; + +--echo '#---------------------FN_DYNVARS_005_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@big_tables = TRUE; +SELECT @@big_tables; +SET @@big_tables = FALSE; +SELECT @@big_tables; + + +--echo '#---------------------FN_DYNVARS_005_08----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@big_tables = 0; +SELECT @@big_tables = @@session.big_tables; +SET @@big_tables = 1; +SELECT @@big_tables = @@local.big_tables and @@local.big_tables = @@session.big_tables; + +--echo '#---------------------FN_DYNVARS_005_09----------------------#' +########################################################################## +# Check if big_tables can be accessed with and without @@ sign # +########################################################################## + +SET big_tables = 1; +SELECT @@big_tables; +--Error ER_PARSE_ERROR +SET local.big_tables = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.big_tables; +--Error ER_PARSE_ERROR +SET session.big_tables = 1; +--Error ER_UNKNOWN_TABLE +SELECT session.big_tables; +--Error ER_BAD_FIELD_ERROR +select big_tables; + + +############################## +# Restore initial value # +############################## + +SET @@big_tables = @start_value; +SELECT @@big_tables; + + +####################################################### +# END OF big_tables TESTS # +####################################################### + + diff --git a/mysql-test/t/binlog_format_basic.test b/mysql-test/t/binlog_format_basic.test new file mode 100644 index 00000000000..e9dfade8f56 --- /dev/null +++ b/mysql-test/t/binlog_format_basic.test @@ -0,0 +1,113 @@ + + +################## mysql-test\t\binlog_format_basic.test ###################### +# # +# Variable Name: binlog_format # +# Scope: Global & Session # +# Access Type: Static # +# Data Type: enumeration # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable binlog_format # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_002_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.binlog_format); +--echo 1 Expected + +SELECT COUNT(@@SESSION.binlog_format); +--echo 1 Expected + +--echo '#---------------------BS_STVARS_002_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +#--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.binlog_format=1; +--echo Expected error 'Read only variable' +--echo Bug: Writeable static variable +SELECT COUNT(@@GLOBAL.binlog_format); +--echo 1 Expected + + + +#--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@SESSION.binlog_format=1; +--echo Expected error 'Read only variable' +--echo Bug: Writeable static variable +SELECT COUNT(@@SESSION.binlog_format); +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_002_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.binlog_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.binlog_format); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_002_04----------------------#' +################################################################# +# Check if the value in SESSION Table matches value in variable # +################################################################# + +SELECT @@SESSION.binlog_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +--echo 1 Expected + +SELECT COUNT(@@SESSION.binlog_format); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='binlog_format'; +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_002_05----------------------#' +################################################################################ +# Check if binlog_format can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@binlog_format); +--echo 1 Expected +SELECT COUNT(@@local.binlog_format); +--echo 1 Expected +SELECT COUNT(@@SESSION.binlog_format); +--echo 1 Expected +SELECT COUNT(@@GLOBAL.binlog_format); +--echo 1 Expected + + + diff --git a/mysql-test/t/character_set_client_basic.test b/mysql-test/t/character_set_client_basic.test new file mode 100644 index 00000000000..ba330903528 --- /dev/null +++ b/mysql-test/t/character_set_client_basic.test @@ -0,0 +1,341 @@ +############## mysql-test\t\character_set_client_basic.test ################### +# # +# Variable Name: character_set_client # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_client # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +################################################### +## START OF character_set_client TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.character_set_client; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@character_set_client; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.character_set_client; +SELECT @session_start_value; +# save using default access (session) +SET @session_start_value = @@session.character_set_client; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_010_01------------------#' +############################################################################### +# Test Variable access and assignment with and withoud @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT character_set_client; +# assign value without @@ +SET character_set_client=utf8; +SELECT @@session.character_set_client; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.character_set_client=utf8; +# using another syntax for accessing session variable +SET session character_set_client=utf8; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session character_set_client; +# using another syntax for accessing dynamic variable +SET global character_set_client=utf8; +--Error ER_BAD_FIELD_ERROR +SELECT global character_set_client; + +--echo '#--------------------FN_DYNVARS_010_02-------------------------#' +############################################################################### +# Check the DEFAULT value of character_set_client for session and global # +############################################################################### +SET @@character_set_client = latin5; +SET @@character_set_client = DEFAULT; +SELECT @@character_set_client AS DEFAULT_VALUE; + +SET @@global.character_set_client = latin5; +SET @@global.character_set_client = DEFAULT; +SELECT @@global.character_set_client; + +--echo '#--------------------FN_DYNVARS_010_03-------------------------#' +############################################################################### +# see if setting global value changes session value and vice versa # +############################################################################### +SET @@session.character_set_client = utf8; +SELECT @@session.character_set_client; +SET @@global.character_set_client = latin2; +SELECT @@global.character_set_client; +SELECT @@session.character_set_client AS res_is_utf8; + +SET @@session.character_set_client = latin5; +SELECT @@session.character_set_client; +SELECT @@global.character_set_client AS res_is_latin2; +# composite check +SELECT @@global.character_set_client=@@session.character_set_client +AS res_is_false; + +--echo '#--------------------FN_DYNVARS_010_04-------------------------#' +############################################################################## +# Check if accessing variable with and without session point to session # +# variable # +############################################################################## +SELECT @@character_set_client = @@session.character_set_client AS res; +SELECT @@character_set_client = @@local.character_set_client AS res; + +--echo '#--------------------FN_DYNVARS_010_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@character_set_client = utf8 + latin2; + +--echo '#--------------------FN_DYNVARS_010_06-------------------------#' +############################################################################## +# Change the value of character_set_client to a valid value for session # +############################################################################## +SET @@character_set_client = big5; +SELECT @@character_set_client; +SET @@character_set_client = dec8; +SELECT @@character_set_client; +SET @@character_set_client = cp850; +SELECT @@character_set_client; +SET @@character_set_client = hp8; +SELECT @@character_set_client; +SET @@character_set_client = koi8r; +SELECT @@character_set_client; +SET @@character_set_client = latin1; +SELECT @@character_set_client; +SET @@character_set_client = latin2; +SELECT @@character_set_client; +SET @@character_set_client = swe7; +SELECT @@character_set_client; +SET @@character_set_client = ascii; +SELECT @@character_set_client; +SET @@character_set_client = ujis; +SELECT @@character_set_client; +SET @@character_set_client = sjis; +SELECT @@character_set_client; +SET @@character_set_client = hebrew; +SELECT @@character_set_client; +SET @@character_set_client = tis620; +SELECT @@character_set_client; +SET @@character_set_client = euckr; +SELECT @@character_set_client; +SET @@character_set_client = koi8u; +SELECT @@character_set_client; +SET @@character_set_client = gb2312; +SELECT @@character_set_client; +SET @@character_set_client = greek; +SELECT @@character_set_client; +SET @@character_set_client = cp1250; +SELECT @@character_set_client; +SET @@character_set_client = gbk; +SELECT @@character_set_client; +SET @@character_set_client = latin5; +SELECT @@character_set_client; +SET @@character_set_client = armscii8; +SELECT @@character_set_client; +SET @@character_set_client = utf8; +SELECT @@character_set_client; + +#SET @@character_set_client = ucs2; +#--Error ER_PARSE_ERROR +#SELECT @@session.character_set_client; +--echo 'Bug: Assignment of ucs2 to session character-set does not raise error'; +--echo 'but selecting variable after setting it does.'; +--echo 'Even catching this does not allow any further character-set to be set.'; +--echo 'Offending querry seems to be:'; +--echo 'SET @@character_set_client = ucs2;' + +SET @@character_set_client = cp866; +SELECT @@character_set_client; +SET @@character_set_client = keybcs2; +SELECT @@character_set_client; +SET @@character_set_client = macce; +SELECT @@character_set_client; +SET @@character_set_client = macroman; +SELECT @@character_set_client; +SET @@character_set_client = cp852; +SELECT @@character_set_client; +SET @@character_set_client = latin7; +SELECT @@character_set_client; +SET @@character_set_client = cp1251; +SELECT @@character_set_client; +SET @@character_set_client = cp1256; +SELECT @@character_set_client; +SET @@character_set_client = cp1257; +SELECT @@character_set_client; +SET @@character_set_client = binary; +SELECT @@character_set_client; +SET @@character_set_client = geostd8; +SELECT @@character_set_client; +SET @@character_set_client = cp932; +SELECT @@character_set_client; +SET @@character_set_client = eucjpms; +SELECT @@character_set_client; + +--echo '#--------------------FN_DYNVARS_010_07-------------------------#' +############################################################################### +# Change the value of character_set_client to a valid value for global # +############################################################################### + +let charset_variable = @@global.character_set_client; + +--source include/charset_basic.inc + +--echo '#--------------------FN_DYNVARS_010_08-------------------------#' +################################################################################ +# Change the value of character_set_client to a valid value with uppercase,# +# lowercase and mixedcase # +################################################################################ +SET @@character_set_client = UTF8; +SELECT @@character_set_client; +SET @@character_set_client = utf8; +SELECT @@character_set_client; +SET @@global.character_set_client = uTf8; +SELECT @@global.character_set_client; + +--echo '#--------------------FN_DYNVARS_010_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@character_set_client = 1; +SELECT @@character_set_client; +SET @@character_set_client = 2; +SELECT @@character_set_client; +SET @@character_set_client = 3; +SELECT @@character_set_client; +SET @@character_set_client = 36; +SELECT @@character_set_client; +SET @@character_set_client = 99; +SELECT @@character_set_client; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = 100; + +SET @@global.character_set_client = 1; +SELECT @@global.character_set_client; +SET @@global.character_set_client = 2; +SELECT @@global.character_set_client; +SET @@global.character_set_client = 3; +SELECT @@global.character_set_client; +SET @@global.character_set_client = 36; +SELECT @@global.character_set_client; +SET @@global.character_set_client = 99; +SELECT @@global.character_set_client; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = 100; + + +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +--echo 'Bug # 34843: character sets are mapped in such a way that 100 and following'; +--echo 'numbers gives error, and before 100 the 36 mapped wraps arround'; +--echo 'several times.'; + +--echo '#--------------------FN_DYNVARS_010_10-------------------------#' +############################################################################### +# Change the value of character_set_client to an invalid value for session # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@character_set_client = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = 'utf'; +SET @@character_set_client = true; +SELECT @@character_set_client AS res_with_true; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_client = ON; + +--echo '#--------------------FN_DYNVARS_010_11-------------------------#' +############################################################################### +# Change the value of character_set_client to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.character_set_client = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = 'utf'; + +SET @@global.character_set_client = true; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_client = ON; + +--echo '#--------------------FN_DYNVARS_010_12-------------------------#' +########################################################################## +# Check if the value in GLOBAL Table matches value in variable # +########################################################################## +SELECT @@global.character_set_client = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_client') AS res; +SET @@global.character_set_client = 1; +SELECT @@global.character_set_client; +SELECT @@global.character_set_client = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_client') AS res; + +--echo '#--------------------FN_DYNVARS_010_13-------------------------#' +############################################################################### +# Check if the value in SESSION Table matches value in variable # +############################################################################### +SELECT @@character_set_client = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_client') AS res; +SELECT @@local.character_set_client = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_client') AS res; +SELECT @@session.character_set_client = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_client') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.character_set_client = @global_start_value; +SELECT @@global.character_set_client; +SET @@session.character_set_client = @session_start_value; +SELECT @@session.character_set_client; + +############################################################# +# END OF character_set_client TESTS # +############################################################# diff --git a/mysql-test/t/character_set_client_func.test b/mysql-test/t/character_set_client_func.test new file mode 100644 index 00000000000..19994672fa4 --- /dev/null +++ b/mysql-test/t/character_set_client_func.test @@ -0,0 +1,84 @@ +############## mysql-test\t\character_set_client_func.test ################### +# # +# Variable Name: character_set_client # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_client # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_010_01-------------------------#' +###################################################################### +# Check if setting character_set_client is changed in new connection # +###################################################################### + +# save +SET @global_character_set_client = @@global.character_set_client; +SET @session_character_set_client = @@session.character_set_client; + + +SET @@global.character_set_client = utf8; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.character_set_client; +SELECT @@session.character_set_client; +disconnect con1; + +--echo 'Bug# 35372: session character_set_client is not effected by global character_set_client' + +--echo '#--------------------FN_DYNVARS_010_02-------------------------#' +############################################################# +# Begin the functionality Testing of character_set_client # +############################################################# + +--echo 'connection default' +connection default; + +SHOW VARIABLES like 'character_set_client'; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(a CHAR(3) character set utf8); + +#============================================================================== +--echo '---verifying character_set_client with a utf8 character----' +#============================================================================== +--echo 'For latin1 characterset'; +SET @@session.character_set_client = latin1; +INSERT INTO t1 values(''); +SELECT a,CHAR_LENGTH(a) FROM t1; +DELETE FROM t1; + +--echo 'For utf8 characterset'; +SET @@session.character_set_client = utf8; +INSERT INTO t1 values(''); +SELECT a,CHAR_LENGTH(a) FROM t1; +DELETE FROM t1; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +# restore +SET @@global.character_set_client = @global_character_set_client; +SET @@session.character_set_client = @session_character_set_client; + +############################################################ +# End of functionality Testing for character_set_client # +############################################################ diff --git a/mysql-test/t/character_set_connection_basic.test b/mysql-test/t/character_set_connection_basic.test new file mode 100644 index 00000000000..6aa26e8dbc3 --- /dev/null +++ b/mysql-test/t/character_set_connection_basic.test @@ -0,0 +1,268 @@ +############## mysql-test\t\character_set_connection_basic.test ############### +# # +# Variable Name: character_set_connection # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_connection # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +################################################### +## START OF character_set_connection TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.character_set_connection; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@character_set_connection; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.character_set_connection; +SELECT @session_start_value; +# save using default access (session) +SET @session_start_value = @@session.character_set_connection; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_011_01------------------#' +############################################################################### +# Test Variable access and assignment with and withoud @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT character_set_connection; +# assign value without @@ +SET character_set_connection=utf8; +SELECT @@session.character_set_connection; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.character_set_connection=utf8; +# using another syntax for accessing session variable +SET session character_set_connection=utf8; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session character_set_connection; +# using another syntax for accessing dynamic variable +SET global character_set_connection=utf8; +--Error ER_BAD_FIELD_ERROR +SELECT global character_set_connection; + +--echo '#--------------------FN_DYNVARS_011_02-------------------------#' +############################################################################### +# Check the DEFAULT value of character_set_connection for session and global # +############################################################################### +SET @@character_set_connection = latin5; +SET @@character_set_connection = DEFAULT; +SELECT @@character_set_connection AS DEFAULT_VALUE; + +SET @@global.character_set_connection = latin5; +SET @@global.character_set_connection = DEFAULT; +SELECT @@global.character_set_connection; + +--echo '#--------------------FN_DYNVARS_011_03-------------------------#' +############################################################################### +# see if setting global value changes session value and vice versa # +############################################################################### +SET @@session.character_set_connection = utf8; +SELECT @@session.character_set_connection; +SET @@global.character_set_connection = latin2; +SELECT @@global.character_set_connection; +SELECT @@session.character_set_connection AS res_is_utf8; + +SET @@session.character_set_connection = latin5; +SELECT @@session.character_set_connection; +SELECT @@global.character_set_connection AS res_is_latin2; +# composite check +SELECT @@global.character_set_connection=@@session.character_set_connection +AS res_is_false; + +--echo '#--------------------FN_DYNVARS_011_04-------------------------#' +############################################################################# +# Check if accessing variable with and without session point to # +# session variable # +############################################################################# +SELECT @@character_set_connection = @@session.character_set_connection AS res; +SELECT @@character_set_connection = @@local.character_set_connection AS res; + +--echo '#--------------------FN_DYNVARS_011_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@character_set_connection = utf8 + latin2; + +--echo '#--------------------FN_DYNVARS_011_06-------------------------#' +############################################################################## +# Change the value of character_set_connection to a valid value # +# for session # +############################################################################## + +let charset_variable = @@session.character_set_connection; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_011_07-------------------------#' +############################################################################## +# Change the value of character_set_connection to a valid value for global # +############################################################################## + +let charset_variable = @@global.character_set_connection; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_011_08-------------------------#' +############################################################################## +# Change the value of character_set_connection to a valid value with # +# uppercase,lowercase and mixedcase # +############################################################################## +SET @@character_set_connection = UTF8; +SELECT @@character_set_connection; +SET @@character_set_connection = utf8; +SELECT @@character_set_connection; + +SET @@global.character_set_connection = uTf8; +SELECT @@global.character_set_connection; + +--echo '#--------------------FN_DYNVARS_011_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@character_set_connection = 1; +SELECT @@character_set_connection; +SET @@character_set_connection = 2; +SELECT @@character_set_connection; +SET @@character_set_connection = 3; +SELECT @@character_set_connection; +SET @@character_set_connection = 36; +SELECT @@character_set_connection; +SET @@character_set_connection = 99; +SELECT @@character_set_connection; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = 100; + + +SET @@global.character_set_connection = 1; +SELECT @@global.character_set_connection; +SET @@global.character_set_connection = 2; +SELECT @@global.character_set_connection; +SET @@global.character_set_connection = 3; +SELECT @@global.character_set_connection; +SET @@global.character_set_connection = 36; +SELECT @@global.character_set_connection; +SET @@global.character_set_connection = 99; +SELECT @@global.character_set_connection; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = 100; + +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +--echo 'Bug # 34843: character sets are mapped in such a way that 100 and following '; +--echo 'numbers gives error, and before 100 the 36 mapped wraps arround'; +--echo 'several times.'; + +--echo '#--------------------FN_DYNVARS_011_10-------------------------#' +################################################################################ +# Change the value of character_set_connection to an invalid value for session # +################################################################################ +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@character_set_connection = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = 'utf8 '; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = 'ltin2'; +SET @@character_set_connection = true; +SELECT @@character_set_connection AS res_with_true; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_connection = ON; + +--echo '#--------------------FN_DYNVARS_011_11-------------------------#' +############################################################################### +# Change the value of character_set_connection to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.character_set_connection = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = 'utf'; + +SET @@global.character_set_connection = true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_connection = ON; + +--echo '#--------------------FN_DYNVARS_011_12-------------------------#' +########################################################################## +# Check if the value in GLOBAL Table matches value in variable # +########################################################################## +SELECT @@global.character_set_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_connection') AS res; +SET @@global.character_set_connection = 1; +SELECT @@global.character_set_connection; +SELECT @@global.character_set_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_connection') AS res; + +--echo '#--------------------FN_DYNVARS_011_13-------------------------#' +############################################################################ +# Check if the value in SESSION Table matches value in variable # +############################################################################ +SELECT @@character_set_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_connection') AS res; +SELECT @@local.character_set_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_connection') AS res; +SELECT @@session.character_set_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_connection') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.character_set_connection = @global_start_value; +SELECT @@global.character_set_connection; +SET @@session.character_set_connection = @session_start_value; +SELECT @@session.character_set_connection; + +############################################################# +# END OF character_set_connection TESTS # +############################################################# diff --git a/mysql-test/t/character_set_connection_func.test b/mysql-test/t/character_set_connection_func.test new file mode 100644 index 00000000000..04883b66544 --- /dev/null +++ b/mysql-test/t/character_set_connection_func.test @@ -0,0 +1,102 @@ +############## mysql-test\t\character_set_connection_func.test ############### +# # +# Variable Name: character_set_connection # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_connection # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_011_01-------------------------#' +########################################################################## +# Check if setting character_set_connection is changed in new connection # +########################################################################## + +#save +SET @global_character_set_connection = @@global.character_set_connection; +SET @session_character_set_connection = @@session.character_set_connection; +SET @session_character_set_client = @@session.character_set_client; +SET @session_character_set_results = @@session.character_set_results; + + +SET @@global.character_set_connection = utf8; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.character_set_connection; +SELECT @@session.character_set_connection; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_011_02-------------------------#' +############################################################### +# Begin the functionality Testing of character_set_connection # +############################################################### + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +CREATE TABLE t1(b CHAR(40) character set utf8); +#============================================================================== +--echo '--verify that character_set_connection converts character_set_client--' +#============================================================================== + +SET @@session.character_set_client = utf8; +SET @@session.character_set_results = utf8; + +SET @@session.character_set_connection = latin1; +SELECT 'ЁЂЃЄ' AS utf_text; + +SET @@session.character_set_connection = utf8; +SELECT 'ЁЂЃЄ' AS utf_text; +#============================================================================== +--echo '---now inserting utf8 string with different character_set_connection--' +#============================================================================== +SET @@session.character_set_connection = ascii; +INSERT INTO t1 VALUES('ЁЂЃЄ'); +SELECT * FROM t1; +TRUNCATE TABLE t1; + +#============================================================================== +--echo '--now client & results charset in latin1 & connection charset in ascii-' +#============================================================================== +SET @@session.character_set_connection = ascii; +SET @@session.character_set_client = latin1; +SET @@session.character_set_results = latin1; +INSERT INTO t1 VALUES('ЁЂЃЄ'); +SELECT * FROM t1; +TRUNCATE TABLE t1; + +#============================================================================== +# set names should set character sets [client,connection,results] +#============================================================================== +SET NAMES utf8; +INSERT INTO t1 VALUES('ЁЂЃЄ'); +SELECT * FROM t1; +TRUNCATE TABLE t1; + +#restore +#save +SET @@global.character_set_connection = @global_character_set_connection; +SET @@session.character_set_connection = @session_character_set_connection; +SET @@session.character_set_client = @session_character_set_client; +SET @@session.character_set_results = @session_character_set_results; + +############################################################# +# End of functionality Testing for character_set_connection # +############################################################# diff --git a/mysql-test/t/character_set_database_basic.test b/mysql-test/t/character_set_database_basic.test new file mode 100644 index 00000000000..e744c47ebd0 --- /dev/null +++ b/mysql-test/t/character_set_database_basic.test @@ -0,0 +1,268 @@ +############## mysql-test\t\character_set_database_basic.test ################# +# # +# Variable Name: character_set_database # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: latin1 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_database # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +################################################### +## START OF character_set_database TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.character_set_database; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@character_set_database; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.character_set_database; +SELECT @session_start_value; +# save using default access (session) +SET @session_start_value = @@session.character_set_database; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_012_01------------------#' +############################################################################## +# Test Variable access and assignment with and withoud @@ # +############################################################################## +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT character_set_database; +# assign value without @@ +SET character_set_database=utf8; +SELECT @@session.character_set_database; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.character_set_database=utf8; +# using another syntax for accessing session variable +SET session character_set_database=utf8; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session character_set_database; +# using another syntax for accessing dynamic variable +SET global character_set_database=utf8; +--Error ER_BAD_FIELD_ERROR +SELECT global character_set_database; + +--echo '#--------------------FN_DYNVARS_012_02-------------------------#' +############################################################################### +# Check the DEFAULT value of character_set_database for session and global # +############################################################################### +SET @@character_set_database = latin5; +SET @@character_set_database = DEFAULT; +SELECT @@character_set_database AS DEFAULT_VALUE; + +SET @@global.character_set_database = latin5; +SET @@global.character_set_database = DEFAULT; +SELECT @@global.character_set_database; + +--echo '#--------------------FN_DYNVARS_012_03-------------------------#' +############################################################################## +# see if setting global value changes session value and vice versa # +############################################################################## +SET @@session.character_set_database = utf8; +SELECT @@session.character_set_database; +SET @@global.character_set_database = latin2; +SELECT @@global.character_set_database; +SELECT @@session.character_set_database AS res_is_utf8; + +SET @@session.character_set_database = latin5; +SELECT @@session.character_set_database; +SELECT @@global.character_set_database AS res_is_latin2; +# composite check +SELECT @@global.character_set_database=@@session.character_set_database +AS res_is_false; + +--echo '#--------------------FN_DYNVARS_012_04-------------------------#' +############################################################################## +# Check if accessing variable with and without session point to session # +# variable # +############################################################################## +SELECT @@character_set_database = @@session.character_set_database AS res; +SELECT @@character_set_database = @@local.character_set_database AS res; + +--echo '#--------------------FN_DYNVARS_012_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@character_set_database = utf8 + latin2; + +--echo '#--------------------FN_DYNVARS_012_06-------------------------#' +############################################################################# +# Change the value of character_set_database to a valid value for session # +############################################################################# + +let charset_variable = @@session.character_set_database; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_012_07-------------------------#' +############################################################################## +# Change the value of character_set_database to a valid value for global # +############################################################################## + +let charset_variable = @@global.character_set_database; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_012_08-------------------------#' +############################################################################## +# Change the value of character_set_database to a valid value with uppercase,# +# lowercase and mixedcase # +############################################################################## +SET @@character_set_database = UTF8; +SELECT @@character_set_database; +SET @@character_set_database = utf8; +SELECT @@character_set_database; + +SET @@global.character_set_database = uTf8; +SELECT @@global.character_set_database; + +--echo '#--------------------FN_DYNVARS_012_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@character_set_database = 1; +SELECT @@character_set_database; +SET @@character_set_database = 2; +SELECT @@character_set_database; +SET @@character_set_database = 3; +SELECT @@character_set_database; +SET @@character_set_database = 36; +SELECT @@character_set_database; +SET @@character_set_database = 99; +SELECT @@character_set_database; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = 100; + + +SET @@global.character_set_database = 1; +SELECT @@global.character_set_database; +SET @@global.character_set_database = 2; +SELECT @@global.character_set_database; +SET @@global.character_set_database = 3; +SELECT @@global.character_set_database; +SET @@global.character_set_database = 36; +SELECT @@global.character_set_database; +SET @@global.character_set_database = 99; +SELECT @@global.character_set_database; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = 100; + + +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +--echo 'Bug # 34843: character sets are mapped in such a way that 100 and following'; +--echo 'numbers gives error, and before 100 the 36 mapped wraps arround several times.'; + +--echo '#--------------------FN_DYNVARS_012_10-------------------------#' +############################################################################## +# Change the value of character_set_database to an invalid value for session # +############################################################################## +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = "grek"; +--Error ER_PARSE_ERROR +SET @@character_set_database = utf 8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@character_set_database = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = 'latin 2'; +SET @@character_set_database = true; +SELECT @@character_set_database AS res_with_true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_database = ON; + +--echo '#--------------------FN_DYNVARS_012_11-------------------------#' +############################################################################### +# Change the value of character_set_database to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.character_set_database = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = 'utf'; + +SET @@global.character_set_database = true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_database = ON; + +--echo '#--------------------FN_DYNVARS_012_12-------------------------#' +############################################################################ +# Check if the value in GLOBAL Table matches value in variable # +############################################################################ +SELECT @@global.character_set_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_database') AS res; +SET @@global.character_set_database = 1; +SELECT @@global.character_set_database; +SELECT @@global.character_set_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_database') AS res; + +--echo '#--------------------FN_DYNVARS_012_13-------------------------#' +############################################################################## +# Check if the value in SESSION Table matches value in variable # +############################################################################## +SELECT @@character_set_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_database') AS res; +SELECT @@local.character_set_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_database') AS res; +SELECT @@session.character_set_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_database') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.character_set_database = @global_start_value; +SELECT @@global.character_set_database; +SET @@session.character_set_database = @session_start_value; +SELECT @@session.character_set_database; + +############################################################# +# END OF character_set_database TESTS # +############################################################# diff --git a/mysql-test/t/character_set_database_func.test b/mysql-test/t/character_set_database_func.test new file mode 100644 index 00000000000..b09853955f2 --- /dev/null +++ b/mysql-test/t/character_set_database_func.test @@ -0,0 +1,113 @@ +############## mysql-test\t\character_set_database_func.test ################# +# # +# Variable Name: character_set_database # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: latin1 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_database # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_008_01-------------------------#' +######################################################################## +# Check if setting character_set_database is changed in new connection # +######################################################################## +#save +SET @global_character_set_database = @@global.character_set_database; +SET @session_character_set_database = @@session.character_set_database; +SET @session_character_set_server = @@session.character_set_server; + +SET @@global.character_set_database = utf8; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.character_set_database; +SELECT @@session.character_set_database; +--echo 'Bug#35356: session character_set_database differ from global character_set_database' +disconnect con1; + +--echo '#--------------------FN_DYNVARS_008_02-------------------------#' +############################################################# +# Begin the functionality Testing of character_set_database # +############################################################# + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +#============================================================================== +--echo '--check if setting session character_set_database effects new databases' +#============================================================================== + +SET @@session.character_set_server = utf8; +SELECT @@session.character_set_database; +SET @@session.character_set_database = latin5; +SELECT @@session.character_set_database; + +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +CREATE TABLE t1(a INT, b VARCHAR(40)); +SHOW CREATE TABLE t1; +DROP TABLE t1; +DROP DATABASE db1; + +--echo 'Bug#35357: character_set_database does not effects CREATE DATABASE without characater set' + +#============================================================================== +--echo '--ascii character set specified--' +#============================================================================== +CREATE DATABASE db1 CHARACTER SET ascii; +USE db1; +SHOW CREATE DATABASE db1; +CREATE TABLE t1(a INT, b VARCHAR(40)); +SHOW CREATE TABLE t1; +DROP TABLE t1; +DROP DATABASE db1; + +#============================================================================== +--echo '------Check if load data uses character_set_database----------' +#============================================================================== + +USE test; +CREATE TABLE t1 (a CHAR(4) CHARACTER SET utf8) ENGINE=MyISAM CHARACTER SET utf8; + +--echo 'Verify with latin'; +SET @@session.character_set_database = latin1; +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +eval LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; +TRUNCATE TABLE t1; + +--echo 'Verify with utf8'; +SET @@session.character_set_database = utf8; +--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +eval LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +#restore +SET @@global.character_set_database = @global_character_set_database; +SET @@session.character_set_database = @session_character_set_database; +SET @@session.character_set_server = @session_character_set_server; +############################################################ +# End of functionality Testing for character_set_database # +############################################################ diff --git a/mysql-test/t/character_set_filesystem_basic.test b/mysql-test/t/character_set_filesystem_basic.test new file mode 100644 index 00000000000..7034179ef48 --- /dev/null +++ b/mysql-test/t/character_set_filesystem_basic.test @@ -0,0 +1,250 @@ +############## mysql-test\t\character_set_filesystem_basic.test ############### +# # +# Variable Name: character_set_filesystem # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: latin5 # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_filesystem # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +## START OF character_set_filesystem TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.character_set_filesystem; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@character_set_filesystem; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.character_set_filesystem; +SELECT @session_start_value; +# save using default access (session) +SET @session_start_value = @@session.character_set_filesystem; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_008_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT character_set_filesystem; +# assign value without @@ +SET character_set_filesystem=utf8; +SELECT @@session.character_set_filesystem; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.character_set_filesystem=utf8; +# using another syntax for accessing session variable +SET session character_set_filesystem=utf8; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session character_set_filesystem; +# using another syntax for accessing dynamic variable +SET global character_set_filesystem=utf8; +--Error ER_BAD_FIELD_ERROR +SELECT global character_set_filesystem; + +--echo '#--------------------FN_DYNVARS_008_02-------------------------#' +############################################################################### +# Check the DEFAULT value of character_set_filesystem for session and global # +############################################################################### +SET @@character_set_filesystem = latin5; +SET @@character_set_filesystem = DEFAULT; +SELECT @@character_set_filesystem AS DEFAULT_VALUE; + +SET @@global.character_set_filesystem = latin5; +SET @@global.character_set_filesystem = DEFAULT; +SELECT @@global.character_set_filesystem AS DEFAULT_VALUE; + +--echo '#--------------------FN_DYNVARS_008_03-------------------------#' +############################################################################ +# see if setting global value changes session value and vice versa # +############################################################################ +SET @@session.character_set_filesystem = utf8; +SELECT @@session.character_set_filesystem; +SET @@global.character_set_filesystem = latin2; +SELECT @@global.character_set_filesystem; +SELECT @@session.character_set_filesystem AS res_is_utf8; + +SET @@session.character_set_filesystem = latin5; +SELECT @@session.character_set_filesystem; +SELECT @@global.character_set_filesystem AS res_is_latin2; +# composite check +SELECT @@global.character_set_filesystem= + @@session.character_set_filesystem AS res_is_false; + +--echo '#--------------------FN_DYNVARS_008_04-------------------------#' +################################################################################ +# Check if accessing variable with & without session point to session variable # +################################################################################ +SELECT @@character_set_filesystem = @@session.character_set_filesystem AS res; +SELECT @@character_set_filesystem = @@local.character_set_filesystem AS res; + +--echo '#--------------------FN_DYNVARS_008_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@character_set_filesystem = utf8 + latin2; + +--echo '#--------------------FN_DYNVARS_008_06-------------------------#' +############################################################################### +# Change the value of character_set_filesystem to a valid value for session # +############################################################################### + +let charset_variable = @@session.character_set_filesystem; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_008_07-------------------------#' +############################################################################## +# Change the value of character_set_filesystem to a valid value for global # +############################################################################## + +let charset_variable = @@global.character_set_filesystem; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_008_08-------------------------#' +######################################################################### +# Change the value of character_set_filesystem to a valid value with # +# uppercase,lowercase and mixedcase # +######################################################################### +SET @@character_set_filesystem = UTF8; +SELECT @@character_set_filesystem; +SET @@character_set_filesystem = utf8; +SELECT @@character_set_filesystem; +SET @@character_set_filesystem = uTf8; +SELECT @@character_set_filesystem; + +--echo '#--------------------FN_DYNVARS_008_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@character_set_filesystem = 1; +SELECT @@character_set_filesystem; +SET @@character_set_filesystem = 2; +SELECT @@character_set_filesystem; +SET @@character_set_filesystem = 3; +SELECT @@character_set_filesystem; +SET @@character_set_filesystem = 36; +SELECT @@character_set_filesystem; +SET @@character_set_filesystem = 99; +SELECT @@character_set_filesystem; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = 100; + +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +echo 'Bug # 34843: character sets are mapped in such a way that 100 and following '; +echo 'numbers give error, and before 100 the 36 mapped wraps arround several times.'; + +--echo '#--------------------FN_DYNVARS_008_10-------------------------#' +################################################################################ +# Change the value of character_set_filesystem to an invalid value for session # +################################################################################ +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@character_set_filesystem = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = 'utf'; +SET @@character_set_filesystem = true; +SELECT @@character_set_filesystem AS res_with_true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_filesystem = ON; + +--echo '#--------------------FN_DYNVARS_008_11-------------------------#' +################################################################################ +# Change the value of character_set_filesystem to an invalid value for global # +################################################################################ +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.character_set_filesystem = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = 'utf'; + +SET @@global.character_set_filesystem = true; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_filesystem = ON; + +--echo '#--------------------FN_DYNVARS_008_12-------------------------#' +############################################################################## +# Check if the value in GLOBAL Table matches value in variable # +############################################################################## +SELECT @@global.character_set_filesystem = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_filesystem') AS res; +SET @@global.character_set_filesystem = 1; +SELECT @@global.character_set_filesystem; +SELECT @@global.character_set_filesystem = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_filesystem') AS res; + +--echo '#--------------------FN_DYNVARS_008_13-------------------------#' +############################################################################# +# Check if the value in SESSION Table matches value in variable # +############################################################################# +SELECT @@character_set_filesystem = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_filesystem') AS res; +SELECT @@local.character_set_filesystem = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_filesystem') AS res; +SELECT @@session.character_set_filesystem = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_filesystem') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.character_set_filesystem = @global_start_value; +SELECT @@global.character_set_filesystem; +SET @@session.character_set_filesystem = @session_start_value; +SELECT @@session.character_set_filesystem; + +############################################################# +# END OF character_set_filesystem TESTS # +############################################################# diff --git a/mysql-test/t/character_set_filesystem_func-master.opt b/mysql-test/t/character_set_filesystem_func-master.opt new file mode 100644 index 00000000000..52a49182a53 --- /dev/null +++ b/mysql-test/t/character_set_filesystem_func-master.opt @@ -0,0 +1 @@ +--secure-file-priv=$MYSQL_TEST_DIR --innodb diff --git a/mysql-test/t/character_set_results_basic.test b/mysql-test/t/character_set_results_basic.test new file mode 100644 index 00000000000..26f4b0be73d --- /dev/null +++ b/mysql-test/t/character_set_results_basic.test @@ -0,0 +1,266 @@ +############## mysql-test\t\character_set_results_basic.test ################## +# # +# Variable Name: character_set_results # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_results # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +################################################ +## START OF character_set_results TESTS ## +################################################ + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.character_set_results; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@character_set_results; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.character_set_results; +SELECT @session_start_value; +# save using default access (session) +SET @session_start_value = @@session.character_set_results; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_013_01------------------#' +############################################################################## +# Test Variable access and assignment with and withoud @@ # +############################################################################## +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT character_set_results; +# assign value without @@ +SET character_set_results=utf8; +SELECT @@session.character_set_results; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.character_set_results=utf8; +# using another syntax for accessing session variable +SET session character_set_results=utf8; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session character_set_results; +# using another syntax for accessing dynamic variable +SET global character_set_results=utf8; +--Error ER_BAD_FIELD_ERROR +SELECT global character_set_results; + +--echo '#--------------------FN_DYNVARS_013_02-------------------------#' +############################################################################### +# Check the DEFAULT value of character_set_results for session and global # +############################################################################### +SET @@character_set_results = latin5; +SET @@character_set_results = DEFAULT; +SELECT @@character_set_results AS DEFAULT_VALUE; + +SET @@global.character_set_results = latin5; +SET @@global.character_set_results = DEFAULT; +SELECT @@global.character_set_results; + +--echo '#--------------------FN_DYNVARS_013_03-------------------------#' +############################################################################### +# see if setting global value changes session value and vice versa # +############################################################################### +SET @@session.character_set_results = utf8; +SELECT @@session.character_set_results; +SET @@global.character_set_results = latin2; +SELECT @@global.character_set_results; +SELECT @@session.character_set_results AS res_is_utf8; + +SET @@session.character_set_results = latin5; +SELECT @@session.character_set_results; +SELECT @@global.character_set_results AS res_is_latin2; +# composite check +SELECT @@global.character_set_results=@@session.character_set_results +AS res_is_false; + +--echo '#--------------------FN_DYNVARS_013_04-------------------------#' +################################################################### +# Check if accessing variable with and without session point to # +# session variable # +################################################################### +SELECT @@character_set_results = @@session.character_set_results AS res; +SELECT @@character_set_results = @@local.character_set_results AS res; + +--echo '#--------------------FN_DYNVARS_013_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@character_set_results = utf8 + latin2; + +--echo '#--------------------FN_DYNVARS_013_06-------------------------#' +############################################################################## +# Change the value of character_set_results to a valid value for session # +############################################################################## + +let charset_variable = @@session.character_set_results; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_013_07-------------------------#' +############################################################################### +# Change the value of character_set_results to a valid value for global # +############################################################################### + +let charset_variable = @@global.character_set_results; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_013_08-------------------------#' +################################################################################ +# Change the value of character_set_results to a valid value with uppercase, # +# lowercase and mixedcase # +################################################################################ +SET @@character_set_results = UTF8; +SELECT @@character_set_results; +SET @@character_set_results = utf8; +SELECT @@character_set_results; + +SET @@global.character_set_results = uTf8; +SELECT @@global.character_set_results; + +--echo '#--------------------FN_DYNVARS_013_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@character_set_results = 1; +SELECT @@character_set_results; +SET @@character_set_results = 2; +SELECT @@character_set_results; +SET @@character_set_results = 3; +SELECT @@character_set_results; +SET @@character_set_results = 36; +SELECT @@character_set_results; +SET @@character_set_results = 99; +SELECT @@character_set_results; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = 100; + +SET @@global.character_set_results = 1; +SELECT @@global.character_set_results; +SET @@global.character_set_results = 2; +SELECT @@global.character_set_results; +SET @@global.character_set_results = 3; +SELECT @@global.character_set_results; +SET @@global.character_set_results = 36; +SELECT @@global.character_set_results; +SET @@global.character_set_results = 99; +SELECT @@global.character_set_results; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = 100; + +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +--echo 'Bug # 34843: character sets are mapped in such a way that 100 and following'; +--echo 'numbers gives error, and before 100 the 36 mapped wraps arround several times.'; + +--echo '#--------------------FN_DYNVARS_013_10-------------------------#' +############################################################################### +# Change the value of character_set_results to an invalid value for session # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@character_set_results = .1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = ""; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = 'utf'; +SET @@character_set_results = true; +SELECT @@character_set_results AS res_with_true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_results = ON; + +--echo '#--------------------FN_DYNVARS_013_11-------------------------#' +############################################################################### +# Change the value of character_set_results to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = "'latin2'"; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.character_set_results = 0.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = ""; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = 'utf'; + +SET @@global.character_set_results = true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_results = ON; + +--echo '#--------------------FN_DYNVARS_013_12-------------------------#' +############################################################################## +# Check if the value in GLOBAL Table matches value in variable # +############################################################################## +SELECT @@global.character_set_results = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_results') AS res; +SET @@global.character_set_results = 1; +SELECT @@global.character_set_results; +SELECT @@global.character_set_results = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_results') AS res; + +--echo '#--------------------FN_DYNVARS_013_13-------------------------#' +############################################################################## +# Check if the value in SESSION Table matches value in variable # +############################################################################## +SELECT @@character_set_results = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_results') AS res; +SELECT @@local.character_set_results = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_results') AS res; +SELECT @@session.character_set_results = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_results') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.character_set_results = @global_start_value; +SELECT @@global.character_set_results; +SET @@session.character_set_results = @session_start_value; +SELECT @@session.character_set_results; + +############################################################# +# END OF character_set_results TESTS # +############################################################# diff --git a/mysql-test/t/character_set_results_func.test b/mysql-test/t/character_set_results_func.test new file mode 100644 index 00000000000..df7437f225f --- /dev/null +++ b/mysql-test/t/character_set_results_func.test @@ -0,0 +1,102 @@ +############## mysql-test\t\character_set_results_func.test ################## +# # +# Variable Name: character_set_results # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_results # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_012_01-------------------------#' +####################################################################### +# Check if setting character_set_results is changed in new connection # +####################################################################### + +# save +SET @global_character_set_results = @@global.character_set_results; +SET @session_character_set_results = @@session.character_set_results; + + +SET @@global.character_set_results = utf8; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.character_set_results; +SELECT @@session.character_set_results; +disconnect con1; + + +--echo '#--------------------FN_DYNVARS_012_02-------------------------#' +############################################################# +# Begin the functionality Testing of character_set_results # +############################################################# + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(b CHAR(40) character set utf8); +SET NAMES utf8; + +#============================================================================== +--echo '----check string literals against different character_set_results---' +#============================================================================== +--echo check if results are converted to character_set_results +SET @@session.character_set_results = greek; +SELECT 'ЁЂЃЄ' AS utf_text; + +--echo check effect of character_set_results when introducers are used +SET @@session.character_set_results = latin1; +SELECT _latin1'Mller' AS latin1_text; +SET @@session.character_set_results = ascii; +SELECT _latin1'Mller' AS latin1_text; + +--echo check when we dont want any conversion +SET @@session.character_set_results = NULL; +SELECT 'ЁЂЃЄ' AS utf_text; + +#============================================================================== +--echo '---check results from table against different character_set_results--' +#============================================================================== +INSERT INTO t1 VALUES(_utf8'ЁЂЃЄ'); +INSERT INTO t1 VALUES('ФХЦЧШ'); + +SET @@session.character_set_results = NULL; +SELECT b, CHAR_LENGTH(b) FROM t1; + +SET @@session.character_set_results = utf8; +SELECT b, CHAR_LENGTH(b) FROM t1; + +SET @@session.character_set_results = koi8r; +SELECT b, CHAR_LENGTH(b) FROM t1; + +SET @@session.character_set_results = cp1250; +SELECT b, CHAR_LENGTH(b) FROM t1; + +DROP TABLE t1; +# restore +--echo 'connection default;' +connection default; +SET @@global.character_set_results = @global_character_set_results; +SET @@session.character_set_results = @session_character_set_results; + +########################################################## +# End of functionality Testing for character_set_results # +########################################################## + diff --git a/mysql-test/t/character_set_server_basic.test b/mysql-test/t/character_set_server_basic.test new file mode 100644 index 00000000000..e2d2a9ca9fc --- /dev/null +++ b/mysql-test/t/character_set_server_basic.test @@ -0,0 +1,267 @@ +############## mysql-test\t\character_set_server_basic.test ################### +# # +# Variable Name: character_set_server # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_server # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +## START OF character_set_server TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.character_set_server; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@character_set_server; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.character_set_server; +SELECT @session_start_value; +# save using default access (session) +SET @session_start_value = @@session.character_set_server; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_009_01------------------#' +############################################################################### +# Test Variable access and assignment with and withoud @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT character_set_server; +# assign value without @@ +SET character_set_server=utf8; +SELECT @@session.character_set_server; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.character_set_server=utf8; +# using another syntax for accessing session variable +SET session character_set_server=utf8; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session character_set_server; +# using another syntax for accessing dynamic variable +SET global character_set_server=utf8; +--Error ER_BAD_FIELD_ERROR +SELECT global character_set_server; + +--echo '#--------------------FN_DYNVARS_009_02-------------------------#' +############################################################################### +# Check the DEFAULT value of character_set_server for session and global # +############################################################################### +SET @@character_set_server = latin5; +SET @@character_set_server = DEFAULT; +SELECT @@character_set_server AS DEFAULT_VALUE; + +SET @@global.character_set_server = latin5; +SET @@global.character_set_server = DEFAULT; +SELECT @@global.character_set_server; + +--echo '#--------------------FN_DYNVARS_009_03-------------------------#' +############################################################################### +# see if setting global value changes session value and vice versa # +############################################################################### +SET @@session.character_set_server = utf8; +SELECT @@session.character_set_server; +SET @@global.character_set_server = latin2; +SELECT @@global.character_set_server; +SELECT @@session.character_set_server AS res_is_utf8; + +SET @@session.character_set_server = latin5; +SELECT @@session.character_set_server; +SELECT @@global.character_set_server AS res_is_latin2; +# composite check +SELECT @@global.character_set_server=@@session.character_set_server +AS res_is_false; + +--echo '#--------------------FN_DYNVARS_009_04-------------------------#' +############################################################################### +# Check if accessing variable with and without session point # +# to session variable # +############################################################################### +SELECT @@character_set_server = @@session.character_set_server AS res; +SELECT @@character_set_server = @@local.character_set_server AS res; + +--echo '#--------------------FN_DYNVARS_009_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@character_set_server = utf8 + latin2; + +--echo '#--------------------FN_DYNVARS_009_06-------------------------#' +############################################################################### +# Change the value of character_set_server to a valid value for session # +############################################################################### + +let charset_variable = @@session.character_set_server; + +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_009_07-------------------------#' +############################################################################### +# Change the value of character_set_server to a valid value for global # +############################################################################### + +let charset_variable = @@global.character_set_server; +--source include/charset_basic.inc + + +--echo '#--------------------FN_DYNVARS_009_08-------------------------#' +############################################################################### +# Change the value of character_set_server to a valid value with uppercase, # +# lowercase and mixedcase # +############################################################################### +SET @@character_set_server = UTF8; +SELECT @@character_set_server; +SET @@character_set_server = utf8; +SELECT @@character_set_server; + +SET @@global.character_set_server = uTf8; +SELECT @@global.character_set_server; + +--echo '#--------------------FN_DYNVARS_009_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@character_set_server = 1; +SELECT @@character_set_server; +SET @@character_set_server = 2; +SELECT @@character_set_server; +SET @@character_set_server = 3; +SELECT @@character_set_server; +SET @@character_set_server = 36; +SELECT @@character_set_server; +SET @@character_set_server = 99; +SELECT @@character_set_server; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = 100; + +SET @@global.character_set_server = 1; +SELECT @@global.character_set_server; +SET @@global.character_set_server = 2; +SELECT @@global.character_set_server; +SET @@global.character_set_server = 36; +SELECT @@global.character_set_server; +SET @@global.character_set_server = 99; +SELECT @@global.character_set_server; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = 100; + +SET @total_charset = (SELECT count(*) FROM INFORMATION_SCHEMA.CHARACTER_SETS); +SELECT @total_charset; +--echo 'Bug # 34843: character sets are mapped in such a way that 100 and following '; +--echo 'numbers gives error, and before 100 the 36 mapped wraps arround '; +--echo 'several times.'; + +--echo '#--------------------FN_DYNVARS_009_10-------------------------#' +############################################################################### +# Change the value of character_set_server to an invalid value for session # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@character_set_server = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = 'utf'; +SET @@character_set_server = true; +SELECT @@character_set_server AS res_with_true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@character_set_server = ON; + +--echo '#--------------------FN_DYNVARS_009_11-------------------------#' +############################################################################### +# Change the value of character_set_server to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = abc; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = 1utf8; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.character_set_server = 1.1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = -1; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = ''; +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = 'utf'; + +SET @@global.character_set_server = true; + +--Error ER_UNKNOWN_CHARACTER_SET +SET @@global.character_set_server = ON; + +--echo '#--------------------FN_DYNVARS_009_12-------------------------#' +############################################################################### +# Check if the value in GLOBAL Table matches value in variable # +############################################################################### +SELECT @@global.character_set_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_server') AS res; +SET @@global.character_set_server = 1; +SELECT @@global.character_set_server; +SELECT @@global.character_set_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='character_set_server') AS res; + +--echo '#--------------------FN_DYNVARS_009_13-------------------------#' +############################################################################### +# Check if the value in SESSION Table matches value in variable # +############################################################################### +SELECT @@character_set_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_server') AS res; +SELECT @@local.character_set_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_server') AS res; +SELECT @@session.character_set_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='character_set_server') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.character_set_server = @global_start_value; +SELECT @@global.character_set_server; +SET @@session.character_set_server = @session_start_value; +SELECT @@session.character_set_server; + +############################################################# +# END OF character_set_server TESTS # +############################################################# diff --git a/mysql-test/t/character_set_server_func.test b/mysql-test/t/character_set_server_func.test new file mode 100644 index 00000000000..c17568c35ea --- /dev/null +++ b/mysql-test/t/character_set_server_func.test @@ -0,0 +1,106 @@ +############## mysql-test\t\character_set_server_func.test ################### +# # +# Variable Name: character_set_server # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: utf8 (session), latin1 (global) # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable character_set_server # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### +--echo '#--------------------FN_DYNVARS_009_01-------------------------#' +###################################################################### +# Check if setting character_set_server is changed in new connection # +###################################################################### + +#save +SET @global_character_set_server = @@global.character_set_server; +SET @session_character_set_server = @@session.character_set_server; + + +SET @@global.character_set_server = utf8; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.character_set_server; +SELECT @@session.character_set_server; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_009_02-------------------------#' +############################################################# +# Begin the functionality Testing of character_set_server # +############################################################# + +--echo 'connection default' +connection default; +#The server character set and collation are used as default values if the database +#character set and collation are not specified in CREATE DATABASE statements. + +#============================================================================== +--echo '---global character_set_server should not effects current connection---' +#============================================================================== + +SET @@global.character_set_server = utf8; +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +DROP DATABASE db1; +select @@character_set_database; + +#============================================================================== +--echo '---session character_set_server should effects current connection---' +#============================================================================== +SET @@session.character_set_server = utf8; +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +DROP DATABASE db1; +select @@character_set_database; + +#============================================================================== +--echo '----test with new connection----' +#============================================================================== + +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; + +SELECT @@session.character_set_server; + +--echo '----------character set not specified---------' +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +DROP DATABASE db1; +SELECT @@character_set_database; + +--echo '----------ascii character set specified----------' +CREATE DATABASE db1 character set ascii; +USE db1; +SHOW CREATE DATABASE db1; +DROP DATABASE db1; +select @@character_set_database; + +disconnect con1; + +#restore +--echo 'connection default;' +connection default; +SET @@global.character_set_server = @global_character_set_server; +SET @@session.character_set_server = @session_character_set_server; + +############################################################ +# End of functionality Testing for character_set_server # +############################################################ diff --git a/mysql-test/t/character_set_system_basic.test b/mysql-test/t/character_set_system_basic.test new file mode 100644 index 00000000000..9d59b313efc --- /dev/null +++ b/mysql-test/t/character_set_system_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\character_set_system_basic.test ############### +# # +# Variable Name: character_set_system # +# Scope: Global # +# Access Type: Static # +# Data Type: string # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable character_set_system # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_003_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.character_set_system); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_003_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.character_set_system=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.character_set_system); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_003_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.character_set_system = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_system'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.character_set_system); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='character_set_system'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_003_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@character_set_system = @@GLOBAL.character_set_system; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_003_05----------------------#' +################################################################################ +# Check if character_set_system can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@character_set_system); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.character_set_system); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.character_set_system); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.character_set_system); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT character_set_system = @@SESSION.character_set_system; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/collation_connection_basic.test b/mysql-test/t/collation_connection_basic.test new file mode 100644 index 00000000000..5e1033d6ead --- /dev/null +++ b/mysql-test/t/collation_connection_basic.test @@ -0,0 +1,260 @@ +############## mysql-test\t\collation_connection_basic.test ################### +# # +# Variable Name: collation_connection # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable collation_connection # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +## START OF collation_connection TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.collation_connection; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@collation_connection; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.collation_connection; +SELECT @session_start_value; +# save using implicit session scope +SET @session_start_value = @@session.collation_connection; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_015_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT collation_connection; +# assign value without @@ +SET collation_connection=utf8_unicode_ci; +SELECT @@session.collation_connection; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.collation_connection=utf8_unicode_ci; +# using another syntax for accessing session variable +SET session collation_connection=utf8_unicode_ci; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session collation_connection; +# using another syntax for accessing dynamic variable +SET global collation_connection=utf8_unicode_ci; +--Error ER_BAD_FIELD_ERROR +SELECT global collation_connection; + +--echo '#--------------------FN_DYNVARS_015_02-------------------------#' +############################################################################### +# Check the DEFAULT value of collation_connection for session and global # +############################################################################### +SET @@collation_connection = latin1_bin; +SET @@collation_connection = DEFAULT; +SELECT @@collation_connection AS DEFAULT_VALUE; + +SET @@global.collation_connection = latin1_bin; +SET @@global.collation_connection = DEFAULT; +SELECT @@global.collation_connection; + +--echo '#--------------------FN_DYNVARS_015_03-------------------------#' +############################################################################## +# see if setting global value changes session value and vice versa # +############################################################################## +SET @@session.collation_connection = utf8_polish_ci; +SELECT @@session.collation_connection; +SET @@global.collation_connection = latin7_general_ci; +SELECT @@global.collation_connection; +SELECT @@session.collation_connection AS res_is_utf8_polish_ci; + +SET @@session.collation_connection = latin7_bin; +SELECT @@session.collation_connection; +SELECT @@global.collation_connection AS res_is_latin7_general_ci; +# composite check +SELECT @@global.collation_connection=@@session.collation_connection +AS res_is_false; + +--echo '#--------------------FN_DYNVARS_015_04-------------------------#' +############################################################################### +# Check if accessing variable with and without session point to session # +# variable # +############################################################################### +SELECT @@collation_connection = @@session.collation_connection AS res; +SELECT @@collation_connection = @@local.collation_connection AS res; + +--echo '#--------------------FN_DYNVARS_015_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@collation_connection = latin7_general_ci + latin7_general_cs; + +--echo '#--------------------FN_DYNVARS_015_06-------------------------#' +############################################################################### +# Change the value of collation_connection to a valid value for session # +############################################################################### + +let collation_variable = @@session.collation_connection; +--source include/collation_basic.inc + + +--echo '#--------------------FN_DYNVARS_015_07-------------------------#' +############################################################################### +# Change the value of collation_connection to a valid value for global # +############################################################################### + +let collation_variable = @@global.collation_connection; +--source include/collation_basic.inc + + +--echo '#--------------------FN_DYNVARS_015_08-------------------------#' +############################################################################## +# Change the value of collation_connection to a valid value with uppercase, # +# lowercase and mixedcase # +############################################################################## +SET @@collation_connection = LATIN7_GENERAL_CS; +SELECT @@collation_connection; +SET @@collation_connection = latin7_general_cs; +SELECT @@collation_connection; + +SET @@global.collation_connection = Latin7_GeneRal_cS; +SELECT @@global.collation_connection; + + +--echo '#--------------------FN_DYNVARS_015_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@collation_connection = 1; +SELECT @@collation_connection; +SET @@collation_connection = 2; +SELECT @@collation_connection; +SET @@collation_connection = 3; +SELECT @@collation_connection; +SET @@collation_connection = 99; +SELECT @@collation_connection; +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = 100; + +SET @@global.collation_connection = 1; +SELECT @@global.collation_connection; +SET @@global.collation_connection = 2; +SELECT @@global.collation_connection; +SET @@global.collation_connection = 3; +SELECT @@global.collation_connection; +SET @@global.collation_connection = 99; +SELECT @@global.collation_connection; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = 100; + +SET @total_collations = (SELECT count(*) FROM INFORMATION_SCHEMA.COLLATIONS); +SELECT @total_collations > 120; + +--echo '#--------------------FN_DYNVARS_015_10-------------------------#' +############################################################################### +# Change the value of collation_connection to an invalid value for session # +############################################################################### +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = latin7_binary; +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = 'eucjpms_japanese_cs'; +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@collation_connection = 1.01; +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = -1; +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = ''; +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = ' eucjpms_bin'; +SET @@collation_connection = true; +SELECT @@collation_connection AS res_with_true; + +--Error ER_UNKNOWN_COLLATION +SET @@collation_connection = ON; + +--echo '#--------------------FN_DYNVARS_015_11-------------------------#' +############################################################################### +# Change the value of collation_connection to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = latin7_binary; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = 'eucjpms_japanese_cs'; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.collation_connection = 1.1; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = -1; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = ""; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = ' eucjpms_bin'; + +SET @@global.collation_connection = true; + +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_connection = ON; + +--echo '#--------------------FN_DYNVARS_015_12-------------------------#' +############################################################################## +# Check if the value in GLOBAL Table matches value in variable # +############################################################################## +SELECT @@global.collation_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='collation_connection') AS res; +SET @@global.collation_connection = 1; +SELECT @@global.collation_connection; +SELECT @@global.collation_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='collation_connection') AS res; + +--echo '#--------------------FN_DYNVARS_015_13-------------------------#' +############################################################################### +# Check if the value in SESSION Table matches value in variable # +############################################################################### +SELECT @@collation_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_connection') AS res; +SELECT @@local.collation_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_connection') AS res; +SELECT @@session.collation_connection = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_connection') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.collation_connection = @global_start_value; +SELECT @@global.collation_connection; +SET @@session.collation_connection = @session_start_value; +SELECT @@session.collation_connection; + +############################################################# +# END OF collation_connection TESTS # +############################################################# diff --git a/mysql-test/t/collation_connection_func.test b/mysql-test/t/collation_connection_func.test new file mode 100644 index 00000000000..bdb2efd9959 --- /dev/null +++ b/mysql-test/t/collation_connection_func.test @@ -0,0 +1,95 @@ +############## mysql-test\t\collation_connection_func.test ################### +# # +# Variable Name: collation_connection # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable collation_connection # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_015_01-------------------------#' +###################################################################### +# Check if setting collation_connection is changed in new connection # +###################################################################### +SET @global_collation_connection = @@global.collation_connection; +SET @session_collation_connection = @@session.collation_connection; + +SET @@global.collation_connection = latin1_danish_ci; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.collation_connection; +SELECT @@session.collation_connection; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_015_02-------------------------#' +########################################################### +# Begin the functionality Testing of collation_connection # +########################################################### + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +#============================================================================== +--echo '----check if collation_connection update character_set_connection---' +#============================================================================== + +SET @@session.collation_connection = utf8_spanish_ci; +SELECT @@collation_connection, @@character_set_database; + +#============================================================================== +--echo '---check if collation_connection works for literal string comparision--' +#============================================================================== +SET @@session.collation_connection = latin1_swedish_ci; +SELECT 'mysql'='MySql'; +SELECT _latin2'mysql' COLLATE latin2_general_ci='MySql'; +SELECT _utf8'mysql'=_utf8'MySql' COLLATE utf8_unicode_ci; + +SET @@session.collation_connection = latin1_general_cs; +SELECT 'mysql'='MySql'; +SELECT _latin2'mysql'COLLATE latin2_general_ci='MySql'; +--Error ER_CANT_AGGREGATE_2COLLATIONS +SELECT _utf8'mysql'COLLATE utf8_danish_ci=_utf8'MySql'COLLATE utf8_unicode_ci; + +#============================================================================== +--echo '---collation_connection does not effect comparision with column---' +#============================================================================== +# fill table with some test data +CREATE TABLE t1(a CHAR(20)CHARACTER SET latin1 COLLATE latin1_german2_ci); +INSERT INTO t1 VALUES('Mller'); + + +SET @@session.collation_connection = latin2_hungarian_ci; +SELECT * FROM t1 WHERE a='Mller'; + +SET @@session.collation_connection = latin1_general_cs; +SELECT * FROM t1 WHERE a='mller'; + +--echo 'check if string literal collation is used'; +SELECT * FROM t1 WHERE a='mller' COLLATE latin1_general_cs; +SELECT * FROM t1 WHERE a='mller' COLLATE latin1_german1_ci; + +# clean up +DROP TABLE t1; +SET @@global.collation_connection = @global_collation_connection; +SET @@session.collation_connection = @session_collation_connection; +######################################################### +# End of functionality Testing for collation_connection # +######################################################### diff --git a/mysql-test/t/collation_database_basic.test b/mysql-test/t/collation_database_basic.test new file mode 100644 index 00000000000..478ecbdb9ab --- /dev/null +++ b/mysql-test/t/collation_database_basic.test @@ -0,0 +1,259 @@ +############## mysql-test\t\collation_database_basic.test ##################### +# # +# Variable Name: collation_database # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable collation_database # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +## START OF collation_database TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.collation_database; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@collation_database; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.collation_database; +SELECT @session_start_value; +# save using implicit session scope +SET @session_start_value = @@session.collation_database; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_016_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT collation_database; +# assign value without @@ +SET collation_database=utf8_unicode_ci; +SELECT @@session.collation_database; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.collation_database=utf8_unicode_ci; +# using another syntax for accessing session variable +SET session collation_database=utf8_unicode_ci; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session collation_database; +# using another syntax for accessing dynamic variable +SET global collation_database=utf8_unicode_ci; +--Error ER_BAD_FIELD_ERROR +SELECT global collation_database; + +--echo '#--------------------FN_DYNVARS_016_02-------------------------#' +############################################################################## +# Check the DEFAULT value of collation_database for session and global # +############################################################################## +SET @@collation_database = latin1_bin; +SET @@collation_database = DEFAULT; +SELECT @@collation_database AS DEFAULT_VALUE; + +SET @@global.collation_database = latin1_bin; +SET @@global.collation_database = DEFAULT; +SELECT @@global.collation_database; + +--echo '#--------------------FN_DYNVARS_016_03-------------------------#' +############################################################################## +# see if setting global value changes session value and vice versa # +############################################################################## +SET @@session.collation_database = utf8_polish_ci; +SELECT @@session.collation_database; +SET @@global.collation_database = latin7_general_ci; +SELECT @@global.collation_database; +SELECT @@session.collation_database AS res_is_utf8_polish_ci; + +SET @@session.collation_database = latin7_bin; +SELECT @@session.collation_database; +SELECT @@global.collation_database AS res_is_latin7_general_ci; +# composite check +SELECT @@global.collation_database=@@session.collation_database AS res_is_false; + +--echo '#--------------------FN_DYNVARS_016_04-------------------------#' +############################################################################### +# Check if accessing variable with and without session point to session # +# variable # +############################################################################### +SELECT @@collation_database = @@session.collation_database AS res; +SELECT @@collation_database = @@local.collation_database AS res; + +--echo '#--------------------FN_DYNVARS_016_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@collation_database = latin7_general_ci + latin7_general_cs; + +--echo '#--------------------FN_DYNVARS_016_06-------------------------#' +########################################################################### +# Change the value of collation_database to a valid value for session # +########################################################################### + +let collation_variable = @@session.collation_database; +--source include/collation_basic.inc + + +--echo '#--------------------FN_DYNVARS_016_07-------------------------#' +############################################################################### +# Change the value of collation_database to a valid value for global # +############################################################################### + +let collation_variable = @@global.collation_database; +--source include/collation_basic.inc + + +--echo '#--------------------FN_DYNVARS_016_08-------------------------#' +############################################################################# +# Change the value of collation_database to a valid value with uppercase, # +# lowercase and mixedcase # +############################################################################# +SET @@collation_database = LATIN7_GENERAL_CS; +SELECT @@collation_database; +SET @@collation_database = latin7_general_cs; +SELECT @@collation_database; + +SET @@global.collation_database = Latin7_GeneRal_cS; +SELECT @@global.collation_database; + +--echo '#--------------------FN_DYNVARS_016_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@collation_database = 1; +SELECT @@collation_database; +SET @@collation_database = 2; +SELECT @@collation_database; +SET @@collation_database = 3; +SELECT @@collation_database; +SET @@collation_database = 99; +SELECT @@collation_database; +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = 100; + +SET @@global.collation_database = 1; +SELECT @@global.collation_database; +SET @@global.collation_database = 2; +SELECT @@global.collation_database; +SET @@global.collation_database = 3; +SELECT @@global.collation_database; +SET @@global.collation_database = 99; +SELECT @@global.collation_database; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = 100; + +SET @total_collations = (SELECT count(*) FROM INFORMATION_SCHEMA.COLLATIONS); +SELECT @total_collations > 120; + + +--echo '#--------------------FN_DYNVARS_016_10-------------------------#' +############################################################################### +# Change the value of collation_database to an invalid value for session # +############################################################################### +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = latin7_binary; +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = 'eucjpms_japanese_cs'; +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@collation_database = 1.01; +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = -1; +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = ''; +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = ' eucjpms_bin'; +SET @@collation_database = true; +SELECT @@collation_database AS res_with_true; + +--Error ER_UNKNOWN_COLLATION +SET @@collation_database = ON; + +--echo '#--------------------FN_DYNVARS_016_11-------------------------#' +############################################################################### +# Change the value of collation_database to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = latin7_binary; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = 'eucjpms_japanese_cs'; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.collation_database = 1.1; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = -1; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = ""; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = ' eucjpms_bin'; + +SET @@global.collation_database = true; + +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_database = ON; + +--echo '#--------------------FN_DYNVARS_016_12-------------------------#' +############################################################################### +# Check if the value in GLOBAL Table matches value in variable # +############################################################################### +SELECT @@global.collation_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='collation_database') AS res; +SET @@global.collation_database = 1; +SELECT @@global.collation_database; +SELECT @@global.collation_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='collation_database') AS res; + +--echo '#--------------------FN_DYNVARS_016_13-------------------------#' +############################################################################## +# Check if the value in SESSION Table matches value in variable # +############################################################################## +SELECT @@collation_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_database') AS res; +SELECT @@local.collation_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_database') AS res; +SELECT @@session.collation_database = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_database') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.collation_database = @global_start_value; +SELECT @@global.collation_database; +SET @@session.collation_database = @session_start_value; +SELECT @@session.collation_database; + +########################################################### +# END OF collation_database TESTS # +########################################################### diff --git a/mysql-test/t/collation_database_func.test b/mysql-test/t/collation_database_func.test new file mode 100644 index 00000000000..ba8fc5a3d5e --- /dev/null +++ b/mysql-test/t/collation_database_func.test @@ -0,0 +1,138 @@ +############## mysql-test\t\collation_database_func.test ##################### +# # +# Variable Name: collation_database # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable collation_database # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + + +--echo '#--------------------FN_DYNVARS_011_01-------------------------#' +#################################################################### +# Check if setting collation_database is changed in new connection # +#################################################################### +SET @global_collation_database = @@global.collation_database; +SET @session_collation_database = @@session.collation_database; +SET @session_collation_server = @@session.collation_server; + + +SET @@global.collation_database = latin1_danish_ci; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.collation_database; +SELECT @@session.collation_database; +disconnect con1; + +--echo 'Bug#35378: New session collation_database is not change by global collation_database' + +--echo '#--------------------FN_DYNVARS_011_02-------------------------#' +######################################################### +# Begin the functionality Testing of collation_database # +######################################################### + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1,t2; +--enable_warnings + + +SELECT @@character_set_server,@@collation_server; +#============================================================================== +--echo '--check if setting collation_database update character_set_database--' +#============================================================================== + +SET @@session.collation_database = utf8_spanish_ci; +SELECT @@collation_database, @@character_set_database; + +#============================================================================== +--echo '--check if collation_database effects database/tables charset/collation' +#============================================================================== +SET @@session.collation_server = utf8_roman_ci; +SET @@session.collation_database = latin2_croatian_ci; +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +--echo 'Bug#35380: collation_database does not effects CREATE DATABASE without characater set' + +CREATE TABLE t1(a CHAR(20)); +SHOW CREATE TABLE t1; + +#============================================================================== +--echo '---check if updating collation_database effects new table/column---' +#============================================================================== +SET @@session.collation_database = latin7_general_cs; +CREATE TABLE t2(a CHAR(10)); +SHOW CREATE TABLE t2; + +DROP TABLE t1,t2; + + +#============================================================================== +--echo '--check value of collation and character set when current db is dropped' +#============================================================================== +DROP DATABASE db1; +SELECT @@collation_database,@@collation_server,@@character_set_database,@@character_set_server; +USE test; +SELECT @@collation_database,@@collation_server,@@character_set_database,@@character_set_server; + + +--echo 'fill table with some test data'; +CREATE TABLE t1(a CHAR(20))CHARACTER SET=latin1; +INSERT INTO t1 VALUES('Muffler'),('Mller'),('MX Systems'); + +#============================================================================== +--echo '---check if collation_database effects results sort order---' +#============================================================================== + +SET @@session.collation_database = latin1_swedish_ci; +SELECT * FROM t1 ORDER BY a; + +SET @@session.collation_database = latin1_german1_ci; +SELECT * FROM t1 ORDER BY a; + +--echo 'explicit Collate clause should effects results sort order'; + +SELECT * FROM t1 ORDER BY a COLLATE latin1_swedish_ci; +SELECT * FROM t1 ORDER BY a COLLATE latin1_german1_ci; + + +#============================================================================== +--echo '----check if indexing is effected by collation_database---' +#============================================================================== +SET @@session.collation_database = latin1_swedish_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +SELECT * FROM t1 ORDER BY a; + +ALTER TABLE t1 DROP PRIMARY KEY; +SET @@session.collation_database = latin1_german1_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +SELECT * FROM t1 ORDER BY a; + +# clean up +DROP TABLE t1; +SET @@global.collation_database = @global_collation_database; +SET @@session.collation_database = @session_collation_database; +SET @@session.collation_server = @session_collation_server; + +####################################################### +# End of functionality Testing for collation_database # +####################################################### diff --git a/mysql-test/t/collation_server_basic.test b/mysql-test/t/collation_server_basic.test new file mode 100644 index 00000000000..b13543058f8 --- /dev/null +++ b/mysql-test/t/collation_server_basic.test @@ -0,0 +1,261 @@ +############## mysql-test\t\collation_server_basic.test ####################### +# # +# Variable Name: collation_server # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable collation_server # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +## START OF collation_server TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +SET @global_start_value = @@global.collation_server; +SELECT @global_start_value; +# Save initial session value +SET @session_start_value = @@collation_server; +SELECT @session_start_value; +# now save using local access +SET @session_start_value = @@local.collation_server; +SELECT @session_start_value; +# save using implicit session scope +SET @session_start_value = @@session.collation_server; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_014_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT collation_server; +# assign value without @@ +SET collation_server=utf8_unicode_ci; +SELECT @@session.collation_server; +# assign global variable without @@ +--Error ER_PARSE_ERROR +SET global.collation_server=utf8_unicode_ci; +# using another syntax for accessing session variable +SET session collation_server=utf8_unicode_ci; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT session collation_server; +# using another syntax for accessing dynamic variable +SET global collation_server=utf8_unicode_ci; +--Error ER_BAD_FIELD_ERROR +SELECT global collation_server; + +--echo '#--------------------FN_DYNVARS_014_02-------------------------#' +############################################################################### +# Check the DEFAULT value of collation_server for session and global # +############################################################################### +SET @@collation_server = latin1_bin; +SET @@collation_server = DEFAULT; +SELECT @@collation_server AS DEFAULT_VALUE; + +SET @@global.collation_server = latin1_bin; +SET @@global.collation_server = DEFAULT; +SELECT @@global.collation_server; + +--echo '#--------------------FN_DYNVARS_014_03-------------------------#' +########################################################################### +# Check if setting global value changes session value and vice versa # +########################################################################### +SET @@session.collation_server = utf8_polish_ci; +SELECT @@session.collation_server; +SET @@global.collation_server = latin7_general_ci; +SELECT @@global.collation_server; +SELECT @@session.collation_server AS res_is_utf8_polish_ci; + +SET @@session.collation_server = latin7_bin; +SELECT @@session.collation_server; +SELECT @@global.collation_server AS res_is_latin7_general_ci; +# composite check +SELECT @@global.collation_server=@@session.collation_server AS res_is_false; + +--echo '#--------------------FN_DYNVARS_014_04-------------------------#' +############################################################################# +# Check if accessing variable with and without session point to # +# session variable # +############################################################################# +SELECT @@collation_server = @@session.collation_server AS res; +SELECT @@collation_server = @@local.collation_server AS res; + +--echo '#--------------------FN_DYNVARS_014_05-------------------------#' +########################################################################### +# Check if combining character set works # +########################################################################### +--Error ER_BAD_FIELD_ERROR +SET @@collation_server = latin7_general_ci + latin7_general_cs; + +--echo '#--------------------FN_DYNVARS_014_06-------------------------#' +############################################################################## +# Change the value of collation_server to a valid value for session # +############################################################################## + +let collation_variable = @@session.collation_server; +--source include/collation_basic.inc + + +--echo '#--------------------FN_DYNVARS_014_07-------------------------#' +############################################################################# +# Change the value of collation_server to a valid value for global # +############################################################################# + +let collation_variable = @@global.collation_server; +--source include/collation_basic.inc + + +--echo '#--------------------FN_DYNVARS_014_08-------------------------#' +############################################################################# +# Change the value of collation_server to a valid value with uppercase, # +# lowercase and mixedcase # +############################################################################# + +SET @@collation_server = LATIN7_GENERAL_CS; +SELECT @@collation_server; +SET @@collation_server = latin7_general_cs; +SELECT @@collation_server; + +SET @@global.collation_server = Latin7_GeneRal_cS; +SELECT @@global.collation_server; + + +--echo '#--------------------FN_DYNVARS_014_09-------------------------#' +############################################################## +# Check if 1,2,3, ... values can be used on variable # +############################################################## +SET @@collation_server = 1; +SELECT @@collation_server; +SET @@collation_server = 2; +SELECT @@collation_server; +SET @@collation_server = 3; +SELECT @@collation_server; +SET @@collation_server = 99; +SELECT @@collation_server; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = 100; + + +SET @@global.collation_server = 1; +SELECT @@global.collation_server; +SET @@global.collation_server = 2; +SELECT @@global.collation_server; +SET @@global.collation_server = 3; +SELECT @@global.collation_server; +SET @@global.collation_server = 99; +SELECT @@global.collation_server; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = 100; + + +SET @total_collations = (SELECT count(*) FROM INFORMATION_SCHEMA.COLLATIONS); +SELECT @total_collations > 120; + +--echo '#--------------------FN_DYNVARS_014_10-------------------------#' +############################################################################### +# Change the value of collation_server to an invalid value for session # +############################################################################### +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = latin7_binary; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = 'eucjpms_japanese_cs'; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@collation_server = 1.01; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = -1; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = ''; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = ' eucjpms_bin'; +SET @@collation_server = true; +SELECT @@collation_server AS res_with_true; +--Error ER_UNKNOWN_COLLATION +SET @@collation_server = ON; + +--echo '#--------------------FN_DYNVARS_014_11-------------------------#' +############################################################################### +# Change the value of collation_server to an invalid value for global # +############################################################################### +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = latin7_binary; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = 'eucjpms_japanese_cs'; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.collation_server = 1.1; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = -1; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = ""; +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = ' eucjpms_bin'; + +SET @@global.collation_server = true; + +--Error ER_UNKNOWN_COLLATION +SET @@global.collation_server = ON; + +--echo '#--------------------FN_DYNVARS_014_12-------------------------#' +############################################################################### +# Check if the value in GLOBAL Table matches value in variable # +############################################################################### +SELECT @@global.collation_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='collation_server') AS res; +SET @@global.collation_server = 1; +SELECT @@global.collation_server; +SELECT @@global.collation_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='collation_server') AS res; + +--echo '#--------------------FN_DYNVARS_014_13-------------------------#' +############################################################################### +# Check if the value in SESSION Table matches value in variable # +############################################################################### +SELECT @@collation_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_server') AS res; +SELECT @@local.collation_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_server') AS res; +SELECT @@session.collation_server = + (SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='collation_server') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.collation_server = @global_start_value; +SELECT @@global.collation_server; +SET @@session.collation_server = @session_start_value; +SELECT @@session.collation_server; + +##################################################### +# END OF collation_server TESTS # +##################################################### diff --git a/mysql-test/t/collation_server_func.test b/mysql-test/t/collation_server_func.test new file mode 100644 index 00000000000..045cb5cf720 --- /dev/null +++ b/mysql-test/t/collation_server_func.test @@ -0,0 +1,115 @@ +############## mysql-test\t\collation_server_func.test ####################### +# # +# Variable Name: collation_server # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable collation_server # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_014_01-------------------------#' +################################################################## +# Check if setting collation_server is changed in new connection # +################################################################## +#save +SET @global_collation_server = @@global.collation_server; +SET @session_collation_server = @@session.collation_server; + +SET @@global.collation_server = latin1_danish_ci; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.collation_server; +SELECT @@session.collation_server; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_014_02-------------------------#' +####################################################### +# Begin the functionality Testing of collation_server # +####################################################### + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1,t2; +--enable_warnings + +#============================================================================== +--echo '---check if setting collation_server update character_set_server---' +#============================================================================== + +SET @@session.collation_server = utf8_spanish_ci; +SELECT @@collation_server, @@character_set_server; + +#============================================================================== +--echo '--check if collation_server effects database/table charset/collation--' +#============================================================================== +SET @@session.collation_server = latin1_german1_ci; +CREATE DATABASE db1; +USE db1; +SHOW CREATE DATABASE db1; +CREATE TABLE t1(a CHAR(20)); +SHOW CREATE TABLE t1; +#============================================================================== +--echo '---check if updating collation_server effects new table/column---' +#============================================================================== +SET @@session.collation_server = latin1_swedish_ci; +CREATE TABLE t2(a CHAR(10)); +SHOW CREATE TABLE t2; + + +# fill table with some test data +INSERT INTO t1 VALUES('Muffler'),('Mller'),('MX Systems'); + +#============================================================================== +--echo '---check if collation_server effects results sort order---' +#============================================================================== +SET @@session.collation_server = latin1_swedish_ci; +SELECT * FROM t1 ORDER BY a; + +SET @@session.collation_server = latin1_german1_ci; +SELECT * FROM t1 ORDER BY a; + +# explicit Collate clause should effects results sort order + +SELECT * FROM t1 ORDER BY a COLLATE latin1_swedish_ci; +SELECT * FROM t1 ORDER BY a COLLATE latin1_german1_ci; + +#============================================================================== +--echo '---check if indexing is effected by collation_server---' +#============================================================================== +SET @@session.collation_server = latin1_swedish_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +SELECT * FROM t1 ORDER BY a; + +ALTER TABLE t1 DROP PRIMARY KEY; +SET @@session.collation_server = latin1_german1_ci; +ALTER TABLE t1 ADD PRIMARY KEY (a); +REPAIR TABLE t1; +SELECT * FROM t1 ORDER BY a; + + +# clean up +DROP TABLE t1,t2; +DROP DATABASE db1; +#restore +SET @@global.collation_server = @global_collation_server; +SET @@session.collation_server = @session_collation_server; +##################################################### +# End of functionality Testing for collation_server # +##################################################### diff --git a/mysql-test/t/completion_type_basic.test b/mysql-test/t/completion_type_basic.test new file mode 100644 index 00000000000..7ffc1aa593b --- /dev/null +++ b/mysql-test/t/completion_type_basic.test @@ -0,0 +1,184 @@ +############## mysql-test\t\completion_type_basic.test ######################### +# # +# Variable Name: completion_type # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 0 # +# Valid Values: 0,1 & 2 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "completion_type" # +# that checks 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#option_mysqld_completion_type # +# # +################################################################################ + +--source include/load_sysvars.inc + +############################################################### +# START OF completion_type TESTS # +############################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.completion_type; +SELECT @start_global_value; +SET @start_session_value = @@session.completion_type; +SELECT @start_session_value; + +--echo '#--------------------FN_DYNVARS_017_01-------------------------#' +############################################################### +# Display the DEFAULT value of completion_type # +############################################################### + +SET @@global.completion_type = 2; +SET @@global.completion_type = DEFAULT; +SELECT @@global.completion_type; + +SET @@session.completion_type = 1; +SET @@session.completion_type = DEFAULT; +SELECT @@session.completion_type; + + +--echo '#--------------------FN_DYNVARS_017_02-------------------------#' +############################################################### +# Check the DEFAULT value of completion_type # +############################################################### + +SET @@global.completion_type = @start_global_value; +SELECT @@global.completion_type = 0; + +SET @@session.completion_type = @start_session_value; +SELECT @@session.completion_type = 0; + + +--echo '#--------------------FN_DYNVARS_017_03-------------------------#' +######################################################################### +# Change the value of completion_type to a valid value for GLOBAL Scope # +######################################################################### + +SET @@global.completion_type = 0; +SELECT @@global.completion_type; +SET @@global.completion_type = 1; +SELECT @@global.completion_type; +SET @@global.completion_type = 2; +SELECT @@global.completion_type; + + +--echo '#--------------------FN_DYNVARS_017_04-------------------------#' +########################################################################## +# Change the value of completion_type to a valid value for SESSION Scope # +########################################################################## + +SET @@session.completion_type = 0; +SELECT @@session.completion_type; +SET @@session.completion_type = 1; +SELECT @@session.completion_type; +SET @@session.completion_type = 2; +SELECT @@session.completion_type; + + +--echo '#------------------FN_DYNVARS_017_05-----------------------#' +########################################################### +# Change the value of completion_type to an invalid value # +########################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.completion_type = 10; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.completion_type = -1024; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.completion_type = 2.4; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.completion_type = OFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.completion_type = 10; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.completion_type = -2; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.completion_type = 1.2; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.completion_type = ON; + + +--echo '#------------------FN_DYNVARS_017_06-----------------------#' +############################################################################### +# Check if the value in GLOBAL & SESSION Tables matches value in variable # +############################################################################### + +SELECT @@global.completion_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='completion_type'; + +SELECT @@session.completion_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='completion_type'; + + +--echo '#------------------FN_DYNVARS_017_07-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.completion_type = TRUE; +SELECT @@global.completion_type; +SET @@global.completion_type = FALSE; +SELECT @@global.completion_type; + + +--echo '#---------------------FN_DYNVARS_001_08----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@completion_type = 1; +SELECT @@completion_type = @@local.completion_type; +SELECT @@local.completion_type = @@session.completion_type; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +########################################################################## +# Check if completion_type can be accessed with and without @@ sign # +########################################################################## + +SET completion_type = 1; +SELECT @@completion_type; +--Error ER_PARSE_ERROR +SET local.completion_type = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.completion_type; +--Error ER_PARSE_ERROR +SET session.completion_type = 1; +--Error ER_UNKNOWN_TABLE +SELECT session.completion_type; +--Error ER_BAD_FIELD_ERROR +SELECT completion_type = @@session.completion_type; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.completion_type = @start_global_value; +SELECT @@global.completion_type; +SET @@session.completion_type = @start_session_value; +SELECT @@session.completion_type; + +############################################ +# END OF completion_type TESTS # +############################################ + diff --git a/mysql-test/t/completion_type_func-master.opt b/mysql-test/t/completion_type_func-master.opt new file mode 100644 index 00000000000..627becdbfb5 --- /dev/null +++ b/mysql-test/t/completion_type_func-master.opt @@ -0,0 +1 @@ +--innodb diff --git a/mysql-test/t/completion_type_func.test b/mysql-test/t/completion_type_func.test new file mode 100644 index 00000000000..5ac0c6985e0 --- /dev/null +++ b/mysql-test/t/completion_type_func.test @@ -0,0 +1,104 @@ +############## mysql-test\t\completion_type_func.test ######################### +# # +# Variable Name: completion_type # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 0 # +# Valid Values: 0,1 & 2 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "completion_type" # +# that checks functinality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_completion_type # +# # +################################################################################ + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name varchar(30) +) ENGINE = INNODB; + +--echo '#--------------------FN_DYNVARS_017_01-------------------------#' +######################################################### +# Setting initial value of completion_type to zero # +######################################################### + +--echo ## Creating new connection ## +connect (test_con1,localhost,root,,); +connection test_con1; + +INSERT into t1(name) values('Record_1'); +SET @@autocommit = 0; +SELECT * from t1; + +--echo ## Setting value of variable to 0 ## +SET @@session.completion_type = 0; + +--echo ## Here commit & rollback should work normally ## +START TRANSACTION; +SELECT * from t1; +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); +SELECT * from t1; +DELETE FROM t1 where id = 2; +SELECT * from t1; + + +START TRANSACTION; +SELECT * from t1; +INSERT into t1(name) values('Record_4'); +INSERT into t1(name) values('Record_5'); +COMMIT; + + +--echo '#--------------------FN_DYNVARS_017_02-------------------------#' +######################################################### +# Setting initial value of completion_type to 2 # +######################################################### + +SET @@session.completion_type = 2; + +--echo ## Here commit should work as COMMIT RELEASE ## +START TRANSACTION; +SELECT * from t1; +INSERT into t1(name) values('Record_6'); +INSERT into t1(name) values('Record_7'); +COMMIT; + +--echo ## Inserting rows should give error here because connection should ## +--echo ## disconnect after using COMMIT ## +--Error 2006,2013 +INSERT into t1(name) values('Record_4'); + +--echo ## Creating new connection test_con2 ## +connect (test_con2,localhost,root,,); +connection test_con2; +SET @@session.completion_type = 2; + +--echo ## Inserting rows and using Rollback which should Rollback & release ## +START TRANSACTION; +SELECT * from t1; +INSERT into t1(name) values('Record_8'); +INSERT into t1(name) values('Record_9'); +ROLLBACK; + +--Error 2006,2013 +INSERT into t1(name) values('Record_4'); + diff --git a/mysql-test/t/concurrent_insert_basic.test b/mysql-test/t/concurrent_insert_basic.test new file mode 100644 index 00000000000..bc401ef22a3 --- /dev/null +++ b/mysql-test/t/concurrent_insert_basic.test @@ -0,0 +1,178 @@ +############## mysql-test\t\concurrent_insert_basic.test ####################### +# # +# Variable Name: concurrent_insert # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean & Numeric # +# Default Value: 1 # +# Valid Values: 0,1 & 2 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "concurrent_insert" # +# that checks 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#option_mysqld_concurrent_insert # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################# +# START OF concurrent_insert TESTS # +################################################################# + + +######################################################################### +# Saving initial value of concurrent_insert in a temporary variable # +######################################################################### + +SET @start_value = @@global.concurrent_insert; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_018_01------------------------#' +######################################################################### +# Display the DEFAULT value of concurrent_insert # +######################################################################### + +SET @@global.concurrent_insert = 0; +SET @@global.concurrent_insert = DEFAULT; +SELECT @@global.concurrent_insert; + +--echo '#---------------------FN_DYNVARS_018_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.concurrent_insert = DEFAULT; +SELECT @@global.concurrent_insert = 1; + + +--echo '#--------------------FN_DYNVARS_018_03------------------------#' +######################################################################### +# Change the value of concurrent_insert to a valid value # +######################################################################### + +SET @@global.concurrent_insert = 0; +SELECT @@global.concurrent_insert; +SET @@global.concurrent_insert = 1; +SELECT @@global.concurrent_insert; +SET @@global.concurrent_insert = 2; +SELECT @@global.concurrent_insert; + +--echo '#--------------------FN_DYNVARS_018_04-------------------------#' +########################################################################### +# Change the value of concurrent_insert to invalid value # +########################################################################### + +SET @@global.concurrent_insert = -1; +Select @@global.concurrent_insert; +SET @@global.concurrent_insert = 100; +Select @@global.concurrent_insert; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = TRUEF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = TRUE_F; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = FALSE0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = OON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = ONN; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = OOFF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = 0FF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = ' '; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = " "; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = ''; + + +--echo '#-------------------FN_DYNVARS_018_05----------------------------#' +##################################################################### +# Test if accessing session concurrent_insert gives error # +##################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.concurrent_insert = 1; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.concurrent_insert = 1; + + +--echo '#----------------------FN_DYNVARS_018_06------------------------#' +#################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +#################################################################### + +SELECT @@global.concurrent_insert = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='concurrent_insert'; + + +--echo '#---------------------FN_DYNVARS_018_07----------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = OFF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.concurrent_insert = ON; + + +--echo '#---------------------FN_DYNVARS_018_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.concurrent_insert = TRUE; +SELECT @@global.concurrent_insert; +SET @@global.concurrent_insert = FALSE; +SELECT @@global.concurrent_insert; + +--echo '#---------------------FN_DYNVARS_018_09----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same global variable # +############################################################################### + +SET @@global.concurrent_insert = 1; +SELECT @@concurrent_insert = @@global.concurrent_insert; + + +--echo '#---------------------FN_DYNVARS_018_10----------------------#' +############################################################################### +# Check if concurrent_insert can be accessed with and without @@ sign # +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET concurrent_insert = 1; +SELECT @@concurrent_insert; +--Error ER_PARSE_ERROR +SET global.concurrent_insert = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.concurrent_insert; +--Error ER_BAD_FIELD_ERROR +SELECT concurrent_insert = @@session.concurrent_insert; + +############################## +# Restore initial value # +############################## + +SET @@global.concurrent_insert = @start_value; +SELECT @@global.concurrent_insert; + +####################################################### +# END OF concurrent_insert TESTS # +####################################################### + diff --git a/mysql-test/t/concurrent_insert_func.test b/mysql-test/t/concurrent_insert_func.test new file mode 100644 index 00000000000..e6ea7c4304b --- /dev/null +++ b/mysql-test/t/concurrent_insert_func.test @@ -0,0 +1,140 @@ +############## mysql-test\t\concurrent_insert_basic.test ####################### +# # +# Variable Name: concurrent_insert # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean & Numeric # +# Default Value: 1 # +# Valid Values: 0,1 & 2 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "concurrent_insert" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_concurrent_insert # +# # +################################################################################ + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +name varchar(30) +); + +--echo '#--------------------FN_DYNVARS_018_01-------------------------#' +#################################################################### +# Setting initial value of concurrent_insert to 1 +# concurrent_insert = 1 means Enables concurrent insert +# for MyISAM tables that don't have holes +#################################################################### + +--echo ## Setting initial value of variable to 1 ## +SET @@global.concurrent_insert = 1; +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); + +--echo ## locking table ## +lock table t1 read local; + +--echo ## Creating new connection to insert some rows in table ## +connect (test_con1,localhost,root,,); +connection test_con1; + +--echo ## New records should come at the end of all rows ## +INSERT into t1(name) values('Record_4'); +SELECT * from t1; + + +--echo ## unlocking tables ## +connection default; +unlock tables; + +--echo ## deleting record to create hole in table ## +DELETE from t1 where name ='Record_2'; + + +--echo '#--------------------FN_DYNVARS_018_02-------------------------#' +#################################################################### +# Setting initial value of concurrent_insert to 1 +# concurrent_insert = 1 and trying to insert some values +# in MyISAM tables that have holes +#################################################################### + +# lock table and connect with connection1 +#lock table t1 read local; +#connection test_con1; + +# setting value of concurrent_insert to 1 +#SET @@global.concurrent_insert=1; + +#INSERT into t1(name) values('Record_7'); +#SELECT * from t1; + +#connection default; +#unlock tables; + +#SELECT * from t1; +#INSERT into t1(name) values('Record_6'); + +# On inserting rows in hole while the value of concurrent_insert is 1 +# MySQL server hangs. + + + +--echo '#--------------------FN_DYNVARS_018_03-------------------------#' +############################################################################### +# Setting value of concurrent_insert to 2 to verify values after inserting +# it into table with holes +# concurrent_insert = 2 means Enables concurrent insert +# for MyISAM tables that have holes but inserts values at the end of all rows +############################################################################### + +--echo ## lock table and connect with connection1 ## +lock table t1 read local; +connection test_con1; + +--echo ## setting value of concurrent_insert to 2 ## +SET @@global.concurrent_insert=2; + +--echo ## Inserting record in table, record should go at the end of the table ## +INSERT into t1(name) values('Record_5'); +SELECT * from t1; +SELECT @@concurrent_insert; + +--echo ## Switching to default connection ## +connection default; + +--echo ## Unlocking table ## +unlock tables; + +SELECT * from t1; + +--echo ## Inserting new row, this should go in the hole ## +INSERT into t1(name) values('Record_6'); +SELECT * from t1; + +--echo ## connection test_con1 ## + +DELETE from t1 where name ='Record_3'; +SELECT * from t1; + +--echo ## Dropping table ## +DROP table t1; + +--echo ## Disconnecting connection ## +disconnect test_con1; + diff --git a/mysql-test/t/connect_timeout_basic.test b/mysql-test/t/connect_timeout_basic.test new file mode 100644 index 00000000000..095c85f8295 --- /dev/null +++ b/mysql-test/t/connect_timeout_basic.test @@ -0,0 +1,153 @@ +################# mysql-test\t\connect_timeout_basic.test ###################### +# # +# Variable Name: connect_timeout # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 5 # +# Range: 2 - 31536000 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "connect_timeout" # +# that checks 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#option_mysqld_connect_timeout # +# # +################################################################################ + +--source include/load_sysvars.inc + +############################################################### +# START OF connect_timeout TESTS # +############################################################### + +####################################################################### +# Saving initial value of connect_timeout in a temporary variable # +####################################################################### + +SET @start_value = @@global.connect_timeout; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_019_01------------------------#' +####################################################################### +# Display the DEFAULT value of connect_timeout # +####################################################################### + +SET @@global.connect_timeout = 100; +SET @@global.connect_timeout = DEFAULT; +SELECT @@global.connect_timeout; + + +--echo '#---------------------FN_DYNVARS_019_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.connect_timeout = @start_value; +SELECT @@global.connect_timeout = 5; + + +--echo '#--------------------FN_DYNVARS_019_03------------------------#' +####################################################################### +# Change the value of connect_timeout to a valid value # +####################################################################### + +SET @@global.connect_timeout = 2; +SELECT @@global.connect_timeout; +SET @@global.connect_timeout = 10000; +SELECT @@global.connect_timeout; +SET @@global.connect_timeout = 21221204; +SELECT @@global.connect_timeout; + + +--echo '#--------------------FN_DYNVARS_019_04-------------------------#' +########################################################################## +# Change the value of connect_timeout to invalid value # +########################################################################## + +SET @@global.connect_timeout = 1; +SELECT @@global.connect_timeout; +SET @@global.connect_timeout = -1024; +SELECT @@global.connect_timeout; +SET @@global.connect_timeout = 42949672950; +SELECT @@global.connect_timeout; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.connect_timeout = 21221204.10; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.connect_timeout = ON; + + +--echo '#-------------------FN_DYNVARS_019_05----------------------------#' +########################################################################## +# Test if accessing session connect_timeout gives error # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET @@session.connect_timeout = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.connect_timeout; + + +--echo '#----------------------FN_DYNVARS_019_06------------------------#' +#################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +#################################################################### + +SELECT @@global.connect_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='connect_timeout'; + +--echo '#---------------------FN_DYNVARS_019_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.connect_timeout = TRUE; +SELECT @@global.connect_timeout; +SET @@global.connect_timeout = FALSE; +SELECT @@global.connect_timeout; + + +--echo '#---------------------FN_DYNVARS_019_08----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same global variable # +############################################################################### + +SET @@global.connect_timeout = 5; +SELECT @@connect_timeout = @@global.connect_timeout; + +--echo '#---------------------FN_DYNVARS_019_09----------------------#' +######################################################################### +# Check if connect_timeout can be accessed with and without @@ sign # +######################################################################### + +--Error ER_GLOBAL_VARIABLE +SET connect_timeout = 1; +--Error ER_PARSE_ERROR +SET global.connect_timeout = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.connect_timeout; +--Error ER_BAD_FIELD_ERROR +SELECT connect_timeout = @@session.connect_timeout; + +############################## +# Restore initial value # +############################## + +SET @@global.connect_timeout = @start_value; +SELECT @@global.connect_timeout; + + +######################################################### +# END OF connect_timeout TESTS # +######################################################### + diff --git a/mysql-test/t/datadir_basic.test b/mysql-test/t/datadir_basic.test new file mode 100644 index 00000000000..7fae68fa55e --- /dev/null +++ b/mysql-test/t/datadir_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\datadir_basic.test ############################ +# # +# Variable Name: datadir # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable datadir # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_004_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.datadir); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_004_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.datadir=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.datadir); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_004_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.datadir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='datadir'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.datadir); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='datadir'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_004_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@datadir = @@GLOBAL.datadir; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_004_05----------------------#' +################################################################################ +# Check if datadir can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@datadir); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.datadir); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.datadir); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.datadir); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT datadir = @@SESSION.datadir; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/default_week_format_basic.test b/mysql-test/t/default_week_format_basic.test new file mode 100644 index 00000000000..d8b4a09541f --- /dev/null +++ b/mysql-test/t/default_week_format_basic.test @@ -0,0 +1,199 @@ +############## mysql-test\t\default_week_format_basic.test ##################### +# # +# Variable Name: default_week_format # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 0 # +# Range: 0 - 7 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "default_week_format" # +# that checks 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#option_mysqld_auto-increment-increment # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################### +# START OF default_week_format TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.default_week_format; +SELECT @start_global_value; +SET @start_session_value = @@session.default_week_format; +SELECT @start_session_value; + +--echo '#--------------------FN_DYNVARS_022_01-------------------------#' +################################################################### +# Display the DEFAULT value of default_week_format # +################################################################### + +SET @@global.default_week_format = 100; +SET @@global.default_week_format = DEFAULT; +SELECT @@global.default_week_format; + +SET @@session.default_week_format = 200; +SET @@session.default_week_format = DEFAULT; +SELECT @@session.default_week_format; + +--echo '#--------------------FN_DYNVARS_022_02-------------------------#' +################################################################### +# Check the DEFAULT value of default_week_format # +################################################################### + +SET @@global.default_week_format = @start_global_value; +SELECT @@global.default_week_format = 0; + +SET @@session.default_week_format = @start_global_value; +SELECT @@session.default_week_format = 0; + +--echo '#--------------------FN_DYNVARS_022_03-------------------------#' +############################################################################# +# Change the value of default_week_format to a valid value for GLOBAL Scope # +############################################################################# + +SET @@global.default_week_format = 1; +SELECT @@global.default_week_format; +SET @@global.default_week_format = 0; +SELECT @@global.default_week_format; +SET @@global.default_week_format = 7; +SELECT @@global.default_week_format; + + +--echo '#--------------------FN_DYNVARS_022_04-------------------------#' +############################################################################## +# Change the value of default_week_format to a valid value for SESSION Scope # +############################################################################## + +SET @@session.default_week_format = 1; +SELECT @@session.default_week_format; +SET @@session.default_week_format = 0; +SELECT @@session.default_week_format; +SET @@session.default_week_format = 7; +SELECT @@session.default_week_format; + + +--echo '#------------------FN_DYNVARS_022_05-----------------------#' +############################################################### +# Change the value of default_week_format to an invalid value # +############################################################### + +SET @@global.default_week_format = 8; +SELECT @@global.default_week_format; +SET @@global.default_week_format = -1024; +SELECT @@global.default_week_format; +SET @@global.default_week_format = 65536; +SELECT @@global.default_week_format; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.default_week_format = 65530.30; +SELECT @@global.default_week_format; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.default_week_format = OFF; +SELECT @@global.default_week_format; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.default_week_format = ON; +SELECT @@session.default_week_format; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.default_week_format = 65530.30; +SELECT @@session.default_week_format; +SET @@session.default_week_format = 10; +SELECT @@session.default_week_format; +SET @@session.default_week_format = -2; +SELECT @@session.default_week_format; +SET @@session.default_week_format = 65550; +SELECT @@session.default_week_format; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--echo '#------------------FN_DYNVARS_022_06-----------------------#' +############################################################################### +# Check if the value in GLOBAL & SESSION Tables matches value in variable # +############################################################################### + +SELECT @@global.default_week_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='default_week_format'; + +SELECT @@session.default_week_format = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='default_week_format'; + + +--echo '#------------------FN_DYNVARS_022_07-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.default_week_format = TRUE; +SELECT @@global.default_week_format; +SET @@global.default_week_format = FALSE; +SELECT @@global.default_week_format; + + +--echo '#---------------------FN_DYNVARS_001_08----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.default_week_format = 0; +SELECT @@default_week_format = @@global.default_week_format; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@default_week_format = 1; +SELECT @@default_week_format = @@local.default_week_format; +SELECT @@local.default_week_format = @@session.default_week_format; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +################################################################################### +# Check if default_week_format can be accessed with and without @@ sign # +################################################################################### + +SET default_week_format = 1; +SELECT @@default_week_format; +--Error ER_PARSE_ERROR +SET local.default_week_format = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.default_week_format; +--Error ER_PARSE_ERROR +SET session.default_week_format = 1; +--Error ER_UNKNOWN_TABLE +SELECT session.default_week_format; +--Error ER_BAD_FIELD_ERROR +SELECT default_week_format = @@session.default_week_format; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.default_week_format = @start_global_value; +SELECT @@global.default_week_format; +SET @@session.default_week_format = @start_session_value; +SELECT @@session.default_week_format; + + +############################################################# +# END OF default_week_format TESTS # +############################################################# + diff --git a/mysql-test/t/default_week_format_func.test b/mysql-test/t/default_week_format_func.test new file mode 100644 index 00000000000..c80c49b39fb --- /dev/null +++ b/mysql-test/t/default_week_format_func.test @@ -0,0 +1,66 @@ +############## mysql-test\t\default_week_format_func.test ##################### +# # +# Variable Name: default_week_format # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 0 # +# Range: 0 - 7 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "default_week_format" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_default_week_format # +# # +################################################################################ + +--echo '#--------------------FN_DYNVARS_022_01-------------------------#' +#################################################################### +# Verifying different values of default_week_format +#################################################################### + +--echo ## Setting variable's value to 0 ## +SET @@session.default_week_format = 0; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 1 ## +SET @@session.default_week_format = 1; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 2 ## +SET @@session.default_week_format = 2; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 3 ## +SET @@session.default_week_format = 3; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 4 ## +SET @@session.default_week_format = 4; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 5 ## +SET @@session.default_week_format = 5; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 6 ## +SET @@session.default_week_format = 6; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + +--echo ## Setting variable's value to 7 ## +SET @@session.default_week_format = 7; +SELECT @@session.default_week_format; +SELECT WEEK('2008-01-20'); + diff --git a/mysql-test/t/delay_key_write_basic.test b/mysql-test/t/delay_key_write_basic.test new file mode 100644 index 00000000000..faa1cb3cc6e --- /dev/null +++ b/mysql-test/t/delay_key_write_basic.test @@ -0,0 +1,173 @@ +##################### mysql-test\t\delay_key_write_basic.test ################# +# # +# Variable Name: delay_key_write # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: ON # +# Valid Values: ON, OFF & ALL # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable delay_key_write # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF delay_key_write TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of delay_key_write in a temporary variable # +######################################################################## + +SET @start_value = @@global.delay_key_write; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_023_01------------------------#' +######################################################################## +# Display the DEFAULT value of delay_key_write # +######################################################################## + +SET @@global.delay_key_write = OFF; +--Error ER_NO_DEFAULT +SET @@global.delay_key_write = DEFAULT; +--echo 'Bug # 34878: Documentation specifies a DEFAULT value of ON for variable but'; +--echo 'its not supported'; +SELECT @@global.delay_key_write; + + +--echo '#---------------------FN_DYNVARS_023_02-------------------------#' +############################################### +# Check if NULL is accepeted # +############################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = NULL; + + +--echo '#--------------------FN_DYNVARS_023_03------------------------#' +######################################################################## +# Change the value of delay_key_write to a valid value # +######################################################################## + +SET @@global.delay_key_write = ON; +SELECT @@global.delay_key_write; + +SET @@global.delay_key_write = OFF; +SELECT @@global.delay_key_write; + +SET @@global.delay_key_write = ALL; +SELECT @@global.delay_key_write; + + +--echo '#--------------------FN_DYNVARS_023_04-------------------------#' +########################################################################### +# Change the value of delay_key_write to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = 3; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = TRU; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = ERROR; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = ONN; + +SET @@global.delay_key_write = OF; +SELECT @@global.delay_key_write; +--echo 'Bug# 34828: Variable is incorrectly accepting OF as a value' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.delay_key_write = ""; + + +--echo '#-------------------FN_DYNVARS_023_05----------------------------#' +########################################################################### +# Test if accessing session delay_key_write gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@delay_key_write = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.delay_key_write; + + +--echo '#----------------------FN_DYNVARS_023_06------------------------#' +######################################################################## +# Check if the value in GLOBAL Table matches value in variable # +######################################################################## + +SELECT @@delay_key_write = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delay_key_write'; + + +--echo '#---------------------FN_DYNVARS_023_07-------------------------#' +################################################################### +# Check if numbers can be used on variable # +################################################################### + +SET @@global.delay_key_write = 0; +SELECT @@global.delay_key_write; + +SET @@global.delay_key_write = 1; +SELECT @@global.delay_key_write; + +SET @@global.delay_key_write = 2; +SELECT @@global.delay_key_write; + + + +--echo '#---------------------FN_DYNVARS_023_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.delay_key_write = TRUE; +SELECT @@global.delay_key_write; +SET @@global.delay_key_write = FALSE; +SELECT @@global.delay_key_write; + +--echo '#---------------------FN_DYNVARS_023_09----------------------#' +##################################################################### +# Check if delay_key_write can be accessed with and without @@ sign # +##################################################################### +--Error ER_GLOBAL_VARIABLE +SET delay_key_write = ON; +SELECT @@delay_key_write; + +SET GLOBAL delay_key_write = OFF; +SELECT @@global.delay_key_write; + +############################## +# Restore initial value # +############################## + +SET @@global.delay_key_write = @start_value; +SELECT @@global.delay_key_write; + +######################################################################## +# END OF delay_key_write TESTS # +######################################################################## diff --git a/mysql-test/t/delay_key_write_func-master.opt b/mysql-test/t/delay_key_write_func-master.opt new file mode 100644 index 00000000000..a449c0fb964 --- /dev/null +++ b/mysql-test/t/delay_key_write_func-master.opt @@ -0,0 +1,2 @@ +--myisam-recover=BACKUP,FORCE + diff --git a/mysql-test/t/delay_key_write_func.test b/mysql-test/t/delay_key_write_func.test new file mode 100644 index 00000000000..a361bf1f54c --- /dev/null +++ b/mysql-test/t/delay_key_write_func.test @@ -0,0 +1,148 @@ +##################### mysql-test\t\delay_key_write_func.test ################# +# # +# Variable Name: delay_key_write # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: ON # +# Valid Values: ON, OFF & ALL # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable delay_key_write # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_023_01-------------------------#' +####################################################################### +# Check if setting delay_key_write is changed in every new connection # +####################################################################### + + +SET @@global.delay_key_write = ON; +SELECT @@global.delay_key_write; + +--echo 'connect (user1,localhost,root,,,,)' +connect (user1,localhost,root,,,,); +--echo 'connection user1' +connection user1; +SELECT @@global.delay_key_write AS res_is_ON; +SET @@global.delay_key_write = ALL; +disconnect user1; + +--echo 'connect (user1,localhost,root,,,,)' +connect (user1,localhost,root,,,,); +--echo 'connection user1' +connection user1; +SELECT @@global.delay_key_write AS res_is_ALL; + +--echo '#--------------------FN_DYNVARS_023_02-------------------------#' +###################################################### +# Begin the functionality Testing of delay_key_write # +###################################################### + +# create procedure to add rows +--disable_query_log +DELIMITER //; +CREATE PROCEDURE sp_addRecords (IN var1 INT,IN var2 INT) +BEGIN + WHILE (var1 < var2) DO + INSERT INTO t1 VALUES(var1,REPEAT('MYSQL',10),100000.0/var1); + SET var1=var1+1; + END WHILE; +END// +DELIMITER ;// +--enable_query_log + +#============================================================================== +--echo '---check when delay_key_write is OFF---' +#============================================================================== + + +SET @@global.delay_key_write = OFF; + + +--disable_query_log +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +# create a table with delay_key_write enabled +CREATE TABLE t1( +a INT PRIMARY KEY, +b VARCHAR(512), +c DOUBLE +)delay_key_write = 1; +--enable_query_log + + +FLUSH STATUS; + +CALL sp_addRecords(1,10); + +SHOW STATUS LIKE 'Key_reads'; +SHOW STATUS LIKE 'Key_writes'; +SHOW STATUS LIKE 'Key_write_requests'; +select count(*) from t1; + +#============================================================================== +--echo '----check when delay_key_write is ON---' +#============================================================================== + +SET @@global.delay_key_write = ON; + +--disable_query_log +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +# create a table with delay_key_write enabled +CREATE TABLE t1( +a INT PRIMARY KEY, +b VARCHAR(512), +c DOUBLE +)delay_key_write = 1; +--enable_query_log + +FLUSH STATUS; +CALL sp_addRecords(1,10); + +SHOW STATUS LIKE 'Key_reads'; +SHOW STATUS LIKE 'Key_writes'; +SHOW STATUS LIKE 'Key_write_requests'; +select count(*) from t1; + +#============================================================================== +--echo '----check when delay_key_write is ALL---' +#============================================================================== +SET @@global.delay_key_write = ALL; + +--disable_query_log +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +# create a table with delay_key_write disabled +CREATE TABLE t1( +a INT PRIMARY KEY, +b VARCHAR(512), +c DOUBLE +)delay_key_write = 0; +--enable_query_log + +FLUSH STATUS; +CALL sp_addRecords(1,10); + +SHOW STATUS LIKE 'Key_reads'; +SHOW STATUS LIKE 'Key_writes'; +SHOW STATUS LIKE 'Key_write_requests'; +select count(*) from t1; + +DROP TABLE t1; + +#################################################### +# End of functionality testing for delay_key_write # +#################################################### diff --git a/mysql-test/t/delayed_insert_limit_func.test b/mysql-test/t/delayed_insert_limit_func.test new file mode 100644 index 00000000000..559abe5c059 --- /dev/null +++ b/mysql-test/t/delayed_insert_limit_func.test @@ -0,0 +1,227 @@ +############# mysql-test\t\sql_low_priority_updates_func.test ########################### +# # +# Variable Name: sql_low_priority_updates # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_low_priority_updates" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +######################################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +--echo Creating connection con0 +connect (con0,localhost,root,,); +--echo Creating connection con1 +connect (con1,localhost,root,,); + +connection default; + +SET @global_delayed_insert_limit = @@GLOBAL.delayed_insert_limit; + +# +# Create Table +# + +CREATE TABLE t1 (a varchar(100)); + +--echo '#--------------------FN_DYNVARS_25_01-------------------------#' +# +# Value less than the provided INSERTS (9) +# + +SET GLOBAL delayed_insert_limit = 9; + +--echo ** Connection con0 ** +connection con0; +SET GLOBAL delayed_insert_limit = 9; +--echo ** Connection con1 ** +connection con1; +SET GLOBAL delayed_insert_limit = 9; +--echo ** Connection default ** +connection default; +SET GLOBAL delayed_insert_limit = 9; + +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +delimiter |; + +send +INSERT DELAYED INTO t1 VALUES('7'); +INSERT DELAYED INTO t1 VALUES('8'); +INSERT DELAYED INTO t1 VALUES('9'); +INSERT DELAYED INTO t1 VALUES('10'); +INSERT DELAYED INTO t1 VALUES('11'); +INSERT DELAYED INTO t1 VALUES('12'); +INSERT DELAYED INTO t1 VALUES('13'); +INSERT DELAYED INTO t1 VALUES('14'); +INSERT DELAYED INTO t1 VALUES('15'); +INSERT DELAYED INTO t1 VALUES('16'); +INSERT DELAYED INTO t1 VALUES('17'); +INSERT DELAYED INTO t1 VALUES('18'); +INSERT DELAYED INTO t1 VALUES('19'); +INSERT DELAYED INTO t1 VALUES('20'); +INSERT DELAYED INTO t1 VALUES('21'); +INSERT DELAYED INTO t1 VALUES('22');| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +delimiter |; + +send +SELECT * FROM t1;| + +delimiter ;| + +--echo ** Connection default ** +connection default; + +--echo Waiting for 1 sec +--sleep 1 + +UNLOCK TABLES; + +--echo ** Connection con0 ** +connection con0; +reap; +--echo 'Bug#35386: insert delayed inserts 1 + limit rows instead of just limit rows' + +--echo ** Connection default ** +connection default; + +--echo Waiting for 1 sec +--sleep 1 +--echo Checking if the delayed insert continued afterwards +SELECT * FROM t1; + +DELETE FROM t1; + + +--echo '#--------------------FN_DYNVARS_25_02-------------------------#' +# +# Value 5 +# + +SET GLOBAL delayed_insert_limit = 20; + +--echo ** Connection con0 ** +connection con0; +SET GLOBAL delayed_insert_limit = 20; +--echo ** Connection con1 ** +connection con1; +SET GLOBAL delayed_insert_limit = 20; +--echo ** Connection default ** +connection default; +SET GLOBAL delayed_insert_limit = 20; + +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo Asynchronous execute +delimiter |; + +send +INSERT DELAYED INTO t1 VALUES('7'); +INSERT DELAYED INTO t1 VALUES('8'); +INSERT DELAYED INTO t1 VALUES('9'); +INSERT DELAYED INTO t1 VALUES('10'); +INSERT DELAYED INTO t1 VALUES('11'); +INSERT DELAYED INTO t1 VALUES('12'); +INSERT DELAYED INTO t1 VALUES('13'); +INSERT DELAYED INTO t1 VALUES('14'); +INSERT DELAYED INTO t1 VALUES('15'); +INSERT DELAYED INTO t1 VALUES('16'); +INSERT DELAYED INTO t1 VALUES('17'); +INSERT DELAYED INTO t1 VALUES('18'); +INSERT DELAYED INTO t1 VALUES('19'); +INSERT DELAYED INTO t1 VALUES('20'); +INSERT DELAYED INTO t1 VALUES('21'); +INSERT DELAYED INTO t1 VALUES('22');| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo Asynchronous execute +delimiter |; + +send +SELECT * FROM t1;| + +delimiter ;| + +--echo ** Connection default ** +connection default; + +--echo Waiting for 1 sec +--sleep 1 + +UNLOCK TABLES; + +--echo ** Connection con0 ** +connection con0; +--echo Asynchronous execute result +reap; + +--echo ** Connection default** +connection default; + +--echo Waiting for 1 sec +--sleep 1 +--echo Checking if the delayed insert gives the same result afterwards +SELECT * FROM t1; + +DELETE FROM t1; + +# +# Cleanup +# + +--echo Switching to default +connection default; + +--echo Disconnecting from con1, con0 +disconnect con0; +disconnect con1; + +DROP TABLE t1; + +SET @@GLOBAL.delayed_insert_limit = @global_delayed_insert_limit; diff --git a/mysql-test/t/delayed_insert_timeout_basic.test b/mysql-test/t/delayed_insert_timeout_basic.test new file mode 100644 index 00000000000..8bad6b2dfe6 --- /dev/null +++ b/mysql-test/t/delayed_insert_timeout_basic.test @@ -0,0 +1,171 @@ +################# mysql-test\t\delayed_insert_timeout_basic.test ############### +# # +# Variable Name: delayed_insert_timeout # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 300 # +# Range: 1 - 4294967286 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "delayed_insert_timeout" # +# that checks 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#option_mysqld_delayed_insert_timeout # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################# +# START OF delayed_insert_timeout TESTS # +################################################################# + +############################################################################## +# Saving initial value of delayed_insert_timeout in a temporary variable # +############################################################################## + +SET @start_value = @@global.delayed_insert_timeout; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_025_01------------------------#' +############################################################################## +# Display the DEFAULT value of delayed_insert_timeout # +############################################################################## + +SET @@global.delayed_insert_timeout = 100; +SET @@global.delayed_insert_timeout = DEFAULT; +SELECT @@global.delayed_insert_timeout; + + +--echo '#---------------------FN_DYNVARS_025_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.delayed_insert_timeout = @start_value; +SELECT @@global.delayed_insert_timeout = 300; + + +--echo '#--------------------FN_DYNVARS_025_03------------------------#' +############################################################################## +# Change the value of delayed_insert_timeout to a valid value # +############################################################################## + +SET @@global.delayed_insert_timeout = 10000; +SELECT @@global.delayed_insert_timeout; +SET @@global.delayed_insert_timeout = 429; +SELECT @@global.delayed_insert_timeout; +SET @@global.delayed_insert_timeout = 1; +SELECT @@global.delayed_insert_timeout; + + +--echo '#--------------------FN_DYNVARS_025_04-------------------------#' +################################################################################# +# Change the value of delayed_insert_timeout to invalid value # +################################################################################# + +SET @@global.delayed_insert_timeout = 0; +SELECT @@global.delayed_insert_timeout; +SET @@global.delayed_insert_timeout = -1024; +SELECT @@global.delayed_insert_timeout; +SET @@global.delayed_insert_timeout = 42949672950; +SELECT @@global.delayed_insert_timeout; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.delayed_insert_timeout = 429496729.5; +SELECT @@global.delayed_insert_timeout; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.delayed_insert_timeout = ON; +SELECT @@global.delayed_insert_timeout; + + +--echo '#-------------------FN_DYNVARS_025_05----------------------------#' +################################################################################# +# Test if accessing session delayed_insert_timeout gives error # +################################################################################# + +--Error 1229 +SET @@session.delayed_insert_timeout = 0; +--Error 1193 +SELECT @@session.dalayed_insert_timeout; + +--echo '#----------------------FN_DYNVARS_025_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.delayed_insert_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_timeout'; + +SELECT @@delayed_insert_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_timeout'; + + +--echo '#---------------------FN_DYNVARS_025_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.delayed_insert_timeout = TRUE; +SELECT @@global.delayed_insert_timeout; +SET @@global.delayed_insert_timeout = FALSE; +SELECT @@global.delayed_insert_timeout; + + +--echo '#---------------------FN_DYNVARS_025_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.delayed_insert_timeout = 1; +SELECT @@delayed_insert_timeout = @@global.delayed_insert_timeout; + + +--echo '#---------------------FN_DYNVARS_025_09----------------------#' +################################################################################ +# Check if delayed_insert_timeout can be accessed with and without @@ sign # +################################################################################ + +--Error 1229 +SET delayed_insert_timeout = 1; +SELECT @@delayed_insert_timeout; +--Error 1064 +SET local.delayed_insert_timeout = 1; +--Error 1109 +SELECT local.delayed_insert_timeout; +--Error 1064 +SET global.delayed_insert_timeout = 1; +--Error 1109 +SELECT global.delayed_insert_timeout; +--Error 1054 +SELECT delayed_insert_timeout = @@session.delayed_insert_timeout; +# Restore initial value +SET @@global.delayed_insert_timeout = @start_value; +SELECT @@global.delayed_insert_timeout; + + +############################## +# Restore initial value # +############################## + +SET @@global.delayed_insert_timeout = @start_value; +SELECT @@global.delayed_insert_timeout; + + +################################################################ +# END OF delayed_insert_timeout TESTS # +################################################################ + diff --git a/mysql-test/t/div_precision_increment_basic.test b/mysql-test/t/div_precision_increment_basic.test new file mode 100644 index 00000000000..40497e829df --- /dev/null +++ b/mysql-test/t/div_precision_increment_basic.test @@ -0,0 +1,209 @@ +############## mysql-test\t\div_precision_increment_basic.test ################# +# # +# Variable Name: div_precision_increment # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 4 # +# Range: 0 - 30 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "div_precision_increment" # +# that checks 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#option_mysqld_div_precision_increment # +# # +################################################################################ + +--source include/load_sysvars.inc + +####################################################################### +# START OF div_precision_increment TESTS # +####################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.div_precision_increment; +SELECT @start_global_value; +SET @start_session_value = @@session.div_precision_increment; +SELECT @start_session_value; + +--echo '#--------------------FN_DYNVARS_027_01-------------------------#' +####################################################################### +# Display the DEFAULT value of div_precision_increment # +####################################################################### + +SET @@global.div_precision_increment = 100; +SET @@global.div_precision_increment = DEFAULT; +SELECT @@global.div_precision_increment; + +SET @@session.div_precision_increment = 200; +SET @@session.div_precision_increment = DEFAULT; +SELECT @@session.div_precision_increment; + +--echo '#--------------------FN_DYNVARS_027_02-------------------------#' +####################################################################### +# Check the DEFAULT value of div_precision_increment # +####################################################################### + +SET @@global.div_precision_increment = @start_global_value; +SELECT @@global.div_precision_increment = 4; + +SET @@session.div_precision_increment = @start_session_value; +SELECT @@session.div_precision_increment = 4; + +--echo '#--------------------FN_DYNVARS_027_03-------------------------#' +################################################################################# +# Change the value of div_precision_increment to a valid value for GLOBAL Scope # +################################################################################# + +SET @@global.div_precision_increment = 1; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = 0; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = 10; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = 30; +SELECT @@global.div_precision_increment; + + +--echo '#--------------------FN_DYNVARS_027_04-------------------------#' +################################################################################## +# Change the value of div_precision_increment to a valid value for SESSION Scope # +################################################################################## + +SET @@session.div_precision_increment = 1; +SELECT @@session.div_precision_increment; +SET @@session.div_precision_increment = 0; +SELECT @@session.div_precision_increment; +SET @@session.div_precision_increment = 7; +SELECT @@session.div_precision_increment; +SET @@session.div_precision_increment = 30; +SELECT @@session.div_precision_increment; + + +--echo '#------------------FN_DYNVARS_027_05-----------------------#' +################################################################### +# Change the value of div_precision_increment to an invalid value # +################################################################### + +SET @@global.div_precision_increment = 31; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = 40; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = -1024; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = 65536; +SELECT @@global.div_precision_increment; +SET @@session.div_precision_increment = 40; +SELECT @@session.div_precision_increment; +SET @@session.div_precision_increment = 31; +SELECT @@session.div_precision_increment; +SET @@session.div_precision_increment = -2; +SELECT @@session.div_precision_increment; +SET @@session.div_precision_increment = 65550; +SELECT @@session.div_precision_increment; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.div_precision_increment = 65530.30; +SELECT @@global.div_precision_increment; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.div_precision_increment = OFF; +SELECT @@global.div_precision_increment; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.div_precision_increment = ON; +SELECT @@session.div_precision_increment; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.div_precision_increment = 65530.30; +SELECT @@session.div_precision_increment; + + +--echo '#------------------FN_DYNVARS_027_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.div_precision_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='div_precision_increment'; + +--echo '#------------------FN_DYNVARS_027_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.div_precision_increment = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='div_precision_increment'; + + +# FN_DYNVARS_027_07 - Check if TRUE and FALSE values can be used on variable +SET @@global.div_precision_increment = TRUE; +SELECT @@global.div_precision_increment; +SET @@global.div_precision_increment = FALSE; +SELECT @@global.div_precision_increment; + + +--echo '#---------------------FN_DYNVARS_027_08----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.div_precision_increment = 0; +SELECT @@div_precision_increment = @@global.div_precision_increment; + + +--echo '#---------------------FN_DYNVARS_027_09----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@div_precision_increment = 1; +SELECT @@div_precision_increment = @@local.div_precision_increment; +SELECT @@local.div_precision_increment = @@session.div_precision_increment; + + +--echo '#---------------------FN_DYNVARS_027_10----------------------#' +################################################################################## +# Check if div_precision_increment can be accessed with and without @@ sign # +################################################################################## + +SET div_precision_increment = 1; +SELECT @@div_precision_increment; +--Error ER_PARSE_ERROR +SET local.div_precision_increment = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.div_precision_increment; +--Error ER_PARSE_ERROR +SET session.div_precision_increment = 1; +--Error ER_UNKNOWN_TABLE +SELECT session.div_precision_increment; +--Error ER_BAD_FIELD_ERROR +SELECT div_precision_increment = @@session.div_precision_increment; + + + +#################################### +# Restore initial value # +#################################### + +SET @@global.div_precision_increment = @start_global_value; +SELECT @@global.div_precision_increment; +SET @@session.div_precision_increment = @start_session_value; +SELECT @@session.div_precision_increment; + + +####################################################### +# END OF div_precision_increment TESTS # +####################################################### + diff --git a/mysql-test/t/div_precision_increment_func.test b/mysql-test/t/div_precision_increment_func.test new file mode 100644 index 00000000000..495273cf1a0 --- /dev/null +++ b/mysql-test/t/div_precision_increment_func.test @@ -0,0 +1,125 @@ +############## mysql-test\t\div_precision_increment_func.test ################# +# # +# Variable Name: div_precision_increment # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 4 # +# Range: 0 - 30 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "div_precision_increment" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_div_precision_increment # +# # +################################################################################ + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30), +salary LONG +); + +--echo '#--------------------FN_DYNVARS_027_01-------------------------#' +#################################################################### +# Setting initial value of div_precision_increment to 1 +# to check whether it is working with columns or not. +#################################################################### + +--echo ## Setting initial session value of variable to 3 ## +SET @@session.div_precision_increment = 3; + +--echo ## Inserting some rows in table ## +INSERT into t1(name, salary) values('Record_1', 100011); +INSERT into t1(name, salary) values('Record_2', 501); +INSERT into t1(name, salary) values('Record_3', 210); + +SELECT name, salary, ((salary * 2.5)/1000) AS INCOME from t1; +--echo 'Bug#35374: div_precision is not working with table column' + +--echo ## Verifying variable's behavior with direct division ## +SELECT 1/7; + +--echo '#--------------------FN_DYNVARS_027_02-------------------------#' +#################################################################### +# Verifying div_precision_increment behavior by inserting rows +# to check whether it is working with columns or not. +#################################################################### + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30), +salary LONG, +income_tax FLOAT +); + +--echo ## Creating new connection test_con1 ## +connect (test_con1, localhost, root,,); +connection test_con1; + +--echo ## Setting global & session scope value of variable ## +SET @@global.div_precision_increment = 2; +SET @@session.div_precision_increment = 1; +SELECT @@global.div_precision_increment; +SELECT @@session.div_precision_increment; + +--echo ## Inserting some data and verifying behavior of variable ## +INSERT into t1(name, salary, income_tax) values('Record_1', 100011, 100011*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_2', 501, 501*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_3', 210, 210*2.5/1000); +SELECT * from t1; + +--echo ## Creating new connection ## +connect (test_con2, localhost, root,,); +connection test_con2; + +--echo ## Verifying session & global value of variable ## +SELECT @@global.div_precision_increment = 2; +SELECT @@session.div_precision_increment = 2; + +--echo ## Verifying behavior of variable by inserting some rows in table ## +INSERT into t1(name, salary, income_tax) values('Record_4', 100011, 100011*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_5', 501, 501*2.5/1000); +INSERT into t1(name, salary, income_tax) values('Record_6', 210, 210*2.5/1000); +SELECT * from t1; + +--echo ## Dropping table t1 ## +drop table t1; + +--echo ## Disconnection both the connections ## +disconnect test_con1; +disconnect test_con2; + + + + + + diff --git a/mysql-test/t/engine_condition_pushdown_basic.test b/mysql-test/t/engine_condition_pushdown_basic.test new file mode 100644 index 00000000000..ee781159d6a --- /dev/null +++ b/mysql-test/t/engine_condition_pushdown_basic.test @@ -0,0 +1,227 @@ +############## mysql-test\t\engine_condition_pushdown_basic.test ############## +# # +# Variable Name: engine_condition_pushdown # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: OFF # +# Valid Values: ON, OFF # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable engine_condition_pushdown# +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF engine_condition_pushdown TESTS # +######################################################################## + + +############################################################################### +# Saving initial value of engine_condition_pushdown in a temporary variable # +############################################################################### + +SET @session_start_value = @@session.engine_condition_pushdown; +SELECT @session_start_value; + +SET @global_start_value = @@global.engine_condition_pushdown; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_028_01------------------------#' +######################################################################## +# Display the DEFAULT value of engine_condition_pushdown # +######################################################################## + +SET @@session.engine_condition_pushdown = 0; +SET @@session.engine_condition_pushdown = DEFAULT; +SELECT @@session.engine_condition_pushdown; + +SET @@global.engine_condition_pushdown = 0; +SET @@global.engine_condition_pushdown = DEFAULT; +SELECT @@global.engine_condition_pushdown; + +--echo '#---------------------FN_DYNVARS_028_02-------------------------#' +############################################################################### +# Check if engine_condition_pushdown can be accessed with and without @@ sign # +############################################################################### + +SET engine_condition_pushdown = 1; +SELECT @@engine_condition_pushdown; + +--Error ER_UNKNOWN_TABLE +SELECT session.engine_condition_pushdown; + +--Error ER_UNKNOWN_TABLE +SELECT local.engine_condition_pushdown; + +--Error ER_UNKNOWN_TABLE +SELECT global.engine_condition_pushdown; + +SET session engine_condition_pushdown = 0; +SELECT @@session.engine_condition_pushdown; + +SET global engine_condition_pushdown = 0; +SELECT @@global.engine_condition_pushdown; + + +--echo '#--------------------FN_DYNVARS_028_03------------------------#' +########################################################################## +# change the value of engine_condition_pushdown to a valid value # +########################################################################## + +SET @@session.engine_condition_pushdown = 0; +SELECT @@session.engine_condition_pushdown; +SET @@session.engine_condition_pushdown = 1; +SELECT @@session.engine_condition_pushdown; + + +SET @@global.engine_condition_pushdown = 0; +SELECT @@global.engine_condition_pushdown; +SET @@global.engine_condition_pushdown = 1; +SELECT @@global.engine_condition_pushdown; + + +--echo '#--------------------FN_DYNVARS_028_04-------------------------#' +########################################################################### +# Change the value of engine_condition_pushdown to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = 1.6; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = N; + +SET @@session.engine_condition_pushdown = OF; +SELECT @@session.engine_condition_pushdown; +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.engine_condition_pushdown = FF; + + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = N; + +SET @@global.engine_condition_pushdown = OF; +SELECT @@global.engine_condition_pushdown; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.engine_condition_pushdown = FF; + + +--echo '#-------------------FN_DYNVARS_028_05----------------------------#' +########################################################################### +# Test if changing global variable effects session and vice versa # +########################################################################### + +SET @@global.engine_condition_pushdown = 0; +SET @@session.engine_condition_pushdown = 1; +SELECT @@global.engine_condition_pushdown AS res_is_0; + +SET @@global.engine_condition_pushdown = 0; +SELECT @@session.engine_condition_pushdown AS res_is_1; + +--echo '#----------------------FN_DYNVARS_028_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.engine_condition_pushdown = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; +SELECT @@global.engine_condition_pushdown; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; + +--echo '#----------------------FN_DYNVARS_028_07------------------------#' +######################################################################### +# Check if the value in SESSION Table matches value in variable # +######################################################################### + +SELECT @@session.engine_condition_pushdown = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; +SELECT @@session.engine_condition_pushdown; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='engine_condition_pushdown'; + + +--echo '#---------------------FN_DYNVARS_028_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.engine_condition_pushdown = OFF; +SELECT @@session.engine_condition_pushdown; +SET @@session.engine_condition_pushdown = ON; +SELECT @@session.engine_condition_pushdown; + +SET @@global.engine_condition_pushdown = OFF; +SELECT @@global.engine_condition_pushdown; +SET @@global.engine_condition_pushdown = ON; +SELECT @@global.engine_condition_pushdown; + +--echo '#---------------------FN_DYNVARS_028_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.engine_condition_pushdown = TRUE; +SELECT @@session.engine_condition_pushdown; +SET @@session.engine_condition_pushdown = FALSE; +SELECT @@session.engine_condition_pushdown; + +SET @@global.engine_condition_pushdown = TRUE; +SELECT @@global.engine_condition_pushdown; +SET @@global.engine_condition_pushdown = FALSE; +SELECT @@global.engine_condition_pushdown; + +############################## +# Restore initial value # +############################## + +SET @@session.engine_condition_pushdown = @session_start_value; +SELECT @@session.engine_condition_pushdown; + +SET @@global.engine_condition_pushdown = @global_start_value; +SELECT @@global.engine_condition_pushdown; + +############################################################### +# END OF engine_condition_pushdown TESTS # +############################################################### diff --git a/mysql-test/t/error_count_basic.test b/mysql-test/t/error_count_basic.test new file mode 100644 index 00000000000..14001874c22 --- /dev/null +++ b/mysql-test/t/error_count_basic.test @@ -0,0 +1,97 @@ + + +################## mysql-test\t\error_count_basic.test ######################## +# # +# Variable Name: error_count # +# Scope: Session # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable error_count # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_005_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### + +SELECT COUNT(@@SESSION.error_count); +--echo 1 Expected + +--echo '#---------------------BS_STVARS_005_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@SESSION.error_count=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@SESSION.error_count); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_005_03----------------------#' +################################################################# +# Check if the value in SESSION Table matches value in variable # +################################################################# + +SELECT @@SESSION.error_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='error_count'; +--echo 1 Expected + +SELECT COUNT(@@SESSION.error_count); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='error_count'; +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_005_04----------------------#' +################################################################################ +# Check if accessing variable with and without SESSION point to same variable # +################################################################################ +SELECT @@error_count = @@SESSION.error_count; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_005_05----------------------#' +################################################################################ +# Check if error_count can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@error_count); +--echo 1 Expected +SELECT COUNT(@@local.error_count); +--echo 1 Expected +SELECT COUNT(@@SESSION.error_count); +--echo 1 Expected + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@GLOBAL.error_count); +--echo Expected error 'Variable is a SESSION variable' + +--error ER_BAD_FIELD_ERROR +SELECT COUNT(error_count = @@GLOBAL.error_count); +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/event_scheduler_basic.test b/mysql-test/t/event_scheduler_basic.test new file mode 100644 index 00000000000..c74d61775dc --- /dev/null +++ b/mysql-test/t/event_scheduler_basic.test @@ -0,0 +1,175 @@ +#################### mysql-test\t\event_scheduler_basic.test ################### +# # +# Variable Name: event_scheduler # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Enumeration # +# Default Value: OFF # +# Valid Values: ON, OFF, DISABLED # +# # +# # +# Creation Date: 2008-03-14 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "event_scheduler" # +# that checks 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-options.html#option_mysqld_event-scheduler # +# # +################################################################################ + +--source include/load_sysvars.inc + +############################################################### +# START OF event_scheduler TESTS # +############################################################### + + +####################################################################### +# Saving initial value of event_scheduler in a temporary variable # +####################################################################### + +SET @start_value = @@global.event_scheduler; +SELECT @start_value; + + +--echo '#---------------------FN_DYNVARS_004_01-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +--Error ER_NO_DEFAULT +SET @@global.event_scheduler = DEFAULT; +#SELECT @@global.event_scheduler = OFF; +--echo 'Bug# 34878: According to documentation the default value of variable is OFF'; + +--echo '#--------------------FN_DYNVARS_004_02------------------------#' +####################################################################### +# Change the value of event_scheduler to a valid value # +####################################################################### + +SET @@global.event_scheduler = ON; +SELECT @@global.event_scheduler; +SET @@global.event_scheduler = OFF; +SELECT @@global.event_scheduler; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = DISABLED; +SELECT @@global.event_scheduler; + + +--echo '#--------------------FN_DYNVARS_004_03-------------------------#' +####################################################################### +# Change the value of event_scheduler to invalid value # +####################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.event_scheduler = ''; + + +--echo '#-------------------FN_DYNVARS_004_04----------------------------#' +################################################################### +# Test if accessing session event_scheduler gives error # +################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.event_scheduler = OFF; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.event_scheduler; + + +--echo '#----------------------FN_DYNVARS_004_05------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.event_scheduler = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='event_scheduler'; + + +--echo '#---------------------FN_DYNVARS_004_06----------------------#' +################################################################### +# Check if 0 and 1 values can be used on variable # +################################################################### + +SET @@global.event_scheduler = 0; +SELECT @@global.event_scheduler; +SET @@global.event_scheduler = 1; +SELECT @@global.event_scheduler; + +--echo '#---------------------FN_DYNVARS_004_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.event_scheduler = TRUE; +SELECT @@global.event_scheduler; +SET @@global.event_scheduler = FALSE; +SELECT @@global.event_scheduler; + +--echo '#---------------------FN_DYNVARS_004_08----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@global.event_scheduler = ON; +SELECT @@event_scheduler = @@global.event_scheduler; + +--echo '#---------------------FN_DYNVARS_004_09----------------------#' +####################################################################### +# Check if event_scheduler can be accessed with and without @@ sign # +####################################################################### +--Error ER_GLOBAL_VARIABLE +SET event_scheduler = ON; +--Error ER_PARSE_ERROR +SET local.event_scheduler = OFF; +--Error ER_UNKNOWN_TABLE +SELECT local.event_scheduler; +--Error ER_PARSE_ERROR +SET global.event_scheduler = ON; +--Error ER_UNKNOWN_TABLE +SELECT global.event_scheduler; +--Error ER_BAD_FIELD_ERROR +SELECT event_scheduler = @@session.event_scheduler; + + + +############################## +# Restore initial value # +############################## + +SET @@global.event_scheduler = @start_value; +SELECT @@global.event_scheduler; + + +##################################################### +# END OF event_scheduler TESTS # +##################################################### diff --git a/mysql-test/t/event_scheduler_func.test b/mysql-test/t/event_scheduler_func.test new file mode 100644 index 00000000000..41190bfe0e3 --- /dev/null +++ b/mysql-test/t/event_scheduler_func.test @@ -0,0 +1,90 @@ +############## mysql-test\t\event_scheduler_func.test ########################## +# # +# Variable Name: event_scheduler # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: OFF # +# Valid Values: ON, OFF & DISABLED # +# # +# # +# Creation Date: 2008-03-17 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "event_scheduler" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_event_scheduler # +# # +################################################################################ + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_018_01-------------------------#' +#################################################################### +# Setting initial value of event_scheduler to ON and verifying +# its behavior +#################################################################### + +--echo ## Setting initial value of variable to ON ## +SET @@global.event_scheduler = ON; +SELECT @@event_scheduler; + +--echo ## Creating new event ## +CREATE EVENT test_event_1 +ON SCHEDULE EVERY 3 SECOND +DO + INSERT into t1(name) values('Record_1'); + +--sleep 4 + +SELECT * from t1; + +DROP EVENT test_event_1; + +--sleep 1 +DELETE from t1; +select * from t1; + + +--echo '#--------------------FN_DYNVARS_018_02-------------------------#' +#################################################################### +# Setting initial value of event_scheduler to OFF and verifying +# its behavior +#################################################################### + +--echo ## Setting value of variable to OFF ## +SET @@global.event_scheduler = OFF; +SELECT @@event_scheduler; + +--echo ## Creating new event ## +CREATE EVENT test_event_1 +ON SCHEDULE EVERY 3 SECOND +DO + INSERT into t1(name) values('Record_2'); + +--sleep 4 + +--echo ## Table should be empty ## +SELECT * from t1; + +DROP EVENT test_event_1; +--echo ## Dropping table ## +DROP table t1; + diff --git a/mysql-test/t/expire_logs_days_basic.test b/mysql-test/t/expire_logs_days_basic.test new file mode 100644 index 00000000000..02448d1fd11 --- /dev/null +++ b/mysql-test/t/expire_logs_days_basic.test @@ -0,0 +1,179 @@ +############## mysql-test\t\expire_logs_days_basic.test ############### +# # +# Variable Name: expire_logs_days # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:0 # +# Range: 0-99 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable expire_logs_days # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +######################################################################## +# START OF expire_logs_days TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of expire_logs_days in a temporary variable # +######################################################################## + +SET @start_value = @@global.expire_logs_days; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_029_01------------------------#' +######################################################################## +# Display the DEFAULT value of expire_logs_days # +######################################################################## + +SET @@global.expire_logs_days = 99; +SET @@global.expire_logs_days = DEFAULT; +SELECT @@global.expire_logs_days; + + +--echo '#---------------------FN_DYNVARS_029_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.expire_logs_days = @start_value; +SELECT @@global.expire_logs_days = 0; + + +--echo '#--------------------FN_DYNVARS_029_03------------------------#' +######################################################################## +# Change the value of expire_logs_days to a valid value # +######################################################################## + +SET @@global.expire_logs_days = 0; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = 99; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = 10; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = 21; +SELECT @@global.expire_logs_days; + + +--echo '#--------------------FN_DYNVARS_029_04-------------------------#' +########################################################################### +# Change the value of expire_logs_days to invalid value # +########################################################################### + +SET @@global.expire_logs_days = -1; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = 100; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = 1024; +SELECT @@global.expire_logs_days; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.expire_logs_days = 10000.01; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = -1024; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = 42949672950; +SELECT @@global.expire_logs_days; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.expire_logs_days = ON; +SELECT @@global.expire_logs_days; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.expire_logs_days = 'test'; +SELECT @@global.expire_logs_days; + + +--echo '#-------------------FN_DYNVARS_029_05----------------------------#' +########################################################################### +# Test if accessing session expire_logs_days gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.expire_logs_days = 0; +SELECT @@expire_logs_days; + + +--echo '#----------------------FN_DYNVARS_029_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.expire_logs_days = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='expire_logs_days'; + +SELECT @@expire_logs_days = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='expire_logs_days'; + + + +--echo '#---------------------FN_DYNVARS_029_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.expire_logs_days = TRUE; +SELECT @@global.expire_logs_days; +SET @@global.expire_logs_days = FALSE; +SELECT @@global.expire_logs_days; + + +--echo '#---------------------FN_DYNVARS_029_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.expire_logs_days = 1; +SELECT @@expire_logs_days = @@global.expire_logs_days; + + +--echo '#---------------------FN_DYNVARS_029_09----------------------#' +########################################################################## +# Check if expire_logs_days can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET expire_logs_days = 1; +SELECT @@expire_logs_days; +--Error ER_PARSE_ERROR +SET local.expire_logs_days = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.expire_logs_days; +--Error ER_PARSE_ERROR +SET global.expire_logs_days = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.expire_logs_days; +--Error ER_BAD_FIELD_ERROR +SELECT expire_logs_days = @@session.expire_logs_days; + + +############################## +# Restore initial value # +############################## + +SET @@global.expire_logs_days = @start_value; +SELECT @@global.expire_logs_days; + + +######################################################################## +# END OF expire_logs_days TESTS # +######################################################################## diff --git a/mysql-test/t/flush_basic.test b/mysql-test/t/flush_basic.test new file mode 100644 index 00000000000..f5f6665562e --- /dev/null +++ b/mysql-test/t/flush_basic.test @@ -0,0 +1,172 @@ +############## mysql-test\t\flush_basic.test ################################## +# # +# Variable Name: flush # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: OFF # +# Range: # +# # +# # +# Creation Date: 2008-02-09 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable flush # +# 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-options.html#option_mysqld_flush # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF flush TESTS # +######################################################################## + + +############################################################# +# Saving initial value of flush in a temporary variable # +############################################################# + +SET @start_value = @@global.flush; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_030_01------------------------#' +############################################################# +# Display the DEFAULT value of flush # +############################################################# + +SET @@global.flush = ON; +--Error ER_NO_DEFAULT +SET @@global.flush = DEFAULT; +--echo 'Bug# 34878: FN_DYNVARS_002_01 - Default value is off according to Documentation of MySQL'; +SELECT @@global.flush; + + +--echo '#---------------------FN_DYNVARS_030_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.flush = @start_value; +SELECT @@global.flush; + + +--echo '#--------------------FN_DYNVARS_030_03------------------------#' +############################################################# +# Change the value of flush to a valid value # +############################################################# + +SET @@global.flush = ON; +SELECT @@global.flush; +SET @@global.flush = OFF; +SELECT @@global.flush; +SET @@global.flush = 0; +SELECT @@global.flush; +SET @@global.flush = 1; +SELECT @@global.flush; + + +--echo '#--------------------FN_DYNVARS_030_04-------------------------#' +########################################################################### +# Change the value of flush to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.flush = ''; + + +--echo '#-------------------FN_DYNVARS_030_05----------------------------#' +########################################################################### +# Test if accessing session flush gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.flush = 1; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.flush; + + +--echo '#----------------------FN_DYNVARS_030_06------------------------#' +#################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +#################################################################### + +SELECT @@global.flush = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='flush'; + + +--echo '#---------------------FN_DYNVARS_030_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.flush = TRUE; +SELECT @@global.flush; +SET @@global.flush = FALSE; +SELECT @@global.flush; + + +--echo '#---------------------FN_DYNVARS_030_08----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same global variable # +############################################################################### + +SET @@global.flush = 1; +SELECT @@flush = @@global.flush; + +--echo '#---------------------FN_DYNVARS_030_09----------------------#' +########################################################################## +# Check if flush can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET flush = 1; +--Error ER_PARSE_ERROR +SET global.flush = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.flush; +--Error ER_BAD_FIELD_ERROR +SELECT flush = @@session.flush; + + +############################## +# Restore initial value # +############################## + +SET @@global.flush = @start_value; +SELECT @@global.flush; + + +############################################################# +# END OF flush TESTS # +############################################################# diff --git a/mysql-test/t/foreign_key_checks_basic.test b/mysql-test/t/foreign_key_checks_basic.test new file mode 100644 index 00000000000..54d94aca971 --- /dev/null +++ b/mysql-test/t/foreign_key_checks_basic.test @@ -0,0 +1,172 @@ +############## mysql-test\t\foreign_key_checks_basic.test ##################### +# # +# Variable Name: foreign_key_checks # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: NA # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable foreign_key_checks # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF foreign_key_checks TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of foreign_key_checks in a temporary variable # +################################################################################ + +SET @session_start_value = @@session.foreign_key_checks; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_032_01------------------------#' +######################################################################## +# Display the DEFAULT value of foreign_key_checks # +######################################################################## + +SET @@session.foreign_key_checks = 1; +SET @@session.foreign_key_checks = DEFAULT; +SELECT @@session.foreign_key_checks; + +--echo 'Bug# 34878: No DEFAULT value for variable. Also setting DEFAULT does not give error' + +--echo '#---------------------FN_DYNVARS_032_02-------------------------#' +############################################################################# +# Check if foreign_key_checks can be accessed with and without @@ sign # +############################################################################# + +SET foreign_key_checks = 1; +SELECT @@foreign_key_checks; + +--Error ER_UNKNOWN_TABLE +SELECT session.foreign_key_checks; + +--Error ER_UNKNOWN_TABLE +SELECT local.foreign_key_checks; + +SET session foreign_key_checks = 0; +SELECT @@session.foreign_key_checks; + + +--echo '#--------------------FN_DYNVARS_032_03------------------------#' +######################################################################## +# change the value of foreign_key_checks to a valid value # +######################################################################## + +SET @@session.foreign_key_checks = 0; +SELECT @@session.foreign_key_checks; +SET @@session.foreign_key_checks = 1; +SELECT @@session.foreign_key_checks; + + +--echo '#--------------------FN_DYNVARS_032_04-------------------------#' +########################################################################### +# Change the value of foreign_key_checks to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = N; + +SET @@session.foreign_key_checks = OF; +SELECT @@session.foreign_key_checks; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.foreign_key_checks = NO; + + +--echo '#-------------------FN_DYNVARS_032_05----------------------------#' +########################################################################### +# Test if accessing global foreign_key_checks gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.foreign_key_checks = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.foreign_key_checks; + +--echo '#----------------------FN_DYNVARS_032_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='foreign_key_checks'; + +--echo '#----------------------FN_DYNVARS_032_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.foreign_key_checks = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='foreign_key_checks'; +SELECT @@session.foreign_key_checks; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='foreign_key_checks'; + + +--echo '#---------------------FN_DYNVARS_032_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.foreign_key_checks = OFF; +SELECT @@session.foreign_key_checks; +SET @@session.foreign_key_checks = ON; +SELECT @@session.foreign_key_checks; + +--echo '#---------------------FN_DYNVARS_032_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.foreign_key_checks = TRUE; +SELECT @@session.foreign_key_checks; +SET @@session.foreign_key_checks = FALSE; +SELECT @@session.foreign_key_checks; + +############################## +# Restore initial value # +############################## + +SET @@session.foreign_key_checks = @session_start_value; +SELECT @@session.foreign_key_checks; + +############################################################### +# END OF foreign_key_checks TESTS # +############################################################### diff --git a/mysql-test/t/foreign_key_checks_func.test b/mysql-test/t/foreign_key_checks_func.test new file mode 100644 index 00000000000..4d2c63bbce6 --- /dev/null +++ b/mysql-test/t/foreign_key_checks_func.test @@ -0,0 +1,139 @@ +############## mysql-test\t\foreign_key_checks_func.test ##################### +# # +# Variable Name: foreign_key_checks # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: NA # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable foreign_key_checks # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--source include/have_innodb.inc + +--echo '#--------------------FN_DYNVARS_032_01-------------------------#' +#################################################################### +# Check if setting foreign_key_checks is changed in new connection # +#################################################################### + +SET @@session.foreign_key_checks = 0; +# con1 will be default connection from now on +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@session.foreign_key_checks; +SET @@session.foreign_key_checks = 1; +--echo 'connect (con2,localhost,root,,,,)' +connect (con2,localhost,root,,,,); +--echo 'connection con2' +connection con2; +SELECT @@session.foreign_key_checks; +disconnect con2; + +--echo '#--------------------FN_DYNVARS_032_02-------------------------#' +################################################################# +# Begin the functionality Testing of foreign_key_checks # +################################################################# + +--echo 'connection con1' +connection con1; + +--disable_warnings +DROP TABLE IF EXISTS t1,t2; +--enable_warnings + +CREATE TABLE t1(a INT PRIMARY KEY)ENGINE = INNODB; +CREATE TABLE t2(a INT PRIMARY KEY,b INT)ENGINE = INNODB; + +ALTER TABLE t2 +ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); + +#=========================================================== +--echo '---Check when foreign_key_checks is enabled---' +#=========================================================== + + +SET @@session.foreign_key_checks = 1; + +INSERT INTO t1 values (1),(2),(3); + +INSERT INTO t2 values (10,1); +--Error ER_NO_REFERENCED_ROW_2 +INSERT INTO t2 values (20,22); + +#=========================================================== +--echo '---Check when foreign_key_checks is disabled---' +#=========================================================== + +--Error ER_ROW_IS_REFERENCED_2 +TRUNCATE t1; + +SET @@session.foreign_key_checks = 0; + +TRUNCATE t1; +TRUNCATE t2; + +INSERT INTO t1 values (1),(2),(3); + +INSERT INTO t2 values (10,1); +INSERT INTO t2 values (20,4); + +--echo 'try enabling foreign_key_checks again'; +SET @@session.foreign_key_checks = 1; + +UPDATE t2 SET b=4 where a=20; +--echo 'Bug#35358: Updating an incorrect foreign key(inserted by disabling ' +--echo 'foreign_key_checks)to the same value does not raise error after ' +--echo 'enabling foreign_key_checks' + +#============================================================================== +--echo 'Check when foreign_key_checks is enabled and FK constraint is re-created' +#============================================================================== + +SET @@session.foreign_key_checks = 0; +TRUNCATE t2; +TRUNCATE t1; + +INSERT INTO t1 values (1),(2),(3); +INSERT INTO t2 values (10,1),(20,4); + +ALTER TABLE t2 DROP FOREIGN KEY fk; + +SET @@session.foreign_key_checks = 1; + +# Test disabled as error description is different. The resulting description has +# difference in code #sql-xxx_2 where xxx is different for each run. +#--Error ER_NO_REFERENCED_ROW_2 +#ALTER TABLE t2 +#ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); + +# delete all rows with incorrect reference +DELETE FROM t2 WHERE b not in (SELECT a from t1); + +ALTER TABLE t2 +ADD CONSTRAINT fk FOREIGN KEY (b) REFERENCES t1 (a); + +INSERT INTO t2 values (20,2); + +SELECT * from t2; + +--disable_warnings +DROP TABLE IF EXISTS t2; +DROP TABLE IF EXISTS t1; +--enable_warnings + +########################################################## +# End of functionality Testing for foreign_key_checks # +########################################################## + diff --git a/mysql-test/t/ft_boolean_syntax_basic.test b/mysql-test/t/ft_boolean_syntax_basic.test new file mode 100644 index 00000000000..4117605c452 --- /dev/null +++ b/mysql-test/t/ft_boolean_syntax_basic.test @@ -0,0 +1,162 @@ +############## mysql-test\t\ft_boolean_syntax_basic.test ###################### +# # +# Variable Name: ft_boolean_syntax # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: +-><()~*:""& # +# Range: NA # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable ft_boolean_syntax # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +## START OF ft_boolean_syntax TESTS ## +################################################### + +############################################################# +# Save initial value # +############################################################# +# save using implicit session scope +SET @global_start_value = @@global.ft_boolean_syntax; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_033_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT ft_boolean_syntax; +# access using no scope specified +SELECT @@ft_boolean_syntax; +# assign value without @@ +SET @@global.ft_boolean_syntax='+ -><()~*:""&|'; +SELECT @@global.ft_boolean_syntax; +# using another syntax for accessing session variable +SET global ft_boolean_syntax='$ -><()`*:""&|'; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT global ft_boolean_syntax; + +--echo '#--------------------FN_DYNVARS_033_02-------------------------#' +####################################################################### +# Check the DEFAULT value of ft_boolean_syntax for global # +####################################################################### +SET @@global.ft_boolean_syntax = '# -><()!*:""&|'; +SET @@global.ft_boolean_syntax = DEFAULT; +SELECT @@global.ft_boolean_syntax; + +--echo '#--------------------FN_DYNVARS_033_03-------------------------#' +###################################################################### +# see if it is accessable using session scope # +###################################################################### +--Error ER_GLOBAL_VARIABLE +SET @@session.ft_boolean_syntax = '# -><()!*:""&|'; +--Error ER_GLOBAL_VARIABLE +SET @@ft_boolean_syntax = '# -><()!*:""&|'; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.ft_boolean_syntax; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.ft_boolean_syntax; + +--echo '#--------------------FN_DYNVARS_033_04-------------------------#' +############################################################################## +# Change the value of ft_boolean_syntax to a valid value # +############################################################################## + +SET @@global.ft_boolean_syntax='+ -><()~*:""&|'; +SELECT @@global.ft_boolean_syntax; + +SET @@global.ft_boolean_syntax=' +-><()~*:""&|'; +SELECT @@global.ft_boolean_syntax; + +SET @@global.ft_boolean_syntax=' -+()<>~*:``&|'; +SELECT @@global.ft_boolean_syntax; + +SET @@global.ft_boolean_syntax='+ -><()~*:""@!'; +SELECT @@global.ft_boolean_syntax; + +SET @@global.ft_boolean_syntax=" +-><()~*:''&|"; +SELECT @@global.ft_boolean_syntax; + +SET @@global.ft_boolean_syntax=' ~/!@#$%^&*()-'; +SELECT @@global.ft_boolean_syntax; + +--echo '#--------------------FN_DYNVARS_033_05-------------------------#' +############################################################################### +# Change the value of ft_boolean_syntax to an invalid value for global # +############################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = '+-> <()~*:""&|'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = '0'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = '1 -><()~*:11&|'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = '# -><()~*:11&1'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = '1234567890ABCD'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.ft_boolean_syntax = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = '+-> <((~*:".&|'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.ft_boolean_syntax = true; +--Error ER_PARSE_ERROR +SET @@global.ft_boolean_syntax = + -><()~*:""&|; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = ENABLE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = 'IGNORE'; + +--echo '#--------------------FN_DYNVARS_033_06-------------------------#' +############################################################################# +# Check if the value in GLOBAL Table matches value in variable # +############################################################################# +SELECT @@global.ft_boolean_syntax = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ft_boolean_syntax') AS res; + + +--echo '#--------------------FN_DYNVARS_033_07-------------------------#' +############################################################################# +# Assigning value from a temporary variable # +############################################################################# +# Content of initial variable +SELECT @global_start_value; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.ft_boolean_syntax = @global_start_value; +--echo 'Bug# 34883: ft_boolean_syntax cant be assigned values from session temporary'; +--echo 'variables'; + +#################################### +# Restore Default value # +#################################### +#restoring to default as we cant assign the initial value +SET @@global.ft_boolean_syntax = DEFAULT; +SELECT @@global.ft_boolean_syntax; + +########################################################## +# END OF ft_boolean_syntax TESTS # +########################################################## diff --git a/mysql-test/t/ft_boolean_syntax_func.test b/mysql-test/t/ft_boolean_syntax_func.test new file mode 100644 index 00000000000..7b30868224c --- /dev/null +++ b/mysql-test/t/ft_boolean_syntax_func.test @@ -0,0 +1,125 @@ +############## mysql-test\t\ft_boolean_syntax_func.test ###################### +# # +# Variable Name: ft_boolean_syntax # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: + -><()~*:""& # +# Range: NA # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable ft_boolean_syntax # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### +--echo '#--------------------FN_DYNVARS_033_01-------------------------#' +################################################################### +# Check if setting ft_boolean_syntax is changed in new connection # +################################################################### + +SET @@global.ft_boolean_syntax = ' -+()<>~*:``&|'; +# con1 will be default connection from now on +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.ft_boolean_syntax; +SET @@global.ft_boolean_syntax = '+ -><()~*:""&|'; +--echo 'connect (con2,localhost,root,,,,)' +connect (con2,localhost,root,,,,); +--echo 'connection con2' +connection con2; +SELECT @@global.ft_boolean_syntax; +disconnect con2; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_033_02-------------------------#' +######################################################### +# Begin the functionality Testing of ft_boolean_syntax # +######################################################### + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE articles ( + id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, + title VARCHAR(200), + body TEXT, + FULLTEXT (title,body) +); + +INSERT INTO articles (title,body) VALUES +('MySQL Tutorial','DBMS stands for DataBase ...'), +('How To',''), +('How To Use MySQL Well','After you went through a ...'), +('Optimizing MySQL','In this tutorial we will show .... Run command line ...'), +('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'), +('100 Tips for Myisam','1. Myisam is faster than innodb 2. Tricks and Tips for Myisam...'), +('MySQL vs. YourSQL','In the following database comparison ...'), +('MySQL Security','When configured properly, MySQL ...'), +('Database Security','Configuring MySQL for ...'); + +SET @@global.ft_boolean_syntax = DEFAULT; + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('+mySQL -yourSQL' IN BOOLEAN MODE); + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('+MySQL +YourSQL' IN BOOLEAN MODE); + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('MySQL' IN BOOLEAN MODE); + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('mysql tutorial dbms' IN BOOLEAN MODE); + +SELECT id,title,body, (MATCH (title,body) +AGAINST ('+security configuring' IN BOOLEAN MODE)) AS relevance +FROM articles WHERE MATCH (title,body) +AGAINST ('+security configuring' IN BOOLEAN MODE); + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('"faster than"' IN BOOLEAN MODE); + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('+run ~line' IN BOOLEAN MODE); + +--Echo 'Bug#35359: ~ is not working correctly. Its behaving like -' + +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('10*' IN BOOLEAN MODE); + +--Echo 'Bug#35360: * is not working correctly. Not all rows are returned' + +SELECT id,title,body, (MATCH (title,body) +AGAINST ('+MySQL +(>show show <()~*:""&|'--' +#============================================================================== +SET @@global.ft_boolean_syntax='~ /!@#$%^&*()-'; +SELECT * FROM articles WHERE MATCH (title,body) +AGAINST ('~mySQL /yourSQL' IN BOOLEAN MODE); + +--echo 'Bug#35361: Different syntax does not produce result as default operators' + +#restore default +SET @@global.ft_boolean_syntax=DEFAULT; + +######################################################### +# End of functionality Testing for ft_boolean_syntax # +######################################################### + diff --git a/mysql-test/t/general_log_basic.test b/mysql-test/t/general_log_basic.test new file mode 100644 index 00000000000..82f3be45bc9 --- /dev/null +++ b/mysql-test/t/general_log_basic.test @@ -0,0 +1,169 @@ +######################## mysql-test\t\general_log_basic.test ################### +# # +# Variable Name: general_log # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: OFF # +# Valid Values: ON, OFF # +# # +# # +# Creation Date: 2008-03-14 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "general_log" # +# that checks 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-options.html#option_mysqld_event-scheduler # +# # +################################################################################ + + +########################################################### +# START OF general_log TESTS # +########################################################### + + +################################################################### +# Saving initial value of general_log in a temporary variable # +################################################################### + +SET @start_value = @@global.general_log; +SELECT @start_value; + + +--echo '#---------------------FN_DYNVARS_004_01-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.general_log = DEFAULT; +SELECT @@global.general_log = 0; + + +--echo '#--------------------FN_DYNVARS_004_02------------------------#' +####################################################################### +# Change the value of general_log to a valid value # +####################################################################### + +SET @@global.general_log = ON; +SELECT @@global.general_log; +SET @@global.general_log = OFF; +SELECT @@global.general_log; + +--echo '#--------------------FN_DYNVARS_004_03-------------------------#' +####################################################################### +# Change the value of general_log to invalid value # +####################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log = ''; + + +--echo '#-------------------FN_DYNVARS_004_04----------------------------#' +################################################################### +# Test if accessing session general_log gives error # +################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.general_log = OFF; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.general_log; + + +--echo '#----------------------FN_DYNVARS_004_05------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.general_log = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='general_log'; + + +--echo '#---------------------FN_DYNVARS_004_06----------------------#' +################################################################### +# Check if 0 and 1 values can be used on variable # +################################################################### + +SET @@global.general_log = 0; +SELECT @@global.general_log; +SET @@global.general_log = 1; +SELECT @@global.general_log; + +--echo '#---------------------FN_DYNVARS_004_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.general_log = TRUE; +SELECT @@global.general_log; +SET @@global.general_log = FALSE; +SELECT @@global.general_log; + +--echo '#---------------------FN_DYNVARS_004_08----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@global.general_log = ON; +SELECT @@general_log = @@global.general_log; + +--echo '#---------------------FN_DYNVARS_004_09----------------------#' +####################################################################### +# Check if general_log can be accessed with and without @@ sign # +####################################################################### +--Error ER_GLOBAL_VARIABLE +SET general_log = ON; +--Error ER_PARSE_ERROR +SET local.general_log = OFF; +--Error ER_UNKNOWN_TABLE +SELECT local.general_log; +--Error ER_PARSE_ERROR +SET global.general_log = ON; +--Error ER_UNKNOWN_TABLE +SELECT global.general_log; +--Error ER_BAD_FIELD_ERROR +SELECT general_log = @@session.general_log; + + + +############################## +# Restore initial value # +############################## + +SET @@global.general_log = @start_value; +SELECT @@global.general_log; + + +##################################################### +# END OF general_log TESTS # +##################################################### diff --git a/mysql-test/t/general_log_file_basic-master.opt b/mysql-test/t/general_log_file_basic-master.opt new file mode 100644 index 00000000000..8482f8cbbc3 --- /dev/null +++ b/mysql-test/t/general_log_file_basic-master.opt @@ -0,0 +1 @@ +--log=test.log diff --git a/mysql-test/t/general_log_file_basic.test b/mysql-test/t/general_log_file_basic.test new file mode 100644 index 00000000000..50fe89fd0ce --- /dev/null +++ b/mysql-test/t/general_log_file_basic.test @@ -0,0 +1,70 @@ +################### mysql-test\t\general_log_file_basic.test ################### +# # +# Variable Name: general_log_file # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Filename # +# Default Value: host_name.log # +# Valid Values: # +# # +# # +# Creation Date: 2008-03-16 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "general_log_file" # +# that checks 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#option_mysqld_general_log_file # +# # +################################################################################ + +--source include/load_sysvars.inc + +########################################################### +# START OF general_log_file TESTS # +########################################################### + + +######################################################################## +# Saving initial value of general_log_file in a temporary variable # +######################################################################## + +SET @start_value = @@global.general_log_file; +SELECT @start_value; + + +--echo '#---------------------FN_DYNVARS_004_01-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.general_log_file = DEFAULT; +SELECT RIGHT(@@global.general_log_file,10) AS log_file; + + +--echo '#--------------------FN_DYNVARS_004_02------------------------#' +####################################################################### +# Change the value of general_log_file to a invalid value # +####################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.general_log_file = mytest.log; + +--echo '#----------------------FN_DYNVARS_004_03------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.general_log_file = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='general_log_file'; + + +##################################################### +# END OF general_log_file TESTS # +##################################################### diff --git a/mysql-test/t/general_log_file_func-master.opt b/mysql-test/t/general_log_file_func-master.opt new file mode 100644 index 00000000000..3652d715f5f --- /dev/null +++ b/mysql-test/t/general_log_file_func-master.opt @@ -0,0 +1,2 @@ +--log=mysql-test.log + diff --git a/mysql-test/t/general_log_file_func.test b/mysql-test/t/general_log_file_func.test new file mode 100644 index 00000000000..7f79115f420 --- /dev/null +++ b/mysql-test/t/general_log_file_func.test @@ -0,0 +1,56 @@ +############## mysql-test\t\general_log_file_func.test ######################### +# # +# Variable Name: general_log_file # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: filename # +# Valid Values: # +# # +# # +# Creation Date: 2008-03-17 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "general_log_file" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_general_log_file # +# # +################################################################################ + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_018_01-------------------------#' +#################################################################### +# Verifying general log as we have initialized in opt file # +#################################################################### + + +SELECT @@general_log_file; + +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); +INSERT into t1(name) values('Record_4'); + +--echo ## Verifying general log file ## +--file_exists var/master-data/mysql-test.log + +--echo ## Dropping table ## +DROP TABLE t1; diff --git a/mysql-test/t/general_log_func.test b/mysql-test/t/general_log_func.test new file mode 100644 index 00000000000..de222ec120a --- /dev/null +++ b/mysql-test/t/general_log_func.test @@ -0,0 +1,84 @@ +################# mysql-test\t\general_log_func.test ########################### +# # +# Variable Name: general_log # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: OFF # +# Valid Values: ON, OFF # +# # +# # +# Creation Date: 2008-03-17 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "general_log" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_general_log # +# # +################################################################################ + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_018_01-------------------------#' +#################################################################### +# Setting initial value of general_log to OFF and verifying +# its behavior +#################################################################### + +--echo ## Setting initial value of variable to OFF ## +SET @@global.general_log = OFF; +SELECT @@general_log; + +--copy_file var/log/master.log var/log/master-test.log + +--echo ## Inserting some Records & Verifying output in log ## +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); + +--echo ## There should be no difference, case should pass ## +--diff_files var/log/master.log var/log/master-test.log + + +--echo '#--------------------FN_DYNVARS_018_01-------------------------#' +#################################################################### +# Setting initial value of general_log to ON and verifying +# its behavior +#################################################################### + +--echo ## Setting initial value of variable to OFF ## +SET @@global.general_log = ON; +SELECT @@general_log; + +--copy_file var/log/master.log var/log/master-test-1.log + +--echo ## Inserting some Records & Verifying output in log ## +INSERT into t1(name) values('Record_3'); +INSERT into t1(name) values('Record_4'); + + +--echo ## There should be no difference, case should pass ## +#--diff_files var/log/master.log var/log/master-test-1.log + +--echo ## This case is failing which shows that mysql is writing in general ## +--echo ## log when we set general_log to ON ## + +--echo ## Dropping tables ## +DROP TABLE t1; + diff --git a/mysql-test/t/group_concat_max_len_basic.test b/mysql-test/t/group_concat_max_len_basic.test new file mode 100644 index 00000000000..1bc707f4b5d --- /dev/null +++ b/mysql-test/t/group_concat_max_len_basic.test @@ -0,0 +1,206 @@ +############## mysql-test\t\group_concat_max_len_basic.test ############### +# # +# Variable Name: group_concat_max_len # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 1024 # +# Minimum value: 4 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable group_concat_max_len # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF group_concat_max_len TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.group_concat_max_len; +SELECT @start_global_value; +SET @start_session_value = @@session.group_concat_max_len; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_034_01-------------------------#' +######################################################################## +# Display the DEFAULT value of group_concat_max_len # +######################################################################## + +SET @@global.group_concat_max_len = 100; +SET @@global.group_concat_max_len = DEFAULT; +SELECT @@global.group_concat_max_len; + +SET @@session.group_concat_max_len = 200; +SET @@session.group_concat_max_len = DEFAULT; +SELECT @@session.group_concat_max_len; + + +--echo '#--------------------FN_DYNVARS_034_02-------------------------#' +######################################################################## +# Check the DEFAULT value of group_concat_max_len # +######################################################################## + +SET @@global.group_concat_max_len = DEFAULT; +SELECT @@global.group_concat_max_len = 1; + +SET @@session.group_concat_max_len = DEFAULT; +SELECT @@session.group_concat_max_len = 1; + + +--echo '#--------------------FN_DYNVARS_034_03-------------------------#' +################################################################################## +# Change the value of group_concat_max_len to a valid value for GLOBAL Scope # +################################################################################## + +SET @@global.group_concat_max_len = 1; +SELECT @@global.group_concat_max_len; +SET @@global.group_concat_max_len = 60020; +SELECT @@global.group_concat_max_len; +SET @@global.group_concat_max_len = 65535; +SELECT @@global.group_concat_max_len; + + +--echo '#--------------------FN_DYNVARS_034_04-------------------------#' +################################################################################### +# Change the value of group_concat_max_len to a valid value for SESSION Scope # +################################################################################### + +SET @@session.group_concat_max_len = 1; +SELECT @@session.group_concat_max_len; +SET @@session.group_concat_max_len = 50050; +SELECT @@session.group_concat_max_len; +SET @@session.group_concat_max_len = 65535; +SELECT @@session.group_concat_max_len; + + +--echo '#------------------FN_DYNVARS_034_05-----------------------#' +#################################################################### +# Change the value of group_concat_max_len to an invalid value # +#################################################################### + +SET @@global.group_concat_max_len = 0; +SELECT @@global.group_concat_max_len; +SET @@global.group_concat_max_len = -1024; +SELECT @@global.group_concat_max_len; +SET @@global.group_concat_max_len = 65536; +SELECT @@global.group_concat_max_len; +--Error ER_PARSE_ERROR +SET @@global.group_concat_max_len = 65530.34.; +SELECT @@global.group_concat_max_len; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.group_concat_max_len = test; +SELECT @@global.group_concat_max_len; + +SET @@session.group_concat_max_len = 0; +SELECT @@session.group_concat_max_len; +SET @@session.group_concat_max_len = -2; +SELECT @@session.group_concat_max_len; +--Error ER_PARSE_ERROR +SET @@session.group_concat_max_len = 65530.34.; +SET @@session.group_concat_max_len = 65550; +SELECT @@session.group_concat_max_len; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.group_concat_max_len = test; +SELECT @@session.group_concat_max_len; + + +--echo '#------------------FN_DYNVARS_034_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.group_concat_max_len = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='group_concat_max_len'; + +--echo '#------------------FN_DYNVARS_034_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.group_concat_max_len = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='group_concat_max_len'; + + +--echo '#------------------FN_DYNVARS_034_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.group_concat_max_len = TRUE; +SELECT @@global.group_concat_max_len; +SET @@global.group_concat_max_len = FALSE; +SELECT @@global.group_concat_max_len; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.group_concat_max_len = 10; +SELECT @@group_concat_max_len = @@global.group_concat_max_len; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@group_concat_max_len = 100; +SELECT @@group_concat_max_len = @@local.group_concat_max_len; +SELECT @@local.group_concat_max_len = @@session.group_concat_max_len; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +################################################################################### +# Check if group_concat_max_len can be accessed with and without @@ sign # +################################################################################### + +SET group_concat_max_len = 1; +SELECT @@group_concat_max_len; +--Error ER_UNKNOWN_TABLE +SELECT local.group_concat_max_len; +--Error ER_UNKNOWN_TABLE +SELECT session.group_concat_max_len; +--Error ER_BAD_FIELD_ERROR +SELECT group_concat_max_len = @@session.group_concat_max_len; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.group_concat_max_len = @start_global_value; +SELECT @@global.group_concat_max_len; +SET @@session.group_concat_max_len = @start_session_value; +SELECT @@session.group_concat_max_len; + + +############################################################# +# END OF group_concat_max_len TESTS # +############################################################# + diff --git a/mysql-test/t/group_concat_max_len_func.test b/mysql-test/t/group_concat_max_len_func.test new file mode 100644 index 00000000000..fc097e4f972 --- /dev/null +++ b/mysql-test/t/group_concat_max_len_func.test @@ -0,0 +1,127 @@ +############## mysql-test\t\group_concat_max_len_func.test #################### +# # +# Variable Name: group_concat_max_len # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 1024 # +# Minimum value: 4 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable group_concat_max_len # +# that checks the functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +rollno int NOT NULL, +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_034_01-------------------------#' +######################################################################## +# Setting initial value of group_concat_max_len, inserting some rows +# & creating 2 new connections +######################################################################## + +--echo ## Setting initial value of variable to 4 ## +SET @@global.group_concat_max_len = 4; + +--echo ## Inserting some rows in table ## +INSERT into t1(rollno, name) values(1, 'Record_1'); +INSERT into t1(rollno, name) values(2, 'Record_2'); +INSERT into t1(rollno, name) values(1, 'Record_3'); +INSERT into t1(rollno, name) values(3, 'Record_4'); +INSERT into t1(rollno, name) values(1, 'Record_5'); +INSERT into t1(rollno, name) values(3, 'Record_6'); +INSERT into t1(rollno, name) values(4, 'Record_7'); +INSERT into t1(rollno, name) values(4, 'Record_8'); + +--echo ## Creating two new connections ## +CONNECT (test_con1,localhost,root,,); +CONNECT (test_con2,localhost,root,,); + + +--echo '#--------------------FN_DYNVARS_034_02-------------------------#' +############################################################################### +# Verifying initial behavior of variable by concatinating values greater than 4 +############################################################################### + +--echo ## Connecting with test_con1 ## +CONNECTION test_con1; + +--echo ## Accessing data and using group_concat on column whose value is greater than 4 ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + +--echo ## Changing session value of variable and verifying its behavior, ## +--echo ## warning should come here ## + +SET @@session.group_concat_max_len = 10; +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + + +--echo '#--------------------FN_DYNVARS_034_03-------------------------#' +############################################################################## +# Verifying behavior of variable by increasing session value of variable # +############################################################################## + +--echo ## Connecting with new connection test_con2 ## +connection test_con2; + +--echo ## Verifying initial value of variable. It should be 4 ## +SELECT @@session.group_concat_max_len = 4; + +--echo ## Setting session value of variable to 20 and verifying variable is concating ## +--echo ## column's value to 20 or not ## +SET @@session.group_concat_max_len = 20; + +--echo ## Verifying value of name column, it should not me more than 20 characters ## +--echo ## Warning should come here ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + + +--echo '#--------------------FN_DYNVARS_034_04-------------------------#' +############################################################################### +# Verifying behavior of variable by increasing session value of variable # +# greater than the maximum concat length of name column # +############################################################################### + +--echo ## Setting session value of variable to 26. No warning should appear here ## +--echo ## because the value after concatination is less than 30 ## +SET @@session.group_concat_max_len = 26; + +--echo ## Verifying value of name column, it should not give warning now ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + + +############################################################ +# Disconnecting all connection & dropping table # +############################################################ + +--echo ## Dropping table t1 ## +DROP table t1; + +--echo ## Disconnecting both the connection ## +DISCONNECT test_con2; +DISCONNECT test_con1; + + diff --git a/mysql-test/t/have_compress_basic.test b/mysql-test/t/have_compress_basic.test new file mode 100644 index 00000000000..f704ae67a1c --- /dev/null +++ b/mysql-test/t/have_compress_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_compress_basic.test ###################### +# # +# Variable Name: have_compress # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_compress # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_006_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_compress); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_006_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_compress=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_compress); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_006_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_compress = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_compress'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_compress); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_compress'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_006_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_compress = @@GLOBAL.have_compress; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_006_05----------------------#' +################################################################################ +# Check if have_compress can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_compress); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_compress); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_compress); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_compress); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_compress = @@SESSION.have_compress; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_crypt_basic.test b/mysql-test/t/have_crypt_basic.test new file mode 100644 index 00000000000..7ca193d83bd --- /dev/null +++ b/mysql-test/t/have_crypt_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_crypt_basic.test ######################### +# # +# Variable Name: have_crypt # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_crypt # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_007_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_crypt); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_007_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_crypt=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_crypt); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_007_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_crypt = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_crypt'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_crypt); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_crypt'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_007_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_crypt = @@GLOBAL.have_crypt; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_007_05----------------------#' +################################################################################ +# Check if have_crypt can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_crypt); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_crypt); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_crypt); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_crypt); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_crypt = @@SESSION.have_crypt; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_csv_basic.test b/mysql-test/t/have_csv_basic.test new file mode 100644 index 00000000000..12081ff270e --- /dev/null +++ b/mysql-test/t/have_csv_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_csv_basic.test ########################### +# # +# Variable Name: have_csv # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_csv # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_008_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_csv); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_008_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_csv=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_csv); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_008_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_csv = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_csv'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_csv); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_csv'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_008_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_csv = @@GLOBAL.have_csv; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_008_05----------------------#' +################################################################################ +# Check if have_csv can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_csv); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_csv); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_csv); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_csv); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_csv = @@SESSION.have_csv; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_dynamic_loading_basic.test b/mysql-test/t/have_dynamic_loading_basic.test new file mode 100644 index 00000000000..3e13664752a --- /dev/null +++ b/mysql-test/t/have_dynamic_loading_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_dynamic_loading_basic.test ############### +# # +# Variable Name: have_dynamic_loading # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_dynamic_loading # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_009_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_009_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_dynamic_loading=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_009_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_dynamic_loading = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_dynamic_loading'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_dynamic_loading'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_009_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_dynamic_loading = @@GLOBAL.have_dynamic_loading; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_009_05----------------------#' +################################################################################ +# Check if have_dynamic_loading can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_dynamic_loading); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_dynamic_loading); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_dynamic_loading); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_dynamic_loading); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_dynamic_loading = @@SESSION.have_dynamic_loading; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_geometry_basic.test b/mysql-test/t/have_geometry_basic.test new file mode 100644 index 00000000000..3ec0690bd16 --- /dev/null +++ b/mysql-test/t/have_geometry_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_geometry_basic.test ###################### +# # +# Variable Name: have_geometry # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_geometry # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_010_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_geometry); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_010_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_geometry=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_geometry); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_010_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_geometry = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_geometry'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_geometry); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_geometry'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_010_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_geometry = @@GLOBAL.have_geometry; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_010_05----------------------#' +################################################################################ +# Check if have_geometry can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_geometry); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_geometry); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_geometry); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_geometry); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_geometry = @@SESSION.have_geometry; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_innodb_basic.test b/mysql-test/t/have_innodb_basic.test new file mode 100644 index 00000000000..9ae1bb0d443 --- /dev/null +++ b/mysql-test/t/have_innodb_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_innodb_basic.test ######################## +# # +# Variable Name: have_innodb # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_innodb # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_011_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_innodb); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_011_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_innodb=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_innodb); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_011_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_innodb = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_innodb'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_innodb); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_innodb'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_011_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_innodb = @@GLOBAL.have_innodb; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_011_05----------------------#' +################################################################################ +# Check if have_innodb can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_innodb); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_innodb); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_innodb); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_innodb); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_innodb = @@SESSION.have_innodb; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_ndbcluster_basic.test b/mysql-test/t/have_ndbcluster_basic.test new file mode 100644 index 00000000000..1ac341ff62e --- /dev/null +++ b/mysql-test/t/have_ndbcluster_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_ndbcluster_basic.test #################### +# # +# Variable Name: have_ndbcluster # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_ndbcluster # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_012_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_ndbcluster); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_012_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_ndbcluster=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_ndbcluster); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_012_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_ndbcluster = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ndbcluster'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_ndbcluster); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ndbcluster'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_012_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_ndbcluster = @@GLOBAL.have_ndbcluster; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_012_05----------------------#' +################################################################################ +# Check if have_ndbcluster can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_ndbcluster); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_ndbcluster); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_ndbcluster); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_ndbcluster); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_ndbcluster = @@SESSION.have_ndbcluster; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_openssl_basic.test b/mysql-test/t/have_openssl_basic.test new file mode 100644 index 00000000000..037c8f4cbe6 --- /dev/null +++ b/mysql-test/t/have_openssl_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_openssl_basic.test ####################### +# # +# Variable Name: have_openssl # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_openssl # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_013_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_openssl); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_013_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_openssl=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_openssl); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_013_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_openssl = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_openssl'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_openssl); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_openssl'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_013_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_openssl = @@GLOBAL.have_openssl; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_013_05----------------------#' +################################################################################ +# Check if have_openssl can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_openssl); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_openssl); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_openssl); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_openssl); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_openssl = @@SESSION.have_openssl; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_partitioning_basic.test b/mysql-test/t/have_partitioning_basic.test new file mode 100644 index 00000000000..b37abdb1498 --- /dev/null +++ b/mysql-test/t/have_partitioning_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_partitioning_basic.test ################## +# # +# Variable Name: have_partitioning # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_partitioning # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_014_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_partitioning); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_014_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_partitioning=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_partitioning); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_014_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_partitioning = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_partitioning'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_partitioning); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_partitioning'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_014_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_partitioning = @@GLOBAL.have_partitioning; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_014_05----------------------#' +################################################################################ +# Check if have_partitioning can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_partitioning); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_partitioning); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_partitioning); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_partitioning); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_partitioning = @@SESSION.have_partitioning; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_query_cache_basic.test b/mysql-test/t/have_query_cache_basic.test new file mode 100644 index 00000000000..1c32300dec9 --- /dev/null +++ b/mysql-test/t/have_query_cache_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_query_cache_basic.test ################### +# # +# Variable Name: have_query_cache # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_query_cache # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_015_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_query_cache); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_015_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_query_cache=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_query_cache); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_015_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_query_cache = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_query_cache'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_query_cache); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_query_cache'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_015_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_query_cache = @@GLOBAL.have_query_cache; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_015_05----------------------#' +################################################################################ +# Check if have_query_cache can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_query_cache); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_query_cache); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_query_cache); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_query_cache); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_query_cache = @@SESSION.have_query_cache; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_rtree_keys_basic.test b/mysql-test/t/have_rtree_keys_basic.test new file mode 100644 index 00000000000..493c45530a6 --- /dev/null +++ b/mysql-test/t/have_rtree_keys_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_rtree_keys_basic.test #################### +# # +# Variable Name: have_rtree_keys # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_rtree_keys # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_016_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_rtree_keys); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_016_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_rtree_keys=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_rtree_keys); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_016_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_rtree_keys = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_rtree_keys'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_rtree_keys); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_rtree_keys'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_016_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_rtree_keys = @@GLOBAL.have_rtree_keys; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_016_05----------------------#' +################################################################################ +# Check if have_rtree_keys can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_rtree_keys); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_rtree_keys); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_rtree_keys); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_rtree_keys); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_rtree_keys = @@SESSION.have_rtree_keys; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_ssl_basic.test b/mysql-test/t/have_ssl_basic.test new file mode 100644 index 00000000000..c92219d2252 --- /dev/null +++ b/mysql-test/t/have_ssl_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_ssl_basic.test ########################### +# # +# Variable Name: have_ssl # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_ssl # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_017_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_ssl); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_017_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_ssl=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_ssl); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_017_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_ssl = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ssl'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_ssl); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_ssl'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_017_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_ssl = @@GLOBAL.have_ssl; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_017_05----------------------#' +################################################################################ +# Check if have_ssl can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_ssl); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_ssl); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_ssl); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_ssl); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_ssl = @@SESSION.have_ssl; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/have_symlink_basic.test b/mysql-test/t/have_symlink_basic.test new file mode 100644 index 00000000000..924da7c7a9f --- /dev/null +++ b/mysql-test/t/have_symlink_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\have_symlink_basic.test ####################### +# # +# Variable Name: have_symlink # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable have_symlink # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_018_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.have_symlink); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_018_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.have_symlink=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.have_symlink); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_018_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.have_symlink = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_symlink'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.have_symlink); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='have_symlink'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_018_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@have_symlink = @@GLOBAL.have_symlink; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_018_05----------------------#' +################################################################################ +# Check if have_symlink can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@have_symlink); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.have_symlink); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.have_symlink); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.have_symlink); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT have_symlink = @@SESSION.have_symlink; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/hostname_basic.test b/mysql-test/t/hostname_basic.test new file mode 100644 index 00000000000..9f1dff756e2 --- /dev/null +++ b/mysql-test/t/hostname_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\hostname_basic.test ########################### +# # +# Variable Name: hostname # +# Scope: Global # +# Access Type: Static # +# Data Type: string # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable hostname # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_019_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.hostname); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_019_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.hostname=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.hostname); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_019_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.hostname = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='hostname'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.hostname); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='hostname'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_019_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@hostname = @@GLOBAL.hostname; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_019_05----------------------#' +################################################################################ +# Check if hostname can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@hostname); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.hostname); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.hostname); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.hostname); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT hostname = @@SESSION.hostname; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/identity_basic.test b/mysql-test/t/identity_basic.test new file mode 100644 index 00000000000..fa5fc807414 --- /dev/null +++ b/mysql-test/t/identity_basic.test @@ -0,0 +1,189 @@ +############## mysql-test\t\identity_basic.test ############### +# # +# Variable Name: identity # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: - # +# Range: - # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable identity # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################ +# START OF identity TESTS # +################################################################ + + +################################################################ +# Saving initial value of identity in a temporary variable # +################################################################ + +SET @start_value = @@session.identity; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_035_01------------------------#' +######################################################################## +# Display the DEFAULT value of identity # +######################################################################## + +SET @@session.identity = 99; +# SET @@session.identity = DEFAULT; +--echo 'Variable is giving error on assigning Default value'; +SELECT @@session.identity; + + +--echo '#---------------------FN_DYNVARS_035_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@session.identity = @start_value; +SELECT @@session.identity = 0; + + +--echo '#--------------------FN_DYNVARS_035_03------------------------#' +######################################################################## +# Change the value of identity to a valid value # +######################################################################## + +SET @@session.identity = 0; +SELECT @@session.identity; +SET @@session.identity = 1099; +SELECT @@session.identity; +SET @@session.identity = 1800; +SELECT @@session.identity; +SET @@session.identity = 65535; +SELECT @@session.identity; + + +--echo '#--------------------FN_DYNVARS_035_04-------------------------#' +########################################################################### +# Change the value of identity to invalid value # +########################################################################### + +SET @@session.identity = -1; +SELECT @@session.identity; +SET @@session.identity = 100000000000; +SELECT @@session.identity; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.identity = 10000.01; +SELECT @@session.identity; +SET @@session.identity = -1024; +SELECT @@session.identity; +SET @@session.identity = 42949672950; +SELECT @@session.identity; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.identity = ON; +SELECT @@session.identity; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.identity = 'test'; +SELECT @@session.identity; + + +--echo '#-------------------FN_DYNVARS_035_05----------------------------#' +########################################################################### +# Test if accessing global identity gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.identity = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.identity; + + +--echo '#----------------------FN_DYNVARS_035_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.identity = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='identity'; + +SELECT @@session.identity = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='identity'; + + +--echo '#-------------------FN_DYNVARS_035_07----------------------------#' +###################################################################### +# Test if accessing GLOBAL identity gives error # +###################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.identity = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.identity; + +--echo '#---------------------FN_DYNVARS_035_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.identity = TRUE; +SELECT @@session.identity; +SET @@session.identity = FALSE; +SELECT @@session.identity; + + +--echo '#---------------------FN_DYNVARS_035_09----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@session.identity = 1; +SELECT @@identity = @@session.identity; +SELECT @@session.identity = @@local.identity; + + +--echo '#---------------------FN_DYNVARS_035_10----------------------#' +########################################################################## +# Check if identity can be accessed with and without @@ sign # +########################################################################## + + +SET identity = 1; +SELECT @@identity; +--Error ER_PARSE_ERROR +SET local.identity = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.identity; +--Error ER_PARSE_ERROR +SET session.identity = 1; +--Error ER_UNKNOWN_TABLE +SELECT session.identity; +--Error ER_BAD_FIELD_ERROR +SELECT identity = @@session.identity; + + +############################## +# Restore initial value # +############################## + +SET @@session.identity = @start_value; +SELECT @@session.identity; + + +######################################################################## +# END OF identity TESTS # +######################################################################## diff --git a/mysql-test/t/identity_func-master.opt b/mysql-test/t/identity_func-master.opt new file mode 100644 index 00000000000..66f581b56d0 --- /dev/null +++ b/mysql-test/t/identity_func-master.opt @@ -0,0 +1,2 @@ +--innodb + diff --git a/mysql-test/t/identity_func.test b/mysql-test/t/identity_func.test new file mode 100644 index 00000000000..2920b3f4c0b --- /dev/null +++ b/mysql-test/t/identity_func.test @@ -0,0 +1,143 @@ +#################### mysql-test\t\identity_func.test ########################## +# # +# Variable Name: identity # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: - # +# Range: - # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable identity # +# that checks the functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + + +--disable_warnings +drop table if exists t1; +drop table if exists t2; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +) ENGINE = INNODB; + +--echo ## Creating another new table t2 ## +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +) ENGINE = INNODB; + +--echo '#--------------------FN_DYNVARS_035_01-------------------------#' +############################################### +# Verifying initial value of identity. # +############################################### + +--echo ## It should be zero ## +SELECT @@identity = 0; + +--echo ## Creating and connecting with new connection test_con1 ## +connect (test_con1, localhost, root,,); +connection test_con1; +SET @@autocommit = 0; + +--echo ## Inserting rows in table t1 ## +INSERT into t1(name) values('Record_1'); +INSERT into t1(name) values('Record_2'); +INSERT into t1(name) values('Record_3'); + +--echo ## Verifying total values in t1 ## +SELECT @@identity from t1; + + +--echo ## Now inserting some data in table t2 ## +INSERT into t2(name) values('Record_1'); + +--echo ## Verifying total values in t2 ## +SELECT @@identity from t2; + + +--echo '#--------------------FN_DYNVARS_035_02-------------------------#' +########################################################## +# Verifying value of identity with new connection # +########################################################## + +--echo ## Creating and connecting with new connection test_con2 ## +connect (test_con2, localhost, root,,); +connection test_con2; +SELECT * from t1; + +--echo ## Verifying total values in t1 ## +SELECT @@identity from t1; + +--echo ## Verifying total values in t2 ## +SELECT @@identity from t2; + +--echo ## Inserting some more records in table t1 ## +INSERT into t1(name) values('Record_1_1'); +INSERT into t1(name) values('Record_1_2'); + +--echo ## Verifying total values in t1 ## +SELECT @@identity from t1; + +--echo ## Inserting row in table t2 ## +INSERT into t2(name) values('Record_1_3'); + +--echo ## Verifying total values in t2 ## +SELECT @@identity from t2; + + +--echo '#--------------------FN_DYNVARS_035_03-------------------------#' +################################################################### +# Verifying identity value by using commit in connectio # 01 # +################################################################### + +--echo ## Switching to connection test_con1 ## +connection test_con1; + +--echo ## Commiting rows added in test_con1 ## +COMMIT; + +--echo ## Verifying records in both tables ## +SELECT * from t1; +SELECT * from t2; + +--echo ## Verifying total values in t1 after commiting data ## +SELECT @@identity from t1; + +--echo ## Verifying total values in t2 after commiting data ## +SELECT @@identity from t2; + +INSERT into t1(name) values('Record_4'); + +--echo ## Now verifying value of variable after inserting 1 row in this connection ## +SELECT @@identity from t1; + +--echo ## Dropping tables t1 & t2 ## +drop table t1, t2; + +--echo ## Disconnecting both the connections ## +disconnect test_con1; +disconnect test_con2; + + + + + diff --git a/mysql-test/t/init_connect_basic.test b/mysql-test/t/init_connect_basic.test new file mode 100644 index 00000000000..8557dfbf4fc --- /dev/null +++ b/mysql-test/t/init_connect_basic.test @@ -0,0 +1,151 @@ +############## mysql-test\t\init_connect_basic.test ########################### +# # +# Variable Name: init_connect # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable init_connect # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +############################################## +## START OF init_connect TESTS ## +############################################## + +############################################################# +# Save initial value # +############################################################# +# save using implicit session scope +SET @global_start_value = @@global.init_connect; +SELECT @global_start_value AS INIT_VALUE; + +--echo '#--------------------FN_DYNVARS_036_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT init_connect; +# access using no scope specified +SELECT @@init_connect; +# assign value without @@ +SET @@global.init_connect='SET autocomit=0'; +SELECT @@global.init_connect; +# using another syntax for accessing session variable +SET global init_connect='SET autocomit=0'; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT global init_connect; +--Error ER_PARSE_ERROR +SELECT @@global init_connect; + + +--echo '#--------------------FN_DYNVARS_036_02-------------------------#' +################################################################## +# Check the DEFAULT value of init_connect for global # +################################################################## +SET @@global.init_connect = 'SET join_buffer_size=8200'; +SET @@global.init_connect = DEFAULT; +SELECT @@global.init_connect; + +--echo '#--------------------FN_DYNVARS_036_03-------------------------#' +###################################################################### +# see if it is accessable using session scope # +###################################################################### +--Error ER_GLOBAL_VARIABLE +SET @@session.init_connect = ''; +--Error ER_GLOBAL_VARIABLE +SET @@init_connect = ''; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.init_connect; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.init_connect; + +--echo '#--------------------FN_DYNVARS_036_04-------------------------#' +######################################################################### +# Change the value of init_connect to a valid value # +######################################################################### + +SET @@global.init_connect=""; +SELECT @@global.init_connect; + +SET @@global.init_connect='SELECT 1,"abc"'; +SELECT @@global.init_connect; + +SET @@global.init_connect='SET @yoursql="mysql"'; +SELECT @@global.init_connect; + +SET @@global.init_connect="SET autocomit=0;REVOKE ALL ON INFORMATION_SCHEMA.*"; +SELECT @@global.init_connect; + +SET @@global.init_connect='SHOW VARIABLES'; +SELECT @@global.init_connect; + +SET @@global.init_connect = NULL; +SELECT @@global.init_connect; + +#any string is accepted as valid value as its is not verified until runtime +SET @@global.init_connect='abc 123 +-*/'; +SELECT @@global.init_connect; + +SET @@global.init_connect=this_will_give_syntax_error; +SELECT @@global.init_connect; + +SET @@global.init_connect = init_slave; +SELECT @@global.init_connect; + +--echo '#--------------------FN_DYNVARS_036_05-------------------------#' +########################################################################### +# Change the value of init_connect to an invalid value for global # +########################################################################### + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_connect = true; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_connect = false; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_connect = 1.1; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_connect = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_connect = 1; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_connect = -1; + +SET @@global.init_connect = ON; +SELECT @@global.init_connect; + +--echo '#--------------------FN_DYNVARS_036_06-------------------------#' +############################################################################## +# Check if the value in GLOBAL Table matches value in variable # +############################################################################## + +SELECT @@global.init_connect = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='init_connect') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.init_connect = @global_start_value; +SELECT @@global.init_connect; + +##################################################### +# END OF init_connect TESTS # +##################################################### diff --git a/mysql-test/t/init_slave_basic.test b/mysql-test/t/init_slave_basic.test new file mode 100644 index 00000000000..b137a525090 --- /dev/null +++ b/mysql-test/t/init_slave_basic.test @@ -0,0 +1,153 @@ +###################### mysql-test\t\init_slave_basic.test ##################### +# # +# Variable Name: init_slave # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable init_slave # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +############################################ +## START OF init_slave TESTS ## +############################################ + +############################################################# +# Save initial value # +############################################################# +# save using implicit session scope +SET @global_start_value = @@global.init_slave; +SELECT @global_start_value AS INIT_VALUE; + +--echo '#--------------------FN_DYNVARS_037_01------------------#' +############################################################################### +# Test Variable access and assignment with and without @@ # +############################################################################### +# select without @@ +--error ER_BAD_FIELD_ERROR +SELECT init_slave; +# access using no scope specified +SELECT @@init_slave; +# assign value without @@ +SET @@global.init_slave='SET autocomit=0'; +SELECT @@global.init_slave; +# using another syntax for accessing session variable +SET global init_slave='SET autocomit=0'; +# accessing variable with scope the wrong way +--Error ER_BAD_FIELD_ERROR +SELECT global init_slave; +--Error ER_PARSE_ERROR +SELECT @@global init_slave; + + +--echo '#--------------------FN_DYNVARS_037_02-------------------------#' +################################################################ +# Check the DEFAULT value of init_slave for global # +################################################################ +SET @@global.init_slave = 'SET join_buffer_size=8200'; +SET @@global.init_slave = DEFAULT; +SELECT @@global.init_slave; + +--echo '#--------------------FN_DYNVARS_037_03-------------------------#' +###################################################################### +# see if it is accessable using session scope # +###################################################################### +--Error ER_GLOBAL_VARIABLE +SET @@session.init_slave = ''; +--Error ER_GLOBAL_VARIABLE +SET @@init_slave = ""; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.init_slave; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.init_slave; + +--echo '#--------------------FN_DYNVARS_037_04-------------------------#' +####################################################################### +# Change the value of init_slave to a valid value # +####################################################################### + +SET @@global.init_slave=""; +SELECT @@global.init_slave; + +SET @@global.init_slave='SELECT 1,"abc"'; +SELECT @@global.init_slave; + +SET @@global.init_slave='SET @a="b"'; +SELECT @@global.init_slave; + +SET @@global.init_slave="SET autocomit=1;REVOKE ALL ON INFORMATION_SCHEMA.*"; +SELECT @@global.init_slave; + +SET @@global.init_slave='SHOW VARIABLES'; +SELECT @@global.init_slave; + +SET @@global.init_slave = NULL; +SELECT @@global.init_slave; + +#any string is accepted as valid value as its is not verified/compiled +# untill runtime +SET @@global.init_slave='abc 123 +-*/'; +SELECT @@global.init_slave; + +SET @@global.init_slave=this_will_give_syntax_error; +SELECT @@global.init_slave; + +SET @@global.init_slave = init_slave; +SELECT @@global.init_slave; + +--echo '#--------------------FN_DYNVARS_037_05-------------------------#' +######################################################################### +# Change the value of init_slave to an invalid value for global # +######################################################################### + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_slave = true; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_slave = false; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_slave = 1.1; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_slave = 0; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_slave = 1; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.init_slave = -1; + +SET @@global.init_slave = ON; +SELECT @@global.init_slave; + + +--echo '#--------------------FN_DYNVARS_037_06-------------------------#' +############################################################################## +# Check if the value in GLOBAL Table matches value in variable # +############################################################################## + +SELECT @@global.init_slave = (SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='init_slave') AS res; + +#################################### +# Restore initial value # +#################################### +SET @@global.init_slave = @global_start_value; +SELECT @@global.init_slave; + +################################################### +# END OF init_slave TESTS # +################################################### diff --git a/mysql-test/t/innodb_additional_mem_pool_size_basic.test b/mysql-test/t/innodb_additional_mem_pool_size_basic.test new file mode 100644 index 00000000000..5082867a16f --- /dev/null +++ b/mysql-test/t/innodb_additional_mem_pool_size_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_additional_mem_pool_size_basic.test #### +# # +# Variable Name: innodb_additional_mem_pool_size # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_additional_mem_pool_size# +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_020_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_020_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_additional_mem_pool_size=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_020_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_additional_mem_pool_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_additional_mem_pool_size'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_additional_mem_pool_size'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_020_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_additional_mem_pool_size = @@GLOBAL.innodb_additional_mem_pool_size; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_020_05----------------------#' +################################################################################ +# Check if innodb_additional_mem_pool_size can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_additional_mem_pool_size); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_additional_mem_pool_size); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_additional_mem_pool_size); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_additional_mem_pool_size); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_additional_mem_pool_size = @@SESSION.innodb_additional_mem_pool_size; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_autoextend_increment_basic.test b/mysql-test/t/innodb_autoextend_increment_basic.test new file mode 100644 index 00000000000..e833189f1d2 --- /dev/null +++ b/mysql-test/t/innodb_autoextend_increment_basic.test @@ -0,0 +1,159 @@ +################# mysql-test\t\innodb_autoextend_increment _basic.test ################### +# # +# Variable Name: innodb_autoextend_increment # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 8 # +# Range: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description:Test Cases of Dynamic System Variable innodb_autoextend_increment# +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_autoextend_increment TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of innodb_autoextend_increment in a temporary variable# +################################################################################ + + +SET @global_start_value = @@global.innodb_autoextend_increment ; +SELECT @global_start_value; + + + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_autoextend_increment # +######################################################################## + + + +SET @@global.innodb_autoextend_increment = 0; +SET @@global.innodb_autoextend_increment = DEFAULT; +SELECT @@global.innodb_autoextend_increment ; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +#################################################################################### +# Check if innodb_autoextend_increment can be accessed with and without @@ sign # +#################################################################################### + +--Error ER_GLOBAL_VARIABLE +SET innodb_autoextend_increment = 1; +SELECT @@innodb_autoextend_increment ; + + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_autoextend_increment ; + + +SET global innodb_autoextend_increment = 0; +SELECT @@global.innodb_autoextend_increment ; + + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +########################################################################## +# change the value of innodb_autoextend_increment to a valid value # +########################################################################## + + + +SET @@global.innodb_autoextend_increment = 1; +SELECT @@global.innodb_autoextend_increment ; +SET @@global.innodb_autoextend_increment = 1000; +SELECT @@global.innodb_autoextend_increment ; + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +########################################################################### +# Change the value of innodb_autoextend_increment to invalid value # +########################################################################### + + + + +SET @@global.innodb_autoextend_increment = -1; +SELECT @@global.innodb_autoextend_increment; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_autoextend_increment = "T"; +SELECT @@global.innodb_autoextend_increment; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_autoextend_increment = "Y"; +SELECT @@global.innodb_autoextend_increment; + + +SET @@global.innodb_autoextend_increment = 1001; +SELECT @@global.innodb_autoextend_increment; + + + + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_autoextend_increment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoextend_increment '; +SELECT @@global.innodb_autoextend_increment ; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoextend_increment '; + + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_autoextend_increment = OFF; +SELECT @@global.innodb_autoextend_increment ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_autoextend_increment = ON; +SELECT @@global.innodb_autoextend_increment ; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + + +SET @@global.innodb_autoextend_increment = TRUE; +SELECT @@global.innodb_autoextend_increment ; +SET @@global.innodb_autoextend_increment = FALSE; +SELECT @@global.innodb_autoextend_increment ; + +############################## +# Restore initial value # +############################## + + +#SET @@global.innodb_autoextend_increment = @global_start_value; +#SELECT @@global.innodb_autoextend_increment ; + +############################################################### +# END OF innodb_autoextend_increment TESTS # +############################################################### diff --git a/mysql-test/t/innodb_autoinc_lock_mode_basic.test b/mysql-test/t/innodb_autoinc_lock_mode_basic.test new file mode 100644 index 00000000000..32398bf5fe3 --- /dev/null +++ b/mysql-test/t/innodb_autoinc_lock_mode_basic.test @@ -0,0 +1,89 @@ +################# mysql-test\t\innodb_autoinc_lock_mode_basic.test ############ +# # +# Variable Name: innodb_autoinc_lock_mode # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 0,1,2 # +# # +# # +# Creation Date: 2008-02-20 # +# Author: Sharique Abdullah # +# # +#Description:Test Cases of Dynamic System Variable innodb_autoextend_increment# +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_autoinc_lock_mode TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of innodb_autoinc_lock_mode in a temporary variable# +################################################################################ + + +SET @global_start_value = @@global.innodb_autoinc_lock_mode; +SELECT @global_start_value; + + + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_autoinc_lock_mode # +######################################################################## + + +--ERROR ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@global.innodb_autoinc_lock_mode = 0; +--ERROR ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@global.innodb_autoinc_lock_mode = DEFAULT; +SELECT @@global.innodb_autoinc_lock_mode; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +#################################################################################### +# Check if innodb_autoinc_lock_mode can be accessed with and without @@ sign # +#################################################################################### + + +SELECT @@innodb_autoinc_lock_mode; + + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_autoinc_lock_mode; + + + +SELECT @@global.innodb_autoinc_lock_mode; + + + +--echo '#----------------------FN_DYNVARS_046_03------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_autoinc_lock_mode = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoinc_lock_mode'; +SELECT @@global.innodb_autoinc_lock_mode; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_autoinc_lock_mode'; + + +############################################################### +# END OF innodb_autoinc_lock_mode TESTS # +############################################################### diff --git a/mysql-test/t/innodb_autoinc_lock_mode_func-master.opt b/mysql-test/t/innodb_autoinc_lock_mode_func-master.opt new file mode 100644 index 00000000000..ab9fcb75678 --- /dev/null +++ b/mysql-test/t/innodb_autoinc_lock_mode_func-master.opt @@ -0,0 +1,2 @@ +--innodb-autoinc-lock-mode=1 + diff --git a/mysql-test/t/innodb_autoinc_lock_mode_func.test b/mysql-test/t/innodb_autoinc_lock_mode_func.test new file mode 100644 index 00000000000..1ff7868ce87 --- /dev/null +++ b/mysql-test/t/innodb_autoinc_lock_mode_func.test @@ -0,0 +1,56 @@ +################# mysql-test\t\innodb_autoinc_lock_mode_func.test ############ +# # +# Variable Name: innodb_autoinc_lock_mode # +# Scope: GLOBAL # +# Access Type: Readonly # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 0,1,2 # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan Maredia # +# # +#Description:Test Cases of Dynamic System Variable innodb_autoextend_increment# +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_039_01-------------------------#' +################################################################ +# Begin the functionality Testing of innodb_autoinc_lock_mode # +################################################################ +--source include/have_innodb.inc + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET global innodb_autoinc_lock_mode = 1; + +#======================================================== +--echo '--innodb_autoinc_lock_mode is 1 (consecutive)--' +#======================================================== + + +# innodb_autoinc_lock_mode is 1 in opt file +SELECT @@global.innodb_autoinc_lock_mode; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1( +a INT AUTO_INCREMENT PRIMARY KEY, +b CHAR +)ENGINE=INNODB, AUTO_INCREMENT=100; + +INSERT INTO t1 (a,b) VALUES (5,'a'), (NULL,'b'), (1,'c'), (NULL,'d'); +INSERT INTO t1 (a,b) VALUES (NULL,'e'); +--echo 'the new auto incremented value should be 104' +SELECT * from t1; + +############################################################### +# End of functionality Testing for innodb_autoinc_lock_mode # +############################################################### + diff --git a/mysql-test/t/innodb_buffer_pool_size_basic.test b/mysql-test/t/innodb_buffer_pool_size_basic.test new file mode 100644 index 00000000000..7de4b9f853c --- /dev/null +++ b/mysql-test/t/innodb_buffer_pool_size_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_buffer_pool_size_basic.test ############ +# # +# Variable Name: innodb_buffer_pool_size # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_buffer_pool_size # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_022_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_022_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_buffer_pool_size=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_022_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_buffer_pool_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_buffer_pool_size'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_buffer_pool_size'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_022_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_buffer_pool_size = @@GLOBAL.innodb_buffer_pool_size; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_022_05----------------------#' +################################################################################ +# Check if innodb_buffer_pool_size can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_buffer_pool_size); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_buffer_pool_size); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_buffer_pool_size); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_buffer_pool_size); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_buffer_pool_size = @@SESSION.innodb_buffer_pool_size; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_checksums_basic.test b/mysql-test/t/innodb_checksums_basic.test new file mode 100644 index 00000000000..7b738557789 --- /dev/null +++ b/mysql-test/t/innodb_checksums_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_checksums_basic.test ################### +# # +# Variable Name: innodb_checksums # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_checksums # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_023_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_checksums); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_023_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_checksums=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_checksums); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_023_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_checksums = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_checksums'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_checksums); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_checksums'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_023_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_checksums = @@GLOBAL.innodb_checksums; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_023_05----------------------#' +################################################################################ +# Check if innodb_checksums can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_checksums); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_checksums); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_checksums); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_checksums); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_checksums = @@SESSION.innodb_checksums; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_commit_concurrency_basic.test b/mysql-test/t/innodb_commit_concurrency_basic.test new file mode 100644 index 00000000000..c746660ecfb --- /dev/null +++ b/mysql-test/t/innodb_commit_concurrency_basic.test @@ -0,0 +1,146 @@ +################# mysql-test\t\innodb_commit_concurrency_basic.test ########### +# # +# Variable Name: innodb_commit_concurrency # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 0 # +# Range: 0-1000 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description:Test Cases of Dynamic System Variable innodb_commit_concurrency # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_commit_concurrency TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of innodb_commit_concurrency in a temporary variable# +############################################################################## + +SET @global_start_value = @@global.innodb_commit_concurrency; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_commit_concurrency # +######################################################################## + +SET @@global.innodb_commit_concurrency = 0; +SET @@global.innodb_commit_concurrency = DEFAULT; +SELECT @@global.innodb_commit_concurrency; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +################################################################################ +# Check if innodb_commit_concurrency can be accessed with and without @@ sign# +################################################################################ + +--Error ER_GLOBAL_VARIABLE +SET innodb_commit_concurrency = 1; +SELECT @@innodb_commit_concurrency; + + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_commit_concurrency; + +SET global innodb_commit_concurrency = 0; + +SELECT @@global.innodb_commit_concurrency; + + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +########################################################################## +# change the value of innodb_commit_concurrency to a valid value # +########################################################################## + + +SET @@global.innodb_commit_concurrency = 0; +SELECT @@global.innodb_commit_concurrency; + +SET @@global.innodb_commit_concurrency = 1; +SELECT @@global.innodb_commit_concurrency; +SET @@global.innodb_commit_concurrency = 1000; +SELECT @@global.innodb_commit_concurrency; + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +########################################################################### +# Change the value of innodb_commit_concurrency to invalid value # +########################################################################### + +SET @@global.innodb_commit_concurrency = -1; +SELECT @@global.innodb_commit_concurrency; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_commit_concurrency = "T"; +SELECT @@global.innodb_commit_concurrency; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_commit_concurrency = "Y"; +SELECT @@global.innodb_commit_concurrency; + +SET @@global.innodb_commit_concurrency = 1001; +SELECT @@global.innodb_commit_concurrency; + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_commit_concurrency = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_commit_concurrency'; +SELECT @@global.innodb_commit_concurrency; +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_commit_concurrency'; + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_commit_concurrency = OFF; +SELECT @@global.innodb_commit_concurrency; + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_commit_concurrency = ON; +SELECT @@global.innodb_commit_concurrency; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + + +SET @@global.innodb_commit_concurrency = TRUE; +SELECT @@global.innodb_commit_concurrency; +SET @@global.innodb_commit_concurrency = FALSE; +SELECT @@global.innodb_commit_concurrency; + +############################## +# Restore initial value # +############################## + + +SET @@global.innodb_commit_concurrency = @global_start_value; +SELECT @@global.innodb_commit_concurrency; + +############################################################### +# END OF innodb_commit_concurrency TESTS # +############################################################### diff --git a/mysql-test/t/innodb_data_file_path_basic.test b/mysql-test/t/innodb_data_file_path_basic.test new file mode 100644 index 00000000000..5c1c2b06f44 --- /dev/null +++ b/mysql-test/t/innodb_data_file_path_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_data_file_path_basic.test ############## +# # +# Variable Name: innodb_data_file_path # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_data_file_path # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_024_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_024_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_data_file_path=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_024_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_data_file_path = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_file_path'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_file_path'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_024_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_data_file_path = @@GLOBAL.innodb_data_file_path; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_024_05----------------------#' +################################################################################ +# Check if innodb_data_file_path can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_data_file_path); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_data_file_path); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_data_file_path); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_data_file_path); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_data_file_path = @@SESSION.innodb_data_file_path; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_data_home_dir_basic.test b/mysql-test/t/innodb_data_home_dir_basic.test new file mode 100644 index 00000000000..1922f5e883c --- /dev/null +++ b/mysql-test/t/innodb_data_home_dir_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_data_home_dir_basic.test ############### +# # +# Variable Name: innodb_data_home_dir # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_data_home_dir # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_025_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_025_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_data_home_dir=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_025_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_data_home_dir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_home_dir'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_data_home_dir'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_025_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_data_home_dir = @@GLOBAL.innodb_data_home_dir; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_025_05----------------------#' +################################################################################ +# Check if innodb_data_home_dir can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_data_home_dir); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_data_home_dir); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_data_home_dir); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_data_home_dir); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_data_home_dir = @@SESSION.innodb_data_home_dir; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_doublewrite_basic.test b/mysql-test/t/innodb_doublewrite_basic.test new file mode 100644 index 00000000000..a4cc53d59fc --- /dev/null +++ b/mysql-test/t/innodb_doublewrite_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_doublewrite_basic.test ################# +# # +# Variable Name: innodb_doublewrite # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_doublewrite # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_026_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_026_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_doublewrite=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_026_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_doublewrite = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_doublewrite'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_doublewrite'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_026_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_doublewrite = @@GLOBAL.innodb_doublewrite; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_026_05----------------------#' +################################################################################ +# Check if innodb_doublewrite can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_doublewrite); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_doublewrite); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_doublewrite); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_doublewrite); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_doublewrite = @@SESSION.innodb_doublewrite; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_fast_shutdown_basic.test b/mysql-test/t/innodb_fast_shutdown_basic.test new file mode 100644 index 00000000000..bda2bec59d4 --- /dev/null +++ b/mysql-test/t/innodb_fast_shutdown_basic.test @@ -0,0 +1,192 @@ +############## mysql-test\t\innodb_fast_shutdown_basic.test ################### +# # +# Variable Name: innodb_fast_shutdown # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: 1 # +# Valid Values: 0,1 # +# # +# # +# Creation Date: 2008-02-20 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable innodb_fast_shutdown # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_fast_shutdown TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of innodb_fast_shutdown in a temporary variable # +############################################################################## + + + +SET @global_start_value = @@global.innodb_fast_shutdown; +SELECT @@global.innodb_fast_shutdown; + + +--echo '#--------------------FN_DYNVARS_042_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_fast_shutdown # +######################################################################## + +SET @@global.innodb_fast_shutdown = 0; +SET @@global.innodb_fast_shutdown = DEFAULT; +SELECT @@global.innodb_fast_shutdown; + + + +--echo '#---------------------FN_DYNVARS_042_02-------------------------#' +############################################################################# +# Check if innodb_fast_shutdown can be accessed with and without @@ sign # +############################################################################# + + +--ERROR ER_GLOBAL_VARIABLE +SET innodb_fast_shutdown = 1; +SELECT @@innodb_fast_shutdown; + +--Error ER_UNKNOWN_TABLE +SELECT global.innodb_fast_shutdown; + +SET global innodb_fast_shutdown = 1; +SELECT @@global.innodb_fast_shutdown; + + +--echo '#--------------------FN_DYNVARS_042_03------------------------#' +######################################################################## +# Change the value of innodb_fast_shutdown to a valid value # +######################################################################## + +SET @@global.innodb_fast_shutdown = 0; +SELECT @@global.innodb_fast_shutdown; + +SET @@global.innodb_fast_shutdown = 1; +SELECT @@global.innodb_fast_shutdown; +## a value of 2 is used to just flush logs and then shutdown cold. Not supported on Netware + +SET @@global.innodb_fast_shutdown = 2; +SELECT @@global.innodb_fast_shutdown; + +--echo '#--------------------FN_DYNVARS_042_04-------------------------#' +########################################################################### +# Change the value of innodb_fast_shutdown to invalid value # +########################################################################### + + +SET @@global.innodb_fast_shutdown = -1; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = TRU; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = TRUE_F; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = FALS; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = OON; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = ONN; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = OOFF; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = 0FF; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = '1'; +SELECT @@global.innodb_fast_shutdown; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = "0"; +SELECT @@global.innodb_fast_shutdown; + + + +--echo '#-------------------FN_DYNVARS_042_05----------------------------#' +########################################################################### +# Test if accessing session innodb_fast_shutdown gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.innodb_fast_shutdown = 0; + +--Error ER_GLOBAL_VARIABLE +SET @@innodb_fast_shutdown = 0; +--Error ER_GLOBAL_VARIABLE +SET @@local.innodb_fast_shutdown = 0; + + + +--echo '#----------------------FN_DYNVARS_042_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) AS res_is_0 +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='innodb_fast_shutdown'; + + +--echo '#----------------------FN_DYNVARS_042_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_fast_shutdown = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_fast_shutdown'; + + +--echo '#---------------------FN_DYNVARS_042_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = OFF; +SELECT @@global.innodb_fast_shutdown; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_fast_shutdown = ON; +SELECT @@global.innodb_fast_shutdown; + +--echo '#---------------------FN_DYNVARS_042_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.innodb_fast_shutdown = TRUE; +SELECT @@global.innodb_fast_shutdown; +SET @@global.innodb_fast_shutdown = FALSE; +SELECT @@global.innodb_fast_shutdown; + +############################## +# Restore initial value # +############################## + +#SET @@innodb_fast_shutdown = @global_start_value; +#SELECT @@innodb_fast_shutdown; + +######################################################################## +# END OF innodb_fast_shutdown TESTS # +######################################################################## diff --git a/mysql-test/t/innodb_file_io_threads_basic.test b/mysql-test/t/innodb_file_io_threads_basic.test new file mode 100644 index 00000000000..c7ce91d0f70 --- /dev/null +++ b/mysql-test/t/innodb_file_io_threads_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_file_io_threads_basic.test ############# +# # +# Variable Name: innodb_file_io_threads # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_file_io_threads # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_027_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_027_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_file_io_threads=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_027_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_file_io_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_io_threads'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_io_threads'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_027_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_file_io_threads = @@GLOBAL.innodb_file_io_threads; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_027_05----------------------#' +################################################################################ +# Check if innodb_file_io_threads can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_file_io_threads); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_file_io_threads); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_file_io_threads); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_file_io_threads); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_file_io_threads = @@SESSION.innodb_file_io_threads; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_file_per_table_basic.test b/mysql-test/t/innodb_file_per_table_basic.test new file mode 100644 index 00000000000..0a865d11345 --- /dev/null +++ b/mysql-test/t/innodb_file_per_table_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_file_per_table_basic.test ############## +# # +# Variable Name: innodb_file_per_table # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_file_per_table # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_028_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_028_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_file_per_table=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_028_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_file_per_table = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_per_table'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_file_per_table'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_028_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_file_per_table = @@GLOBAL.innodb_file_per_table; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_028_05----------------------#' +################################################################################ +# Check if innodb_file_per_table can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_file_per_table); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_file_per_table); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_file_per_table); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_file_per_table); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_file_per_table = @@SESSION.innodb_file_per_table; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test b/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test new file mode 100644 index 00000000000..b56a6b6fe04 --- /dev/null +++ b/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test @@ -0,0 +1,150 @@ +################# mysql-test\t\innodb_flush_log_at_trx_commit_basic.test ###### +# # +# Variable Name: innodb_flush_log_at_trx_commit # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 0-2 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description: Test Cases of Dynamic System Variable # +# innodb_flush_log_at_trx_commit 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_flush_log_at_trx_commit TESTS # +######################################################################## + + +############################################################################# +# Saving initial value of innodb_flush_log_at_trx_commit # +############################################################################# + + +SET @global_start_value = @@global.innodb_flush_log_at_trx_commit; +SELECT @global_start_value; + + + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +########################################################################## +# Display the DEFAULT value of innodb_flush_log_at_trx_commit # +########################################################################## + +SET @@global.innodb_flush_log_at_trx_commit = 0; +SET @@global.innodb_flush_log_at_trx_commit = DEFAULT; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +############################################################################### +# Check if variable can be accessed with and without @@ sign # +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET innodb_flush_log_at_trx_commit = 1; +SELECT @@innodb_flush_log_at_trx_commit; + + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_flush_log_at_trx_commit; + + +SET global innodb_flush_log_at_trx_commit = 0; +SELECT @@global.innodb_flush_log_at_trx_commit; + + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +############################################################################# +# change the value of innodb_flush_log_at_trx_commit to a valid value # +############################################################################# + + +SET @@global.innodb_flush_log_at_trx_commit = 0; +SELECT @@global.innodb_flush_log_at_trx_commit; + +SET @@global.innodb_flush_log_at_trx_commit = 1; +SELECT @@global.innodb_flush_log_at_trx_commit; +SET @@global.innodb_flush_log_at_trx_commit = 2; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +############################################################################### +# Change the value of innodb_flush_log_at_trx_commit to invalid value # +############################################################################### + +SET @@global.innodb_flush_log_at_trx_commit = -1; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_flush_log_at_trx_commit = "T"; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_flush_log_at_trx_commit = "Y"; +SELECT @@global.innodb_flush_log_at_trx_commit; + +SET @@global.innodb_flush_log_at_trx_commit = 1001; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_flush_log_at_trx_commit = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_flush_log_at_trx_commit'; +SELECT @@global.innodb_flush_log_at_trx_commit; +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_flush_log_at_trx_commit'; + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_flush_log_at_trx_commit = OFF; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_flush_log_at_trx_commit = ON; +SELECT @@global.innodb_flush_log_at_trx_commit; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + + +SET @@global.innodb_flush_log_at_trx_commit = TRUE; +SELECT @@global.innodb_flush_log_at_trx_commit; +SET @@global.innodb_flush_log_at_trx_commit = FALSE; +SELECT @@global.innodb_flush_log_at_trx_commit; + +############################## +# Restore initial value # +############################## + + +SET @@global.innodb_flush_log_at_trx_commit = @global_start_value; +SELECT @@global.innodb_flush_log_at_trx_commit; + +############################################################### +# END OF innodb_flush_log_at_trx_commit TESTS # +############################################################### diff --git a/mysql-test/t/innodb_flush_method_basic.test b/mysql-test/t/innodb_flush_method_basic.test new file mode 100644 index 00000000000..bb21b23f166 --- /dev/null +++ b/mysql-test/t/innodb_flush_method_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_flush_method_basic.test ################ +# # +# Variable Name: innodb_flush_method # +# Scope: Global # +# Access Type: Static # +# Data Type: enumeration # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_flush_method # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_029_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_flush_method); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_029_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_flush_method=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_flush_method); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_029_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_flush_method = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_flush_method'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_flush_method); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_flush_method'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_029_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_flush_method = @@GLOBAL.innodb_flush_method; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_029_05----------------------#' +################################################################################ +# Check if innodb_flush_method can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_flush_method); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_flush_method); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_flush_method); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_flush_method); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_flush_method = @@SESSION.innodb_flush_method; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_force_recovery_basic.test b/mysql-test/t/innodb_force_recovery_basic.test new file mode 100644 index 00000000000..7986a336a72 --- /dev/null +++ b/mysql-test/t/innodb_force_recovery_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_force_recovery_basic.test ############## +# # +# Variable Name: innodb_force_recovery # +# Scope: Global # +# Access Type: Static # +# Data Type: enumeration # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_force_recovery # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_030_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_030_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_force_recovery=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_030_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_force_recovery = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_force_recovery'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_force_recovery'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_030_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_force_recovery = @@GLOBAL.innodb_force_recovery; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_030_05----------------------#' +################################################################################ +# Check if innodb_force_recovery can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_force_recovery); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_force_recovery); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_force_recovery); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_force_recovery); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_force_recovery = @@SESSION.innodb_force_recovery; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_lock_wait_timeout_basic.test b/mysql-test/t/innodb_lock_wait_timeout_basic.test new file mode 100644 index 00000000000..22d1da10312 --- /dev/null +++ b/mysql-test/t/innodb_lock_wait_timeout_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_lock_wait_timeout_basic.test ########### +# # +# Variable Name: innodb_lock_wait_timeout # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_lock_wait_timeout # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_032_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_032_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_lock_wait_timeout=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_032_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_lock_wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_lock_wait_timeout'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_lock_wait_timeout'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_032_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_lock_wait_timeout = @@GLOBAL.innodb_lock_wait_timeout; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_032_05----------------------#' +################################################################################ +# Check if innodb_lock_wait_timeout can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_lock_wait_timeout); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_lock_wait_timeout); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_lock_wait_timeout); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_lock_wait_timeout); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_lock_wait_timeout = @@SESSION.innodb_lock_wait_timeout; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test b/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test new file mode 100644 index 00000000000..da2584d84a0 --- /dev/null +++ b/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_locks_unsafe_for_binlog_basic.test ##### +# # +# Variable Name: innodb_locks_unsafe_for_binlog # +# Scope: Global # +# Access Type: Static # +# Data Type: boolean # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_locks_unsafe_for_binlog# +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_031_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_031_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_locks_unsafe_for_binlog=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_031_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_locks_unsafe_for_binlog = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_locks_unsafe_for_binlog'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_locks_unsafe_for_binlog'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_031_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_locks_unsafe_for_binlog = @@GLOBAL.innodb_locks_unsafe_for_binlog; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_031_05----------------------#' +################################################################################ +# Check if innodb_locks_unsafe_for_binlog can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_locks_unsafe_for_binlog); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_locks_unsafe_for_binlog); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_locks_unsafe_for_binlog); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_locks_unsafe_for_binlog); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_locks_unsafe_for_binlog = @@SESSION.innodb_locks_unsafe_for_binlog; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_log_buffer_size_basic.test b/mysql-test/t/innodb_log_buffer_size_basic.test new file mode 100644 index 00000000000..c97f439dbc9 --- /dev/null +++ b/mysql-test/t/innodb_log_buffer_size_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_log_buffer_size_basic.test ############# +# # +# Variable Name: innodb_log_buffer_size # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_log_buffer_size # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_033_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_033_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_log_buffer_size=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_033_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_log_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_buffer_size'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_buffer_size'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_033_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_log_buffer_size = @@GLOBAL.innodb_log_buffer_size; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_033_05----------------------#' +################################################################################ +# Check if innodb_log_buffer_size can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_log_buffer_size); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_log_buffer_size); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_log_buffer_size); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_log_buffer_size); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_log_buffer_size = @@SESSION.innodb_log_buffer_size; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_log_file_size_basic.test b/mysql-test/t/innodb_log_file_size_basic.test new file mode 100644 index 00000000000..dc6e3d21a28 --- /dev/null +++ b/mysql-test/t/innodb_log_file_size_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_log_file_size_basic.test ############### +# # +# Variable Name: innodb_log_file_size # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_log_file_size # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_035_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_035_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_log_file_size=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_035_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_log_file_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_file_size'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_file_size'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_035_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_log_file_size = @@GLOBAL.innodb_log_file_size; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_035_05----------------------#' +################################################################################ +# Check if innodb_log_file_size can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_log_file_size); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_log_file_size); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_log_file_size); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_log_file_size); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_log_file_size = @@SESSION.innodb_log_file_size; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_log_files_in_group_basic.test b/mysql-test/t/innodb_log_files_in_group_basic.test new file mode 100644 index 00000000000..714278f6e28 --- /dev/null +++ b/mysql-test/t/innodb_log_files_in_group_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_log_files_in_group_basic.test ########## +# # +# Variable Name: innodb_log_files_in_group # +# Scope: Global # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_log_files_in_group # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_034_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_034_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_log_files_in_group=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_034_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_log_files_in_group = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_files_in_group'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_files_in_group'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_034_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_log_files_in_group = @@GLOBAL.innodb_log_files_in_group; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_034_05----------------------#' +################################################################################ +# Check if innodb_log_files_in_group can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_log_files_in_group); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_log_files_in_group); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_log_files_in_group); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_log_files_in_group); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_log_files_in_group = @@SESSION.innodb_log_files_in_group; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_log_group_home_dir_basic.test b/mysql-test/t/innodb_log_group_home_dir_basic.test new file mode 100644 index 00000000000..0dadbd0940b --- /dev/null +++ b/mysql-test/t/innodb_log_group_home_dir_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\innodb_log_group_home_dir_basic.test ########## +# # +# Variable Name: innodb_log_group_home_dir # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable innodb_log_group_home_dir # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_036_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_036_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.innodb_log_group_home_dir=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_036_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.innodb_log_group_home_dir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_group_home_dir'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_log_group_home_dir'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_036_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@innodb_log_group_home_dir = @@GLOBAL.innodb_log_group_home_dir; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_036_05----------------------#' +################################################################################ +# Check if innodb_log_group_home_dir can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@innodb_log_group_home_dir); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.innodb_log_group_home_dir); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.innodb_log_group_home_dir); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.innodb_log_group_home_dir); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT innodb_log_group_home_dir = @@SESSION.innodb_log_group_home_dir; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/innodb_max_dirty_pages_pct_basic.test b/mysql-test/t/innodb_max_dirty_pages_pct_basic.test new file mode 100644 index 00000000000..8257c2ff89f --- /dev/null +++ b/mysql-test/t/innodb_max_dirty_pages_pct_basic.test @@ -0,0 +1,142 @@ +################# mysql-test\t\innodb_max_dirty_pages_pct_basic.test ########## +# # +# Variable Name: innodb_max_dirty_pages_pct # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 90 # +# Range: 0-1000 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description: Test Cases of Dynamic System Variable # +# innodb_max_dirty_pages_pct 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +###################################################################### +# START OF innodb_max_dirty_pages_pct TESTS # +###################################################################### + + +################################################################################ +# Saving initial value of innodb_max_dirty_pages_pct in a temporary variable # +################################################################################ + +SET @global_start_value = @@global.innodb_max_dirty_pages_pct; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_max_dirty_pages_pct # +######################################################################## + +SET @@global.innodb_max_dirty_pages_pct = 0; +SET @@global.innodb_max_dirty_pages_pct = DEFAULT; +SELECT @@global.innodb_max_dirty_pages_pct; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +################################################################################ +# check if innodb_max_dirty_pages_pct can be accessed with and without @@ sign # +################################################################################ + +--Error ER_GLOBAL_VARIABLE +SET innodb_max_dirty_pages_pct = 1; +SELECT @@innodb_max_dirty_pages_pct; + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_max_dirty_pages_pct; + +SET global innodb_max_dirty_pages_pct = 0; +SELECT @@global.innodb_max_dirty_pages_pct; + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +########################################################################## +# change the value of innodb_max_dirty_pages_pct to a valid value # +########################################################################## + +SET @@global.innodb_max_dirty_pages_pct = 0; +SELECT @@global.innodb_max_dirty_pages_pct; + +SET @@global.innodb_max_dirty_pages_pct = 1; +SELECT @@global.innodb_max_dirty_pages_pct; +SET @@global.innodb_max_dirty_pages_pct = 100; +SELECT @@global.innodb_max_dirty_pages_pct; + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +########################################################################### +# Change the value of innodb_max_dirty_pages_pct to invalid value # +########################################################################### + +SET @@global.innodb_max_dirty_pages_pct = -1; +SELECT @@global.innodb_max_dirty_pages_pct; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_dirty_pages_pct = "T"; +SELECT @@global.innodb_max_dirty_pages_pct; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_dirty_pages_pct = "Y"; +SELECT @@global.innodb_max_dirty_pages_pct; + +SET @@global.innodb_max_dirty_pages_pct = 1001; +SELECT @@global.innodb_max_dirty_pages_pct; + + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_max_dirty_pages_pct = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_max_dirty_pages_pct'; +SELECT @@global.innodb_max_dirty_pages_pct; +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_max_dirty_pages_pct'; + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_dirty_pages_pct = OFF; +SELECT @@global.innodb_max_dirty_pages_pct; + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_dirty_pages_pct = ON; +SELECT @@global.innodb_max_dirty_pages_pct; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.innodb_max_dirty_pages_pct = TRUE; +SELECT @@global.innodb_max_dirty_pages_pct; +SET @@global.innodb_max_dirty_pages_pct = FALSE; +SELECT @@global.innodb_max_dirty_pages_pct; + +############################## +# Restore initial value # +############################## + +SET @@global.innodb_max_dirty_pages_pct = @global_start_value; +SELECT @@global.innodb_max_dirty_pages_pct; + +############################################################### +# END OF innodb_max_dirty_pages_pct TESTS # +############################################################### diff --git a/mysql-test/t/innodb_max_dirty_pages_pct_func.test b/mysql-test/t/innodb_max_dirty_pages_pct_func.test new file mode 100644 index 00000000000..5d7b9754843 --- /dev/null +++ b/mysql-test/t/innodb_max_dirty_pages_pct_func.test @@ -0,0 +1,164 @@ +################# mysql-test\t\innodb_max_dirty_pages_pct_func.test ########## +# # +# Variable Name: innodb_max_dirty_pages_pct # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 90 # +# Range: 0-100 # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +#Description: Test Cases of Dynamic System Variable innodb_max_dirty_pages_pct# +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--source include/have_innodb.inc +--echo '#--------------------FN_DYNVARS_044_02-------------------------#' +########################################################################### +# Check if setting innodb_max_dirty_pages_pct is changed in new connection# +########################################################################### + +SET @@global.innodb_max_dirty_pages_pct = 80; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.innodb_max_dirty_pages_pct; +SET @@global.innodb_max_dirty_pages_pct = 70; +--echo 'connect (con2,localhost,root,,,,)' +connect (con2,localhost,root,,,,); +--echo 'connection con2' +connection con2; +SELECT @@global.innodb_max_dirty_pages_pct; +disconnect con2; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_044_02-------------------------#' +################################################################### +# Begin the functionality Testing of innodb_max_dirty_pages_pct # +################################################################### + +--echo 'connection default' +connection default; + +--disable_query_log + +--disable_warnings +DROP PROCEDURE IF EXISTS add_records; +DROP PROCEDURE IF EXISTS add_until; +DROP PROCEDURE IF EXISTS check_pct; +DROP FUNCTION IF EXISTS dirty_pct; +DROP TABLE IF EXISTS t1; +--enable_warnings + +DELIMITER //; +CREATE PROCEDURE add_records(IN NUM INT) +BEGIN + START TRANSACTION; + WHILE (NUM>0) DO + INSERT INTO t1(b) VALUES('MYSQL'); + SET NUM = NUM - 1; + END WHILE; + COMMIT; +END// + +CREATE FUNCTION dirty_pct() RETURNS DECIMAL(20,17) +BEGIN + DECLARE res DECIMAL(20,17); + DECLARE a1,b1 VARCHAR(256); + DECLARE a2,b2 VARCHAR(256); + DECLARE dirty CURSOR FOR SELECT * FROM information_schema.global_status + WHERE variable_name LIKE 'Innodb_buffer_pool_pages_dirty' + UNION SELECT * FROM information_schema.session_status + WHERE variable_name LIKE 'Innodb_buffer_pool_pages_dirty'; + DECLARE total CURSOR FOR SELECT * FROM information_schema.global_status + WHERE variable_name LIKE 'Innodb_buffer_pool_pages_total' + UNION SELECT * FROM information_schema.session_status + WHERE variable_name LIKE 'Innodb_buffer_pool_pages_total'; + + OPEN dirty; + OPEN total; + + FETCH dirty INTO a1, b1; + FETCH total INTO a2, b2; + + SET res = ( CONVERT(b1,DECIMAL)*100)/CONVERT(b2,DECIMAL); + + CLOSE dirty; + CLOSE total; + RETURN res; +END// + +CREATE PROCEDURE add_until(IN NUM DECIMAL) +BEGIN + DECLARE pct,last DECIMAL(20,17); + + SET pct = dirty_pct(); + SET last = 0; + WHILE (pct0) DO + INSERT INTO t1 value(1); + SET count = count -1; + END WHILE; +END // + +DELIMITER ;// + +# setting 2 will allow data pointer to access files with size < 65536 +SET @@global.myisam_data_pointer_size = 2; + +CREATE TABLE t1(a INT); + +CALL sp_addRec(65535); + +--Error ER_RECORD_FILE_FULL +CALL sp_addRec(1); + +SELECT count(*) from t1; + +#======================================================================= +--echo '--Checking myisam_data_pointer_size with MAX_ROWS table option--' +#======================================================================= + +# specifying MAX_ROWS table option renders pointer size useless +SET @@global.myisam_data_pointer_size = 2; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(a INT)MAX_ROWS=70000; + +CALL sp_addRec(65536); + +SELECT count(*) from t1; + +DROP PROCEDURE sp_addRec; +DROP TABLE t1; + +################################################################ +# End of functionality Testing for myisam_data_pointer_size # +################################################################ + diff --git a/mysql-test/t/myisam_stats_method_basic.test b/mysql-test/t/myisam_stats_method_basic.test new file mode 100644 index 00000000000..0045842269b --- /dev/null +++ b/mysql-test/t/myisam_stats_method_basic.test @@ -0,0 +1,226 @@ +############## mysql-test\t\myisam_stats_method_basic.test #################### +# # +# Variable Name: myisam_stats_method # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: nulls_equal # +# Valid Values: nulls_equal, nulls_unequal # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable myisam_stats_method # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF myisam_stats_method TESTS # +######################################################################## + + +########################################################################### +# Saving initial value of myisam_stats_method in a temporary variable # +########################################################################### + +SET @global_start_value = @@global.myisam_stats_method; +SELECT @global_start_value; + +SET @session_start_value = @@session.myisam_stats_method; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_097_01------------------------#' +######################################################################## +# Display the DEFAULT value of myisam_stats_method # +######################################################################## + +SET @@global.myisam_stats_method = nulls_equal; +SET @@global.myisam_stats_method = DEFAULT; +SELECT @@global.myisam_stats_method; + +SET @@session.myisam_stats_method = nulls_equal; +SET @@session.myisam_stats_method = DEFAULT; +SELECT @@session.myisam_stats_method; + + +--echo '#---------------------FN_DYNVARS_097_02-------------------------#' +######################################################### +# Check if NULL or empty value is accepeted # +######################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = NULL; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = ''; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.myisam_stats_method = NULL; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.myisam_stats_method = ''; + +--echo '#--------------------FN_DYNVARS_097_03------------------------#' +######################################################################## +# Change the value of myisam_stats_method to a valid value # +######################################################################## + +SET @@global.myisam_stats_method = 'nulls_equal'; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 'nulls_unequal'; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 'nulls_ignored'; +SELECT @@global.myisam_stats_method; + +--echo 'Bug: Value of nulls_ignored is not documented. Its ordinal value is 2' + +SET @@session.myisam_stats_method = 'nulls_equal'; +SELECT @@session.myisam_stats_method; + +SET @@session.myisam_stats_method = 'nulls_unequal'; +SELECT @@session.myisam_stats_method; + +SET @@session.myisam_stats_method = 'nulls_ignored'; +SELECT @@session.myisam_stats_method; + + +--echo '#--------------------FN_DYNVARS_097_04-------------------------#' +########################################################################### +# Change the value of myisam_stats_method to invalid value # +########################################################################### + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = unequal; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = ENABLED; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = 'equal'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = 'null_equal'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = ' '; + + +--echo '#-------------------FN_DYNVARS_097_05----------------------------#' +######################################################################### +# Check if the value in session Table matches value in variable # +######################################################################### + +SELECT @@session.myisam_stats_method = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_stats_method'; + +--echo '#----------------------FN_DYNVARS_097_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.myisam_stats_method = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_stats_method'; + + +--echo '#---------------------FN_DYNVARS_097_07-------------------------#' +################################################################### +# Check if numbers can be used on variable # +################################################################### + +# test if variable accepts 0,1,2 +SET @@global.myisam_stats_method = 0; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 1; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 2; +SELECT @@global.myisam_stats_method; + +# use of decimal values + +SET @@global.myisam_stats_method = 0.4; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 1.0; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 1.1; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 1.5; +SELECT @@global.myisam_stats_method; + +SET @@global.myisam_stats_method = 2.49; +SELECT @@global.myisam_stats_method; + +SET @@session.myisam_stats_method = 0.5; +SELECT @@session.myisam_stats_method; + +SET @@session.myisam_stats_method = 1.6; +SELECT @@session.myisam_stats_method; + + +--echo 'Bug# 34877: Decimal values can be used within the range [0.0-2.5). Values'; +--echo 'are rounded to 0,1,2 as evident from outcome.'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.myisam_stats_method = 3; + + +--echo '#---------------------FN_DYNVARS_097_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.myisam_stats_method = TRUE; +SELECT @@global.myisam_stats_method; +SET @@global.myisam_stats_method = FALSE; +SELECT @@global.myisam_stats_method; + +--echo '#---------------------FN_DYNVARS_097_09----------------------#' +######################################################################### +# Check if myisam_stats_method can be accessed with and without @@ sign # +######################################################################### + +SET myisam_stats_method = 'nulls_equal'; + +--Error ER_PARSE_ERROR +SET session.myisam_stats_method = 'nulls_equal'; +--Error ER_PARSE_ERROR +SET global.myisam_stats_method = 'nulls_equal'; + +SET session myisam_stats_method = 'nulls_equal'; +SELECT @@myisam_stats_method; + +SET global myisam_stats_method = 'nulls_equal'; +SELECT @@global.myisam_stats_method; + +############################## +# Restore initial value # +############################## + +SET @@global.myisam_stats_method = @global_start_value; +SELECT @@global.myisam_stats_method; + +SET @@session.myisam_stats_method = @session_start_value; +SELECT @@session.myisam_stats_method; + +######################################################################## +# END OF myisam_stats_method TESTS # +######################################################################## diff --git a/mysql-test/t/myisam_stats_method_func.test b/mysql-test/t/myisam_stats_method_func.test new file mode 100644 index 00000000000..8b47015ba87 --- /dev/null +++ b/mysql-test/t/myisam_stats_method_func.test @@ -0,0 +1,106 @@ +############## mysql-test\t\myisam_stats_method_func.test #################### +# # +# Variable Name: myisam_stats_method # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: nulls_equal # +# Valid Values: nulls_equal, nulls_unequal # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable myisam_stats_method # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#--------------------FN_DYNVARS_097_01-------------------------#' +##################################################################### +# Check if Setting myisam_stats_method is changed in new connection # +##################################################################### + +SET @@global.myisam_stats_method = nulls_equal; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.myisam_stats_method; +SELECT @@session.myisam_stats_method; +disconnect con1; + +--echo '#--------------------FN_DYNVARS_097_02-------------------------#' +########################################################### +# Begin the functionality Testing of myisam_stats_method # +########################################################### + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 (a int, key (a)); +INSERT INTO t1 VALUES (0),(1),(2),(3),(4); +INSERT INTO t1 SELECT NULL FROM t1; + +#======================================= +--echo 'default: NULLs considered unequal' +#======================================= +SET myisam_stats_method=nulls_unequal; + +ANALYZE TABLE t1; +SHOW INDEX FROM t1; +INSERT INTO t1 VALUES (11); +DELETE FROM t1 WHERE a=11; +CHECK TABLE t1; +SHOW INDEX FROM t1; + + +#===================================== +--echo 'Set nulls to be equal' +#===================================== +SET myisam_stats_method=nulls_equal; + +INSERT INTO t1 VALUES (11); +DELETE FROM t1 WHERE a=11; +ANALYZE TABLE t1; +SHOW INDEX FROM t1; +INSERT INTO t1 VALUES (11); +DELETE FROM t1 WHERE a=11; +CHECK TABLE t1; +SHOW INDEX FROM t1; + +#===================================== +--echo 'Set nulls to be ignored' +#===================================== + +SET myisam_stats_method=nulls_ignored; +SHOW variables LIKE 'myisam_stats_method'; +drop TABLE t1; + +CREATE TABLE t1 ( + a char(3), b char(4), c char(5), d char(6), + key(a,b,c,d) +); +INSERT INTO t1 VALUES ('bcd','def1', NULL, 'zz'); +INSERT INTO t1 VALUES ('bcd','def2', NULL, 'zz'); +INSERT INTO t1 VALUES ('bce','def1', 'yuu', NULL); +INSERT INTO t1 VALUES ('bce','def2', NULL, 'quux'); +ANALYZE TABLE t1; +SHOW INDEX FROM t1; +DELETE FROM t1; +ANALYZE TABLE t1; +SHOW INDEX FROM t1; + +SET myisam_stats_method=DEFAULT; +DROP TABLE t1; + +######################################################## +# End of functionality Testing for myisam_stats_method # +######################################################## diff --git a/mysql-test/t/myisam_use_mmap_basic.test b/mysql-test/t/myisam_use_mmap_basic.test new file mode 100644 index 00000000000..7930533688b --- /dev/null +++ b/mysql-test/t/myisam_use_mmap_basic.test @@ -0,0 +1,104 @@ + + +################## mysql-test\t\myisam_use_mmap_basic.test #################### +# # +# Variable Name: myisam_use_mmap # +# Scope: Global # +# Access Type: Static # +# Data Type: # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable myisam_use_mmap # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_042_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_042_02----------------------#' +# +# Test case for Bug #35433 +# +#################################################################### +# Check if Value can set # +#################################################################### + +#--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.myisam_use_mmap=1; +--ECHO "BUG:It should give error on setting this variable as it is readonly variable" +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_042_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.myisam_use_mmap = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_use_mmap'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_use_mmap'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_042_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@myisam_use_mmap = @@GLOBAL.myisam_use_mmap; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_042_05----------------------#' +################################################################################ +# Check if myisam_use_mmap can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@myisam_use_mmap); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.myisam_use_mmap); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.myisam_use_mmap); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.myisam_use_mmap); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT myisam_use_mmap = @@SESSION.myisam_use_mmap; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/ndb_log_update_as_write_basic.test b/mysql-test/t/ndb_log_update_as_write_basic.test new file mode 100644 index 00000000000..0b9d3ada158 --- /dev/null +++ b/mysql-test/t/ndb_log_update_as_write_basic.test @@ -0,0 +1,216 @@ +############## mysql-test\t\ndb_log_update_as_write_basic.test ############### +# # +# Variable Name: ndb_log_update_as_write # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable ndb_log_update_as_write # +# that checks the behavior of this variable in the following ways# +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### +############## mysql-test\t\ndb_log_update_as_write_basic.test ################ +# # +# Variable Name: ndb_log_update_as_write # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable ndb_log_update_as_write # +# that checks the behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +################################################################################ +################# mysql-test\t\ndb_log_update_as_write_basic.test ###### +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable # +# ndb_log_update_as_write that check behavior of this # +# variable with valid values, invalid values, # +# accessing variable with scope that is # +# allowed and with scope that is now allowed. # +# Scope: Global # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system # +# -variables.html # +# # +######################################################################## + +--source include/load_sysvars.inc + +######################################################################## +# START OF ndb_log_update_as_write TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of ndb_log_update_as_write in a temporary variable # +################################################################################ + + +--Error ER_UNKNOWN_SYSTEM_VARIABLE +SET @global_start_value = @@global.ndb_log_update_as_write; +--Error ER_UNKNOWN_SYSTEM_VARIABLE +SELECT @@global.ndb_log_update_as_write; + +--echo 'Bug: The value is not a system variable or atleast not supported in version 5.1.22' + + +--echo '#--------------------FN_DYNVARS_102_01------------------------#' +######################################################################## +# Display the DEFAULT value of ndb_log_update_as_write # +######################################################################## + +#SET @@ndb_log_update_as_write = 0; +#SET @@ndb_log_update_as_write = DEFAULT; +#SELECT @@ndb_log_update_as_write; +# +#SET @@ndb_log_update_as_write = 1; +#SET @@ndb_log_update_as_write = DEFAULT; +#SELECT @@ndb_log_update_as_write; + + +--echo '#---------------------FN_DYNVARS_102_02-------------------------#' +############################################################################# +# Check if ndb_log_update_as_write can be accessed with and without @@ sign # +############################################################################# + +#SET ndb_log_update_as_write = 1; +#SELECT @@ndb_log_update_as_write; +#--Error ER_UNKNOWN_TABLE +#SELECT global.ndb_log_update_as_write; +# +#SET global ndb_log_update_as_write = 1; +#SELECT @@global.ndb_log_update_as_write; + + +--echo '#--------------------FN_DYNVARS_102_03------------------------#' +######################################################################## +# Change the value of ndb_log_update_as_write to a valid value # +######################################################################## + +#SET @@global.ndb_log_update_as_write = 0; +#SELECT @@global.ndb_log_update_as_write; +#SET @@global.ndb_log_update_as_write = 1; +#SELECT @@global.ndb_log_update_as_write; +## a value of 2 is used to just flush logs and then shutdown cold. Not supported on Netware +#SET @@global.ndb_log_update_as_write = 2; +#SELECT @@global.ndb_log_update_as_write; + +--echo '#--------------------FN_DYNVARS_102_04-------------------------#' +########################################################################### +# Change the value of ndb_log_update_as_write to invalid value # +########################################################################### + +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = -1; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = TRU; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = TRUE_F; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = FALS; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = OON; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = ONN; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = OOFF; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = 0FF; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = ' 1'; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_update_as_write = "0 "; + + + +--echo '#-------------------FN_DYNVARS_102_05----------------------------#' +########################################################################### +# Test if accessing session ndb_log_update_as_write gives error # +########################################################################### + +#--Error ER_LOCAL_VARIABLE +#SET @@session.ndb_log_update_as_write = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SET @@ndb_log_update_as_write = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SET @@local.ndb_log_update_as_write = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SELECT @@session.ndb_log_update_as_write; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SELECT @@local.ndb_log_update_as_write; + +--echo '#----------------------FN_DYNVARS_102_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +#SELECT count(VARIABLE_VALUE) AS res_is_0 FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='ndb_log_update_as_write'; + + +--echo '#----------------------FN_DYNVARS_102_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +#SELECT @@global.ndb_log_update_as_write = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='ndb_log_update_as_write'; + + +--echo '#---------------------FN_DYNVARS_102_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +#SET @@ndb_log_update_as_write = OFF; +#SELECT @@ndb_log_update_as_write; +#SET @@ndb_log_update_as_write = ON; +#SELECT @@ndb_log_update_as_write; + +--echo '#---------------------FN_DYNVARS_102_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +#SET @@ndb_log_update_as_write = TRUE; +#SELECT @@ndb_log_update_as_write; +#SET @@ndb_log_update_as_write = 'FALSE'; +#SELECT @@ndb_log_update_as_write; + +############################## +# Restore initial value # +############################## + +#SET @@ndb_log_update_as_write = @global_start_value; +#SELECT @@ndb_log_update_as_write; + +######################################################################## +# END OF ndb_log_update_as_write TESTS # +######################################################################## diff --git a/mysql-test/t/ndb_log_updated_only_basic.test b/mysql-test/t/ndb_log_updated_only_basic.test new file mode 100644 index 00000000000..85b76cc88a4 --- /dev/null +++ b/mysql-test/t/ndb_log_updated_only_basic.test @@ -0,0 +1,216 @@ +############## mysql-test\t\ndb_log_updated_only_basic.test ############### +# # +# Variable Name: ndb_log_updated_only # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable ndb_log_updated_only # +# that checks the behavior of this variable in the following ways# +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### +############## mysql-test\t\ndb_log_updated_only_basic.test ################ +# # +# Variable Name: ndb_log_updated_only # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable ndb_log_updated_only # +# that checks the behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +################################################################################ +################# mysql-test\t\ndb_log_updated_only_basic.test ######### +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable # +# ndb_log_updated_only that check behavior of this # +# variable with valid values, invalid values, # +# accessing variable with scope that is # +# allowed and with scope that is now allowed. # +# Scope: Global # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system # +# -variables.html # +# # +######################################################################## + +--source include/load_sysvars.inc + +######################################################################## +# START OF ndb_log_updated_only TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of ndb_log_updated_only in a temporary variable # +################################################################################ + + +--Error ER_UNKNOWN_SYSTEM_VARIABLE +SET @global_start_value = @@global.ndb_log_updated_only; +--Error ER_UNKNOWN_SYSTEM_VARIABLE +SELECT @@global.ndb_log_updated_only; + +--echo 'Bug: The value is not a system variable or atleast not supported in version 5.1.22' + + +--echo '#--------------------FN_DYNVARS_103_01------------------------#' +######################################################################## +# Display the DEFAULT value of ndb_log_updated_only # +######################################################################## + +#SET @@ndb_log_updated_only = 0; +#SET @@ndb_log_updated_only = DEFAULT; +#SELECT @@ndb_log_updated_only; +# +#SET @@ndb_log_updated_only = 1; +#SET @@ndb_log_updated_only = DEFAULT; +#SELECT @@ndb_log_updated_only; + + +--echo '#---------------------FN_DYNVARS_103_02-------------------------#' +############################################################################# +# Check if ndb_log_updated_only can be accessed with and without @@ sign # +############################################################################# + +#SET ndb_log_updated_only = 1; +#SELECT @@ndb_log_updated_only; +#--Error ER_UNKNOWN_TABLE +#SELECT global.ndb_log_updated_only; +# +#SET global ndb_log_updated_only = 1; +#SELECT @@global.ndb_log_updated_only; + + +--echo '#--------------------FN_DYNVARS_103_03------------------------#' +######################################################################## +# Change the value of ndb_log_updated_only to a valid value # +######################################################################## + +#SET @@global.ndb_log_updated_only = 0; +#SELECT @@global.ndb_log_updated_only; +#SET @@global.ndb_log_updated_only = 1; +#SELECT @@global.ndb_log_updated_only; +## a value of 2 is used to just flush logs and then shutdown cold. Not supported on Netware +#SET @@global.ndb_log_updated_only = 2; +#SELECT @@global.ndb_log_updated_only; + +--echo '#--------------------FN_DYNVARS_103_04-------------------------#' +########################################################################### +# Change the value of ndb_log_updated_only to invalid value # +########################################################################### + +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = -1; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = TRU; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = TRUE_F; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = FALS; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = OON; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = ONN; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = OOFF; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = 0FF; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = ' 1'; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.ndb_log_updated_only = "0 "; + + + +--echo '#-------------------FN_DYNVARS_103_05----------------------------#' +########################################################################### +# Test if accessing session ndb_log_updated_only gives error # +########################################################################### + +#--Error ER_LOCAL_VARIABLE +#SET @@session.ndb_log_updated_only = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SET @@ndb_log_updated_only = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SET @@local.ndb_log_updated_only = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SELECT @@session.ndb_log_updated_only; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SELECT @@local.ndb_log_updated_only; + +--echo '#----------------------FN_DYNVARS_103_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +#SELECT count(VARIABLE_VALUE) AS res_is_0 FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='ndb_log_updated_only'; + + +--echo '#----------------------FN_DYNVARS_103_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +#SELECT @@global.ndb_log_updated_only = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='ndb_log_updated_only'; + + +--echo '#---------------------FN_DYNVARS_103_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +#SET @@ndb_log_updated_only = OFF; +#SELECT @@ndb_log_updated_only; +#SET @@ndb_log_updated_only = ON; +#SELECT @@ndb_log_updated_only; + +--echo '#---------------------FN_DYNVARS_103_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +#SET @@ndb_log_updated_only = TRUE; +#SELECT @@ndb_log_updated_only; +#SET @@ndb_log_updated_only = 'FALSE'; +#SELECT @@ndb_log_updated_only; + +############################## +# Restore initial value # +############################## + +#SET @@ndb_log_updated_only = @global_start_value; +#SELECT @@ndb_log_updated_only; + +######################################################################## +# END OF ndb_log_updated_only TESTS # +######################################################################## diff --git a/mysql-test/t/net_buffer_length_basic.test b/mysql-test/t/net_buffer_length_basic.test new file mode 100644 index 00000000000..80403bfec2b --- /dev/null +++ b/mysql-test/t/net_buffer_length_basic.test @@ -0,0 +1,226 @@ +################# mysql-test\t\net_buffer_length_basic.test ################### +# # +# Variable Name: net_buffer_length # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 16384 # +# Range: 1024-1048576 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable net_buffer_length # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +################################################################# +# START OF net_buffer_length TESTS # +################################################################# + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.net_buffer_length; +# Due to differences in results of linux and windows +#SELECT @start_global_value; +SET @start_session_value = @@session.net_buffer_length; +#SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_109_01-------------------------#' +################################################################# +# Display the DEFAULT value of net_buffer_length # +################################################################# + +SET @@global.net_buffer_length = 10000; +SET @@global.net_buffer_length = DEFAULT; +SELECT @@global.net_buffer_length; + +SET @@session.net_buffer_length = 20000; +SET @@session.net_buffer_length = DEFAULT; +SELECT @@session.net_buffer_length; + + +--echo '#--------------------FN_DYNVARS_109_02-------------------------#' +######################################################################## +# Check the DEFAULT value of net_buffer_length # +######################################################################## + +SET @@global.net_buffer_length = DEFAULT; +SELECT @@global.net_buffer_length = 16384; + +SET @@session.net_buffer_length = DEFAULT; +SELECT @@session.net_buffer_length = 16384; + + +--echo '#--------------------FN_DYNVARS_109_03-------------------------#' +########################################################################### +# Change the value of net_buffer_length to a valid value for GLOBAL Scope # +########################################################################### + +SET @@global.net_buffer_length = 1024; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 1025; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 1048576; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 1048575; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 65535; +SELECT @@global.net_buffer_length; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_109_04-------------------------#' +############################################################################ +# Change the value of net_buffer_length to a valid value for SESSION Scope # +############################################################################ + +SET @@session.net_buffer_length = 1024; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = 1025; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = 1048576; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = 1048575; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = 65535; +SELECT @@session.net_buffer_length; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#------------------FN_DYNVARS_109_05-----------------------#' +############################################################# +# Change the value of net_buffer_length to an invalid value # +############################################################# + +SET @@global.net_buffer_length = 0; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = -1024; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 1023; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 1048577; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = 104857633; +SELECT @@global.net_buffer_length; +--Error ER_PARSE_ERROR +SET @@global.net_buffer_length = 65530.34.; +SELECT @@global.net_buffer_length; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.net_buffer_length = test; +SELECT @@global.net_buffer_length; + +SET @@session.net_buffer_length = 0; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = -2; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = 1048577; +SELECT @@session.net_buffer_length; +SET @@session.net_buffer_length = 1048576002; +SELECT @@session.net_buffer_length; +--Error ER_PARSE_ERROR +SET @@session.net_buffer_length = 65530.34.; +SET @@session.net_buffer_length = 65550; +SELECT @@session.net_buffer_length; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.net_buffer_length = test; +SELECT @@session.net_buffer_length; + + +--echo '#------------------FN_DYNVARS_109_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.net_buffer_length = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_buffer_length'; + +--echo '#------------------FN_DYNVARS_109_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.net_buffer_length = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_buffer_length'; + + +--echo '#------------------FN_DYNVARS_109_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.net_buffer_length = TRUE; +SELECT @@global.net_buffer_length; +SET @@global.net_buffer_length = FALSE; +SELECT @@global.net_buffer_length; + + +--echo '#---------------------FN_DYNVARS_109_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.net_buffer_length = 2048; +SELECT @@net_buffer_length = @@global.net_buffer_length; + + +--echo '#---------------------FN_DYNVARS_109_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@net_buffer_length = 100000; +SELECT @@net_buffer_length = @@local.net_buffer_length; +SELECT @@local.net_buffer_length = @@session.net_buffer_length; + + +--echo '#---------------------FN_DYNVARS_109_11----------------------#' +############################################################################ +# Check if net_buffer_length can be accessed with and without @@ sign # +############################################################################ + +SET net_buffer_length = 1024; +SELECT @@net_buffer_length; +--Error ER_UNKNOWN_TABLE +SELECT local.net_buffer_length; +--Error ER_UNKNOWN_TABLE +SELECT session.net_buffer_length; +--Error ER_BAD_FIELD_ERROR +SELECT net_buffer_length = @@session.net_buffer_length; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.net_buffer_length = @start_global_value; +# Due to differences in results of linux and windows +#SELECT @@global.net_buffer_length; +SET @@session.net_buffer_length = @start_session_value; +#SELECT @@session.net_buffer_length; + + +###################################################### +# END OF net_buffer_length TESTS # +###################################################### diff --git a/mysql-test/t/net_read_timeout_basic.test b/mysql-test/t/net_read_timeout_basic.test new file mode 100644 index 00000000000..f0d32302e4f --- /dev/null +++ b/mysql-test/t/net_read_timeout_basic.test @@ -0,0 +1,207 @@ +############## mysql-test\t\net_read_timeout_basic.test ############### +# # +# Variable Name: net_read_timeout # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 30 # +# Min Vlue: 1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable net_read_timeout # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +##################################################################### +# START OF net_read_timeout TESTS # +##################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.net_read_timeout; +SELECT @start_global_value; +SET @start_session_value = @@session.net_read_timeout; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_110_01-------------------------#' +##################################################################### +# Display the DEFAULT value of net_read_timeout # +##################################################################### + +SET @@global.net_read_timeout = 100; +SET @@global.net_read_timeout = DEFAULT; +SELECT @@global.net_read_timeout; + +SET @@session.net_read_timeout = 200; +SET @@session.net_read_timeout = DEFAULT; +SELECT @@session.net_read_timeout; + + +--echo '#--------------------FN_DYNVARS_110_02-------------------------#' +######################################################################## +# Check the DEFAULT value of net_read_timeout # +######################################################################## + +SET @@global.net_read_timeout = DEFAULT; +SELECT @@global.net_read_timeout = 30; + +SET @@session.net_read_timeout = DEFAULT; +SELECT @@session.net_read_timeout = 30; + + +--echo '#--------------------FN_DYNVARS_110_03-------------------------#' +################################################################################## +# Change the value of net_read_timeout to a valid value for GLOBAL Scope # +################################################################################## + +SET @@global.net_read_timeout = 1; +SELECT @@global.net_read_timeout; +SET @@global.net_read_timeout = 60020; +SELECT @@global.net_read_timeout; +SET @@global.net_read_timeout = 65535; +SELECT @@global.net_read_timeout; + + +--echo '#--------------------FN_DYNVARS_110_04-------------------------#' +################################################################################### +# Change the value of net_read_timeout to a valid value for SESSION Scope # +################################################################################### + +SET @@session.net_read_timeout = 1; +SELECT @@session.net_read_timeout; +SET @@session.net_read_timeout = 50050; +SELECT @@session.net_read_timeout; +SET @@session.net_read_timeout = 65535; +SELECT @@session.net_read_timeout; + + +--echo '#------------------FN_DYNVARS_110_05-----------------------#' +#################################################################### +# Change the value of net_read_timeout to an invalid value # +#################################################################### + +SET @@global.net_read_timeout = 0; +SELECT @@global.net_read_timeout; +SET @@global.net_read_timeout = -1024; +SELECT @@global.net_read_timeout; +SET @@global.net_read_timeout = 655360354; +SELECT @@global.net_read_timeout; +--Error ER_PARSE_ERROR +SET @@global.net_read_timeout = 65530.34.; +SELECT @@global.net_read_timeout; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.net_read_timeout = test; +SELECT @@global.net_read_timeout; + +SET @@session.net_read_timeout = 0; +SELECT @@session.net_read_timeout; +SET @@session.net_read_timeout = -2; +SELECT @@session.net_read_timeout; +--Error ER_PARSE_ERROR +SET @@session.net_read_timeout = 65530.34.; +SET @@session.net_read_timeout = 6555015425; +SELECT @@session.net_read_timeout; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.net_read_timeout = test; +SELECT @@session.net_read_timeout; + + +--echo '#------------------FN_DYNVARS_110_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.net_read_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_read_timeout'; + +--echo '#------------------FN_DYNVARS_110_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.net_read_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_read_timeout'; + + +--echo '#------------------FN_DYNVARS_110_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.net_read_timeout = TRUE; +SELECT @@global.net_read_timeout; +SET @@global.net_read_timeout = FALSE; +SELECT @@global.net_read_timeout; + + +--echo '#---------------------FN_DYNVARS_110_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.net_read_timeout = 10; +SELECT @@net_read_timeout = @@global.net_read_timeout; + + +--echo '#---------------------FN_DYNVARS_110_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@net_read_timeout = 100; +SELECT @@net_read_timeout = @@local.net_read_timeout; +SELECT @@local.net_read_timeout = @@session.net_read_timeout; + + +--echo '#---------------------FN_DYNVARS_110_11----------------------#' +################################################################################### +# Check if net_read_timeout can be accessed with and without @@ sign # +################################################################################### + +SET net_read_timeout = 1; +SELECT @@net_read_timeout; +--Error ER_UNKNOWN_TABLE +SELECT local.net_read_timeout; +--Error ER_UNKNOWN_TABLE +SELECT session.net_read_timeout; +--Error ER_BAD_FIELD_ERROR +SELECT net_read_timeout = @@session.net_read_timeout; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.net_read_timeout = @start_global_value; +SELECT @@global.net_read_timeout; +SET @@session.net_read_timeout = @start_session_value; +SELECT @@session.net_read_timeout; + + +############################################################# +# END OF net_read_timeout TESTS # +############################################################# + diff --git a/mysql-test/t/net_write_timeout_basic.test b/mysql-test/t/net_write_timeout_basic.test new file mode 100644 index 00000000000..84c682561e3 --- /dev/null +++ b/mysql-test/t/net_write_timeout_basic.test @@ -0,0 +1,203 @@ +############## mysql-test\t\net_write_timeout_basic.test ############### +# # +# Variable Name: net_write_timeout # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 60 # +# Min Value: 1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable net_write_timeout # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +################################################################# +# START OF net_write_timeout TESTS # +################################################################# + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.net_write_timeout; +SELECT @start_global_value; +SET @start_session_value = @@session.net_write_timeout; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_112_01-------------------------#' +################################################################# +# Display the DEFAULT value of net_write_timeout # +################################################################# + +SET @@global.net_write_timeout = 100; +SET @@global.net_write_timeout = DEFAULT; +SELECT @@global.net_write_timeout; + +SET @@session.net_write_timeout = 200; +SET @@session.net_write_timeout = DEFAULT; +SELECT @@session.net_write_timeout; + + +--echo '#--------------------FN_DYNVARS_112_02-------------------------#' +################################################################# +# Check the DEFAULT value of net_write_timeout # +################################################################# + +SET @@global.net_write_timeout = DEFAULT; +SELECT @@global.net_write_timeout = 60; + +SET @@session.net_write_timeout = DEFAULT; +SELECT @@session.net_write_timeout = 60; + + +--echo '#--------------------FN_DYNVARS_112_03-------------------------#' +########################################################################### +# Change the value of net_write_timeout to a valid value for GLOBAL Scope # +########################################################################### + +SET @@global.net_write_timeout = 1; +SELECT @@global.net_write_timeout; +SET @@global.net_write_timeout = 60020; +SELECT @@global.net_write_timeout; +SET @@global.net_write_timeout = 65535; +SELECT @@global.net_write_timeout; + + +--echo '#--------------------FN_DYNVARS_112_04-------------------------#' +############################################################################ +# Change the value of net_write_timeout to a valid value for SESSION Scope # +############################################################################ + +SET @@session.net_write_timeout = 1; +SELECT @@session.net_write_timeout; +SET @@session.net_write_timeout = 50050; +SELECT @@session.net_write_timeout; +SET @@session.net_write_timeout = 65535; +SELECT @@session.net_write_timeout; + + +--echo '#------------------FN_DYNVARS_112_05-----------------------#' +############################################################# +# Change the value of net_write_timeout to an invalid value # +############################################################# + +SET @@global.net_write_timeout = 0; +SELECT @@global.net_write_timeout; +SET @@global.net_write_timeout = -1024; +SELECT @@global.net_write_timeout; +SET @@global.net_write_timeout = 655360354; +SELECT @@global.net_write_timeout; +--Error ER_PARSE_ERROR +SET @@global.net_write_timeout = 65530.34.; +SELECT @@global.net_write_timeout; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.net_write_timeout = test; +SELECT @@global.net_write_timeout; + +SET @@session.net_write_timeout = 0; +SELECT @@session.net_write_timeout; +SET @@session.net_write_timeout = -2; +SELECT @@session.net_write_timeout; +--Error ER_PARSE_ERROR +SET @@session.net_write_timeout = 65530.34.; +SET @@session.net_write_timeout = 6555015425; +SELECT @@session.net_write_timeout; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.net_write_timeout = test; +SELECT @@session.net_write_timeout; + + +--echo '#------------------FN_DYNVARS_112_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.net_write_timeout = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='net_write_timeout'; + +--echo '#------------------FN_DYNVARS_112_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.net_write_timeout = VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='net_write_timeout'; + + +--echo '#------------------FN_DYNVARS_112_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.net_write_timeout = TRUE; +SELECT @@global.net_write_timeout; +SET @@global.net_write_timeout = FALSE; +SELECT @@global.net_write_timeout; + + +--echo '#---------------------FN_DYNVARS_112_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.net_write_timeout = 10; +SELECT @@net_write_timeout = @@global.net_write_timeout; + + +--echo '#---------------------FN_DYNVARS_112_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@net_write_timeout = 100; +SELECT @@net_write_timeout = @@local.net_write_timeout; +SELECT @@local.net_write_timeout = @@session.net_write_timeout; + + +--echo '#---------------------FN_DYNVARS_112_11----------------------#' +############################################################################ +# Check if net_write_timeout can be accessed with and without @@ sign # +############################################################################ + +SET net_write_timeout = 1; +SELECT @@net_write_timeout; +--Error ER_UNKNOWN_TABLE +SELECT local.net_write_timeout; +--Error ER_UNKNOWN_TABLE +SELECT session.net_write_timeout; +--Error ER_BAD_FIELD_ERROR +SELECT net_write_timeout = @@session.net_write_timeout; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.net_write_timeout = @start_global_value; +SELECT @@global.net_write_timeout; +SET @@session.net_write_timeout = @start_session_value; +SELECT @@session.net_write_timeout; + + +###################################################### +# END OF net_write_timeout TESTS # +###################################################### + diff --git a/mysql-test/t/new_basic.test b/mysql-test/t/new_basic.test new file mode 100644 index 00000000000..b1d12c9a4de --- /dev/null +++ b/mysql-test/t/new_basic.test @@ -0,0 +1,220 @@ +############## mysql-test\t\new_basic.test #################################### +# # +# Variable Name: new # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable "new" # +# 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#option_mysqld_new # +# # +############################################################################### + +--source include/load_sysvars.inc +################################################### +# START OF new TESTS # +################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.new; +SELECT @start_global_value; +SET @start_session_value = @@session.new; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_113_01-------------------------#' +################################################### +# Display the DEFAULT value of new # +################################################### + +SET @@global.new = ON; +SET @@global.new = DEFAULT; +SELECT @@global.new; + +SET @@session.new = ON; +SET @@session.new = DEFAULT; +SELECT @@session.new; + + +--echo '#--------------------FN_DYNVARS_113_02-------------------------#' +################################################### +# Check the DEFAULT value of new # +################################################### + +SET @@global.new = DEFAULT; +SELECT @@global.new = 'OFF'; + +SET @@session.new = DEFAULT; +SELECT @@session.new = 'OFF'; + + +--echo '#--------------------FN_DYNVARS_113_03-------------------------#' +############################################################# +# Change the value of new to a valid value for GLOBAL Scope # +############################################################# + +SET @@global.new = ON; +SELECT @@global.new; +SET @@global.new = OFF; +SELECT @@global.new; +SET @@global.new = 0; +SELECT @@global.new; +SET @@global.new = 1; +SELECT @@global.new; +SET @@global.new = TRUE; +SELECT @@global.new; +SET @@global.new = FALSE; +SELECT @@global.new; + + + +--echo '#--------------------FN_DYNVARS_113_04-------------------------#' +############################################################## +# Change the value of new to a valid value for SESSION Scope # +############################################################## + +SET @@session.new = ON; +SELECT @@session.new; +SET @@session.new = OFF; +SELECT @@session.new; +SET @@session.new = 0; +SELECT @@session.new; +SET @@session.new = 1; +SELECT @@session.new; +SET @@session.new = TRUE; +SELECT @@session.new; +SET @@session.new = FALSE; +SELECT @@session.new; + + +--echo '#------------------FN_DYNVARS_113_05-----------------------#' +############################################### +# Change the value of new to an invalid value # +############################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = 'ONN'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = "OFFF"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = TTRUE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = FELSE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = -1024; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = 65536; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = 65530.34; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.new = test; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.new = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.new = ONF; + +SET @@session.new = OF; +SELECT @@session.new; +--echo 'Bug# 34828: FN_DYNVARS_113_05 - OF is also working as OFF and no error is coming'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.new = 'OFN'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.new = -2; +--Error ER_PARSE_ERROR +SET @@session.new = 65530.34.; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.new = 65550; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.new = test; + + +--echo '#------------------FN_DYNVARS_113_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.new = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='new'; + +--echo '#------------------FN_DYNVARS_113_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.new = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='new'; + + + +--echo '#---------------------FN_DYNVARS_113_08----------------------#' +############################################################################### +# Check if global and session variable are independent of each other # +############################################################################### + +SET @@new = OFF; +SET @@global.new = ON; +SELECT @@new = @@global.new; + +--echo '#---------------------FN_DYNVARS_113_09----------------------#' +############################################################################### +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################### + +SET @@new = ON; +SELECT @@new = @@local.new; +SELECT @@local.new = @@session.new; + + +--echo '#---------------------FN_DYNVARS_113_10----------------------#' +############################################################## +# Check if new can be accessed with and without @@ sign # +############################################################## + +SET new = 1; +SELECT @@new; +--Error ER_UNKNOWN_TABLE +SELECT local.new; +--Error ER_UNKNOWN_TABLE +SELECT session.new; +--Error ER_BAD_FIELD_ERROR +SELECT new = @@session.new; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.new = @start_global_value; +SELECT @@global.new; +SET @@session.new = @start_session_value; +SELECT @@session.new; + + +######################################## +# END OF new TESTS # +######################################## + diff --git a/mysql-test/t/old_passwords_basic.test b/mysql-test/t/old_passwords_basic.test new file mode 100644 index 00000000000..b78ac9ca9b8 --- /dev/null +++ b/mysql-test/t/old_passwords_basic.test @@ -0,0 +1,220 @@ +############## mysql-test\t\old_passwords_basic.test ########################## +# # +# Variable Name: old_passwords # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable old_passwords # +# 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#option_mysqld_old-passwords # +# # +############################################################################### + +--source include/load_sysvars.inc +################################################### +# START OF old_passwords TESTS # +################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.old_passwords; +SELECT @start_global_value; +SET @start_session_value = @@session.old_passwords; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_114_01-------------------------#' +################################################### +# Display the DEFAULT value of old_passwords # +################################################### + +SET @@global.old_passwords = ON; +SET @@global.old_passwords = DEFAULT; +SELECT @@global.old_passwords; + +SET @@session.old_passwords = ON; +SET @@session.old_passwords = DEFAULT; +SELECT @@session.old_passwords; + + +--echo '#--------------------FN_DYNVARS_114_02-------------------------#' +################################################### +# Check the DEFAULT value of old_passwords # +################################################### + +SET @@global.old_passwords = DEFAULT; +SELECT @@global.old_passwords = FALSE; + +SET @@session.old_passwords = DEFAULT; +SELECT @@session.old_passwords = FALSE; + + +--echo '#--------------------FN_DYNVARS_114_03-------------------------#' +####################################################################### +# Change the value of old_passwords to a valid value for GLOBAL Scope # +####################################################################### + +SET @@global.old_passwords = ON; +SELECT @@global.old_passwords; +SET @@global.old_passwords = OFF; +SELECT @@global.old_passwords; +SET @@global.old_passwords = 0; +SELECT @@global.old_passwords; +SET @@global.old_passwords = 1; +SELECT @@global.old_passwords; +SET @@global.old_passwords = TRUE; +SELECT @@global.old_passwords; +SET @@global.old_passwords = FALSE; +SELECT @@global.old_passwords; + + + +--echo '#--------------------FN_DYNVARS_114_04-------------------------#' +######################################################################## +# Change the value of old_passwords to a valid value for SESSION Scope # +######################################################################## + +SET @@session.old_passwords = ON; +SELECT @@session.old_passwords; +SET @@session.old_passwords = OFF; +SELECT @@session.old_passwords; +SET @@session.old_passwords = 0; +SELECT @@session.old_passwords; +SET @@session.old_passwords = 1; +SELECT @@session.old_passwords; +SET @@session.old_passwords = TRUE; +SELECT @@session.old_passwords; +SET @@session.old_passwords = FALSE; +SELECT @@session.old_passwords; + + +--echo '#------------------FN_DYNVARS_114_05-----------------------#' +######################################################### +# Change the value of old_passwords to an invalid value # +######################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = 'ONN'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = "OFFF"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = TTRUE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = FELSE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = -1024; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = 65536; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = 65530.34; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.old_passwords = test; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.old_passwords = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.old_passwords = ONF; + +SET @@session.old_passwords = OF; +SELECT @@session.old_passwords; +--echo 'Bug# 34828: OF is also working as OFF and no error is coming'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.old_passwords = 'OFN'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.old_passwords = -2; +--Error ER_PARSE_ERROR +SET @@session.old_passwords = 65530.34.; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.old_passwords = 65550; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.old_passwords = test; + + +--echo '#------------------FN_DYNVARS_114_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.old_passwords = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='old_passwords'; + +--echo '#------------------FN_DYNVARS_114_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.old_passwords = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='old_passwords'; + + +--echo '#---------------------FN_DYNVARS_114_08----------------------#' +############################################################################### +# Check if global and session variable are independent of each other # +############################################################################### + +SET @@old_passwords = OFF; +SET @@global.old_passwords = ON; +SELECT @@old_passwords = @@global.old_passwords; + + +--echo '#---------------------FN_DYNVARS_114_09----------------------#' +############################################################################### +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################### + +SET @@old_passwords = ON; +SELECT @@old_passwords = @@local.old_passwords; +SELECT @@local.old_passwords = @@session.old_passwords; + + +--echo '#---------------------FN_DYNVARS_114_10----------------------#' +######################################################################## +# Check if old_passwords can be accessed with and without @@ sign # +######################################################################## + +SET old_passwords = 1; +SELECT @@old_passwords; +--Error ER_UNKNOWN_TABLE +SELECT local.old_passwords; +--Error ER_UNKNOWN_TABLE +SELECT session.old_passwords; +--Error ER_BAD_FIELD_ERROR +SELECT old_passwords = @@session.old_passwords; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.old_passwords = @start_global_value; +SELECT @@global.old_passwords; +SET @@session.old_passwords = @start_session_value; +SELECT @@session.old_passwords; + + +################################################## +# END OF old_passwords TESTS # +################################################## + diff --git a/mysql-test/t/old_passwords_func.test b/mysql-test/t/old_passwords_func.test new file mode 100644 index 00000000000..47f77e45f9b --- /dev/null +++ b/mysql-test/t/old_passwords_func.test @@ -0,0 +1,118 @@ +############# mysql-test\t\old_passwords_func.test ############################ +# # +# Variable Name: old_passwords # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: FALSE # +# Values: TRUE, FALSE # +# # +# # +# Creation Date: 2008-03-12 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "old_passwords" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.0/en # +# /server-options.html#option_mysqld_old-passwords # +# # +############################################################################### + +# +# Setup +# + +SET @global_old_passwords = @@GLOBAL.old_passwords; +SET @session_old_passwords = @@SESSION.old_passwords; +SET @global_secure_auth = @@GLOBAL.secure_auth; + + +--echo '#------------------------FN_DYNVARS_115_01---------------------------#' + +--echo ** Connection default ** +connection default; + +# +# 2 Users with FALSE value +# + +CREATE USER 'userNewPass1'@'localhost' IDENTIFIED BY 'pass1'; +CREATE USER 'userNewPass2'@'localhost' IDENTIFIED BY 'pass2'; + +SET GLOBAL old_passwords = TRUE; +SET SESSION old_passwords = TRUE; + +# +# 1 User with TRUE value +# + +CREATE USER 'userOldPass'@'localhost' IDENTIFIED BY 'pass3'; + +SET GLOBAL secure_auth = FALSE; + +--echo ** Connecting con1 using username 'userNewPass1' ** +connect (con1,localhost,userNewPass1,pass1,); +SELECT CURRENT_USER(); +--echo userNewPass1@localhost Expected + +--echo ** Connecting con2 using username 'userNewPass2' ** +connect (con2,localhost,userNewPass2,pass2,); +SELECT CURRENT_USER(); +--echo userNewPass2@localhost Expected + +--echo ** Connecting con3 using username 'userOldPass' ** +connect (con3,localhost,userOldPass,pass3,); +SELECT CURRENT_USER(); +--echo userOldPass@localhost Expected + +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting con1, con2, con3 ** +disconnect con1; +disconnect con2; +disconnect con3; + +--echo '#------------------------FN_DYNVARS_115_02---------------------------#' + +SET GLOBAL secure_auth = TRUE; + +--echo ** Connecting con1 using username 'userNewPass1' ** +connect (con1,localhost,userNewPass1,pass1,); +SELECT CURRENT_USER(); +--echo userNewPass1@localhost Expected + +--echo ** Connecting con2 using username 'userNewPass2' ** +connect (con2,localhost,userNewPass2,pass2,); +SELECT CURRENT_USER(); +--echo userNewPass2@localhost Expected + +--echo ** Connecting con3 using username 'userOldPass' ** +--disable_query_log +--error ER_SERVER_IS_IN_SECURE_AUTH_MODE +connect (con3,localhost,userOldPass,pass3,); +--enable_query_log +--echo Expected Error 'Server is running in secure auth mode' +SELECT CURRENT_USER(); +--echo userNewPass2@localhost Expected + +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting con1, con2 ** +disconnect con1; +disconnect con2; + +# +# Cleanup +# + +DROP USER 'userNewPass1'@'localhost'; +DROP USER 'userNewPass2'@'localhost'; +DROP USER 'userOldPass'@'localhost'; + +SET @@GLOBAL.old_passwords = @global_old_passwords; +SET @@SESSION.old_passwords = @session_old_passwords; +SET @@GLOBAL.secure_auth = @global_secure_auth; diff --git a/mysql-test/t/optimizer_prune_level_basic.test b/mysql-test/t/optimizer_prune_level_basic.test new file mode 100644 index 00000000000..58c074d7d5e --- /dev/null +++ b/mysql-test/t/optimizer_prune_level_basic.test @@ -0,0 +1,228 @@ +############## mysql-test\t\optimizer_prune_level_basic.test ################## +# # +# Variable Name: optimizer_prune_level # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: 1 # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable optimizer_prune_level # +# 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#option_mysqld_optimizer_prune_level # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################### +# START OF optimizer_prune_level TESTS # +################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.optimizer_prune_level; +SELECT @start_global_value; +SET @start_session_value = @@session.optimizer_prune_level; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_115_01-------------------------#' +########################################################### +# Display the DEFAULT value of optimizer_prune_level # +########################################################### + +SET @@global.optimizer_prune_level = 0; +SET @@global.optimizer_prune_level = DEFAULT; +SELECT @@global.optimizer_prune_level; + +SET @@session.optimizer_prune_level = 0; +SET @@session.optimizer_prune_level = DEFAULT; +SELECT @@session.optimizer_prune_level; + + +--echo '#--------------------FN_DYNVARS_115_02-------------------------#' +########################################################### +# Check the DEFAULT value of optimizer_prune_level # +########################################################### + +SET @@global.optimizer_prune_level = DEFAULT; +SELECT @@global.optimizer_prune_level = 1; + +SET @@session.optimizer_prune_level = DEFAULT; +SELECT @@session.optimizer_prune_level = 1; + + +--echo '#--------------------FN_DYNVARS_115_03-------------------------#' +############################################################################### +# Change the value of optimizer_prune_level to a valid value for GLOBAL Scope # +############################################################################### + + +SELECT @@global.optimizer_prune_level; +SET @@global.optimizer_prune_level = 0; +SELECT @@global.optimizer_prune_level; +SET @@global.optimizer_prune_level = 1; +SELECT @@global.optimizer_prune_level; +SET @@global.optimizer_prune_level = TRUE; +SELECT @@global.optimizer_prune_level; +SET @@global.optimizer_prune_level = FALSE; +SELECT @@global.optimizer_prune_level; + + + +--echo '#--------------------FN_DYNVARS_115_04-------------------------#' +############################################################################### +# Change the value of optimizer_prune_level to a valid value for SESSION Scope# +############################################################################### + +SELECT @@session.optimizer_prune_level; +SET @@session.optimizer_prune_level = 0; +SELECT @@session.optimizer_prune_level; +SET @@session.optimizer_prune_level = 1; +SELECT @@session.optimizer_prune_level; +SET @@session.optimizer_prune_level = TRUE; +SELECT @@session.optimizer_prune_level; +SET @@session.optimizer_prune_level = FALSE; +SELECT @@session.optimizer_prune_level; + + +--echo '#------------------FN_DYNVARS_115_05-----------------------#' +################################################################# +# Change the value of optimizer_prune_level to an invalid value # +################################################################# + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = ON; +--echo 'Bug# 34840: Since it is a boolean variable, it should not give errors on 'ON' & 'OFF' values'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = OFF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = 'ONN'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = "OFFF"; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = TTRUE; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = FELSE; + +SET @@global.optimizer_prune_level = -1024; +SELECT @@global.optimizer_prune_level; + +--echo 'Bug# 34840: Since it is a boolean variable, it should give errors on numeric values'; + +SET @@global.optimizer_prune_level = 65536; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = 65530.34; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_prune_level = test; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = OFF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = ONN; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = ONF; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = OF; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = 'OFN'; +SET @@session.optimizer_prune_level = -2; +SELECT @@session.optimizer_prune_level; +--Error ER_PARSE_ERROR +SET @@session.optimizer_prune_level = 65530.34.; + +SET @@session.optimizer_prune_level = 65550; +SELECT @@session.optimizer_prune_level; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_prune_level = test; + +--echo '#------------------FN_DYNVARS_115_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.optimizer_prune_level = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='optimizer_prune_level'; + +--echo '#------------------FN_DYNVARS_115_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.optimizer_prune_level = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='optimizer_prune_level'; + + + +--echo '#---------------------FN_DYNVARS_115_08----------------------#' +############################################################################### +# Check if global and session variable are independent of each other # +############################################################################### + +SET @@optimizer_prune_level = 0; +SET @@global.optimizer_prune_level = 1; +SELECT @@optimizer_prune_level = @@global.optimizer_prune_level; + + +--echo '#---------------------FN_DYNVARS_115_09----------------------#' +############################################################################### +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################### + +SET @@optimizer_prune_level = 1; +SELECT @@optimizer_prune_level = @@local.optimizer_prune_level; +SELECT @@local.optimizer_prune_level = @@session.optimizer_prune_level; + + +--echo '#---------------------FN_DYNVARS_115_10----------------------#' +############################################################################### +# Check if optimizer_prune_level can be accessed with and without @@ sign # +############################################################################### + +SET optimizer_prune_level = 1; +SELECT @@optimizer_prune_level; +--Error ER_UNKNOWN_TABLE +SELECT local.optimizer_prune_level; +--Error ER_UNKNOWN_TABLE +SELECT session.optimizer_prune_level; +--Error ER_BAD_FIELD_ERROR +SELECT optimizer_prune_level = @@session.optimizer_prune_level; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.optimizer_prune_level = @start_global_value; +SELECT @@global.optimizer_prune_level; +SET @@session.optimizer_prune_level = @start_session_value; +SELECT @@session.optimizer_prune_level; + +########################################################## +# END OF optimizer_prune_level TESTS # +########################################################## + diff --git a/mysql-test/t/optimizer_search_depth_basic.test b/mysql-test/t/optimizer_search_depth_basic.test new file mode 100644 index 00000000000..42548c59d40 --- /dev/null +++ b/mysql-test/t/optimizer_search_depth_basic.test @@ -0,0 +1,210 @@ +############## mysql-test\t\optimizer_search_depth_basic.test ############### +# # +# Variable Name: optimizer_search_depth # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 62 # +# Range: - # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable optimizer_search_depth # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +###################################################################### +# START OF optimizer_search_depth TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.optimizer_search_depth; +SELECT @start_global_value; +SET @start_session_value = @@session.optimizer_search_depth; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_116_01-------------------------#' +###################################################################### +# Display the DEFAULT value of optimizer_search_depth # +###################################################################### + +SET @@global.optimizer_search_depth = 100; +SET @@global.optimizer_search_depth = DEFAULT; +SELECT @@global.optimizer_search_depth; + +SET @@session.optimizer_search_depth = 200; +SET @@session.optimizer_search_depth = DEFAULT; +SELECT @@session.optimizer_search_depth; + + +--echo '#--------------------FN_DYNVARS_116_02-------------------------#' +###################################################################### +# Check the DEFAULT value of optimizer_search_depth # +###################################################################### + +SET @@global.optimizer_search_depth = DEFAULT; +SELECT @@global.optimizer_search_depth = 62; + +SET @@session.optimizer_search_depth = DEFAULT; +SELECT @@session.optimizer_search_depth = 62; + + +--echo '#--------------------FN_DYNVARS_116_03-------------------------#' +################################################################################ +# Change the value of optimizer_search_depth to a valid value for GLOBAL Scope # +################################################################################ + +SET @@global.optimizer_search_depth = 0; +SELECT @@global.optimizer_search_depth; +SET @@global.optimizer_search_depth = 1; +SELECT @@global.optimizer_search_depth; +SET @@global.optimizer_search_depth = 62; +SELECT @@global.optimizer_search_depth; +SET @@global.optimizer_search_depth = 63; +SELECT @@global.optimizer_search_depth; + + +--echo '#--------------------FN_DYNVARS_116_04-------------------------#' +################################################################################# +# Change the value of optimizer_search_depth to a valid value for SESSION Scope # +################################################################################# + +SET @@session.optimizer_search_depth = 0; +SELECT @@session.optimizer_search_depth; +SET @@session.optimizer_search_depth = 1; +SELECT @@session.optimizer_search_depth; +SET @@session.optimizer_search_depth = 62; +SELECT @@session.optimizer_search_depth; +SET @@session.optimizer_search_depth = 63; +SELECT @@session.optimizer_search_depth; + + +--echo '#------------------FN_DYNVARS_116_05-----------------------#' +################################################################## +# Change the value of optimizer_search_depth to an invalid value # +################################################################## + +SET @@global.optimizer_search_depth = 64; +SELECT @@global.optimizer_search_depth; +SET @@global.optimizer_search_depth = -1; +SELECT @@global.optimizer_search_depth; +SET @@global.optimizer_search_depth = 65536; +SELECT @@global.optimizer_search_depth; +--Error ER_PARSE_ERROR +SET @@global.optimizer_search_depth = 65530.34.; +SELECT @@global.optimizer_search_depth; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.optimizer_search_depth = test; +SELECT @@global.optimizer_search_depth; + +SET @@session.optimizer_search_depth = 64; +SELECT @@session.optimizer_search_depth; +SET @@session.optimizer_search_depth = -2; +SELECT @@session.optimizer_search_depth; +--Error ER_PARSE_ERROR +SET @@session.optimizer_search_depth = 65530.34.; +SET @@session.optimizer_search_depth = 65550; +SELECT @@session.optimizer_search_depth; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.optimizer_search_depth = test; +SELECT @@session.optimizer_search_depth; + + +--echo '#------------------FN_DYNVARS_116_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.optimizer_search_depth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='optimizer_search_depth'; + + +--echo '#------------------FN_DYNVARS_116_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.optimizer_search_depth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='optimizer_search_depth'; + + +--echo '#------------------FN_DYNVARS_116_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.optimizer_search_depth = TRUE; +SELECT @@global.optimizer_search_depth; +SET @@global.optimizer_search_depth = FALSE; +SELECT @@global.optimizer_search_depth; + + +--echo '#---------------------FN_DYNVARS_116_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.optimizer_search_depth = 10; +SELECT @@optimizer_search_depth = @@global.optimizer_search_depth; + + +--echo '#---------------------FN_DYNVARS_116_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@optimizer_search_depth = 10; +SELECT @@optimizer_search_depth = @@local.optimizer_search_depth; +SELECT @@local.optimizer_search_depth = @@session.optimizer_search_depth; + + +--echo '#---------------------FN_DYNVARS_116_11----------------------#' +################################################################################# +# Check if optimizer_search_depth can be accessed with and without @@ sign # +################################################################################# + +SET optimizer_search_depth = 1; +SELECT @@optimizer_search_depth; +--Error ER_UNKNOWN_TABLE +SELECT local.optimizer_search_depth; +--Error ER_UNKNOWN_TABLE +SELECT session.optimizer_search_depth; +--Error ER_BAD_FIELD_ERROR +SELECT optimizer_search_depth = @@session.optimizer_search_depth; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.optimizer_search_depth = @start_global_value; +SELECT @@global.optimizer_search_depth; +SET @@session.optimizer_search_depth = @start_session_value; +SELECT @@session.optimizer_search_depth; + + +########################################################### +# END OF optimizer_search_depth TESTS # +########################################################### + diff --git a/mysql-test/t/preload_buffer_size_basic.test b/mysql-test/t/preload_buffer_size_basic.test new file mode 100644 index 00000000000..48b1e32676a --- /dev/null +++ b/mysql-test/t/preload_buffer_size_basic.test @@ -0,0 +1,217 @@ +############## mysql-test\t\preload_buffer_size_basic.test ############### +# # +# Variable Name: preload_buffer_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 32768 # +# Range:1024-1073741824 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable preload_buffer_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +################################################################### +# START OF preload_buffer_size TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.preload_buffer_size; +SELECT @start_global_value; +SET @start_session_value = @@session.preload_buffer_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_129_01-------------------------#' +################################################################### +# Display the DEFAULT value of preload_buffer_size # +################################################################### + +SET @@global.preload_buffer_size = 10000; +SET @@global.preload_buffer_size = DEFAULT; +SELECT @@global.preload_buffer_size; + +SET @@session.preload_buffer_size = 20000; +SET @@session.preload_buffer_size = DEFAULT; +SELECT @@session.preload_buffer_size; + + +--echo '#--------------------FN_DYNVARS_129_02-------------------------#' +################################################################### +# Check the DEFAULT value of preload_buffer_size # +################################################################### + +SET @@global.preload_buffer_size = DEFAULT; +SELECT @@global.preload_buffer_size = 32768; + +SET @@session.preload_buffer_size = DEFAULT; +SELECT @@session.preload_buffer_size = 32768; + + +--echo '#--------------------FN_DYNVARS_129_03-------------------------#' +############################################################################# +# Change the value of preload_buffer_size to a valid value for GLOBAL Scope # +############################################################################# + +SET @@global.preload_buffer_size = 1024; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = 1025; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = 1073741824; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = 1073741823; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = 65536; +SELECT @@global.preload_buffer_size; + +--echo '#--------------------FN_DYNVARS_129_04-------------------------#' +############################################################################## +# Change the value of preload_buffer_size to a valid value for SESSION Scope # +############################################################################## + +SET @@session.preload_buffer_size = 1024; +SELECT @@session.preload_buffer_size; +SET @@session.preload_buffer_size = 1025; +SELECT @@session.preload_buffer_size; +SET @@session.preload_buffer_size = 1073741824; +SELECT @@session.preload_buffer_size; +SET @@session.preload_buffer_size = 1073741823; +SELECT @@session.preload_buffer_size; +SET @@session.preload_buffer_size = 655536; +SELECT @@session.preload_buffer_size; + +--echo '#------------------FN_DYNVARS_129_05-----------------------#' +############################################################### +# Change the value of preload_buffer_size to an invalid value # +############################################################### + +SET @@global.preload_buffer_size = 64; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = -1; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = 1023; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = 1073741825; +SELECT @@global.preload_buffer_size; +--Error ER_PARSE_ERROR +SET @@global.preload_buffer_size = 65530.34.; +SELECT @@global.preload_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.preload_buffer_size = test; +SELECT @@global.preload_buffer_size; + +SET @@session.preload_buffer_size = 64; +SELECT @@session.preload_buffer_size; +SET @@session.preload_buffer_size = -2; +SELECT @@session.preload_buffer_size; +--Error ER_PARSE_ERROR +SET @@session.preload_buffer_size = 65530.34.; +SET @@session.preload_buffer_size = 1023; +SELECT @@session.preload_buffer_size; +SET @@session.preload_buffer_size = 1073741825; +SELECT @@session.preload_buffer_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.preload_buffer_size = test; +SELECT @@session.preload_buffer_size; + + +--echo '#------------------FN_DYNVARS_129_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.preload_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='preload_buffer_size'; + + +--echo '#------------------FN_DYNVARS_129_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.preload_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='preload_buffer_size'; + + +--echo '#------------------FN_DYNVARS_129_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.preload_buffer_size = TRUE; +SELECT @@global.preload_buffer_size; +SET @@global.preload_buffer_size = FALSE; +SELECT @@global.preload_buffer_size; + + +--echo '#---------------------FN_DYNVARS_129_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.preload_buffer_size = 2048; +SELECT @@preload_buffer_size = @@global.preload_buffer_size; + + +--echo '#---------------------FN_DYNVARS_129_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@preload_buffer_size = 5000; +SELECT @@preload_buffer_size = @@local.preload_buffer_size; +SELECT @@local.preload_buffer_size = @@session.preload_buffer_size; + + +--echo '#---------------------FN_DYNVARS_129_11----------------------#' +############################################################################## +# Check if preload_buffer_size can be accessed with and without @@ sign # +############################################################################## + +SET preload_buffer_size = 1024; +SELECT @@preload_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT local.preload_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT session.preload_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT preload_buffer_size = @@session.preload_buffer_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.preload_buffer_size = @start_global_value; +SELECT @@global.preload_buffer_size; +SET @@session.preload_buffer_size = @start_session_value; +SELECT @@session.preload_buffer_size; + + +######################################################## +# END OF preload_buffer_size TESTS # +######################################################## + diff --git a/mysql-test/t/query_cache_limit_func.test b/mysql-test/t/query_cache_limit_func.test new file mode 100644 index 00000000000..8dd5cf42d3d --- /dev/null +++ b/mysql-test/t/query_cache_limit_func.test @@ -0,0 +1,173 @@ +############# mysql-test\t\Query_cache_limit_func.test ######################## +# # +# Variable Name: Query_cache_limit # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: NUMERIC # +# Default Value: 1048576 # +# Min Value: 0 # +# # +# # +# Creation Date: 2008-03-02 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "Query_cache_limit" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en # +# /server-system-variables.html#option_mysqld_Query_cache_limit # +# # +############################################################################### + + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @global_query_cache_limit = @@global.query_cache_limit; + +--echo ** warnings ** +--disable_warnings +DROP TABLE IF EXISTS t; + +--enable_warnings +#creating table# + +--echo ** creating table ** + +CREATE TABLE t +( +id INT AUTO_INCREMENT PRIMARY KEY, +c TEXT(30) +); + +#inserting value# + +--echo **inserting value ** + +INSERT INTO t set c = repeat('x',29); +INSERT INTO t set c = concat(repeat('x',28),'r','x'); +INSERT INTO t set c = concat(repeat('x',28),'s','y'); +INSERT INTO t set c = concat(repeat('x',28),'g','w'); + +# Reset cache & flush status +--echo ** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; + +# set query cache type value to on and allocating cache size +--echo ** On query_cache_type ** +SET GLOBAL query_cache_type = ON; + +--echo ** Allocating cache size ** +SET GLOBAL query_cache_size = 131072; + +# reset values +--echo ** Reset values +SET GLOBAL query_cache_size = 0; +SET GLOBAL query_cache_size = 131072; +SET GLOBAL query_cache_type = ON; + +--echo '#---------------------FN_DYNVARS_132_01----------------------#' +# +#Check if results are cacheing on default value # +# + +# Reset cache & flush status +--echo ** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; + + +#fetching results# +--echo ** fetching results ** +SELECT * FROM t; + +# Check status +--echo ** check status on not setting query_cache_limit value ** + +SHOW STATUS LIKE 'Qcache_not_cached'; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; + + +--echo '#---------------------FN_DYNVARS_132_02----------------------#' +# +#Check if results are cacheing on setting value to 0 i.e. no caching# +# + +# Reset cache & flush status +--echo ** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; + +#set cache limit +--echo ** set cache limit ** +SET @@GLOBAL.query_cache_limit=0; + +#fetching results# +--echo ** fetching results ** +SELECT * FROM t; + +# Check status after setting value# +--echo ** Check status after setting value ** +#let $newcachevalue1= query_get_value(SHOW STATUS LIKE 'Qcache_queries_in_cache', Value, 1); +SHOW STATUS LIKE 'Qcache_not_cached'; +--echo 1 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + + +--echo '#---------------------FN_DYNVARS_132_03----------------------#' +# +# Check if setting to 0 makes any difference to the cache or not # +# + +#set cache limit to default +--echo ** set cache limit ** +SET @@GLOBAL.query_cache_limit=DEFAULT; + +# Reset cache & flush status +--echo ** Reset cache values ** +FLUSH STATUS; +RESET QUERY CACHE; + +#fetching results# +--echo ** fetching results ** +SELECT * FROM t; + +SHOW STATUS LIKE 'Qcache_not_cached'; +--echo 0 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +SET @@GLOBAL.query_cache_limit=0; + +SHOW STATUS LIKE 'Qcache_not_cached'; +--echo 0 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +#fetching results# +--echo ** fetching results ** +SELECT * FROM t; + +# Check status after setting value# +--echo ** Check status after setting value ** + +SHOW STATUS LIKE 'Qcache_not_cached'; +--echo 0 Expected +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +# +# Cleanup +# + +SET @@GLOBAL.query_cache_limit = @global_query_cache_limit; + +--disable_warnings +DROP TABLE IF EXISTS t; +--enable_warnings diff --git a/mysql-test/t/query_cache_type_basic.test b/mysql-test/t/query_cache_type_basic.test new file mode 100644 index 00000000000..ba7e26a3065 --- /dev/null +++ b/mysql-test/t/query_cache_type_basic.test @@ -0,0 +1,228 @@ +################ mysql-test\t\query_cache_type_basic.test ##################### +# # +# Variable Name: query_cache_type # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: 1 # +# Range: 0,1 & 2 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable query_cache_type # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF query_cache_type TESTS # +######################################################################## + + +########################################################################### +# Saving initial value of query_cache_type in a temporary variable # +########################################################################### + +SET @global_start_value = @@global.query_cache_type; +SELECT @global_start_value; + +SET @session_start_value = @@session.query_cache_type; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_134_01------------------------#' +######################################################################## +# Display the DEFAULT value of query_cache_type # +######################################################################## + +SET @@global.query_cache_type = 0; +SET @@global.query_cache_type = DEFAULT; +SELECT @@global.query_cache_type; + +SET @@session.query_cache_type = 0; +SET @@session.query_cache_type = DEFAULT; +SELECT @@session.query_cache_type; + + +--echo '#---------------------FN_DYNVARS_134_02-------------------------#' +######################################################### +# Check if NULL or empty value is accepeted # +######################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = NULL; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = ''; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_type = NULL; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_type = ''; + +--echo '#--------------------FN_DYNVARS_134_03------------------------#' +######################################################################## +# Change the value of query_cache_type to a valid value # +######################################################################## + +SET @@global.query_cache_type = OFF; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = ON; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = DEMAND; +SELECT @@global.query_cache_type; + +SET @@session.query_cache_type = OFF; +SELECT @@session.query_cache_type; + +SET @@session.query_cache_type = ON; +SELECT @@session.query_cache_type; + +SET @@session.query_cache_type = DEMAND; +SELECT @@session.query_cache_type; + + +--echo '#--------------------FN_DYNVARS_134_04-------------------------#' +########################################################################### +# Change the value of query_cache_type to invalid value # +########################################################################### + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = ONDEMAND; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = 'ON,OFF'; + +SET @@global.query_cache_type = 'OF'; +SELECT @@global.query_cache_type; + +--echo 'Bug# 34828: OF is taken as OFF.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = YES; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = ' '; + + +--echo '#-------------------FN_DYNVARS_134_05----------------------------#' +######################################################################### +# Check if the value in session Table matches value in variable # +######################################################################### + +SELECT @@session.query_cache_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_type'; + +--echo '#----------------------FN_DYNVARS_134_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.query_cache_type = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_type'; + + +--echo '#---------------------FN_DYNVARS_134_07-------------------------#' +################################################################### +# Check if numbers can be used on variable # +################################################################### + +# test if variable accepts 0,1,2 +SET @@global.query_cache_type = 0; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = 1; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = 2; +SELECT @@global.query_cache_type; + +# use of decimal values + +SET @@global.query_cache_type = 0.4; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = 1.0; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = 1.1; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = 1.5; +SELECT @@global.query_cache_type; + +SET @@global.query_cache_type = 2.49; +SELECT @@global.query_cache_type; + +SET @@session.query_cache_type = 0.5; +SELECT @@session.query_cache_type; + +SET @@session.query_cache_type = 1.6; +SELECT @@session.query_cache_type; + + +--echo 'Bug: Decimal values can be used within the range [0.0-2.5). Values'; +--echo 'are rounded to 0,1,2 as evident from outcome.'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_type = 3; + + +--echo '#---------------------FN_DYNVARS_134_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.query_cache_type = TRUE; +SELECT @@global.query_cache_type; +SET @@global.query_cache_type = FALSE; +SELECT @@global.query_cache_type; + +--echo '#---------------------FN_DYNVARS_134_09----------------------#' +###################################################################### +# Check if query_cache_type can be accessed with and without @@ sign # +###################################################################### + +SET query_cache_type = 'ON'; + +--Error ER_PARSE_ERROR +SET session.query_cache_type = 'OFF'; +--Error ER_PARSE_ERROR +SET global.query_cache_type = 'DEMAND'; + +SET session query_cache_type = 1; +SELECT @@query_cache_type; + +SET global query_cache_type = 0; +SELECT @@global.query_cache_type; + +############################## +# Restore initial value # +############################## + +SET @@global.query_cache_type = @global_start_value; +SELECT @@global.query_cache_type; + +SET @@session.query_cache_type = @session_start_value; +SELECT @@session.query_cache_type; + +######################################################################## +# END OF query_cache_type TESTS # +######################################################################## diff --git a/mysql-test/t/query_cache_type_func.test b/mysql-test/t/query_cache_type_func.test new file mode 100644 index 00000000000..64f332eb7c0 --- /dev/null +++ b/mysql-test/t/query_cache_type_func.test @@ -0,0 +1,314 @@ +############# mysql-test\t\query_cache_type_func.test ######################### +# # +# Variable Name: query_cache_type # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: ON # +# Values: ON, OFF, DEMAND # +# # +# # +# Creation Date: 2008-02-20 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "query_cache_type" # +# that checks behavior of this variable in the following ways # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_query_cache_type # +# # +############################################################################### + +--echo ** Setup ** +--echo + +# Setup +# + +# +# Save initial value +# + +--echo ** Connecting to con0 using root ** +connect (con0,localhost,root,,); +--echo ** Connection con0 ** +connection con0; + +SET @start_global_value = @@GLOBAL.query_cache_type; +SET @start_session_value = @@SESSION.query_cache_type; + +# +# Creating test table +# + +CREATE TABLE t1(id int, value varchar(10)); + +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); + +# +# Clearing the query cache and setting up cache size +# + +SET @@GLOBAL.query_cache_size = 65536; + +--echo FLUSHING CACHE +SET @@GLOBAL.query_cache_size = 0; +SET @@GLOBAL.query_cache_size = 65536; + +# +# SESSION SCOPE +# + +--echo ** TESTING SESSION SCOPE ** + +--echo '#--------------------FN_DYNVARS_135_01-------------------------#' +# +# Testing default value it should be ON by default +# + +SET @@query_cache_type = DEFAULT; +SELECT @@query_cache_type; +--echo ON Expected + +--echo '#--------------------FN_DYNVARS_135_02-------------------------#' +# +# Testing valid possible values +# + +--error ER_WRONG_VALUE_FOR_VAR +SET @@query_cache_type = NULL; +--echo Expected error: Wrong value for variable + +SET @@query_cache_type = ON; +SELECT @@query_cache_type; +--echo ON Expected + +SET @@query_cache_type = OFF; +SELECT @@query_cache_type; +--echo OFF Expected + +SET @@query_cache_type = DEMAND; +SELECT @@query_cache_type; +--echo DEMAND Expected + +--error ER_WRONG_VALUE_FOR_VAR +SET @@query_cache_type = XYZ; +--echo Expected error: Wrong value for variable + + +# +# TESTING FOR VALUE ON or 1 +# + +--echo ** Turning cache to ON ** + +SET @@query_cache_type = ON; + +--echo '#--------------------FN_DYNVARS_135_03-------------------------#' +# +# TESTING CACHE ADDITION +# + +--echo ** CACHE ADDITION ** +--echo + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +SELECT value FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 2 Expected + +--echo '#--------------------FN_DYNVARS_135_04-------------------------#' +# +# TESTING CACHE HIT +# + +--echo ** CACHE HIT ** + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 2 Expected + +SELECT SQL_CACHE value FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 3 Expected + +SELECT SQL_NO_CACHE value FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 3 Expected + +--echo '#--------------------FN_DYNVARS_135_05-------------------------#' +# +# Testing with store procedure +# + +--echo Testing with store procedure + +delimiter |; + +CREATE PROCEDURE testProcHit() +BEGIN + SELECT * FROM t1; + SELECT SQL_CACHE value FROM t1; +END| + +delimiter ;| + +CALL testProcHit(); + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo Expected value : 3 +--echo ================== +--echo Bug#35388: Stored procedure execution causes improper behavior of query cache. + + +--echo '#--------------------FN_DYNVARS_135_06-------------------------#' +# +# TESTING FOR VALUE OFF or 0 +# + +--echo FLUSHING CACHE +SET @@GLOBAL.query_cache_size = 0; +SET @@GLOBAL.query_cache_size = 65536; + +--echo ** Turning cache to OFF ** + +SET @@query_cache_type = OFF; +SELECT @@query_cache_type; + +SELECT id FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +--echo '#--------------------FN_DYNVARS_135_07-------------------------#' +# +# TESTING QUERY WITH SQL_CACHE +# + +SELECT SQL_CACHE id FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +SELECT SQL_CACHE * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +--echo '#--------------------FN_DYNVARS_135_08-------------------------#' +# +# TESTING FOR VALUE DEMAND or 2 +# + +--echo FLUSHING CACHE +SET @@GLOBAL.query_cache_size = 0; +SET @@GLOBAL.query_cache_size = 65536; + +--echo ** Turning cache to DEMAND ** + +SET @@query_cache_type = DEMAND; +SELECT @@query_cache_type; + +--echo '#--------------------FN_DYNVARS_135_09-------------------------#' +# +# TESTING NORMAL QUERY +# + +SELECT value,id FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +SELECT SQL_CACHE * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +# +# GLOBAL SCOPE +# + +--echo ** TESTING GLOBAL SCOPE ** + +--echo '#--------------------FN_DYNVARS_135_10-------------------------#' +# +# Turning global cache to OFF +# + +SET @@GLOBAL.query_cache_type = OFF; + +--echo ** Connecting con1 using root ** +connect (con1,localhost,root,,); + +--echo ** Connection con1 ** +connection con1; + +SELECT @@query_cache_type; +--echo OFF Expected + +--echo '#--------------------FN_DYNVARS_135_11-------------------------#' +# +# Turning global cache to DEMAND +# +SET @@GLOBAL.query_cache_type = DEMAND; + +--echo ** Connecting con2 using root ** +connect (con2,localhost,root,,); + +--echo ** Connection con2 ** +connection con2; + +SELECT @@query_cache_type; +--echo DEMAND Expected + +--echo '#--------------------FN_DYNVARS_135_12-------------------------#' +# +# Turning global cache to ON +# +SET @@GLOBAL.query_cache_type = ON; + +--echo ** Connecting con3 using root ** +connect (con3,localhost,root,,); +--echo ** Connection con3 ** +connection con3; + +SELECT @@query_cache_type; +--echo ON Expected + +--echo +--echo ** Cleanup ** +--echo +# +# Cleanup +# + +--echo Disconnecting con1,con2,con3 +disconnect con1; +disconnect con2; +disconnect con3; + +--echo ** Connection con0 ** +connection con0; + +SET @@GLOBAL.query_cache_type = @start_global_value; +SET @@SESSION.query_cache_type = @start_session_value; + +DROP TABLE t1; + +DROP PROCEDURE testProcHit; + +--echo Disconnecting con0 +disconnect con0; diff --git a/mysql-test/t/query_cache_wlock_invalidate_basic.test b/mysql-test/t/query_cache_wlock_invalidate_basic.test new file mode 100644 index 00000000000..f253c1b4f43 --- /dev/null +++ b/mysql-test/t/query_cache_wlock_invalidate_basic.test @@ -0,0 +1,231 @@ +########### mysql-test\t\query_cache_wlock_invalidate_basic.test ############## +# # +# Variable Name: query_cache_wlock_invalidate # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Range: TRUE, FALSE # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable # +# query_cache_wlock_invalidate 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF query_cache_wlock_invalidate TESTS # +######################################################################## + + +############################################################################### +# Saving initial value of query_cache_wlock_invalidate in a temporary variable# +############################################################################### + +SET @session_start_value = @@session.query_cache_wlock_invalidate; +SELECT @session_start_value; + +SET @global_start_value = @@global.query_cache_wlock_invalidate; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_135_01------------------------#' +######################################################################## +# Display the DEFAULT value of query_cache_wlock_invalidate # +######################################################################## + +SET @@session.query_cache_wlock_invalidate = 1; +SET @@session.query_cache_wlock_invalidate = DEFAULT; +SELECT @@session.query_cache_wlock_invalidate; + +SET @@global.query_cache_wlock_invalidate = 1; +SET @@global.query_cache_wlock_invalidate = DEFAULT; +SELECT @@global.query_cache_wlock_invalidate; + +--echo '#---------------------FN_DYNVARS_135_02-------------------------#' +########################################################################### +# Check if query_cache_wlock_invalidate can be accessed with and without +# @@ sign +########################################################################### + +SET query_cache_wlock_invalidate = 1; +SELECT @@query_cache_wlock_invalidate; + +--Error ER_UNKNOWN_TABLE +SELECT session.query_cache_wlock_invalidate; + +--Error ER_UNKNOWN_TABLE +SELECT local.query_cache_wlock_invalidate; + +--Error ER_UNKNOWN_TABLE +SELECT global.query_cache_wlock_invalidate; + +#using another syntax for accessing system variables +SET session query_cache_wlock_invalidate = 0; +SELECT @@session.query_cache_wlock_invalidate; + +SET global query_cache_wlock_invalidate = 0; +SELECT @@global.query_cache_wlock_invalidate; + + +--echo '#--------------------FN_DYNVARS_135_03------------------------#' +########################################################################## +# change the value of query_cache_wlock_invalidate to a valid value # +########################################################################## +# for session +SET @@session.query_cache_wlock_invalidate = 0; +SELECT @@session.query_cache_wlock_invalidate; +SET @@session.query_cache_wlock_invalidate = 1; +SELECT @@session.query_cache_wlock_invalidate; + +# for global +SET @@global.query_cache_wlock_invalidate = 0; +SELECT @@global.query_cache_wlock_invalidate; +SET @@global.query_cache_wlock_invalidate = 1; +SELECT @@global.query_cache_wlock_invalidate; + + +--echo '#--------------------FN_DYNVARS_135_04-------------------------#' +########################################################################### +# Change the value of query_cache_wlock_invalidate to invalid value # +########################################################################### + +# for session +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = 1.6; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = N; + +SET @@session.query_cache_wlock_invalidate = OF; +SELECT @@session.query_cache_wlock_invalidate; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.query_cache_wlock_invalidate = FF; + +# for global + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = N; + +SET @@global.query_cache_wlock_invalidate = OF; +SELECT @@global.query_cache_wlock_invalidate; + +--echo 'Bug 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.query_cache_wlock_invalidate = FF; + + +--echo '#-------------------FN_DYNVARS_135_05----------------------------#' +########################################################################### +# Test if changing global variable effects session and vice versa # +########################################################################### + +SET @@global.query_cache_wlock_invalidate = 0; +SET @@session.query_cache_wlock_invalidate = 1; +SELECT @@global.query_cache_wlock_invalidate AS res_is_0; + +SET @@global.query_cache_wlock_invalidate = 0; +SELECT @@session.query_cache_wlock_invalidate AS res_is_1; + +--echo '#----------------------FN_DYNVARS_135_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.query_cache_wlock_invalidate = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; +SELECT @@global.query_cache_wlock_invalidate; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; + +--echo '#----------------------FN_DYNVARS_135_07------------------------#' +######################################################################### +# Check if the value in SESSION Table matches value in variable # +######################################################################### + +SELECT @@session.query_cache_wlock_invalidate = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; +SELECT @@session.query_cache_wlock_invalidate; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_wlock_invalidate'; + +--echo '#---------------------FN_DYNVARS_135_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.query_cache_wlock_invalidate = OFF; +SELECT @@session.query_cache_wlock_invalidate; +SET @@session.query_cache_wlock_invalidate = ON; +SELECT @@session.query_cache_wlock_invalidate; + +SET @@global.query_cache_wlock_invalidate = OFF; +SELECT @@global.query_cache_wlock_invalidate; +SET @@global.query_cache_wlock_invalidate = ON; +SELECT @@global.query_cache_wlock_invalidate; + +--echo '#---------------------FN_DYNVARS_135_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.query_cache_wlock_invalidate = TRUE; +SELECT @@session.query_cache_wlock_invalidate; +SET @@session.query_cache_wlock_invalidate = FALSE; +SELECT @@session.query_cache_wlock_invalidate; + +SET @@global.query_cache_wlock_invalidate = TRUE; +SELECT @@global.query_cache_wlock_invalidate; +SET @@global.query_cache_wlock_invalidate = FALSE; +SELECT @@global.query_cache_wlock_invalidate; + +############################## +# Restore initial value # +############################## + +SET @@session.query_cache_wlock_invalidate = @session_start_value; +SELECT @@session.query_cache_wlock_invalidate; + +SET @@global.query_cache_wlock_invalidate = @global_start_value; +SELECT @@global.query_cache_wlock_invalidate; + +############################################################### +# END OF query_cache_wlock_invalidate TESTS # +############################################################### diff --git a/mysql-test/t/query_cache_wlock_invalidate_func.test b/mysql-test/t/query_cache_wlock_invalidate_func.test new file mode 100644 index 00000000000..a5b40422615 --- /dev/null +++ b/mysql-test/t/query_cache_wlock_invalidate_func.test @@ -0,0 +1,311 @@ +############# mysql-test\t\query_cache_wlock_invalidate_func.test #################### +# # +# Variable Name: query_cache_wlock_invalidate # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Values: TRUE / 1, FALSE / 0 # +# # +# # +# Creation Date: 2008-02-21 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "query_cache_wlock_invalidate" # +# that checks behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Cache behaviors # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_query_cache_wlock_invalidate # +# # +###################################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +# disabled due to differences in the result +--disable_ps_protocol +# +# Save initial value +# +--echo ** Connecting con0 using root ** +connect (con0,localhost,root,,); +--echo ** Connecting con1 using root ** +connect (con1, localhost, root,,); +--echo ** Connection con0 ** +connection con0; + +SET @start_global_value = @@GLOBAL.query_cache_wlock_invalidate; +SET @start_session_value = @@SESSION.query_cache_wlock_invalidate; + +SET @old_cache_size = @@GLOBAL.query_cache_size; +SET @old_cache_type = @@GLOBAL.query_cache_type; + +# +# Creating test table +# + +CREATE TABLE t1(id int, value varchar(10)); + +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); + +# +# Clearing the query cache and setting up cache size +# + +SET GLOBAL query_cache_size = 131072; + +--echo FLUSHING CACHE +SET GLOBAL query_cache_size = 0; +SET GLOBAL query_cache_size = 131072; + +SET GLOBAL query_cache_type = ON; + +# +# Testing for value ON +# +--echo Testing for value ON + +--echo ** Connection con0 ** +connection con0; + +SET SESSION query_cache_wlock_invalidate = ON; + +--echo ** Connection con1 ** +connection con1; + +SET SESSION query_cache_wlock_invalidate = ON; + +--echo '#----------------------------FN_DYNVARS_136_01--------------#' +# +# Testing for cache invalidation +# + +--echo Testing for cache invalidation + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +LOCK TABLE t1 WRITE; + +UNLOCK TABLES; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +--echo '#----------------------------FN_DYNVARS_136_02-----------------------#' +# +# Testing for blockage of access +# + +disable_result_log; + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; + +enable_result_log; + +--echo ** Connection con1 ** +connection con1; + +SELECT * FROM t1; + +--echo ** Connection con0 ** +connection con0; + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)); +SELECT @TimeDifference;| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo Sleeping 2 Seconds before unlock +--sleep 2 +UNLOCK TABLES; + +--echo ** Connection con1 ** +connection con1; +--echo ** Asynchronous Result ** +reap; + +# +# Testing for value OFF +# +--echo Testing for value OFF + +--echo ** Connection con0 ** +connection con0; + +SET SESSION query_cache_wlock_invalidate = OFF; + +--echo ** Connection con1 ** +connection con1; + +SET SESSION query_cache_wlock_invalidate = OFF; + +--echo '#----------------------------FN_DYNVARS_136_03------------------#' +# +# Testing for cache invalidation +# + +--echo Testing for cache invalidation + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +LOCK TABLE t1 WRITE; + +UNLOCK TABLES; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +--echo '#----------------------------FN_DYNVARS_136_04---------------------#' +# +# Testing for blockage of access +# + +disable_result_log; + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; + +enable_result_log; + +--echo ** Connection con1 ** +connection con1; + +SELECT * FROM t1; + +--echo ** Connection con0 ** +connection con0; + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)); +SELECT @TimeDifference;| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo Sleeping 2 Seconds before unlock +--sleep 2 +UNLOCK TABLES; + +--echo ** Connection con1 ** +connection con1; +--echo ** Asynchronous Result ** +reap; + +--echo 'Bug#35390 the time difference should not be 2 seconds in this case,' +--echo 'it should be less than a second;' + +--echo '#----------------------------FN_DYNVARS_136_05------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL query_cache_wlock_invalidate = OFF; + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; +SET SESSION query_cache_wlock_invalidate = ON; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; + +SET SESSION query_cache_wlock_invalidate = OFF; + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 1 / ON; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; + +SELECT @@GLOBAL.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# +--echo +--echo CLEANUP + +--echo ** Connection con0 ** +connection con0; + +SET @@GLOBAL.query_cache_wlock_invalidate = @start_global_value; +SET @@SESSION.query_cache_wlock_invalidate = @start_session_value ; +SET @@GLOBAL.query_cache_size = @old_cache_size; +SET @@GLOBAL.query_cache_type = @old_cache_type; + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con0, con1 +disconnect con0; +disconnect con1; + +DROP TABLE t1; + +--enable_ps_protocol + diff --git a/mysql-test/t/query_prealloc_size_func.test b/mysql-test/t/query_prealloc_size_func.test new file mode 100644 index 00000000000..4f1e3e63e16 --- /dev/null +++ b/mysql-test/t/query_prealloc_size_func.test @@ -0,0 +1,86 @@ +############# mysql-test\t\query_prealloc_size_func.test ###################### +# # +# Variable Name: query_prealloc_size # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: integer # +# Default Value: 8192 # +# Values: 8192-4294967295 # +# # +# # +# Creation Date: 2008-02-22 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "query_prealloc_size" # +# that checks behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Cache behaviors # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_query_prealloc_size # +# # +############################################################################### + + + +--echo ** Setup ** +--echo +# +# Setup +# + +# +# Save initial value +# + +CREATE TABLE t1 (id int auto_increment primary key, val text(200)); + +INSERT INTO t1 values(NULL,'a'); +INSERT INTO t1 values(NULL,'b'); +INSERT INTO t1 values(NULL,'c'); +INSERT INTO t1 values(NULL,'d'); + +SELECT * FROM t1 ORDER BY val; + +SET SESSION query_prealloc_size = 8192; + + +--echo '#----------------------------FN_DYNVARS_137_05-----------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL query_prealloc_size = 8192; + +connect (con_int1,localhost,root,,); +connection con_int1; + +SELECT @@SESSION.query_prealloc_size; +--echo Expected Value : 8192; +SET SESSION query_prealloc_size = 16384; + +connect (con_int2,localhost,root,,); +connection con_int2; + +SELECT @@SESSION.query_prealloc_size; +--echo Expected Value : 8192; + +SET SESSION query_prealloc_size = 8192; + +connection con_int1; +SELECT @@SESSION.query_prealloc_size; +--echo Expected Value : 16384; + +connection con_int2; +SELECT @@SESSION.query_prealloc_size; +--echo Expected Value : 8192; + +SELECT @@GLOBAL.query_prealloc_size; +--echo Expected Value : 8192; + +connection default; +disconnect con_int1; +disconnect con_int2; + diff --git a/mysql-test/t/read_buffer_size_basic.test b/mysql-test/t/read_buffer_size_basic.test new file mode 100644 index 00000000000..405bb9da6d8 --- /dev/null +++ b/mysql-test/t/read_buffer_size_basic.test @@ -0,0 +1,209 @@ +############## mysql-test\t\read_buffer_size_basic.test ############### +# # +# Variable Name: read_buffer_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 131072 # +# Range: 8200-2147479552 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable read_buffer_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +###################################################################### +# START OF read_buffer_size TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.read_buffer_size; +SELECT @start_global_value; +SET @start_session_value = @@session.read_buffer_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_138_01-------------------------#' +###################################################################### +# Display the DEFAULT value of read_buffer_size # +###################################################################### + +SET @@global.read_buffer_size = 1000; +SET @@global.read_buffer_size = DEFAULT; +SELECT @@global.read_buffer_size; + +SET @@session.read_buffer_size = 2000; +SET @@session.read_buffer_size = DEFAULT; +SELECT @@session.read_buffer_size; + + +--echo '#--------------------FN_DYNVARS_138_02-------------------------#' +###################################################################### +# Check the DEFAULT value of read_buffer_size # +###################################################################### + +SET @@global.read_buffer_size = DEFAULT; +SELECT @@global.read_buffer_size = 131072; + +SET @@session.read_buffer_size = DEFAULT; +SELECT @@session.read_buffer_size = 131072; + + +--echo '#--------------------FN_DYNVARS_138_03-------------------------#' +################################################################################ +# Change the value of read_buffer_size to a valid value for GLOBAL Scope # +################################################################################ + +SET @@global.read_buffer_size = 8201; +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +SET @@global.read_buffer_size = 8200; +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +SET @@global.read_buffer_size = 2147479552; +SELECT @@global.read_buffer_size; +SET @@global.read_buffer_size = 2147479551; +SELECT @@global.read_buffer_size; + +--echo '#--------------------FN_DYNVARS_138_04-------------------------#' +################################################################################### +# Change the value of read_buffer_size to a valid value for SESSION Scope # +################################################################################### + +SET @@session.read_buffer_size = 8200; +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +SET @@session.read_buffer_size = 8201; +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +SET @@session.read_buffer_size = 2147479552; +SELECT @@session.read_buffer_size; +SET @@session.read_buffer_size = 2147479551; +SELECT @@session.read_buffer_size; + + +--echo '#------------------FN_DYNVARS_138_05-----------------------#' +################################################################## +# Change the value of read_buffer_size to an invalid value # +################################################################## + +SET @@global.read_buffer_size = 8199; +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +SET @@global.read_buffer_size = -1024; +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +SET @@global.read_buffer_size = 2147479553; +SELECT @@global.read_buffer_size; +--Error ER_PARSE_ERROR +SET @@global.read_buffer_size = 65530.34.; +SELECT @@global.read_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.read_buffer_size = test; +SELECT @@global.read_buffer_size; + +SET @@session.read_buffer_size = 8199; +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +SET @@session.read_buffer_size = -2; +SELECT @@session.read_buffer_size= 8200 OR @@session.read_buffer_size= 8228 ; +--Error ER_PARSE_ERROR +SET @@session.read_buffer_size = 65530.34.; +SET @@session.read_buffer_size = 2147479553; +SELECT @@session.read_buffer_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.read_buffer_size = test; +SELECT @@session.read_buffer_size; + + +--echo '#------------------FN_DYNVARS_138_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.read_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='read_buffer_size'; + +--echo '#------------------FN_DYNVARS_138_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.read_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='read_buffer_size'; + + +--echo '#------------------FN_DYNVARS_138_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.read_buffer_size = TRUE; +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +SET @@global.read_buffer_size = FALSE; +SELECT @@global.read_buffer_size= 8200 OR @@global.read_buffer_size= 8228 ; +echo 'Bug: FN_DYNVARS_138_08- Errors are not coming on assigning TRUE/FALSE to variable'; + + +--echo '#---------------------FN_DYNVARS_138_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.read_buffer_size = 9000; +SELECT @@read_buffer_size = @@global.read_buffer_size; + + +--echo '#---------------------FN_DYNVARS_138_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@read_buffer_size = 9000; +SELECT @@read_buffer_size = @@local.read_buffer_size; +SELECT @@local.read_buffer_size = @@session.read_buffer_size; + + +--echo '#---------------------FN_DYNVARS_138_11----------------------#' +################################################################################### +# Check if read_buffer_size can be accessed with and without @@ sign # +################################################################################### + +SET read_buffer_size = 9100; +SELECT @@read_buffer_size= 8200 OR @@read_buffer_size= 8228 ; +--Error ER_UNKNOWN_TABLE +SELECT local.read_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT session.read_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT read_buffer_size = @@session.read_buffer_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.read_buffer_size = @start_global_value; +SELECT @@global.read_buffer_size; +SET @@session.read_buffer_size = @start_session_value; +SELECT @@session.read_buffer_size; + + +############################################################# +# END OF read_buffer_size TESTS # +############################################################# diff --git a/mysql-test/t/read_only_basic.test b/mysql-test/t/read_only_basic.test new file mode 100644 index 00000000000..917842256b1 --- /dev/null +++ b/mysql-test/t/read_only_basic.test @@ -0,0 +1,173 @@ +############## mysql-test\t\read_only_basic.test ############### +# # +# Variable Name: read_only # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 0 # +# Range: - # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable read_only # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +################################################################ +# START OF read_only TESTS # +################################################################ + + +################################################################ +# Saving initial value of read_only in a temporary variable # +################################################################ + +SET @start_value = @@global.read_only; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_139_01------------------------#' +################################################################ +# Display the DEFAULT value of read_only # +################################################################ + +SET @@global.read_only = 1; +SET @@global.read_only = DEFAULT; +SELECT @@global.read_only; + + +--echo '#---------------------FN_DYNVARS_139_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.read_only = @start_value; +SELECT @@global.read_only = 0; + + +--echo '#--------------------FN_DYNVARS_139_03------------------------#' +################################################################# +# Change the value of read_only to a valid value # +################################################################# + +SET @@global.read_only = 0; +SELECT @@global.read_only; +SET @@global.read_only = 1; +SELECT @@global.read_only; +SET @@global.read_only = TRUE; +SELECT @@global.read_only; +SET @@global.read_only = FALSE; +SELECT @@global.read_only; +SET @@global.read_only = ON; +SELECT @@global.read_only; +SET @@global.read_only = OFF; +SELECT @@global.read_only; + +--echo '#--------------------FN_DYNVARS_139_04-------------------------#' +#################################################################### +# Change the value of read_only to invalid value # +#################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = -1; +SELECT @@global.read_only; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = 4294967296; +SELECT @@global.read_only; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = 10240022115; +SELECT @@global.read_only; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = 10000.01; +SELECT @@global.read_only; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = -1024; +SELECT @@global.read_only; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = 42949672950; +SELECT @@global.read_only; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.read_only = 'test'; +SELECT @@global.read_only; + + +--echo '#-------------------FN_DYNVARS_139_05----------------------------#' +#################################################################### +# Test if accessing session read_only gives error # +#################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.read_only = 0; +SELECT @@read_only; + + +--echo '#----------------------FN_DYNVARS_139_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.read_only = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='read_only'; + +SELECT @@read_only = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='read_only'; + + +--echo '#---------------------FN_DYNVARS_139_07----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.read_only = 1; +SELECT @@read_only = @@global.read_only; + + +--echo '#---------------------FN_DYNVARS_139_08----------------------#' +################################################################### +# Check if read_only can be accessed with and without @@ sign # +################################################################### + +--Error ER_GLOBAL_VARIABLE +SET read_only = 1; +SELECT @@read_only; +--Error ER_PARSE_ERROR +SET local.read_only = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.read_only; +--Error ER_PARSE_ERROR +SET global.read_only = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.read_only; +--Error ER_BAD_FIELD_ERROR +SELECT read_only = @@session.read_only; + + +############################## +# Restore initial value # +############################## + +SET @@global.read_only = @start_value; +SELECT @@global.read_only; + + +################################################################# +# END OF read_only TESTS # +################################################################# + diff --git a/mysql-test/t/read_only_func.test b/mysql-test/t/read_only_func.test new file mode 100644 index 00000000000..5e70a76d1e9 --- /dev/null +++ b/mysql-test/t/read_only_func.test @@ -0,0 +1,149 @@ +############ mysql-test\t\read_only_func.test ################################## +# # +#Variable Name: read_only # +#Scope: SESSION # +#Access Type: Dynamic # +#Data Type: BOOLEAN # +#Default Value: OFF # +#Values: ON, OFF # +# # +# # +#Creation Date: 2008-03-02 # +#Author: Sharique Abdullah # +# # +#Description: Test Cases of Dynamic System Variable "read_only" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +#Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html# +# option_mysqld_read_only # +# # +################################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @default_read_only = @@read_only; + +--echo '#--------------------FN_DYNVARS_140_01-------------------------#' +################################### +#Setting Read only value ON # +################################### + +SET Global read_only=ON; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +################################## +# Creating table # +################################## + + +# creating table +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); + +################################## +# Inserting values # +################################## + + +INSERT into t1(name) values("aaassssssssddddddddffffff"); + +################################### +# Updating values # +################################### + +update t1 set name="jfjdf" where id=1; + +############################################### +# Select to see wether value is updated or not# +############################################### + +select * from t1 where id=1; + +--echo '#--------------------FN_DYNVARS_140_02-------------------------#' +######################################### +#Creating user without Super privilege # +######################################### + + +--echo ** Creating new user with out super privilege** +CREATE user sameea; +--echo ** Connecting connn using username 'sameea' ** +CONNECT (connn,localhost,sameea,,); + +--Error ER_SPECIFIC_ACCESS_DENIED_ERROR +SET Global read_ONLY=ON; +--Error ER_OPTION_PREVENTS_STATEMENT +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); + +# With ps-protocol the error is ER_NO_SUCH_TABLE +--echo not updating values +--Error ER_OPTION_PREVENTS_STATEMENT,ER_NO_SUCH_TABLE +INSERT into t2(name) values("aaassssssssddddddddffffff"); + + +--Error ER_OPTION_PREVENTS_STATEMENT,ER_NO_SUCH_TABLE +UPDATE t2 SET name="samia" where id=1; + +--echo '#--------------------FN_DYNVARS_140_03-------------------------#' + +########################### +# Testing temporary table # +########################### +CREATE TEMPORARY TABLE t3(a int); + +--echo '#--------------------FN_DYNVARS_140_04-------------------------#' +########################### +# Turning read_only OFF # +########################### +--echo ** Connection default ** +connection default; + +SET Global read_only=OFF; +--echo ** Connection connn ** +connection connn; + +CREATE TABLE t2 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); +--echo updating values +INSERT into t2(name) values("aaassssssssdddddddd"); + +UPDATE t2 SET name="samia" where id=1; + +# +# Cleanup +# +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting connn ** +DISCONNECT connn; + +DROP USER sameea; + +DROP TABLE t1; +DROP TABLE t2; +SET global read_only = @default_read_only; + +--disable_info +--enable_warnings diff --git a/mysql-test/t/read_rnd_buffer_size_basic.test b/mysql-test/t/read_rnd_buffer_size_basic.test new file mode 100644 index 00000000000..e3d2a4b89f7 --- /dev/null +++ b/mysql-test/t/read_rnd_buffer_size_basic.test @@ -0,0 +1,209 @@ +############## mysql-test\t\read_rnd_buffer_size_basic.test ############### +# # +# Variable Name: read_rnd_buffer_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:262144 # +# Range: 8200-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable read_rnd_buffer_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +###################################################################### +# START OF read_rnd_buffer_size TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.read_rnd_buffer_size; +SELECT @start_global_value; +SET @start_session_value = @@session.read_rnd_buffer_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_140_01-------------------------#' +###################################################################### +# Display the DEFAULT value of read_rnd_buffer_size # +###################################################################### + +SET @@global.read_rnd_buffer_size = 1000; +SET @@global.read_rnd_buffer_size = DEFAULT; +SELECT @@global.read_rnd_buffer_size; + +SET @@session.read_rnd_buffer_size = 2000; +SET @@session.read_rnd_buffer_size = DEFAULT; +SELECT @@session.read_rnd_buffer_size; + + +--echo '#--------------------FN_DYNVARS_140_02-------------------------#' +###################################################################### +# Check the DEFAULT value of read_rnd_buffer_size # +###################################################################### + +SET @@global.read_rnd_buffer_size = DEFAULT; +SELECT @@global.read_rnd_buffer_size = 262144; + +SET @@session.read_rnd_buffer_size = DEFAULT; +SELECT @@session.read_rnd_buffer_size = 262144; +--echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; + + +--echo '#--------------------FN_DYNVARS_140_03-------------------------#' +################################################################################ +# Change the value of read_rnd_buffer_size to a valid value for GLOBAL Scope # +################################################################################ + +SET @@global.read_rnd_buffer_size = 8201; +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +SET @@global.read_rnd_buffer_size = 8200; +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +SET @@global.read_rnd_buffer_size = 2147479552; +SELECT @@global.read_rnd_buffer_size; +SET @@global.read_rnd_buffer_size = 2147479551; +SELECT @@global.read_rnd_buffer_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_140_04-------------------------#' +################################################################################### +# Change the value of read_rnd_buffer_size to a valid value for SESSION Scope # +################################################################################### + +SET @@session.read_rnd_buffer_size = 8200; +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +SET @@session.read_rnd_buffer_size = 8201; +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +SET @@session.read_rnd_buffer_size = 2147479552; +SELECT @@session.read_rnd_buffer_size; +SET @@session.read_rnd_buffer_size = 2147479551; +SELECT @@session.read_rnd_buffer_size; + + +--echo '#------------------FN_DYNVARS_140_05-----------------------#' +################################################################## +# Change the value of read_rnd_buffer_size to an invalid value # +################################################################## + +SET @@global.read_rnd_buffer_size = 8199; +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +SET @@global.read_rnd_buffer_size = -1024; +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +SET @@global.read_rnd_buffer_size = 2147479553; +SELECT @@global.read_rnd_buffer_size; +--Error ER_PARSE_ERROR +SET @@global.read_rnd_buffer_size = 65530.34.; +SELECT @@global.read_rnd_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.read_rnd_buffer_size = test; +SELECT @@global.read_rnd_buffer_size; + +SET @@session.read_rnd_buffer_size = 8199; +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +SET @@session.read_rnd_buffer_size = -2; +SELECT @@session.read_rnd_buffer_size= 8200 OR @@session.read_rnd_buffer_size= 8228; +--Error ER_PARSE_ERROR +SET @@session.read_rnd_buffer_size = 65530.34.; +SET @@session.read_rnd_buffer_size = 2147479553; +SELECT @@session.read_rnd_buffer_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.read_rnd_buffer_size = test; +SELECT @@session.read_rnd_buffer_size; + + +--echo '#------------------FN_DYNVARS_140_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.read_rnd_buffer_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size'; + +--echo '#------------------FN_DYNVARS_140_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.read_rnd_buffer_size = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='read_rnd_buffer_size'; + + +--echo '#------------------FN_DYNVARS_140_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.read_rnd_buffer_size = TRUE; +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; +SET @@global.read_rnd_buffer_size = FALSE; +SELECT @@global.read_rnd_buffer_size= 8200 OR @@global.read_rnd_buffer_size= 8228; + + +--echo '#---------------------FN_DYNVARS_140_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.read_rnd_buffer_size = 9000; +SELECT @@read_rnd_buffer_size = @@global.read_rnd_buffer_size; + + +--echo '#---------------------FN_DYNVARS_140_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@read_rnd_buffer_size = 9000; +SELECT @@read_rnd_buffer_size = @@local.read_rnd_buffer_size; +SELECT @@local.read_rnd_buffer_size = @@session.read_rnd_buffer_size; + + +--echo '#---------------------FN_DYNVARS_140_11----------------------#' +################################################################################### +# Check if read_rnd_buffer_size can be accessed with and without @@ sign # +################################################################################### + +SET read_rnd_buffer_size = 9100; +SELECT @@read_rnd_buffer_size= 8200 OR @@read_rnd_buffer_size= 8228; +--Error ER_UNKNOWN_TABLE +SELECT local.read_rnd_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT session.read_rnd_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT read_rnd_buffer_size = @@session.read_rnd_buffer_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.read_rnd_buffer_size = @start_global_value; +SELECT @@global.read_rnd_buffer_size; +SET @@session.read_rnd_buffer_size = @start_session_value; +SELECT @@session.read_rnd_buffer_size; + + +############################################################# +# END OF read_rnd_buffer_size TESTS # +############################################################# diff --git a/mysql-test/t/relay_log_purge_basic.test b/mysql-test/t/relay_log_purge_basic.test new file mode 100644 index 00000000000..9c9c18fc9e9 --- /dev/null +++ b/mysql-test/t/relay_log_purge_basic.test @@ -0,0 +1,163 @@ +############## mysql-test\t\relay_log_purge_basic.test ######################## +# # +# Variable Name: relay_log_purge # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: TRUE # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable relay_log_purge # +# 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#option_mysqld_relay_log_purge # +# # +############################################################################### + +--source include/load_sysvars.inc + +##################################################################### +# START OF relay_log_purge TESTS # +##################################################################### + + +####################################################################### +# Saving initial value of relay_log_purge in a temporary variable # +####################################################################### + +SET @start_value = @@global.relay_log_purge; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_141_01------------------------#' +############################################################# +# Display the DEFAULT value of relay_log_purge # +############################################################# + +SET @@global.relay_log_purge = FALSE; +SET @@global.relay_log_purge = DEFAULT; +SELECT @@global.relay_log_purge; + + +--echo '#---------------------FN_DYNVARS_141_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.relay_log_purge = @start_value; +SELECT @@global.relay_log_purge = TRUE; + + +--echo '#--------------------FN_DYNVARS_141_03------------------------#' +############################################################# +# Change the value of relay_log_purge to a valid value # +############################################################# + +SET @@global.relay_log_purge = ON; +SELECT @@global.relay_log_purge; +SET @@global.relay_log_purge = OFF; +SELECT @@global.relay_log_purge; +SET @@global.relay_log_purge = 0; +SELECT @@global.relay_log_purge; +SET @@global.relay_log_purge = 1; +SELECT @@global.relay_log_purge; +SET @@global.relay_log_purge = TRUE; +SELECT @@global.relay_log_purge; +SET @@global.relay_log_purge = FALSE; +SELECT @@global.relay_log_purge; + +--echo '#--------------------FN_DYNVARS_141_04-------------------------#' +########################################################################### +# Change the value of relay_log_purge to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.relay_log_purge = ''; + + +--echo '#-------------------FN_DYNVARS_141_05----------------------------#' +########################################################################### +# Test if accessing session relay_log_purge gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.relay_log_purge = 1; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.relay_log_purge; + + +--echo '#----------------------FN_DYNVARS_141_06------------------------#' +##################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +##################################################################### + +SELECT @@global.relay_log_purge = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='relay_log_purge'; + +--echo '#---------------------FN_DYNVARS_141_07----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same session variable # +############################################################################### + +SET @@global.relay_log_purge = 1; +SELECT @@relay_log_purge = @@global.relay_log_purge; + + +--echo '#---------------------FN_DYNVARS_141_08----------------------#' +########################################################################## +# Check if relay_log_purge can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET relay_log_purge = 1; +--Error ER_PARSE_ERROR +SET global.relay_log_purge = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.relay_log_purge; +--Error ER_BAD_FIELD_ERROR +SELECT relay_log_purge = @@session.relay_log_purge; + + +############################## +# Restore initial value # +############################## + +SET @@global.relay_log_purge = @start_value; +SELECT @@global.relay_log_purge; + + +############################################################# +# END OF relay_log_purge TESTS # +############################################################# diff --git a/mysql-test/t/rpl_init_slave_func-slave.opt b/mysql-test/t/rpl_init_slave_func-slave.opt new file mode 100644 index 00000000000..337e8a60d97 --- /dev/null +++ b/mysql-test/t/rpl_init_slave_func-slave.opt @@ -0,0 +1 @@ +--init-slave="set global max_connections=500" diff --git a/mysql-test/t/rpl_init_slave_func.test b/mysql-test/t/rpl_init_slave_func.test new file mode 100644 index 00000000000..b3d647f4394 --- /dev/null +++ b/mysql-test/t/rpl_init_slave_func.test @@ -0,0 +1,96 @@ +###################### mysql-test\t\init_slave_func.test ##################### +# # +# Variable Name: init_slave # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable init_slave # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +source include/master-slave.inc; + +--echo '#--------------------FN_DYNVARS_037_01-------------------------#' +################################################################## +# Check if setting init_slave is changed in every new connection # +################################################################## + +SET @@global.init_slave = "SET @a = 10"; + +--echo 'connect (con1,localhost,root,,)' +connect (con1,localhost,root,,); +--echo 'connection con1' +connection con1; +SELECT @@global.init_slave; +disconnect con1; +--echo 'connection master' +connection master; + +--echo '#--------------------FN_DYNVARS_037_02-------------------------#' +#################################################### +# Begin the functionality Testing of init_slave # +#################################################### + +#==================================================== +--echo 'check if value in slave opt file is executed' +#==================================================== +save_master_pos; +--echo 'connection slave' +connection slave; +sleep 1; +show variables like 'init_slave'; +show variables like 'max_connections'; +sync_with_master; +reset master; + +#=============================================================== +--echo 'check if value in slave opt file doesnt apply to master' +#=============================================================== + +--echo 'connection master' +connection master; +show variables like 'init_slave'; +show variables like 'max_connections'; +save_master_pos; +--echo 'connection slave' +connection slave; +sync_with_master; + +#======================================================= +--echo 'try creating a temporary variable in init_slave' +#======================================================= + +SET @@global.init_slave = "SET @a=5"; + +stop slave; +--wait_for_slave_to_stop +reset slave; +# Clean up old test tables +--disable_warnings +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +--enable_warnings +start slave; + +SHOW VARIABLES LIKE 'init_slave'; +SELECT @a; + +--echo 'Bug#35365 SET statement in init_slave not execute if slave is restarted' + +# Restore value +set global max_connections= default; + +################################################## +# End of functionality Testing for init_slave # +################################################## + diff --git a/mysql-test/t/rpl_max_binlog_size_func-master.opt b/mysql-test/t/rpl_max_binlog_size_func-master.opt new file mode 100644 index 00000000000..bff213dfb0b --- /dev/null +++ b/mysql-test/t/rpl_max_binlog_size_func-master.opt @@ -0,0 +1,2 @@ +--log --log-bin=mylog.log + diff --git a/mysql-test/t/rpl_max_binlog_size_func.test b/mysql-test/t/rpl_max_binlog_size_func.test new file mode 100644 index 00000000000..224d12193a8 --- /dev/null +++ b/mysql-test/t/rpl_max_binlog_size_func.test @@ -0,0 +1,37 @@ +source include/have_log_bin.inc; + +############################################################################### +# Begin the functionality testing of max_binlog_size # +############################################################################### +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + + +#============================================================== +--echo '--- check if log file is rotated after 4096 bytes ----' +#============================================================== + +SET @@global.max_binlog_size = 4096; +CREATE TABLE t1(a CHAR(5)); + +# around 50 records are required to rotate bin log +let $a = 50; +--disable_query_log +while ($a){ +INSERT INTO t1 VALUES ('mysql'); +dec $a; +} +--enable_query_log + +--sleep 2 + +# if log file is not created then this will fail +--file_exists var/master-data/mylog.000002 + +--echo 'mylog.000002 exists' + +############################################################################### +# End of functionality testing for max_binlog_size # +############################################################################### + diff --git a/mysql-test/t/secure_auth_basic.test b/mysql-test/t/secure_auth_basic.test new file mode 100644 index 00000000000..b52f219097b --- /dev/null +++ b/mysql-test/t/secure_auth_basic.test @@ -0,0 +1,170 @@ +################ mysql-test\t\secure_auth_basic.test ########################## +# # +# Variable Name: secure_auth # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Valid Values: TRUE, FALSE # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable secure_auth # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF secure_auth TESTS # +######################################################################## + + +############################################################################### +# Saving initial value of secure_auth in a temporary variable # +############################################################################### + +SET @global_start_value = @@global.secure_auth; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_143_01------------------------#' +######################################################################## +# Display the DEFAULT value of secure_auth # +######################################################################## + +SET @@global.secure_auth = 1; +SET @@global.secure_auth = DEFAULT; +SELECT @@global.secure_auth; + +--echo '#---------------------FN_DYNVARS_143_02-------------------------#' +############################################################################# +# Check if secure_auth can be accessed with and without @@ sign # +############################################################################# + +--Error ER_GLOBAL_VARIABLE +SET secure_auth = 1; +SELECT @@secure_auth; +--Error ER_UNKNOWN_TABLE +SELECT global.secure_auth; + +SET global secure_auth = 1; +SELECT @@global.secure_auth; + + +--echo '#--------------------FN_DYNVARS_143_03------------------------#' +######################################################################## +# Change the value of secure_auth to a valid value # +######################################################################## + +SET @@global.secure_auth = 0; +SELECT @@global.secure_auth; +SET @@global.secure_auth = 1; +SELECT @@global.secure_auth; + + +--echo '#--------------------FN_DYNVARS_143_04-------------------------#' +########################################################################### +# Change the value of secure_auth to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = YES; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = OOF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = ' 1'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.secure_auth = NO; + + +--echo '#-------------------FN_DYNVARS_143_05----------------------------#' +########################################################################### +# Test if accessing session secure_auth gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.secure_auth = 0; +--Error ER_GLOBAL_VARIABLE +SET @@secure_auth = 0; +--Error ER_GLOBAL_VARIABLE +SET @@local.secure_auth = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.secure_auth; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.secure_auth; + +--echo '#----------------------FN_DYNVARS_143_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='secure_auth'; + + +--echo '#----------------------FN_DYNVARS_143_07------------------------#' +######################################################################## +# Check if the value in GLOBAL Table matches value in variable # +######################################################################## + +SELECT @@global.secure_auth = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='secure_auth'; +SELECT @@global.secure_auth; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='secure_auth'; + +--echo '#---------------------FN_DYNVARS_143_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@global.secure_auth = OFF; +SELECT @@global.secure_auth; +SET @@global.secure_auth = ON; +SELECT @@global.secure_auth; + +--echo '#---------------------FN_DYNVARS_143_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.secure_auth = TRUE; +SELECT @@global.secure_auth; +SET @@global.secure_auth = FALSE; +SELECT @@global.secure_auth; + +############################## +# Restore initial value # +############################## + +SET @@global.secure_auth = @global_start_value; +SELECT @@global.secure_auth; + +############################################################### +# END OF secure_auth TESTS # +############################################################### diff --git a/mysql-test/t/secure_auth_func-master.opt b/mysql-test/t/secure_auth_func-master.opt new file mode 100644 index 00000000000..38ba956df15 --- /dev/null +++ b/mysql-test/t/secure_auth_func-master.opt @@ -0,0 +1,2 @@ +--secure-auth + diff --git a/mysql-test/t/secure_auth_func.test b/mysql-test/t/secure_auth_func.test new file mode 100644 index 00000000000..24db2708986 --- /dev/null +++ b/mysql-test/t/secure_auth_func.test @@ -0,0 +1,130 @@ +############# mysql-test\t\secure_auth_func.test ########################## +# # +# Variable Name: secure_auth # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Values: TRUE / 1, FALSE / 0 # +# # +# # +# Creation Date: 2008-02-22 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "secure_auth " # +# that checks behavior of this variable in the following ways# +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Cache behaviors # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_secure_auth # +# # +########################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +# +# Save initial value +# + +SET @old_secure_auth = @@GLOBAL.secure_auth; + +--echo '#--------------------FN_DYNVARS_144_01-------------------------#' +# +# Testing command line option value +# + +SELECT @@GLOBAL.secure_auth; +--echo 1 / ON Expected + +--echo '#--------------------FN_DYNVARS_144_02-------------------------#' +# +# Value OFF +# +SET GLOBAL secure_auth = OFF; + +# +# Creating user with password in NEW format +# +CREATE USER 'testUser'@'localhost' IDENTIFIED BY 'newpass'; + +--echo ** Connecting con_user1 using testUser ** +connect (con_user1,localhost,testUser,newpass,); + +--echo ** Connection default** +connection default; + +# +# Setting password in OLD format +# +SET PASSWORD FOR 'testUser'@'localhost' = OLD_PASSWORD('newpass'); + +--echo ** Connecting con_user2 using testUser ** +connect (con_user2,localhost,testUser,newpass,); + +--echo ** Connection default** +connection default; + +--echo '#--------------------FN_DYNVARS_144_03-------------------------#' +# +# Value ON +# +SET GLOBAL secure_auth = ON; + +# +# Setting password in NEW format +# +SET PASSWORD FOR 'testUser'@'localhost' = PASSWORD('newpass'); + +--echo ** Connecting con_user3 using testUser ** +connect (con_user3,localhost,testUser,newpass,); +--echo ** Connection default ** +connection default; + +# +# Setting password in OLD format +# +SET PASSWORD FOR 'testUser'@'localhost' = OLD_PASSWORD('newpass'); + +--echo ** Connecting con_user4 using testUser ** +--disable_query_log +--error ER_SERVER_IS_IN_SECURE_AUTH_MODE +connect (con_user4,localhost,testUser,newpass,); +--enable_query_log +--echo Expected error "Server is in secure auth mode" + +--echo ** Connection default** +connection default; + +# +# Setting password back in NEW format +# +SET PASSWORD FOR 'testUser'@'localhost' = PASSWORD('newpass'); + +--echo ** Connecting con_user4 using testUser ** +connect (con_user4,localhost,testUser,newpass,); + +--echo ** Connection default ** +connection default; + +# +# Cleanup +# + +SET GLOBAL secure_auth = @old_secure_auth; + +--echo Disconnecting Connections con_user1, con_user2, con_user3, con_user4 +disconnect con_user1; +disconnect con_user2; +disconnect con_user3; +disconnect con_user4; + +REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'testUser'@'localhost'; + +DROP USER 'testUser'@'localhost'; diff --git a/mysql-test/t/slave_allow_batching_basic.test b/mysql-test/t/slave_allow_batching_basic.test new file mode 100644 index 00000000000..cf31917933a --- /dev/null +++ b/mysql-test/t/slave_allow_batching_basic.test @@ -0,0 +1,167 @@ +############## mysql-test\t\slave_allow_batching_basic.test #################### +# # +# Variable Name: slave_allow_batching # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable slave_allow_batching # +# 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 # +# # +################################################################################ + +--source include/load_sysvars.inc + +######################################################################## +# START OF slave_allow_batching TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of slave_allow_batching in a temporary variable # +################################################################################ + +--Error ER_UNKNOWN_SYSTEM_VARIABLE +SET @global_start_value = @@global.slave_allow_batching; + +--echo 'Bug: This variable is not supported in mysql version 5.1.22' + +--echo '#--------------------FN_DYNVARS_145_01------------------------#' +######################################################################## +# Display the DEFAULT value of slave_allow_batching # +######################################################################## + +#SET @@global.slave_allow_batching = 1; +#SET @@global.slave_allow_batching = DEFAULT; +#SELECT @@global.slave_allow_batching; + +--echo '#---------------------FN_DYNVARS_145_02-------------------------#' +############################################################################# +# Check if slave_allow_batching can be accessed with and without @@ sign # +############################################################################# + +#--Error ER_GLOBAL_VARIABLE +#SET slave_allow_batching = 1; +#SELECT @@slave_allow_batching; +#--Error ER_UNKNOWN_TABLE +#SELECT global.slave_allow_batching; +# +#SET global slave_allow_batching = 1; +#SELECT @@global.slave_allow_batching; + + +--echo '#--------------------FN_DYNVARS_145_03------------------------#' +######################################################################## +# Change the value of slave_allow_batching to a valid value # +######################################################################## + +#SET @@global.slave_allow_batching = 0; +#SELECT @@global.slave_allow_batching; +#SET @@global.slave_allow_batching = 1; +#SELECT @@global.slave_allow_batching; + + +--echo '#--------------------FN_DYNVARS_145_04-------------------------#' +########################################################################### +# Change the value of slave_allow_batching to invalid value # +########################################################################### + +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = -1; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = 2; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = "T"; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = "Y"; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = YES; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = ONN; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = OOF; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = 0FF; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = ' 1'; +#--Error ER_WRONG_VALUE_FOR_VAR +#SET @@global.slave_allow_batching = NO; + + +--echo '#-------------------FN_DYNVARS_145_05----------------------------#' +########################################################################### +# Test if accessing session slave_allow_batching gives error # +########################################################################### + +#--Error ER_GLOBAL_VARIABLE +#SET @@session.slave_allow_batching = 0; +#--Error ER_GLOBAL_VARIABLE +#SET @@slave_allow_batching = 0; +#--Error ER_GLOBAL_VARIABLE +#SET @@local.slave_allow_batching = 0; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SELECT @@session.slave_allow_batching; +#--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +#SELECT @@local.slave_allow_batching; + +--echo '#----------------------FN_DYNVARS_145_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +#SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='slave_allow_batching'; + + +--echo '#----------------------FN_DYNVARS_145_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +#SELECT @@global.slave_allow_batching = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='slave_allow_batching'; +#SELECT @@global.slave_allow_batching; +#SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='slave_allow_batching'; +#--echo 'Bug: value in information schema does not match' + +--echo '#---------------------FN_DYNVARS_145_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +#SET @@global.slave_allow_batching = OFF; +#SELECT @@global.slave_allow_batching; +#SET @@global.slave_allow_batching = ON; +#SELECT @@global.slave_allow_batching; + +--echo '#---------------------FN_DYNVARS_145_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +#SET @@global.slave_allow_batching = TRUE; +#SELECT @@global.slave_allow_batching; +#SET @@global.slave_allow_batching = FALSE; +#SELECT @@global.slave_allow_batching; + +############################## +# Restore initial value # +############################## + +#SET @@global.slave_allow_batching = @global_start_value; +#SELECT @@global.slave_allow_batching; + +############################################################### +# END OF slave_allow_batching TESTS # +############################################################### diff --git a/mysql-test/t/slave_compressed_protocol_basic.test b/mysql-test/t/slave_compressed_protocol_basic.test new file mode 100644 index 00000000000..16428cea551 --- /dev/null +++ b/mysql-test/t/slave_compressed_protocol_basic.test @@ -0,0 +1,166 @@ +############# mysql-test\t\slave_compressed_protocol_basic.test ############### +# # +# Variable Name: slave_compressed_protocol # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Range: TRUE, FALSE # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable slave_compressed_protocol# +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF slave_compressed_protocol TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of slave_compressed_protocol in a temporary variable # +############################################################################## + +SET @global_start_value = @@global.slave_compressed_protocol; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_147_01------------------------#' +######################################################################## +# Display the DEFAULT value of slave_compressed_protocol # +######################################################################## + +SET @@global.slave_compressed_protocol = 1; +SET @@global.slave_compressed_protocol = DEFAULT; +SELECT @@global.slave_compressed_protocol; + +--echo '#---------------------FN_DYNVARS_147_02-------------------------#' +############################################################################### +# Check if slave_compressed_protocol can be accessed with and without @@ sign # +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET slave_compressed_protocol = 1; +SELECT @@slave_compressed_protocol; +--Error ER_UNKNOWN_TABLE +SELECT global.slave_compressed_protocol; + +SET global slave_compressed_protocol = 1; +SELECT @@global.slave_compressed_protocol; + + +--echo '#--------------------FN_DYNVARS_147_03------------------------#' +######################################################################## +# Change the value of slave_compressed_protocol to a valid value # +######################################################################## + +SET @@global.slave_compressed_protocol = 0; +SELECT @@global.slave_compressed_protocol; +SET @@global.slave_compressed_protocol = 1; +SELECT @@global.slave_compressed_protocol; + + +--echo '#--------------------FN_DYNVARS_147_04-------------------------#' +########################################################################### +# Change the value of slave_compressed_protocol to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = "1.00"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = YES; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = ' 1'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slave_compressed_protocol = NO; + + +--echo '#-------------------FN_DYNVARS_147_05----------------------------#' +########################################################################### +# Test if accessing session slave_compressed_protocol gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.slave_compressed_protocol = 0; +--Error ER_GLOBAL_VARIABLE +SET @@slave_compressed_protocol = 0; +--Error ER_GLOBAL_VARIABLE +SET @@local.slave_compressed_protocol = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.slave_compressed_protocol; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.slave_compressed_protocol; + +--echo '#----------------------FN_DYNVARS_147_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_compressed_protocol'; + +--echo '#----------------------FN_DYNVARS_147_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.slave_compressed_protocol = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_compressed_protocol'; +SELECT @@global.slave_compressed_protocol; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_compressed_protocol'; + +--echo '#---------------------FN_DYNVARS_147_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@global.slave_compressed_protocol = OFF; +SELECT @@global.slave_compressed_protocol; +SET @@global.slave_compressed_protocol = ON; +SELECT @@global.slave_compressed_protocol; + +--echo '#---------------------FN_DYNVARS_147_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.slave_compressed_protocol = TRUE; +SELECT @@global.slave_compressed_protocol; +SET @@global.slave_compressed_protocol = FALSE; +SELECT @@global.slave_compressed_protocol; + +############################## +# Restore initial value # +############################## + +SET @@global.slave_compressed_protocol = @global_start_value; +SELECT @@global.slave_compressed_protocol; + +############################################################### +# END OF slave_compressed_protocol TESTS # +############################################################### diff --git a/mysql-test/t/slave_exec_mode_basic.test b/mysql-test/t/slave_exec_mode_basic.test new file mode 100644 index 00000000000..5c5b4e7da1b --- /dev/null +++ b/mysql-test/t/slave_exec_mode_basic.test @@ -0,0 +1,41 @@ +############## mysql-test\t\slave_exec_mode_basic.test ######################### +# # +# Variable Name: slave_exec_mode # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable slave_exec_mode # +# 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 # +# # +################################################################################ + +--source include/load_sysvars.inc + +######################################################################## +# START OF slave_exec_mode TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of slave_exec_mode in a temporary variable # +######################################################################## +SET @start_value = @@global.slave_exec_mode; +--echo 'This variable is not supported in version 5.1.22. It is introduced in 5.1.24' + +######################################################################## +# END OF slave_exec_mode TESTS # +######################################################################## diff --git a/mysql-test/t/slave_net_timeout_basic.test b/mysql-test/t/slave_net_timeout_basic.test new file mode 100644 index 00000000000..0e4bd12ceea --- /dev/null +++ b/mysql-test/t/slave_net_timeout_basic.test @@ -0,0 +1,186 @@ +################## mysql-test\t\slave_net_timeout_basic.test ################## +# # +# Variable Name: slave_net_timeout # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 3600 # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable slave_net_timeout # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +########################################################### +# START OF slave_net_timeout TESTS # +########################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.slave_net_timeout; +SELECT @start_global_value; + +--echo '#--------------------FN_DYNVARS_146_01-------------------------#' +########################################################### +# Display the DEFAULT value of slave_net_timeout # +########################################################### + +SET @@global.slave_net_timeout = 500000; +SET @@global.slave_net_timeout = DEFAULT; +SELECT @@global.slave_net_timeout; + +--echo '#--------------------FN_DYNVARS_146_02-------------------------#' +############################################################ +# Check the DEFAULT value of slave_net_timeout # +############################################################ + +SET @@global.slave_net_timeout = DEFAULT; +SELECT @@global.slave_net_timeout = 3600; + +--echo '#--------------------FN_DYNVARS_146_03-------------------------#' +########################################################################### +# Change the value of slave_net_timeout to a valid value for GLOBAL Scope # +########################################################################### + +SET @@global.slave_net_timeout = 0; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = 1; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = 15; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = 1024; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = 3600+1; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = 2147483648; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = 2147483648*2-1; +SELECT @@global.slave_net_timeout; + + +--echo '#--------------------FN_DYNVARS_146_04-------------------------#' +############################################################################### +# Check if variable can be access with session scope # +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@slave_net_timeout = 2; + +--Error ER_GLOBAL_VARIABLE +SET @@session.slave_net_timeout = 3; + +--Error ER_GLOBAL_VARIABLE +SET @@local.slave_net_timeout = 4; + + + +--echo '#------------------FN_DYNVARS_146_05-----------------------#' +############################################################# +# Change the value of slave_net_timeout to an invalid value # +############################################################# + +SET @@global.slave_net_timeout = -1; +SELECT @@global.slave_net_timeout; + +SET @@global.slave_net_timeout = -2147483648; +SELECT @@global.slave_net_timeout; + +SET @@global.slave_net_timeout = 2147483649*2; +SELECT @@global.slave_net_timeout; + +--Error ER_PARSE_ERROR +SET @@global.slave_net_timeout = 65530.34.; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_net_timeout = 100s; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_net_timeout = 7483649.56; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_net_timeout = 0.6; + +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#------------------FN_DYNVARS_146_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SET @@global.slave_net_timeout = 3000; +SELECT @@global.slave_net_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_net_timeout'; + + +--echo '#------------------FN_DYNVARS_146_07-----------------------#' +########################################################################### +# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # +########################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_net_timeout'; + + +--echo '#------------------FN_DYNVARS_146_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.slave_net_timeout = TRUE; +SELECT @@global.slave_net_timeout; +SET @@global.slave_net_timeout = FALSE; +SELECT @@global.slave_net_timeout; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +############################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +############################################################################### + + +SET @@global.slave_net_timeout = 60*60; +SELECT @@slave_net_timeout = @@global.slave_net_timeout; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +########################################################################## +# Check if slave_net_timeout can be accessed without @@ sign and scope # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET slave_net_timeout = 2048; +--Error ER_BAD_FIELD_ERROR +SELECT slave_net_timeout; + +SELECT @@slave_net_timeout; + +#verifying another another syntax for setting value +SET global slave_net_timeout = 99; + +#################################### +# Restore initial value # +#################################### + +SET @@global.slave_net_timeout = @start_global_value; +SELECT @@global.slave_net_timeout; + +################################################ +# END OF slave_net_timeout TESTS # +################################################ + diff --git a/mysql-test/t/slow_launch_time_basic.test b/mysql-test/t/slow_launch_time_basic.test new file mode 100644 index 00000000000..6289a91abb3 --- /dev/null +++ b/mysql-test/t/slow_launch_time_basic.test @@ -0,0 +1,177 @@ +############## mysql-test\t\slow_launch_time_basic.test ############### +# # +# Variable Name: slow_launch_time # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 2 # +# Range: - # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable slow_launch_time # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF slow_launch_time TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of slow_launch_time in a temporary variable # +######################################################################## + +SET @start_value = @@global.slow_launch_time; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_150_01------------------------#' +######################################################################## +# Display the DEFAULT value of slow_launch_time # +######################################################################## + +SET @@global.slow_launch_time = 99; +SET @@global.slow_launch_time = DEFAULT; +SELECT @@global.slow_launch_time; + + +--echo '#---------------------FN_DYNVARS_150_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.slow_launch_time = @start_value; +SELECT @@global.slow_launch_time = 2; + + +--echo '#--------------------FN_DYNVARS_150_03------------------------#' +######################################################################## +# Change the value of slow_launch_time to a valid value # +######################################################################## + +SET @@global.slow_launch_time = 0; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 1; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 31536000; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 31535999; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 65536; +SELECT @@global.slow_launch_time; + +--echo '#--------------------FN_DYNVARS_150_04-------------------------#' +########################################################################### +# Change the value of slow_launch_time to invalid value # +########################################################################### + +SET @@global.slow_launch_time = -1; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 31536001; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 10240022115; +SELECT @@global.slow_launch_time; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slow_launch_time = 10000.01; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = -1024; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = 42949672950; +SELECT @@global.slow_launch_time; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slow_launch_time = ON; +SELECT @@global.slow_launch_time; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slow_launch_time = 'test'; +SELECT @@global.slow_launch_time; + + +--echo '#-------------------FN_DYNVARS_150_05----------------------------#' +########################################################################### +# Test if accessing session slow_launch_time gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.slow_launch_time = 0; +SELECT @@slow_launch_time; + + +--echo '#----------------------FN_DYNVARS_150_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.slow_launch_time = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slow_launch_time'; + +SELECT @@slow_launch_time = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slow_launch_time'; + + +--echo '#---------------------FN_DYNVARS_150_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.slow_launch_time = TRUE; +SELECT @@global.slow_launch_time; +SET @@global.slow_launch_time = FALSE; +SELECT @@global.slow_launch_time; + + +--echo '#---------------------FN_DYNVARS_150_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.slow_launch_time = 1; +SELECT @@slow_launch_time = @@global.slow_launch_time; + + +--echo '#---------------------FN_DYNVARS_150_09----------------------#' +########################################################################## +# Check if slow_launch_time can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET slow_launch_time = 1; +SELECT @@slow_launch_time; +--Error ER_PARSE_ERROR +SET local.slow_launch_time = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.slow_launch_time; +--Error ER_PARSE_ERROR +SET global.slow_launch_time = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.slow_launch_time; +--Error ER_BAD_FIELD_ERROR +SELECT slow_launch_time = @@session.slow_launch_time; + + +############################## +# Restore initial value # +############################## + +SET @@global.slow_launch_time = @start_value; +SELECT @@global.slow_launch_time; + + +######################################################################## +# END OF slow_launch_time TESTS # +######################################################################## diff --git a/mysql-test/t/slow_launch_time_func.test b/mysql-test/t/slow_launch_time_func.test new file mode 100644 index 00000000000..31a9567a239 --- /dev/null +++ b/mysql-test/t/slow_launch_time_func.test @@ -0,0 +1,107 @@ +############# mysql-test\t\SLOW_LAUNCH_time_func.test ########################## +# # +# Variable Name: slow_launch_time # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: NUMERIC # +# Default Value: 2 # +# Values: - # +# # +# # +# Creation Date: 2008-03-02 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "slow_launch_time " # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +#Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html# +# option_mysqld_slow_launch_time # +# # +################################################################################ + +# +# Setup +# + +SET @global_slow_launch_time = @@GLOBAL.slow_launch_time; + + +--echo '#--------------------FN_DYNVARS_124_01-------------------------#' + +##################################### +# Increase number of connection # +##################################### + +--echo ** Connection default ** +connection default; + +SET @@GLOBAL.slow_launch_time=0; +SELECT @@GLOBAL.slow_launch_time; + +--echo ** Connecting conn5 using username 'root' ** +CONNECT (conn5,localhost,root,,); +--echo ** Connecting conn6 using username 'root' ** +CONNECT (conn6,localhost,root,,); +--echo ** Connecting conn7 using username 'root' ** +CONNECT (conn7,localhost,root,,); +--echo ** Connecting conn8 using username 'root' ** +CONNECT (conn8,localhost,root,,); +--echo ** Connecting conn9 using username 'root' ** +CONNECT (conn9,localhost,root,,); +--echo ** Connecting conn10 using username 'root' ** +CONNECT (conn10,localhost,root,,); +--echo ** Connecting conn11 using username 'root' ** +CONNECT (conn11,localhost,root,,); +--echo ** Connecting conn12 using username 'root' ** +CONNECT (conn12,localhost,root,,); +--echo ** Connecting conn13 using username 'root' ** +CONNECT (conn13,localhost,root,,); +--echo ** Connecting conn14 using username 'root' ** +CONNECT (conn14,localhost,root,,); +--echo ** Connecting conn15 using username 'root' ** +CONNECT (conn15,localhost,root,,); +--echo ** Connecting conn16 using username 'root' ** +CONNECT (conn16,localhost,root,,); + + +# +# Checking status of slow_launch_threads +# + +show status like 'slow_launch_threads'; +--echo 12 Expected + +# +# Cleanup +# + +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting conn5 ** +disconnect conn5; +--echo ** Disconnecting conn6 ** +disconnect conn6; +--echo ** Disconnecting conn7 ** +disconnect conn7; +--echo ** Disconnecting conn8 ** +disconnect conn8; +--echo ** Disconnecting conn9 ** +disconnect conn9; +--echo ** Disconnecting conn10 ** +disconnect conn10; +--echo ** Disconnecting conn11 ** +disconnect conn11; +--echo ** Disconnecting conn12 ** +disconnect conn12; +--echo ** Disconnecting conn13 ** +disconnect conn13; +--echo ** Disconnecting conn14 ** +disconnect conn14; +--echo ** Disconnecting conn15 ** +disconnect conn15; +--echo ** Disconnecting conn16 ** +disconnect conn16; + +SET @@GLOBAL.slow_launch_time = @global_slow_launch_time; diff --git a/mysql-test/t/slow_query_log_basic.test b/mysql-test/t/slow_query_log_basic.test new file mode 100644 index 00000000000..3a1b2fbd9e7 --- /dev/null +++ b/mysql-test/t/slow_query_log_basic.test @@ -0,0 +1,170 @@ +##################### mysql-test\t\slow_query_log_basic.test ################### +# # +# Variable Name: slow_query_log # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: OFF # +# Valid Values: ON, OFF # +# # +# # +# Creation Date: 2008-03-16 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "slow_query_log" # +# that checks 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-options.html#option_mysqld_event-scheduler # +# # +################################################################################ + +--source include/load_sysvars.inc + +########################################################### +# START OF slow_query_log TESTS # +########################################################### + + +###################################################################### +# Saving initial value of slow_query_log in a temporary variable # +###################################################################### + +SET @start_value = @@global.slow_query_log; +SELECT @start_value; + + +--echo '#---------------------FN_DYNVARS_004_01-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.slow_query_log = DEFAULT; +SELECT @@global.slow_query_log = 0; + + +--echo '#--------------------FN_DYNVARS_004_02------------------------#' +###################################################################### +# Change the value of slow_query_log to a valid value # +###################################################################### + +SET @@global.slow_query_log = ON; +SELECT @@global.slow_query_log; +SET @@global.slow_query_log = OFF; +SELECT @@global.slow_query_log; + +--echo '#--------------------FN_DYNVARS_004_03-------------------------#' +###################################################################### +# Change the value of slow_query_log to invalid value # +###################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log = ''; + + +--echo '#-------------------FN_DYNVARS_004_04----------------------------#' +################################################################## +# Test if accessing session slow_query_log gives error # +################################################################## + +--Error ER_GLOBAL_VARIABLE +SET @@session.slow_query_log = OFF; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.slow_query_log; + + +--echo '#----------------------FN_DYNVARS_004_05------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.slow_query_log = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slow_query_log'; + + +--echo '#---------------------FN_DYNVARS_004_06----------------------#' +################################################################ +# Check if 0 and 1 values can be used on variable # +################################################################ + +SET @@global.slow_query_log = 0; +SELECT @@global.slow_query_log; +SET @@global.slow_query_log = 1; +SELECT @@global.slow_query_log; + +--echo '#---------------------FN_DYNVARS_004_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.slow_query_log = TRUE; +SELECT @@global.slow_query_log; +SET @@global.slow_query_log = FALSE; +SELECT @@global.slow_query_log; + +--echo '#---------------------FN_DYNVARS_004_08----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@global.slow_query_log = ON; +SELECT @@slow_query_log = @@global.slow_query_log; + +--echo '#---------------------FN_DYNVARS_004_09----------------------#' +###################################################################### +# Check if slow_query_log can be accessed with and without @@ sign # +###################################################################### +--Error ER_GLOBAL_VARIABLE +SET slow_query_log = ON; +--Error ER_PARSE_ERROR +SET local.slow_query_log = OFF; +--Error ER_UNKNOWN_TABLE +SELECT local.slow_query_log; +--Error ER_PARSE_ERROR +SET global.slow_query_log = ON; +--Error ER_UNKNOWN_TABLE +SELECT global.slow_query_log; +--Error ER_BAD_FIELD_ERROR +SELECT slow_query_log = @@session.slow_query_log; + + + +############################## +# Restore initial value # +############################## + +SET @@global.slow_query_log = @start_value; +SELECT @@global.slow_query_log; + + +#################################################### +# END OF slow_query_log TESTS # +#################################################### diff --git a/mysql-test/t/slow_query_log_file_basic-master.opt b/mysql-test/t/slow_query_log_file_basic-master.opt new file mode 100644 index 00000000000..aca191f7fea --- /dev/null +++ b/mysql-test/t/slow_query_log_file_basic-master.opt @@ -0,0 +1 @@ +--log-slow-queries=slowtest.log diff --git a/mysql-test/t/slow_query_log_file_basic.test b/mysql-test/t/slow_query_log_file_basic.test new file mode 100644 index 00000000000..80323fdac3e --- /dev/null +++ b/mysql-test/t/slow_query_log_file_basic.test @@ -0,0 +1,70 @@ +################### mysql-test\t\slow_query_log_file_basic.test ################ +# # +# Variable Name: slow_query_log_file # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Filename # +# Default Value: host_name-slow.log # +# Valid Values: # +# # +# # +# Creation Date: 2008-03-16 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "slow_query_log_file" # +# that checks 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#option_mysqld_slow_query_log_file # +# # +################################################################################ + +--source include/load_sysvars.inc + +########################################################### +# START OF slow_query_log_file TESTS # +########################################################### + + +########################################################################### +# Saving initial value of slow_query_log_file in a temporary variable # +########################################################################### + +SET @start_value = @@global.slow_query_log_file; +SELECT @start_value; + + +--echo '#---------------------FN_DYNVARS_004_01-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.slow_query_log_file = DEFAULT; +SELECT RIGHT(@@global.slow_query_log_file,15); + + +--echo '#--------------------FN_DYNVARS_004_02------------------------#' +####################################################################### +# Change the value of slow_query_log_file to a invalid value # +####################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.slow_query_log_file = mytest.log; + +--echo '#----------------------FN_DYNVARS_004_03------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.slow_query_log_file = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slow_query_log_file'; + + +##################################################### +# END OF slow_query_log_file TESTS # +##################################################### diff --git a/mysql-test/t/slow_query_log_file_func-master.opt b/mysql-test/t/slow_query_log_file_func-master.opt new file mode 100644 index 00000000000..e5b1c0948b0 --- /dev/null +++ b/mysql-test/t/slow_query_log_file_func-master.opt @@ -0,0 +1,2 @@ +--log-slow-queries=my_slow_test.log + diff --git a/mysql-test/t/slow_query_log_file_func.test b/mysql-test/t/slow_query_log_file_func.test new file mode 100644 index 00000000000..fedf90feaa3 --- /dev/null +++ b/mysql-test/t/slow_query_log_file_func.test @@ -0,0 +1,31 @@ +########### mysql-test\t\slow_query_log_file_func.test ######################### +# # +# Variable Name: slow_query_log_file # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Boolean # +# Default Value: OFF # +# Valid Values: ON, OFF # +# # +# # +# Creation Date: 2008-03-17 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "slow_query_log_file" # +# that checks functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_slow_query_log_file # +# # +################################################################################ + + +--echo '#--------------------FN_DYNVARS_018_01-------------------------#' +#################################################################### +# Verifying log file after setting it in opt file # +#################################################################### + +--echo ## --file_exists var/master-data/my_slow_test.log ## +--file_exists var/master-data/my_slow_test.log + +--echo ## This case should pass because we have set this filename in opt file ## diff --git a/mysql-test/t/slow_query_log_func.test b/mysql-test/t/slow_query_log_func.test new file mode 100644 index 00000000000..9bcbeb14fd7 --- /dev/null +++ b/mysql-test/t/slow_query_log_func.test @@ -0,0 +1,39 @@ + +# save +SET @global_slow_query_log = @@global.slow_query_log; +SET @global_log_output = @@global.log_output; +############################################################################### +# Begin the functionality testing for slow_query_log # +############################################################################### + +SET @@session.long_query_time=1; + +SET @@global.log_output = 'TABLE'; + +#========================================= +--echo '----When slow_query_log = OFF----' +#========================================= + +SET @@global.slow_query_log = OFF; +TRUNCATE mysql.slow_log; +SELECT sleep(2); + +SELECT count(*) FROM mysql.slow_log; + +#========================================= +--echo '----When slow_query_log = ON-----' +#========================================= + +SET @@global.slow_query_log = ON; +TRUNCATE mysql.slow_log; +SELECT sleep(2); + +SELECT count(*) FROM mysql.slow_log; + +#restore +SET @@global.log_output = @global_log_output; +SET @global.slow_query_log = @global_slow_query_log; + +############################################################################### +# End of the functionality test for slow_query_log # +############################################################################### diff --git a/mysql-test/t/sql_auto_is_null_basic.test b/mysql-test/t/sql_auto_is_null_basic.test new file mode 100644 index 00000000000..a843b88bf85 --- /dev/null +++ b/mysql-test/t/sql_auto_is_null_basic.test @@ -0,0 +1,101 @@ + + +################## mysql-test\t\sql_auto_is_null_basic.test ################### +# # +# Variable Name: sql_auto_is_null # +# Scope: Session # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable sql_auto_is_null # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_044_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### + +SELECT COUNT(@@SESSION.sql_auto_is_null); +--echo 1 Expected + +--echo '#---------------------BS_STVARS_044_02----------------------#' +# +# Test case for Bug #35433 +# +#################################################################### +# Check if Value can set # +#################################################################### + + +#--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@SESSION.sql_auto_is_null=1; +--ECHO "BUG:It should give error on setting this variable as it is readonly variable" +--echo Expected error 'Read only variable' + +SELECT COUNT(@@SESSION.sql_auto_is_null); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_044_03----------------------#' +################################################################# +# Check if the value in SESSION Table matches value in variable # +################################################################# + +SELECT @@SESSION.sql_auto_is_null = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_auto_is_null'; +--echo 1 Expected + +SELECT COUNT(@@SESSION.sql_auto_is_null); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_auto_is_null'; +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_044_04----------------------#' +################################################################################ +# Check if accessing variable with and without SESSION point to same variable # +################################################################################ +SELECT @@sql_auto_is_null = @@SESSION.sql_auto_is_null; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_044_05----------------------#' +################################################################################ +# Check if sql_auto_is_null can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@sql_auto_is_null); +--echo 1 Expected +SELECT COUNT(@@local.sql_auto_is_null); +--echo 1 Expected +SELECT COUNT(@@SESSION.sql_auto_is_null); +--echo 1 Expected + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@GLOBAL.sql_auto_is_null); +--echo Expected error 'Variable is a SESSION variable' + +--error ER_BAD_FIELD_ERROR +SELECT COUNT(sql_auto_is_null = @@GLOBAL.sql_auto_is_null); +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/sql_big_selects_basic.test b/mysql-test/t/sql_big_selects_basic.test new file mode 100644 index 00000000000..dd83a19230a --- /dev/null +++ b/mysql-test/t/sql_big_selects_basic.test @@ -0,0 +1,174 @@ +############## mysql-test\t\sql_big_selects_basic.test ######################## +# # +# Variable Name: sql_big_selects # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Range: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_big_selects # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF sql_big_selects TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of sql_big_selects in a temporary variable # +################################################################################ + +SET @session_start_value = @@session.sql_big_selects; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_153_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_big_selects # +######################################################################## + +SET @@session.sql_big_selects = 0; +SET @@session.sql_big_selects = DEFAULT; +SELECT @@session.sql_big_selects; + + +--echo '#---------------------FN_DYNVARS_153_02-------------------------#' +############################################################################# +# Check if sql_big_selects can be accessed with and without @@ sign # +############################################################################# + +SET sql_big_selects = 1; +SELECT @@sql_big_selects; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_big_selects; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_big_selects; + +SET session sql_big_selects = 0; +SELECT @@session.sql_big_selects; + + +--echo '#--------------------FN_DYNVARS_153_03------------------------#' +##################################################################### +# change the value of sql_big_selects to a valid value # +##################################################################### + +SET @@session.sql_big_selects = 0; +SELECT @@session.sql_big_selects; +SET @@session.sql_big_selects = 1; +SELECT @@session.sql_big_selects; + + +--echo '#--------------------FN_DYNVARS_153_04-------------------------#' +######################################################################## +# Change the value of sql_big_selects to invalid value # +######################################################################## + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = N; + +SET @@session.sql_big_selects = OF; +SELECT @@session.sql_big_selects; + +--echo 'Bug # 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_selects = NO; + + +--echo '#-------------------FN_DYNVARS_153_05----------------------------#' +######################################################################## +# Test if accessing global sql_big_selects gives error # +######################################################################## + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_big_selects = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_big_selects; + +--echo '#----------------------FN_DYNVARS_153_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_big_selects'; + +--echo '#----------------------FN_DYNVARS_153_07------------------------#' +######################################################################## +# Check if the value in GLOBAL Table matches value in variable # +######################################################################## + +SELECT @@session.sql_big_selects = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_selects'; +SELECT @@session.sql_big_selects; + +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_selects'; + +--echo '#---------------------FN_DYNVARS_153_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_big_selects = OFF; +SELECT @@session.sql_big_selects; +SET @@session.sql_big_selects = ON; +SELECT @@session.sql_big_selects; + +--echo '#---------------------FN_DYNVARS_153_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_big_selects = TRUE; +SELECT @@session.sql_big_selects; +SET @@session.sql_big_selects = FALSE; +SELECT @@session.sql_big_selects; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_big_selects = @session_start_value; +SELECT @@session.sql_big_selects; + +############################################################ +# END OF sql_big_selects TESTS # +############################################################ + diff --git a/mysql-test/t/sql_big_selects_func.test b/mysql-test/t/sql_big_selects_func.test new file mode 100644 index 00000000000..4aefda5e15e --- /dev/null +++ b/mysql-test/t/sql_big_selects_func.test @@ -0,0 +1,133 @@ +############# mysql-test\t\sql_big_selects_func.test ###################### +# # +# Variable Name: sql_big_selects # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_big_selects" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +########################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @session_sql_big_selects = @@SESSION.sql_big_selects; +SET @session_max_join_size = @@SESSION.max_join_size; +SET @global_max_join_size = @@GLOBAL.max_join_size; +SET SQL_MAX_JOIN_SIZE=9; + +# +# Create tables +# + +CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20)); +CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20)); + +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa1','bb'); +INSERT INTO t1 VALUES('aa2','bb'); +INSERT INTO t1 VALUES('aa3','bb'); +INSERT INTO t1 VALUES('aa4','bb'); + +INSERT INTO t2 VALUES('aa','bb'); +INSERT INTO t2 VALUES('aa1','bb'); +INSERT INTO t2 VALUES('aa2','bb'); +INSERT INTO t2 VALUES('aa3','bb'); +INSERT INTO t2 VALUES('aa4','bb'); + +--echo '#--------------------FN_DYNVARS_154_01-------------------------#' +# +# Testing fail condition +# + +--echo Expected error "Too big select" +--error ER_TOO_BIG_SELECT +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo Expected error The SELECT would examine more than MAX_JOIN_SIZE rows. + +--echo '#--------------------FN_DYNVARS_154_02-------------------------#' +# +# Testing pass conditions +# + +SET SESSION SQL_BIG_SELECTS = 1; + +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo This should work + +SET SESSION SQL_BIG_SELECTS = 0; + +DELETE FROM t2 WHERE a = 'aa4'; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo This should work + +--echo '#--------------------FN_DYNVARS_154_03-------------------------#' +# +# Session data integrity check +# + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.sql_big_selects; +--echo 1 Expected +SET SESSION sql_big_selects = 0; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.sql_big_selects; +--echo 1 Expected + +SET SESSION sql_big_selects = 1; + +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.sql_big_selects; +--echo 0 Expected + +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.sql_big_selects; +--echo 1 Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# + + +SET @@SESSION.sql_big_selects = @session_sql_big_selects; +SET @@SESSION.max_join_size = @session_max_join_size; +SET @@GLOBAL.max_join_size = @global_max_join_size; + +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/t/sql_big_tables_basic.test b/mysql-test/t/sql_big_tables_basic.test new file mode 100644 index 00000000000..4e3dbdc9504 --- /dev/null +++ b/mysql-test/t/sql_big_tables_basic.test @@ -0,0 +1,175 @@ +###################### mysql-test\t\sql_big_tables_basic.test ################# +# # +# Variable Name: sql_big_tables # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values : 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_big_tables # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF sql_big_tables TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of sql_big_tables in a temporary variable # +############################################################################## + +SET @session_start_value = @@session.sql_big_tables; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_154_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_big_tables # +######################################################################## + +SET @@session.sql_big_tables = 0; +SET @@session.sql_big_tables = DEFAULT; +SELECT @@session.sql_big_tables; + +SET @@session.sql_big_tables = 1; +SET @@session.sql_big_tables = DEFAULT; +SELECT @@session.sql_big_tables; + + +--echo '#---------------------FN_DYNVARS_154_02-------------------------#' +############################################################################# +# Check if sql_big_tables can be accessed with and without @@ sign # +############################################################################# + +SET sql_big_tables = 1; +SELECT @@sql_big_tables; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_big_tables; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_big_tables; + +SET session sql_big_tables = 0; +SELECT @@session.sql_big_tables; + + +--echo '#--------------------FN_DYNVARS_154_03------------------------#' +######################################################################## +# change the value of sql_big_tables to a valid value # +######################################################################## + +SET @@session.sql_big_tables = 0; +SELECT @@session.sql_big_tables; +SET @@session.sql_big_tables = 1; +SELECT @@session.sql_big_tables; + + +--echo '#--------------------FN_DYNVARS_154_04-------------------------#' +########################################################################### +# Change the value of sql_big_tables to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = N; + +SET @@session.sql_big_tables = OF; +SELECT @@session.sql_big_tables; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_big_tables = NO; + + +--echo '#-------------------FN_DYNVARS_154_05----------------------------#' +########################################################################### +# Test if accessing global sql_big_tables gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_big_tables = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_big_tables; + +--echo '#----------------------FN_DYNVARS_154_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_big_tables'; + +--echo '#----------------------FN_DYNVARS_154_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_big_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_tables'; +SELECT @@session.sql_big_tables; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_big_tables'; + +--echo '#---------------------FN_DYNVARS_154_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_big_tables = OFF; +SELECT @@session.sql_big_tables; +SET @@session.sql_big_tables = ON; +SELECT @@session.sql_big_tables; + +--echo '#---------------------FN_DYNVARS_154_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_big_tables = TRUE; +SELECT @@session.sql_big_tables; +SET @@session.sql_big_tables = FALSE; +SELECT @@session.sql_big_tables; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_big_tables = @session_start_value; +SELECT @@session.sql_big_tables; + +############################################################### +# END OF sql_big_tables TESTS # +############################################################### diff --git a/mysql-test/t/sql_big_tables_func.test b/mysql-test/t/sql_big_tables_func.test new file mode 100644 index 00000000000..5f919fac2c7 --- /dev/null +++ b/mysql-test/t/sql_big_tables_func.test @@ -0,0 +1,146 @@ +############# mysql-test\t\sql_big_tables_func.test ######################## +# # +# Variable Name: sql_big_tables # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 0 FALSE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_big_tables" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################ + +# Due to difference in the result the ps-protocol is disabled +--disable_ps_protocol + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @old_big_tables = @@SESSION.sql_big_tables; + +# +# Create tables +# + +CREATE TABLE t1(a varchar(20), b varchar(20)); + +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); + +--echo '#--------------------FN_DYNVARS_155_01-------------------------#' +# +# TRUE mode +# + +SET SESSION sql_big_tables = 1; + +let $diskTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1); +let $totalTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1); + +eval SET @diskTableCount = $diskTablesBig; +eval SET @tempTableCount = $totalTablesBig; + +SELECT * FROM (SELECT ta.a as a, tb.b as b +FROM t1 as ta INNER JOIN t1 as tb ON ta.a = tb.a) sub; + +let $newDiskTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1); +let $newTotalTablesBig = query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1); + +eval SET @diskTableCount = $newDiskTablesBig - @diskTableCount; +eval SET @tempTableCount = $newTotalTablesBig - @tempTableCount; + +SELECT @diskTableCount; +--echo 1 Expected +SELECT @tempTableCount; +--echo 1 Expected + +--echo '#--------------------FN_DYNVARS_155_02-------------------------#' +# +# FALSE mode +# + +SET SESSION sql_big_tables = 0; + +let $diskTables = query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1); +let $totalTables = query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1); + +eval SET @diskTableCount = $diskTables; +eval SET @tempTableCount = $totalTables; + +SELECT * FROM (SELECT ta.b as a, tb.a as b FROM t1 as ta INNER JOIN t1 as tb ON ta.a = tb.a) sub; + +let $newDiskTables= query_get_value(SHOW STATUS LIKE 'Created_tmp_disk_tables', Value, 1); +let $newTotalTables= query_get_value(SHOW STATUS LIKE 'Created_tmp_tables', Value, 1); + +eval SET @diskTableCount = $newDiskTables - @diskTableCount; +eval SET @tempTableCount = $newTotalTables - @tempTableCount; + +SELECT @diskTableCount; +--echo 0 Expected +SELECT @tempTableCount; +--echo 1 Expected + +--echo '#--------------------FN_DYNVARS_155_03-------------------------#' +# +# Session data integrity check +# +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.sql_big_tables; +--echo 0 / FALSE Expected; +SET SESSION sql_big_tables = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.sql_big_tables; +--echo 0 / FALSE Expected; + +SET SESSION sql_big_tables = TRUE; + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_big_tables; +--echo 0 / FALSE Expected; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_big_tables; +--echo 1 / TRUE Expected; + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# + +SET SESSION sql_big_tables = @old_big_tables; + +DROP TABLE t1; + +--enable_ps_protocol + diff --git a/mysql-test/t/sql_buffer_result_basic.test b/mysql-test/t/sql_buffer_result_basic.test new file mode 100644 index 00000000000..f5a5e323fc4 --- /dev/null +++ b/mysql-test/t/sql_buffer_result_basic.test @@ -0,0 +1,184 @@ +############## mysql-test\t\sql_buffer_result_basic.test ###################### +# # +# Variable Name: sql_buffer_result # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values : 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_buffer_result # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF sql_buffer_result TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of sql_buffer_result in a temporary variable # +################################################################################ + +SET @session_start_value = @@session.sql_buffer_result; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_155_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_buffer_result # +######################################################################## + +SET @@session.sql_buffer_result = 0; +SET @@session.sql_buffer_result = DEFAULT; +SELECT @@session.sql_buffer_result; + +SET @@session.sql_buffer_result = 1; +SET @@session.sql_buffer_result = DEFAULT; +SELECT @@session.sql_buffer_result; + + +--echo '#---------------------FN_DYNVARS_155_02-------------------------#' +############################################################################# +# Check if sql_buffer_result can be accessed with and without @@ sign # +############################################################################# + +SET sql_buffer_result = 1; +SELECT @@sql_buffer_result; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_buffer_result; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_buffer_result; + +SET session sql_buffer_result = 0; +SELECT @@session.sql_buffer_result; + + +--echo '#--------------------FN_DYNVARS_155_03------------------------#' +######################################################################## +# change the value of sql_buffer_result to a valid value # +######################################################################## + +SET @@session.sql_buffer_result = 0; +SELECT @@session.sql_buffer_result; +SET @@session.sql_buffer_result = 1; +SELECT @@session.sql_buffer_result; + + +--echo '#--------------------FN_DYNVARS_155_04-------------------------#' +########################################################################### +# Change the value of sql_buffer_result to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = "TRU"; + +SET @@session.sql_buffer_result = 0.4; +SELECT @@session.sql_buffer_result; + +SET @@session.sql_buffer_result = 1.4; +SELECT @@session.sql_buffer_result; + +--echo 'Bug: Decimal values are accepted and rounded to an integer before'; +--echo 'assingment.'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = N; + +SET @@session.sql_buffer_result = OF; +SELECT @@session.sql_buffer_result; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_buffer_result = NO; + + +--echo '#-------------------FN_DYNVARS_155_05----------------------------#' +########################################################################### +# Test if accessing global sql_buffer_result gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_buffer_result = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_buffer_result; + +--echo '#----------------------FN_DYNVARS_155_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_buffer_result'; + +--echo '#----------------------FN_DYNVARS_155_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_buffer_result = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_buffer_result'; +SELECT @@session.sql_buffer_result; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_buffer_result'; + +--echo '#---------------------FN_DYNVARS_155_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_buffer_result = OFF; +SELECT @@session.sql_buffer_result; +SET @@session.sql_buffer_result = ON; +SELECT @@session.sql_buffer_result; + +--echo '#---------------------FN_DYNVARS_155_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_buffer_result = TRUE; +SELECT @@session.sql_buffer_result; +SET @@session.sql_buffer_result = FALSE; +SELECT @@session.sql_buffer_result; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_buffer_result = @session_start_value; +SELECT @@session.sql_buffer_result; + +############################################################### +# END OF sql_buffer_result TESTS # +############################################################### diff --git a/mysql-test/t/sql_buffer_result_func.test b/mysql-test/t/sql_buffer_result_func.test new file mode 100644 index 00000000000..4530545b8f0 --- /dev/null +++ b/mysql-test/t/sql_buffer_result_func.test @@ -0,0 +1,130 @@ +############# mysql-test\t\sql_buffer_result_func.test ##################### +# # +# Variable Name: sql_buffer_result # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 0 FALSE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_buffer_result" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @original_sql_buffer_result = @@sql_buffer_result; + +# +# Create tables +# + +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); + +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa','bb'); + +--echo '#--------------------FN_DYNVARS_156_01-------------------------#' +# +# TRUE mode +# + +SET SESSION sql_buffer_result = 1; + +SHOW STATUS LIKE 'Created_tmp_tables'; +--echo Expected value : 0. + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Created_tmp_tables'; +--echo Expected value : 1. + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Created_tmp_tables'; +--echo Expected value : 2. + +--echo '#--------------------FN_DYNVARS_156_02-------------------------#' +# +# FALSE mode +# + +SET SESSION sql_buffer_result = 0; + +SHOW STATUS LIKE 'Created_tmp_tables'; +--echo Expected value : 2. + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Created_tmp_tables'; +--echo Expected value : 2. + +--echo '#--------------------FN_DYNVARS_156_03-------------------------#' +# +# Session data integrity check +# +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.sql_buffer_result; +--echo 0 / FALSE Expected + +SET SESSION sql_buffer_result = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.sql_buffer_result; +--echo 0 / FALSE Expected + +SET SESSION sql_buffer_result = TRUE; + +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.sql_buffer_result; +--echo 0 / FALSE Expected + +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.sql_buffer_result; +--echo 1 / TRUE Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# +--echo ** Cleanup ** + +SET @@sql_buffer_result = @original_sql_buffer_result; + +DROP TABLE t1; diff --git a/mysql-test/t/sql_log_bin_basic.test b/mysql-test/t/sql_log_bin_basic.test new file mode 100644 index 00000000000..0f6d9e1e126 --- /dev/null +++ b/mysql-test/t/sql_log_bin_basic.test @@ -0,0 +1,174 @@ +####################### mysql-test\t\sql_log_bin_basic.test ################### +# # +# Variable Name: sql_log_bin # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_log_bin # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF sql_log_bin TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of sql_log_bin in a temporary variable # +############################################################################## + +SET @session_start_value = @@session.sql_log_bin; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_156_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_log_bin # +######################################################################## + +SET @@session.sql_log_bin = 0; +SET @@session.sql_log_bin = DEFAULT; +SELECT @@session.sql_log_bin; + +SET @@session.sql_log_bin = 1; +SET @@session.sql_log_bin = DEFAULT; +SELECT @@session.sql_log_bin; + + +--echo '#---------------------FN_DYNVARS_156_02-------------------------#' +############################################################################# +# Check if sql_log_bin can be accessed with and without @@ sign # +############################################################################# + +SET sql_log_bin = 1; +SELECT @@sql_log_bin; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_log_bin; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_log_bin; + +SET session sql_log_bin = 0; +SELECT @@session.sql_log_bin; + + +--echo '#--------------------FN_DYNVARS_156_03------------------------#' +######################################################################## +# change the value of sql_log_bin to a valid value # +######################################################################## + +SET @@session.sql_log_bin = 0; +SELECT @@session.sql_log_bin; +SET @@session.sql_log_bin = 1; +SELECT @@session.sql_log_bin; + + +--echo '#--------------------FN_DYNVARS_156_04-------------------------#' +########################################################################### +# Change the value of sql_log_bin to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = N; + +SET @@session.sql_log_bin = OF; +SELECT @@session.sql_log_bin; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_bin = NO; + + +--echo '#-------------------FN_DYNVARS_156_05----------------------------#' +########################################################################### +# Test if accessing global sql_log_bin gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_log_bin = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_log_bin; + +--echo '#----------------------FN_DYNVARS_156_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sql_log_bin'; + +--echo '#----------------------FN_DYNVARS_156_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_log_bin = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_bin'; +SELECT @@session.sql_log_bin; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_bin'; + +--echo '#---------------------FN_DYNVARS_156_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_log_bin = OFF; +SELECT @@session.sql_log_bin; +SET @@session.sql_log_bin = ON; +SELECT @@session.sql_log_bin; + +--echo '#---------------------FN_DYNVARS_156_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_log_bin = TRUE; +SELECT @@session.sql_log_bin; +SET @@session.sql_log_bin = FALSE; +SELECT @@session.sql_log_bin; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_log_bin = @session_start_value; +SELECT @@session.sql_log_bin; + +############################################################### +# END OF sql_log_bin TESTS # +############################################################### diff --git a/mysql-test/t/sql_log_off_basic.test b/mysql-test/t/sql_log_off_basic.test new file mode 100644 index 00000000000..bcf9e87c1dd --- /dev/null +++ b/mysql-test/t/sql_log_off_basic.test @@ -0,0 +1,175 @@ +################# mysql-test\t\sql_log_off_basic.test ######################### +# # +# Variable Name: sql_log_off # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Range: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_log_off # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF sql_log_off TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of sql_log_off in a temporary variable # +################################################################################ + +SET @session_start_value = @@session.sql_log_off; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_157_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_log_off # +######################################################################## + +SET @@session.sql_log_off = 0; +SET @@session.sql_log_off = DEFAULT; +SELECT @@session.sql_log_off; + +SET @@session.sql_log_off = 1; +SET @@session.sql_log_off = DEFAULT; +SELECT @@session.sql_log_off; + + +--echo '#---------------------FN_DYNVARS_157_02-------------------------#' +############################################################################# +# Check if sql_log_off can be accessed with and without @@ sign # +############################################################################# + +SET sql_log_off = 1; +SELECT @@sql_log_off; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_log_off; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_log_off; + +SET session sql_log_off = 0; +SELECT @@session.sql_log_off; + + +--echo '#--------------------FN_DYNVARS_157_03------------------------#' +######################################################################## +# change the value of sql_log_off to a valid value # +######################################################################## + +SET @@session.sql_log_off = 0; +SELECT @@session.sql_log_off; +SET @@session.sql_log_off = 1; +SELECT @@session.sql_log_off; + + +--echo '#--------------------FN_DYNVARS_157_04-------------------------#' +########################################################################### +# Change the value of sql_log_off to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = N; + +SET @@session.sql_log_off = OF; +SELECT @@session.sql_log_off; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_log_off = NO; + + +--echo '#-------------------FN_DYNVARS_157_05----------------------------#' +########################################################################### +# Test if accessing global sql_log_off gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_log_off = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_log_off; + +--echo '#----------------------FN_DYNVARS_157_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_log_off'; + +--echo '#----------------------FN_DYNVARS_157_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_log_off = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_off'; +SELECT @@session.sql_log_off; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_log_off'; + +--echo '#---------------------FN_DYNVARS_157_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_log_off = OFF; +SELECT @@session.sql_log_off; +SET @@session.sql_log_off = ON; +SELECT @@session.sql_log_off; + +--echo '#---------------------FN_DYNVARS_157_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_log_off = TRUE; +SELECT @@session.sql_log_off; +SET @@session.sql_log_off = FALSE; +SELECT @@session.sql_log_off; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_log_off = @session_start_value; +SELECT @@session.sql_log_off; + +############################################################### +# END OF sql_log_off TESTS # +############################################################### diff --git a/mysql-test/t/sql_log_off_func.test b/mysql-test/t/sql_log_off_func.test new file mode 100644 index 00000000000..fb06a12b264 --- /dev/null +++ b/mysql-test/t/sql_log_off_func.test @@ -0,0 +1,115 @@ +############# mysql-test\t\sql_log_off_func.test ########################## +# # +# Variable Name: sql_log_off # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 0 FALSE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_log_off" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +########################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @default_sql_log_off = @@sql_log_off; + +# +# Create tables +# + +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); + +INSERT INTO t1 VALUES('aa1','bb'); +INSERT INTO t1 VALUES('aa2','bb'); +INSERT INTO t1 VALUES('aa3','bb'); +INSERT INTO t1 VALUES('aa4','bb'); +INSERT INTO t1 VALUES('aa5','bb'); + +--echo '#--------------------FN_DYNVARS_158_01-------------------------#' +# +# Value ON +# + +SET SESSION sql_log_off = ON; + +UPDATE t1 SET a = 'aa1-updated' WHERE a = 'aa1'; + +--echo Checking if log contains the executed statement +SELECT argument FROM mysql.general_log WHERE argument = 'UPDATE t1 SET a = \'aa1-updated\' WHERE a = \'aa1\''; + +--echo '#--------------------FN_DYNVARS_158_02-------------------------#' +# +# Value OFF +# + +SET SESSION sql_log_off = OFF; + +# With ps-protocol the UPDATE is executed twice +--disable_ps_protocol +UPDATE t1 SET a = 'aa1' WHERE a = 'aa1-updated'; +--enable_ps_protocol + +--echo Checking if log contains the executed statement +SELECT argument FROM mysql.general_log WHERE argument = 'UPDATE t1 SET a = \'aa1\' WHERE a = \'aa1-updated\''; + +--echo '#--------------------FN_DYNVARS_158_03--------------------------#' +# +# Session data integrity check +# +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_log_off; +--echo 0 / FALSE Expected + +SET SESSION sql_log_off = FALSE; +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_log_off; +--echo 0 / FALSE Expected + +SET SESSION sql_log_off = TRUE; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_log_off; +--echo 1 / TRUE Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_log_off; +--echo 0 / FALSE Expected + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + +SET SESSION sql_log_off = @default_sql_log_off; + +DROP TABLE t1; diff --git a/mysql-test/t/sql_low_priority_updates_basic.test b/mysql-test/t/sql_low_priority_updates_basic.test new file mode 100644 index 00000000000..499723b636d --- /dev/null +++ b/mysql-test/t/sql_low_priority_updates_basic.test @@ -0,0 +1,233 @@ +############## mysql-test\t\sql_low_priority_updates_basic.test ############### +# # +# Variable Name: sql_low_priority_updates # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_low_priority_updates # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF sql_low_priority_updates TESTS # +######################################################################## + + +############################################################################### +# Saving initial value of sql_low_priority_updates in a temporary variable # +############################################################################### + +SET @session_start_value = @@session.sql_low_priority_updates; +SELECT @session_start_value; + +SET @global_start_value = @@global.sql_low_priority_updates; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_159_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_low_priority_updates # +######################################################################## + +SET @@session.sql_low_priority_updates = 1; +SET @@session.sql_low_priority_updates = DEFAULT; +SELECT @@session.sql_low_priority_updates; + +SET @@global.sql_low_priority_updates = 1; +--Error ER_NO_DEFAULT +SET @@global.sql_low_priority_updates = DEFAULT; + +--echo 'Bug: DEFAULT value is only associated with session' + + +--echo '#---------------------FN_DYNVARS_159_02-------------------------#' +#################################################################################### +# Check if sql_low_priority_updates can be accessed with and without @@ sign # +#################################################################################### + +SET sql_low_priority_updates = 1; +SELECT @@sql_low_priority_updates; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_low_priority_updates; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_low_priority_updates; + +--Error ER_UNKNOWN_TABLE +SELECT global.sql_low_priority_updates; + +#using another syntax for accessing system variables +SET session sql_low_priority_updates = 0; +SELECT @@session.sql_low_priority_updates; + +SET global sql_low_priority_updates = 0; +SELECT @@global.sql_low_priority_updates; + + +--echo '#--------------------FN_DYNVARS_159_03------------------------#' +########################################################################## +# change the value of sql_low_priority_updates to a valid value # +########################################################################## +# for session +SET @@session.sql_low_priority_updates = 0; +SELECT @@session.sql_low_priority_updates; +SET @@session.sql_low_priority_updates = 1; +SELECT @@session.sql_low_priority_updates; + +# for global +SET @@global.sql_low_priority_updates = 0; +SELECT @@global.sql_low_priority_updates; +SET @@global.sql_low_priority_updates = 1; +SELECT @@global.sql_low_priority_updates; + + +--echo '#--------------------FN_DYNVARS_159_04-------------------------#' +########################################################################### +# Change the value of sql_low_priority_updates to invalid value # +########################################################################### + +# for session +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = 1.6; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = N; + +SET @@session.sql_low_priority_updates = OF; +SELECT @@session.sql_low_priority_updates; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_low_priority_updates = FF; + +# for global + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = N; + +SET @@global.sql_low_priority_updates = OF; +SELECT @@global.sql_low_priority_updates; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_low_priority_updates = FF; + + +--echo '#-------------------FN_DYNVARS_159_05----------------------------#' +########################################################################### +# Test if changing global variable effects session and vice versa # +########################################################################### + +SET @@global.sql_low_priority_updates = 0; +SET @@session.sql_low_priority_updates = 1; +SELECT @@global.sql_low_priority_updates AS res_is_0; + +SET @@global.sql_low_priority_updates = 0; +SELECT @@session.sql_low_priority_updates AS res_is_1; + +--echo '#----------------------FN_DYNVARS_159_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.sql_low_priority_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; +SELECT @@global.sql_low_priority_updates; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; + +--echo '#----------------------FN_DYNVARS_159_07------------------------#' +######################################################################### +# Check if the value in SESSION Table matches value in variable # +######################################################################### + +SELECT @@session.sql_low_priority_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; +SELECT @@session.sql_low_priority_updates; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_low_priority_updates'; + +--echo '#---------------------FN_DYNVARS_159_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_low_priority_updates = OFF; +SELECT @@session.sql_low_priority_updates; +SET @@session.sql_low_priority_updates = ON; +SELECT @@session.sql_low_priority_updates; + +SET @@global.sql_low_priority_updates = OFF; +SELECT @@global.sql_low_priority_updates; +SET @@global.sql_low_priority_updates = ON; +SELECT @@global.sql_low_priority_updates; + +--echo '#---------------------FN_DYNVARS_159_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_low_priority_updates = TRUE; +SELECT @@session.sql_low_priority_updates; +SET @@session.sql_low_priority_updates = FALSE; +SELECT @@session.sql_low_priority_updates; + +SET @@global.sql_low_priority_updates = TRUE; +SELECT @@global.sql_low_priority_updates; +SET @@global.sql_low_priority_updates = FALSE; +SELECT @@global.sql_low_priority_updates; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_low_priority_updates = @session_start_value; +SELECT @@session.sql_low_priority_updates; + +SET @@global.sql_low_priority_updates = @global_start_value; +SELECT @@global.sql_low_priority_updates; + +########################################################### +# END OF sql_low_priority_updates TESTS # +########################################################### + diff --git a/mysql-test/t/sql_low_priority_updates_func.test b/mysql-test/t/sql_low_priority_updates_func.test new file mode 100644 index 00000000000..a427adf3ad3 --- /dev/null +++ b/mysql-test/t/sql_low_priority_updates_func.test @@ -0,0 +1,239 @@ +############# mysql-test\t\sql_low_priority_updates_func.test ################# +# # +# Variable Name: sql_low_priority_updates # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable sql_low_priority_updates# +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################### + + +################################################################ +# sql_low_priority_updates was renamed to low_priority_updates # +################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# +--echo ** Connecting con0 using root ** +connect (con0,localhost,root,,); +--echo ** Connecting con1 using root ** +connect (con1,localhost,root,,); + +--echo ** Connection default ** +connection default; + +SET @global_low_priority_updates = @@GLOBAL.low_priority_updates; +SET @session_low_priority_updates = @@SESSION.low_priority_updates; + +# +# Create Table +# + +CREATE TABLE t1 (a varchar(100)); + +--echo '#--------------------FN_DYNVARS_160_01-------------------------#' +# +# Value ON +# + +--echo ** Connection con0 ** +connection con0; +SET SESSION low_priority_updates = ON; +--echo ** Connection con1 ** +connection con1; +SET SESSION low_priority_updates = ON; +--echo ** Connection default ** +connection default; +SET SESSION low_priority_updates = ON; + +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +UPDATE t1 SET a = CONCAT(a,"-updated");| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +LOCK TABLE t1 READ; +SELECT * FROM t1; +UNLOCK TABLES;| + +delimiter ;| + +--echo ** Connection default ** +connection default; + +--echo Sleeping for 1 secs +--sleep 1 + +UNLOCK TABLES; + +--echo ** Connection con0 ** +connection con0; +--echo ** Asynchronous Result ** +reap; + +--echo Expected values of a without -updated; + +--echo ** Connection default ** +connection default; + +DELETE FROM t1; + +--echo '#--------------------FN_DYNVARS_160_02-------------------------#' +# +# Value ON +# + +--echo ** Connection con0 ** +connection con0; +SET SESSION low_priority_updates = OFF; +--echo ** Connection con1 ** +connection con1; +SET SESSION low_priority_updates = OFF; +--echo ** Connection default** +connection default; +SET SESSION low_priority_updates = OFF; + +INSERT INTO t1 VALUES('1'); +INSERT INTO t1 VALUES('2'); +INSERT INTO t1 VALUES('3'); +INSERT INTO t1 VALUES('4'); +INSERT INTO t1 VALUES('5'); +INSERT INTO t1 VALUES('6'); + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +UPDATE t1 SET a = CONCAT(a,"-updated");| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +LOCK TABLE t1 READ; +SELECT * FROM t1; +UNLOCK TABLES;| + +delimiter ;| + +--echo ** Connection default ** +connection default; + +--echo Sleeping for 1 secs +--sleep 1 + +UNLOCK TABLES; + +--echo ** Connection con0 ** +connection con0; +--echo ** Asynchronous Result ** +reap; +--echo Expected values of a with -updated; + +--echo ** Connection default** +connection default; + +DELETE FROM t1; + +--echo '#--------------------FN_DYNVARS_160_03-------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.low_priority_updates; +--echo 1 / TRUE Expected + +SET SESSION low_priority_updates = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.low_priority_updates; +--echo 1 / TRUE Expected + +SET SESSION low_priority_updates = TRUE; + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.low_priority_updates; +--echo 0 / FALSE Expected + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.low_priority_updates; +--echo 1 / TRUE Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con0, con1 +disconnect con0; +disconnect con1; + +DROP TABLE t1; + +SET @@GLOBAL.low_priority_updates = @global_low_priority_updates; +SET @@SESSION.low_priority_updates = @session_low_priority_updates; diff --git a/mysql-test/t/sql_max_join_size_func.test b/mysql-test/t/sql_max_join_size_func.test new file mode 100644 index 00000000000..17b7d911b94 --- /dev/null +++ b/mysql-test/t/sql_max_join_size_func.test @@ -0,0 +1,133 @@ +############# mysql-test\t\sql_max_join_size_func.test #################### +# # +# Variable Name: sql_max_join_size # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 4294967295 # +# Values: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_max_join_size" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system # +# -variables.html#option_mysqld_max_join_size # +# # +########################################################################### + +--echo ** Setup ** +# +# Setup +# + +SET @session_max_join_size = @@SESSION.sql_max_join_size; +SET @global_max_join_size = @@GLOBAL.sql_max_join_size; +SET @session_sql_big_selects = @@SESSION.sql_big_selects; + +# +# Create tables +# + +CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20)); +CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20)); + +INSERT INTO t1 VALUES('aa','bb'); +INSERT INTO t1 VALUES('aa1','bb'); +INSERT INTO t1 VALUES('aa2','bb'); +INSERT INTO t1 VALUES('aa3','bb'); +INSERT INTO t1 VALUES('aa4','bb'); + +INSERT INTO t2 VALUES('aa','bb'); +INSERT INTO t2 VALUES('aa1','bb'); +INSERT INTO t2 VALUES('aa2','bb'); +INSERT INTO t2 VALUES('aa3','bb'); +INSERT INTO t2 VALUES('aa4','bb'); + +--echo '#--------------------FN_DYNVARS_161_01-------------------------#' +# +# Testing fail condition +# + +SET SESSION sql_max_join_size=9; +--error ER_TOO_BIG_SELECT +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo Expected error The SELECT would examine more than MAX_JOIN_SIZE rows. + +--echo '#--------------------FN_DYNVARS_161_02-------------------------#' +# +# Testing pass conditions +# + +SET SESSION SQL_BIG_SELECTS = 1; + +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo This should work + +SET SESSION sql_max_join_size=DEFAULT; + +DELETE FROM t2 WHERE a = 'aa4'; +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo This should work + +--echo '#----------------------------FN_DYNVARS_136_05-------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL sql_max_join_size = 4; +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_max_join_size; +--echo 4 Expected + +SET SESSION sql_max_join_size = 2; +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_max_join_size; +--echo 4 Expected + +SET SESSION sql_max_join_size = 10; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_max_join_size; +--echo 10 Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_max_join_size; +--echo 2 Expected + + +SELECT @@GLOBAL.sql_max_join_size; +--echo 4 Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + +SET @@SESSION.sql_max_join_size = @session_max_join_size; +SET @@GLOBAL.sql_max_join_size = @global_max_join_size ; +SET @@SESSION.sql_big_selects = @session_sql_big_selects; + +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/t/sql_mode_basic.test b/mysql-test/t/sql_mode_basic.test new file mode 100644 index 00000000000..24f1e8aefcb --- /dev/null +++ b/mysql-test/t/sql_mode_basic.test @@ -0,0 +1,413 @@ +#################### mysql-test\t\sql_mode_basic.test ######################### +# # +# Variable Name: sql_mode # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: YES # +# Valid Values : ANSI, STRICT_TRANS_TABLES, TRADITIONAL, # +# ERROR_FOR_DIVISION_BY_ZERO, ANSI_QUOTES, HIGH_NOT_PRECEDENCE,# +# IGNORE_SPACE, NO_AUTO_CREATE_USER, ONLY_FULL_GROUP_BY, # +# NO_AUTO_VALUE_ON_ZERO,NO_BACKSLASH_ESCAPES, # +# NO_UNSIGNED_SUBTRACTION, OFF # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_mode # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################ +# START OF sql_mode TESTS # +################################################################ + + +################################################################### +# Saving initial value of sql_mode in a temporary variable # +################################################################### + +SET @global_start_value = @@global.sql_mode; +SELECT @global_start_value; + +SET @session_start_value = @@session.sql_mode; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_152_01------------------------#' +################################################################ +# Display the DEFAULT value of sql_mode # +################################################################ + +SET @@global.sql_mode = ANSI; +SET @@global.sql_mode = DEFAULT; +SELECT @@global.sql_mode; + +SET @@session.sql_mode = ANSI; +SET @@session.sql_mode = DEFAULT; +SELECT @@session.sql_mode; + +--echo 'Bug# 34876: Default values for both session and global sql_mode is ""'; +--echo 'and not OFF.'; + +--echo '#---------------------FN_DYNVARS_152_02-------------------------#' +######################################################### +# Check if NULL or empty value is accepeted # +######################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = NULL; + +# resets sql mode to nothing +SET @@global.sql_mode = ''; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = ' '; +SELECT @@global.sql_mode; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = NULL; + +SET @@session.sql_mode = ''; +SELECT @@session.sql_mode; + +SET @@session.sql_mode = ' '; +SELECT @@session.sql_mode; + + +--echo '#--------------------FN_DYNVARS_152_03------------------------#' +######################################################################## +# Change the value of sql_mode to a valid value # +######################################################################## + +# sql modes ref: http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html + +--echo 'Bug: Incomplete sql modes valid values at:'; +--echo 'http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html'; + +# check valid values for global + +SET @@global.sql_mode = ANSI; +SELECT @@global.sql_mode; +SET @@global.sql_mode = STRICT_TRANS_TABLES; +SELECT @@global.sql_mode; +SET @@global.sql_mode = TRADITIONAL; +SELECT @@global.sql_mode; +SET @@global.sql_mode = ALLOW_INVALID_DATES; +SELECT @@global.sql_mode; +SET @@global.sql_mode = ANSI_QUOTES; +SELECT @@global.sql_mode; +SET @@global.sql_mode = ERROR_FOR_DIVISION_BY_ZERO; +SELECT @@global.sql_mode; +SET @@global.sql_mode = HIGH_NOT_PRECEDENCE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = IGNORE_SPACE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_AUTO_CREATE_USER; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_AUTO_VALUE_ON_ZERO; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_BACKSLASH_ESCAPES; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_DIR_IN_CREATE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_ENGINE_SUBSTITUTION; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_FIELD_OPTIONS; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_KEY_OPTIONS; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_TABLE_OPTIONS; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_UNSIGNED_SUBTRACTION; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_ZERO_DATE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = NO_ZERO_IN_DATE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = ONLY_FULL_GROUP_BY; +SELECT @@global.sql_mode; +SET @@global.sql_mode = PIPES_AS_CONCAT; +SELECT @@global.sql_mode; +SET @@global.sql_mode = REAL_AS_FLOAT; +SELECT @@global.sql_mode; +SET @@global.sql_mode = STRICT_ALL_TABLES; +SELECT @@global.sql_mode; +SET @@global.sql_mode = STRICT_TRANS_TABLES; +SELECT @@global.sql_mode; +SET @@global.sql_mode = DB2; +SELECT @@global.sql_mode; +SET @@global.sql_mode = MAXDB; +SELECT @@global.sql_mode; +SET @@global.sql_mode = MSSQL; +SELECT @@global.sql_mode; +SET @@global.sql_mode = MYSQL323; +SELECT @@global.sql_mode; +SET @@global.sql_mode = MYSQL40; +SELECT @@global.sql_mode; +SET @@global.sql_mode = ORACLE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = POSTGRESQL; +SELECT @@global.sql_mode; +SET @@global.sql_mode = TRADITIONAL; +SELECT @@global.sql_mode; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = OFF; +--echo 'Bug: OFF is documented as an sql mode but infact it is not'; + +#check valid values for session +SET @@session.sql_mode = ANSI; +SELECT @@session.sql_mode; +SET @@session.sql_mode = STRICT_TRANS_TABLES; +SELECT @@session.sql_mode; +SET @@session.sql_mode = TRADITIONAL; +SELECT @@session.sql_mode; +SET @@session.sql_mode = ALLOW_INVALID_DATES; +SELECT @@session.sql_mode; +SET @@session.sql_mode = ANSI_QUOTES; +SELECT @@session.sql_mode; +SET @@session.sql_mode = ERROR_FOR_DIVISION_BY_ZERO; +SELECT @@session.sql_mode; +SET @@session.sql_mode = HIGH_NOT_PRECEDENCE; +SELECT @@session.sql_mode; +SET @@session.sql_mode = IGNORE_SPACE; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_AUTO_CREATE_USER; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_AUTO_VALUE_ON_ZERO; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_BACKSLASH_ESCAPES; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_DIR_IN_CREATE; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_ENGINE_SUBSTITUTION; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_FIELD_OPTIONS; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_KEY_OPTIONS; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_TABLE_OPTIONS; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_UNSIGNED_SUBTRACTION; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_ZERO_DATE; +SELECT @@session.sql_mode; +SET @@session.sql_mode = NO_ZERO_IN_DATE; +SELECT @@session.sql_mode; +SET @@session.sql_mode = ONLY_FULL_GROUP_BY; +SELECT @@session.sql_mode; +SET @@session.sql_mode = PIPES_AS_CONCAT; +SELECT @@session.sql_mode; +SET @@session.sql_mode = REAL_AS_FLOAT; +SELECT @@session.sql_mode; +SET @@session.sql_mode = STRICT_ALL_TABLES; +SELECT @@session.sql_mode; +SET @@session.sql_mode = STRICT_TRANS_TABLES; +SELECT @@session.sql_mode; +SET @@session.sql_mode = DB2; +SELECT @@session.sql_mode; +SET @@session.sql_mode = MAXDB; +SELECT @@session.sql_mode; +SET @@session.sql_mode = MSSQL; +SELECT @@session.sql_mode; +SET @@session.sql_mode = MYSQL323; +SELECT @@session.sql_mode; +SET @@session.sql_mode = MYSQL40; +SELECT @@session.sql_mode; +SET @@session.sql_mode = ORACLE; +SELECT @@session.sql_mode; +SET @@session.sql_mode = POSTGRESQL; +SELECT @@session.sql_mode; +SET @@session.sql_mode = TRADITIONAL; +SELECT @@session.sql_mode; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = OFF; + +SET @@global.sql_mode = '?'; +SELECT @@global.sql_mode; + +SET @@session.sql_mode = '?'; +SELECT @@session.sql_mode; + +--echo 'Bug# 34834: ? is acceptable as a valid sql mode.' + + +--echo '#--------------------FN_DYNVARS_152_04-------------------------#' +########################################################################### +# Change the value of sql_mode to invalid value # +########################################################################### + +# invalid values for global +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = ASCII; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = NON_TRADITIONAL; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = 'OF'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = NONE; +--Error ER_WRONG_VALUE_FOR_VAR + +#invalid values for session + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = ANSI_SINGLE_QUOTES; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = 'ON'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = 'OF'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = DISABLE; + + +--echo '#-------------------FN_DYNVARS_152_05----------------------------#' +######################################################################### +# Check if the value in session Table matches value in variable # +######################################################################### + +SELECT @@session.sql_mode = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_mode'; + +--echo '#----------------------FN_DYNVARS_152_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.sql_mode = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_mode'; + + +--echo '#---------------------FN_DYNVARS_152_07-------------------------#' +################################################################### +# Check if numbers can be used on variable # +################################################################### + +# test if variable accepts 0,1,2 +SET @@global.sql_mode = 0; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 1; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 2; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 3; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 50000; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 500000; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 4294967295; +SELECT @@global.sql_mode; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sql_mode = 4294967296; + +# use of decimal values + +SET @@global.sql_mode = 0.4; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 1.0; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 40000.1; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 1.5; +SELECT @@global.sql_mode; + +SET @@global.sql_mode = 124567.49; +SELECT @@global.sql_mode; + +SET @@session.sql_mode = 50000000.5; +SELECT @@session.sql_mode; + +SET @@session.sql_mode = 4294967295.4; +SELECT @@session.sql_mode; + +--echo 'Bug: Decimal values can be used within the range [0.0-4294967295.5).'; +--echo 'Values are rounded to numeric values as evident from outcome.'; + + +--echo '#---------------------FN_DYNVARS_152_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.sql_mode = TRUE; +SELECT @@global.sql_mode; +SET @@global.sql_mode = FALSE; +SELECT @@global.sql_mode; + +--echo '#---------------------FN_DYNVARS_152_09----------------------#' +######################################################################### +# Check if sql_mode can be accessed with and without @@ sign # +######################################################################### + + +SET sql_mode = 'ANSI'; + +--Error ER_PARSE_ERROR +SET session.sql_mode = 'ANSI'; +--Error ER_PARSE_ERROR +SET global.sql_mode = 'ANSI'; + +SET session sql_mode = 1; +SELECT @@sql_mode; + +SET global sql_mode = 0; +SELECT @@global.sql_mode; + +--echo '#---------------------FN_DYNVARS_152_10----------------------#' +####################################################################### +# Check if sql_mode values can be combined as specified # +####################################################################### + +SET @@session.sql_mode = 'TRADITIONAL,ALLOW_INVALID_DATES,ANSI_QUOTES'; +SELECT @@session.sql_mode; + +SET @@global.sql_mode = 'ONLY_FULL_GROUP_BY,PIPES_AS_CONCAT,REAL_AS_FLOAT,ORACLE,POSTGRESQL'; +SELECT @@global.sql_mode; + +#try combining invalid mode with correct mode +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,HIGH_OR_PRECEDENCE, +IGNORE_SPACE'; + +############################## +# Restore initial value # +############################## + +SET @@global.sql_mode = @global_start_value; +SELECT @@global.sql_mode; + +SET @@session.sql_mode = @session_start_value; +SELECT @@session.sql_mode; + +################################################################ +# END OF sql_mode TESTS # +################################################################ + diff --git a/mysql-test/t/sql_mode_func.test b/mysql-test/t/sql_mode_func.test new file mode 100644 index 00000000000..5bb804c26da --- /dev/null +++ b/mysql-test/t/sql_mode_func.test @@ -0,0 +1,200 @@ +############# mysql-test\t\sql_mode_func.test ###################################### +# # +# Variable Name: sql_mode # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Values: ALLOW_INVALID_DATES, ANSI_QUOTES, ERROR_FOR_DIVISION_BY_ZERO, # +# HIGH_NOT_PRECEDENCE, IGNORE_SPACE, NO_AUTO_CREATE_USER, # +# NO_AUTO_VALUE_ON_ZERO, NO_BACKSLASH_ESCAPES, NO_DIR_IN_CREATE, # +# NO_ENGINE_SUBSTITUTION, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, # +# NO_TABLE_OPTIONS, NO_UNSIGNED_SUBTRACTION, NO_ZERO_DATE, # +# NO_ZERO_IN_DATE, ONLY_FULL_GROUP_BY, PIPES_AS_CONCAT, REAL_AS_FLOAT# +# STRICT_ALL_TABLES, STRICT_TRANS_TABLES, OFF # +# # +# # +# Creation Date: 2008-02-22 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_mode" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_sql_mode # +# # +#################################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +# +# Save initial value +# + +SET @sql_mode_session = @@SESSION.sql_mode; +SET @sql_mode_global = @@GLOBAL.sql_mode; + +# +# Create tables +# + +CREATE TEMPORARY TABLE t1(a varchar(20) not null, b varchar(20)); +CREATE TEMPORARY TABLE t2(a varchar(20) null, b varchar(20)); + +--echo '#--------------------FN_DYNVARS_153_01-------------------------#' +# +#ANSI mode +# +--echo ANSI mode + + +SET SESSION sql_mode = ANSI; + +SELECT @@SESSION.sql_mode; + +INSERT INTO t1 VALUES('t1a1','t1b1'); +INSERT INTO t1 VALUES('t1a2','t1b2'); +INSERT INTO t1 VALUES('t1a3','t1b3'); +INSERT INTO t1 VALUES('t1a4','t1b4'); + +INSERT INTO t2 VALUES('t2a1','t2b1'); +INSERT INTO t2 VALUES('t2a2','t2b2'); +INSERT INTO t2 VALUES('t2a3','t2b3'); +INSERT INTO t2 VALUES('t2a4','t2b4'); + +--error ER_INVALID_GROUP_FUNC_USE +SELECT * FROM t1 WHERE t1.a IN (SELECT MAX(t1.b) FROM t2); +--echo Expected error for invalid group function + +# +# Reset +# + +SET SESSION sql_mode = @sql_mode_session; +SET GLOBAL sql_mode = @sql_mode_global; + +--echo '#--------------------FN_DYNVARS_153_02-------------------------#' +# +#STRICT_TRANS_TABLES mode +# +--echo STRICT_TRANS_TABLES mode + +DELETE FROM t1; +DELETE FROM t2; + +SET SESSION sql_mode = STRICT_TRANS_TABLES; + +SELECT @@SESSION.sql_mode; + +INSERT INTO t1 VALUES('t1a1','t1b1'); +INSERT INTO t1 VALUES('t1a2','t1b2'); +INSERT INTO t1 VALUES('t1a3','t1b3'); +INSERT INTO t1 VALUES('t1a4','t1b4'); + +INSERT INTO t2 VALUES(NULL,'t2b1'); +INSERT INTO t2 VALUES('t2a2','t2b2'); +INSERT INTO t2 VALUES('t2a3','t2b3'); +INSERT INTO t2 VALUES('t2a4','t2b4'); + +--error ER_BAD_NULL_ERROR +INSERT INTO t1 SELECT * FROM t2; +--echo Expected error Bad NULL value + +SELECT * FROM t1 WHERE a = 't2a2'; +--echo Should return no rows in columns a,b; + +# +# Reset +# + +SET SESSION sql_mode = @sql_mode_session; +SET GLOBAL sql_mode = @sql_mode_global; + +--echo '#--------------------FN_DYNVARS_153_03-------------------------#' +# +#TRADITIONAL mode +# +--echo TRADITIONAL mode + +SET SESSION sql_mode = TRADITIONAL; + +SELECT @@SESSION.sql_mode; + +INSERT INTO t1 VALUES('t1a1','t1b1'); +INSERT INTO t1 VALUES('t1a2','t1b2'); +INSERT INTO t1 VALUES('t1a3','t1b3'); +INSERT INTO t1 VALUES('t1a4','t1b4'); + +INSERT INTO t2 VALUES(NULL,'t2b1'); +INSERT INTO t2 VALUES('t2a2','t2b2'); +INSERT INTO t2 VALUES('t2a3','t2b3'); +INSERT INTO t2 VALUES('t2a4','t2b4'); + +--error ER_BAD_NULL_ERROR +INSERT INTO t1 SELECT * FROM t2; +--echo Expected error Bad NULL value + +SELECT * FROM t1 WHERE a = 't2a2'; +--echo Should return no rows in columns a,b; + + +--echo '#-------------------FN_DYNVARS_153_04-------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL sql_mode = ''; +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_mode; +--echo '' Expected + +SET SESSION sql_mode = 'TRADITIONAL'; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_mode; +--echo '' Expected + +SET SESSION sql_mode = 'ANSI'; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_mode; +--echo 'REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, ANSI' Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_mode; +--echo 'STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, TRADITIONAL' Expected + + +SELECT @@GLOBAL.sql_mode; +--echo '' Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# + +SET SESSION sql_mode = @sql_mode_session; +SET GLOBAL sql_mode = @sql_mode_global; + +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/t/sql_notes_basic.test b/mysql-test/t/sql_notes_basic.test new file mode 100644 index 00000000000..984dca34e46 --- /dev/null +++ b/mysql-test/t/sql_notes_basic.test @@ -0,0 +1,176 @@ +################### mysql-test\t\sql_notes_basic.test ######################### +# # +# Variable Name: sql_notes # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_notes # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF sql_notes TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of sql_notes in a temporary variable # +############################################################################## + +SET @session_start_value = @@session.sql_notes; +SELECT @session_start_value; + + +--echo '#--------------------FN_DYNVARS_161_01------------------------#' +###################################################################### +# Display the DEFAULT value of sql_notes # +###################################################################### + +SET @@session.sql_notes = 0; +SET @@session.sql_notes = DEFAULT; +SELECT @@session.sql_notes; + +SET @@session.sql_notes = 1; +SET @@session.sql_notes = DEFAULT; +SELECT @@session.sql_notes; + + +--echo '#---------------------FN_DYNVARS_161_02-------------------------#' +########################################################################### +# Check if sql_notes can be accessed with and without @@ sign # +########################################################################### + +SET sql_notes = 1; +SELECT @@sql_notes; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_notes; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_notes; + +SET session sql_notes = 0; +SELECT @@session.sql_notes; + + +--echo '#--------------------FN_DYNVARS_161_03------------------------#' +###################################################################### +# change the value of sql_notes to a valid value # +###################################################################### + +SET @@session.sql_notes = 0; +SELECT @@session.sql_notes; +SET @@session.sql_notes = 1; +SELECT @@session.sql_notes; + + +--echo '#--------------------FN_DYNVARS_161_04-------------------------#' +######################################################################### +# Change the value of sql_notes to invalid value # +######################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = N; + +SET @@session.sql_notes = OF; +SELECT @@session.sql_notes; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_notes = NO; + + +--echo '#-------------------FN_DYNVARS_161_05----------------------------#' +######################################################################### +# Test if accessing global sql_notes gives error # +######################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_notes = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_notes; + +--echo '#----------------------FN_DYNVARS_161_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='sql_notes'; + +--echo '#----------------------FN_DYNVARS_161_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_notes = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_notes'; +SELECT @@session.sql_notes; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_notes'; + +--echo '#---------------------FN_DYNVARS_161_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_notes = OFF; +SELECT @@session.sql_notes; +SET @@session.sql_notes = ON; +SELECT @@session.sql_notes; + +--echo '#---------------------FN_DYNVARS_161_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_notes = TRUE; +SELECT @@session.sql_notes; +SET @@session.sql_notes = FALSE; +SELECT @@session.sql_notes; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_notes = @session_start_value; +SELECT @@session.sql_notes; + +############################################################# +# END OF sql_notes TESTS # +############################################################# + diff --git a/mysql-test/t/sql_notes_func.test b/mysql-test/t/sql_notes_func.test new file mode 100644 index 00000000000..f7c521d3736 --- /dev/null +++ b/mysql-test/t/sql_notes_func.test @@ -0,0 +1,134 @@ +############# mysql-test\t\sql_notes_func.test ############################ +# # +# Variable Name: sql_notes # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_notes" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +########################################################################### + +# Due to suppressed warnings the pc-protocol is disabled +--disable_ps_protocol + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @default_sql_notes = @@sql_notes; + +--echo '#--------------------FN_DYNVARS_162_01-------------------------#' +# +# Value ON +# + +SET SESSION sql_notes = ON; + +--echo creating a temporary table +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +--echo conditionally dropping the table twice so that a note generates + +DROP TABLE IF EXISTS t1; + +SELECT @@warning_count; +--echo 0 Expected + +# +#This line generates A Note warning +# +DROP TABLE IF EXISTS t1; + +SELECT @@warning_count; +--echo 1 Expected + +--echo '#--------------------FN_DYNVARS_162_02-------------------------#' +# +# Value OFF +# + +SET SESSION sql_notes = OFF; + +--echo creating a temporary table +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); +--echo conditionally dropping the table twice so that a note generates + +DROP TABLE IF EXISTS t1; + +SELECT @@warning_count; +--echo 0 Expected + +# +#This line generates A Note warning +# +DROP TABLE IF EXISTS t1; + +SELECT @@warning_count; +--echo 0 Expected + +--echo '#------------------FN_DYNVARS_162_03---------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_notes; +--echo 1 / TRUE Expected + +SET SESSION sql_notes = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_notes; +--echo 1 / TRUE Expected + +SET SESSION sql_notes = TRUE; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_notes; +--echo 1 / TRUE Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_notes; +--echo 0 / FALSE Expected + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + +SET SESSION sql_notes = @default_sql_notes; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +--enable_ps_protocol + diff --git a/mysql-test/t/sql_quote_show_create_basic.test b/mysql-test/t/sql_quote_show_create_basic.test new file mode 100644 index 00000000000..1919b3ee642 --- /dev/null +++ b/mysql-test/t/sql_quote_show_create_basic.test @@ -0,0 +1,176 @@ +############## mysql-test\t\sql_quote_show_create_basic.test ################## +# # +# Variable Name: sql_quote_show_create # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_quote_show_create # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +####################################################################### +# START OF sql_quote_show_create TESTS # +####################################################################### + + +############################################################################## +# Saving initial value of sql_quote_show_create in a temporary variable # +############################################################################## + +SET @session_start_value = @@session.sql_quote_show_create; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_162_01------------------------#' +###################################################################### +# Display the DEFAULT value of sql_quote_show_create # +###################################################################### + +SET @@session.sql_quote_show_create = 0; +SET @@session.sql_quote_show_create = DEFAULT; +SELECT @@session.sql_quote_show_create; + +SET @@session.sql_quote_show_create = 1; +SET @@session.sql_quote_show_create = DEFAULT; +SELECT @@session.sql_quote_show_create; + + +--echo '#---------------------FN_DYNVARS_162_02-------------------------#' +############################################################################# +# Check if sql_quote_show_create can be accessed with and without @@ sign # +############################################################################# + +SET sql_quote_show_create = 1; +SELECT @@sql_quote_show_create; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_quote_show_create; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_quote_show_create; + +SET session sql_quote_show_create = 0; +SELECT @@session.sql_quote_show_create; + + +--echo '#--------------------FN_DYNVARS_162_03------------------------#' +######################################################################## +# change the value of sql_quote_show_create to a valid value # +######################################################################## + +SET @@session.sql_quote_show_create = 0; +SELECT @@session.sql_quote_show_create; +SET @@session.sql_quote_show_create = 1; +SELECT @@session.sql_quote_show_create; + + +--echo '#--------------------FN_DYNVARS_162_04-------------------------#' +########################################################################## +# Change the value of sql_quote_show_create to invalid value # +########################################################################## + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = N; + +SET @@session.sql_quote_show_create = OF; +SELECT @@session.sql_quote_show_create; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_quote_show_create = NO; + + +--echo '#-------------------FN_DYNVARS_162_05----------------------------#' +########################################################################## +# Test if accessing global sql_quote_show_create gives error # +########################################################################## + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_quote_show_create = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_quote_show_create; + +--echo '#----------------------FN_DYNVARS_162_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_quote_show_create'; + +--echo '#----------------------FN_DYNVARS_162_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_quote_show_create = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_quote_show_create'; +SELECT @@session.sql_quote_show_create; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_quote_show_create'; + +--echo '#---------------------FN_DYNVARS_162_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_quote_show_create = OFF; +SELECT @@session.sql_quote_show_create; +SET @@session.sql_quote_show_create = ON; +SELECT @@session.sql_quote_show_create; + +--echo '#---------------------FN_DYNVARS_162_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_quote_show_create = TRUE; +SELECT @@session.sql_quote_show_create; +SET @@session.sql_quote_show_create = FALSE; +SELECT @@session.sql_quote_show_create; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_quote_show_create = @session_start_value; +SELECT @@session.sql_quote_show_create; + +############################################################### +# END OF sql_quote_show_create TESTS # +############################################################### diff --git a/mysql-test/t/sql_quote_show_create_func.test b/mysql-test/t/sql_quote_show_create_func.test new file mode 100644 index 00000000000..6350771a0da --- /dev/null +++ b/mysql-test/t/sql_quote_show_create_func.test @@ -0,0 +1,114 @@ +############# mysql-test\t\sql_quote_show_create_func.test ################# +# # +# Variable Name: sql_quote_show_create # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable sql_quote_show_create# +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @default_sql_quote_show_create = @@sql_quote_show_create; + +# +# Creating tables +# + +CREATE TEMPORARY TABLE t1(a varchar(20), b varchar(20)); + +--echo '#-----------------------------FN_DYNVARS_163_01------------------------------------#' +# +# Value TRUE +# + +SET SESSION sql_quote_show_create = TRUE; + +SHOW CREATE DATABASE test; +--echo EXPECTING identifiers test TO BE quoted like 'test' + +SHOW CREATE TABLE t1; +--echo EXPECTING identifiers a, b, t1 TO BE quoted like 'a','b','t1' + + +--echo '#-----------------------------FN_DYNVARS_163_02------------------------------------#' +# +# Value FALSE +# + +SET SESSION sql_quote_show_create = FALSE; + +SHOW CREATE DATABASE test; +--echo EXPECTING identifiers test NOT TO BE quoted like 'test' + +SHOW CREATE TABLE t1; +--echo EXPECTING identifiers a, b, t1 NOT TO BE quoted like 'a','b','t1' + +--echo '#----------------------------FN_DYNVARS_163_03--------------------------------------#' +# +# Session data integrity check +# + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_quote_show_create; +--echo 1 / TRUE Expected + +SET SESSION sql_quote_show_create = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_quote_show_create; +--echo 1 / TRUE Expected + +SET SESSION sql_quote_show_create = TRUE; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_quote_show_create; +--echo 1 / TRUE Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_quote_show_create; +--echo 0 / FALSE Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# +--echo +--echo Cleanup + +SET @@sql_quote_show_create = @default_sql_quote_show_create; + +DROP TABLE t1; diff --git a/mysql-test/t/sql_safe_updates_basic.test b/mysql-test/t/sql_safe_updates_basic.test new file mode 100644 index 00000000000..489b42949a0 --- /dev/null +++ b/mysql-test/t/sql_safe_updates_basic.test @@ -0,0 +1,175 @@ +############## mysql-test\t\sql_safe_updates_basic.test ####################### +# # +# Variable Name: sql_safe_updates # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Range: 0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_safe_updates # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF sql_safe_updates TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of sql_safe_updates in a temporary variable # +################################################################################ + +SET @session_start_value = @@session.sql_safe_updates; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_163_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_safe_updates # +######################################################################## + +SET @@session.sql_safe_updates = 0; +SET @@session.sql_safe_updates = DEFAULT; +SELECT @@session.sql_safe_updates; + +SET @@session.sql_safe_updates = 1; +SET @@session.sql_safe_updates = DEFAULT; +SELECT @@session.sql_safe_updates; + + +--echo '#---------------------FN_DYNVARS_163_02-------------------------#' +############################################################################# +# Check if sql_safe_updates can be accessed with and without @@ sign # +############################################################################# + +SET sql_safe_updates = 1; +SELECT @@sql_safe_updates; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_safe_updates; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_safe_updates; + +SET session sql_safe_updates = 0; +SELECT @@session.sql_safe_updates; + + +--echo '#--------------------FN_DYNVARS_163_03------------------------#' +######################################################################## +# change the value of sql_safe_updates to a valid value # +######################################################################## + +SET @@session.sql_safe_updates = 0; +SELECT @@session.sql_safe_updates; +SET @@session.sql_safe_updates = 1; +SELECT @@session.sql_safe_updates; + + +--echo '#--------------------FN_DYNVARS_163_04-------------------------#' +########################################################################### +# Change the value of sql_safe_updates to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = N; + +SET @@session.sql_safe_updates = OF; +SELECT @@session.sql_safe_updates; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_safe_updates = NO; + + +--echo '#-------------------FN_DYNVARS_163_05----------------------------#' +########################################################################### +# Test if accessing global sql_safe_updates gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_safe_updates = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_safe_updates; + +--echo '#----------------------FN_DYNVARS_163_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_safe_updates'; + +--echo '#----------------------FN_DYNVARS_163_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_safe_updates = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_safe_updates'; +SELECT @@session.sql_safe_updates; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_safe_updates'; + +--echo '#---------------------FN_DYNVARS_163_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_safe_updates = OFF; +SELECT @@session.sql_safe_updates; +SET @@session.sql_safe_updates = ON; +SELECT @@session.sql_safe_updates; + +--echo '#---------------------FN_DYNVARS_163_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_safe_updates = TRUE; +SELECT @@session.sql_safe_updates; +SET @@session.sql_safe_updates = FALSE; +SELECT @@session.sql_safe_updates; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_safe_updates = @session_start_value; +SELECT @@session.sql_safe_updates; + +############################################################### +# END OF sql_safe_updates TESTS # +############################################################### diff --git a/mysql-test/t/sql_safe_updates_func.test b/mysql-test/t/sql_safe_updates_func.test new file mode 100644 index 00000000000..a8ce3a8d0f7 --- /dev/null +++ b/mysql-test/t/sql_safe_updates_func.test @@ -0,0 +1,202 @@ +############# mysql-test\t\sql_safe_updates_func.test ##################### +# # +# Variable Name: sql_safe_updates # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: 1 TRUE # +# Values: 1 TRUE, 0 FALSE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_safe_updates" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +########################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @default_sql_safe_updates = @@sql_safe_updates; + +# +# Creating tables +# + +CREATE TEMPORARY TABLE t1(a int PRIMARY KEY, b varchar(20)); + +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +INSERT INTO t1 VALUES(4, 'val4'); +INSERT INTO t1 VALUES(5, 'val5'); +INSERT INTO t1 VALUES(6, 'val6'); +INSERT INTO t1 VALUES(7, 'val7'); +INSERT INTO t1 VALUES(8, 'val8'); +INSERT INTO t1 VALUES(9, 'val9'); + + + +--echo '#-----------------------------FN_DYNVARS_164_01------------------------------------#' +--echo +--echo Value ON +--echo +# +# Value ON +# + +SET SESSION sql_safe_updates = ON; + +--echo '#-----------------------------FN_DYNVARS_164_02------------------------------------#' +# +# Without WHERE Clause +# +--echo Expected error : Update without key in safe mode +--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE +DELETE FROM t1; +SELECT * FROM t1; + +PREPARE stmt FROM 'DELETE FROM t1;'; +--echo Expected error : Update without key in safe mode +--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +--echo '#-----------------------------FN_DYNVARS_164_03------------------------------------#' +# +# With a LIMIT Clause +# +--echo Expected error : Update without key in safe mode +--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE +DELETE FROM t1 LIMIT 2; +SELECT * FROM t1; + +--echo '#-----------------------------FN_DYNVARS_164_04------------------------------------#' +# +# With a no key WHERE Clause +# +--echo Expected error : Update without key in safe mode +--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE +DELETE FROM t1 WHERE b='val1'; +SELECT * FROM t1; + +--echo '#-----------------------------FN_DYNVARS_164_05------------------------------------#' +# +# With a key WHERE Clause +# +--echo This one should work +DELETE FROM t1 WHERE a=1; +SELECT * FROM t1; + +--echo +--echo Value OFF +--echo +# +# Value OFF +# + +SET SESSION sql_safe_updates = OFF; + +--echo '#-----------------------------FN_DYNVARS_164_06------------------------------------#' +# +# With a no key WHERE Clause +# +--echo This one should work +DELETE FROM t1 WHERE b='val1'; +SELECT * FROM t1; + +--echo '#-----------------------------FN_DYNVARS_164_07------------------------------------#' +# +# With a key WHERE Clause +# +--echo This one should work +DELETE FROM t1 WHERE a=1; +SELECT * FROM t1; + +--echo '#-----------------------------FN_DYNVARS_164_08------------------------------------#' +# +# With a LIMIT Clause +# +--echo This one should work +DELETE FROM t1 LIMIT 2; +SELECT * FROM t1; + +--echo '#-----------------------------FN_DYNVARS_164_09------------------------------------#' +# +# Without WHERE Clause +# +--echo This one should work +--echo DELETE FROM t1; +--error ER_MIXING_NOT_ALLOWED +#DELETE FROM t1; +--echo Bug#35392 Unexpected error occurs in this statement Can't change size of the file +--echo statement is remarked because the error is uncatchable by testing framework +SELECT * FROM t1; + +PREPARE stmt FROM 'DELETE FROM t1;'; +--echo Expected error : Update without key in safe mode +--error ER_MIXING_NOT_ALLOWED +#EXECUTE stmt; +--echo Bug#35392 Unexpected error occurs in this statement Can't change size of the file +--echo statement is remarked because the error is uncatchable by testing framework +DEALLOCATE PREPARE stmt; + + +--echo '#----------------------------FN_DYNVARS_164_10--------------------------------------#' +# +# Session data integrity check +# + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_safe_updates; +--echo 0 / FALSE Expected + +SET SESSION sql_safe_updates = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_safe_updates; +--echo 0 / FALSE Expected + +SET SESSION sql_safe_updates = TRUE; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_safe_updates; +--echo 1 / TRUE Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_safe_updates; +--echo 0 / FALSE Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + +SET SESSION sql_safe_updates = @default_sql_safe_updates; + +DROP TABLE t1; diff --git a/mysql-test/t/sql_select_limit_func.test b/mysql-test/t/sql_select_limit_func.test new file mode 100644 index 00000000000..ed582949aa0 --- /dev/null +++ b/mysql-test/t/sql_select_limit_func.test @@ -0,0 +1,209 @@ +############# mysql-test\t\sql_select_limit_func.test ##################### +# # +# Variable Name: sql_select_limit # +# Scope: GLOBAL, SESSION # +# Access Type: Dynamic # +# Data Type: NUMERIC # +# Default Value: 4294967295 # +# Values: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_select_limit" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +########################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @session_sql_select_limit = @@SESSION.sql_select_limit; +SET @global_sql_select_limit = @@GLOBAL.sql_select_limit; + +# +# Creating tables +# + +CREATE TEMPORARY TABLE t1(a int PRIMARY KEY, b varchar(20)); +CREATE TEMPORARY TABLE t2(a int PRIMARY KEY, b varchar(20)); +CREATE TEMPORARY TABLE t3(a int PRIMARY KEY, b varchar(20)); + +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +INSERT INTO t1 VALUES(4, 'val4'); +INSERT INTO t1 VALUES(5, 'val5'); +INSERT INTO t1 VALUES(6, 'val6'); +INSERT INTO t1 VALUES(7, 'val7'); +INSERT INTO t1 VALUES(8, 'val8'); +INSERT INTO t1 VALUES(9, 'val9'); + +INSERT INTO t2 VALUES(5, 'val5'); +INSERT INTO t2 VALUES(6, 'val6'); +INSERT INTO t2 VALUES(7, 'val7'); +INSERT INTO t2 VALUES(8, 'val8'); +INSERT INTO t2 VALUES(9, 'val9'); + + + +--echo '#-----------------------------FN_DYNVARS_165_01-----------------#' +--echo +--echo Value DEFAULT +--echo +# +# Value DEFAULT +# + +--enable_info + +SET SESSION sql_select_limit = DEFAULT; + +SELECT * FROM t1; +--echo Expecting affected rows: 9 + +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo Expecting affected rows: 5 + + +--echo '#-----------------------------FN_DYNVARS_165_02---------------#' +# +# Small value +# + +SET SESSION sql_select_limit = 2; + +SELECT * FROM t1; +--echo Expecting affected rows: 2 + +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +--echo Expecting affected rows: 2 + +--echo '#-----------------------------FN_DYNVARS_165_03---------------#' +# +# Small value with LIMIT Clause +# + +SET SESSION sql_select_limit = 2; + +SELECT * FROM t1 LIMIT 4; +--echo Expecting affected rows: 4 + +SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a LIMIT 3; +--echo Expecting affected rows: 3 + +--echo '#-----------------------------FN_DYNVARS_165_04----------------#' +# +# Small value with Store procedure +# + +SET SESSION sql_select_limit = 2; + +delimiter |; + +CREATE PROCEDURE TestProc() +BEGIN + SELECT * FROM t1; +END| +delimiter ;| + +call TestProc(); +--echo Expecting affected rows: 9 + +DROP PROCEDURE TestProc; + +delimiter |; + +CREATE PROCEDURE TestProc() +BEGIN + SELECT * FROM t1 INNER JOIN t2 ON t1.a = t2.a; +END| +delimiter ;| + +call TestProc(); +--echo Expecting affected rows: 5 + +DROP PROCEDURE TestProc; + +--echo '#-----------------------------FN_DYNVARS_165_05-----------------#' +# +# Small value with Non result producing SELECT statements +# + +SET SESSION sql_select_limit = 2; + +CREATE TEMPORARY TABLE t4(a int PRIMARY KEY, b varchar(20)) SELECT * FROM t2; +--echo Expecting Records: 5 + +INSERT INTO t3 SELECT * FROM t1; +--echo Expecting Records: 9 + +--echo '#-----------------------------FN_DYNVARS_165_06---------------------#' +# +# Session data integrity check & GLOBAL Value check +# +--disable_info + +SET GLOBAL sql_select_limit = 2; + +--echo ** Connecting con_int2 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_select_limit; +--echo 2 Expected + +SET SESSION sql_select_limit = 10; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_select_limit; +--echo 2 Expected + +SET SESSION sql_select_limit = 12; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_select_limit; +--echo 12 Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_select_limit; +--echo 10 Expected + +SELECT @@GLOBAL.sql_select_limit; +--echo 2 Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + +--disable_info + +SET @@SESSION.sql_select_limit = @session_sql_select_limit; +SET @@GLOBAL.sql_select_limit = @global_sql_select_limit; + +DROP TABLE t1; +DROP TABLE t2; +DROP TABLE t3; +DROP TABLE t4; diff --git a/mysql-test/t/sql_slave_skip_counter_basic.test b/mysql-test/t/sql_slave_skip_counter_basic.test new file mode 100644 index 00000000000..86ed75eb42a --- /dev/null +++ b/mysql-test/t/sql_slave_skip_counter_basic.test @@ -0,0 +1,108 @@ +############## mysql-test\t\sql_slave_skip_counter_basic.test ################# +# # +# Variable Name: sql_slave_skip_counter # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_slave_skip_counter # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################ +# START OF sql_slave_skip_counter TESTS # +################################################################ + +--echo '#--------------------FN_DYNVARS_165_01-------------------------#' +############################################################# +# Try accessing initial value # +############################################################# + +--Error ER_VAR_CANT_BE_READ +SET @start_global_value = @@global.sql_slave_skip_counter; +--Error ER_VAR_CANT_BE_READ +SELECT @@global.sql_slave_skip_counter; + +--echo 'Info:This value is write only. Value can not be read' + +--echo '#--------------------FN_DYNVARS_165_02-------------------------#' +################################################################### +# Try setting DEFAULT value to variable # +################################################################### + +--Error ER_NO_DEFAULT +SET @@global.sql_slave_skip_counter = DEFAULT; + + +--echo '#--------------------FN_DYNVARS_165_03-------------------------#' +################################################################### +# Try setting any valid value to variable # +################################################################### + +SET @@global.sql_slave_skip_counter = 0; +SET @@global.sql_slave_skip_counter = 5; +SET @@global.sql_slave_skip_counter = 1024; +SET @@global.sql_slave_skip_counter = 2147483648; +SET @@global.sql_slave_skip_counter = 2147483648*2; +SET @@global.sql_slave_skip_counter = 2147483648*2-1; +SET @@global.sql_slave_skip_counter = 4294967295*4294967295; + + +--echo '#--------------------FN_DYNVARS_165_03-------------------------#' +################################################################### +# Checking invalid value for variable # +################################################################### + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sql_slave_skip_counter = '5'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sql_slave_skip_counter = 5.5; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sql_slave_skip_counter = -.5; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sql_slave_skip_counter = -.0; + + +--echo '#--------------------FN_DYNVARS_165_03-------------------------#' +################################################################### +# Try retrieving value from Information Schema # +################################################################### + +SET @@global.sql_slave_skip_counter = 1024; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_slave_skip_counter'; + + +--echo '#--------------------FN_DYNVARS_165_03-------------------------#' +################################################################### +# Checking if variable is accessible with session scope # +################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@sql_slave_skip_counter = 10; +--Error ER_GLOBAL_VARIABLE +SET @@session.sql_slave_skip_counter = 12; +--Error ER_GLOBAL_VARIABLE +SET @@local.sql_slave_skip_counter = 13; + +######################################################## +# END OF sql_slave_skip_counter TESTS # +######################################################## + diff --git a/mysql-test/t/sql_warnings_basic.test b/mysql-test/t/sql_warnings_basic.test new file mode 100644 index 00000000000..f740403ceda --- /dev/null +++ b/mysql-test/t/sql_warnings_basic.test @@ -0,0 +1,182 @@ +################# mysql-test\t\sql_warnings_basic.test ######################## +# # +# Variable Name: sql_warnings # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: # +# Valid Values:0,1 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable sql_warnings # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + + +######################################################################## +# START OF sql_warnings TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of sql_warnings in a temporary variable # +############################################################################## + +SET @session_start_value = @@session.sql_warnings; +SELECT @session_start_value; + + +--echo '#--------------------FN_DYNVARS_166_01------------------------#' +######################################################################## +# Display the DEFAULT value of sql_warnings # +######################################################################## + +SET @@session.sql_warnings = 0; +SET @@session.sql_warnings = DEFAULT; +SELECT @@session.sql_warnings; + +SET @@session.sql_warnings = 1; +SET @@session.sql_warnings = DEFAULT; +SELECT @@session.sql_warnings; + + +--echo '#---------------------FN_DYNVARS_166_02-------------------------#' +############################################################################# +# Check if sql_warnings can be accessed with and without @@ sign # +############################################################################# + +SET sql_warnings = 1; +SELECT @@sql_warnings; + +--Error ER_UNKNOWN_TABLE +SELECT session.sql_warnings; + +--Error ER_UNKNOWN_TABLE +SELECT local.sql_warnings; + +SET session sql_warnings = 0; +SELECT @@session.sql_warnings; + + +--echo '#--------------------FN_DYNVARS_166_03------------------------#' +######################################################################## +# change the value of sql_warnings to a valid value # +######################################################################## + +SET @@session.sql_warnings = 0; +SELECT @@session.sql_warnings; +SET @@session.sql_warnings = 1; +SELECT @@session.sql_warnings; + + +--echo '#--------------------FN_DYNVARS_166_04-------------------------#' +########################################################################### +# Change the value of sql_warnings to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = -0.6; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = 1.9; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = TRE; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = N; + +SET @@session.sql_warnings = OF; +SELECT @@session.sql_warnings; + +--echo 'Bug# 34828: OF is taken as OFF and a value of 0 is set.' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = ''; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.sql_warnings = NO; + + +--echo '#-------------------FN_DYNVARS_166_05----------------------------#' +########################################################################### +# Test if accessing global sql_warnings gives error # +########################################################################### + +--Error ER_LOCAL_VARIABLE +SET @@global.sql_warnings = 0; + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@global.sql_warnings; + + +--echo '#----------------------FN_DYNVARS_166_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sql_warnings'; + + +--echo '#----------------------FN_DYNVARS_166_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@session.sql_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_warnings'; +SELECT @@session.sql_warnings; +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='sql_warnings'; +--echo 'Bug: value in information schema does not match' + +--echo '#---------------------FN_DYNVARS_166_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@session.sql_warnings = OFF; +SELECT @@session.sql_warnings; +SET @@session.sql_warnings = ON; +SELECT @@session.sql_warnings; + +--echo '#---------------------FN_DYNVARS_166_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@session.sql_warnings = TRUE; +SELECT @@session.sql_warnings; +SET @@session.sql_warnings = FALSE; +SELECT @@session.sql_warnings; + +############################## +# Restore initial value # +############################## + +SET @@session.sql_warnings = @session_start_value; +SELECT @@session.sql_warnings; + + +############################################################### +# END OF sql_warnings TESTS # +############################################################### diff --git a/mysql-test/t/sql_warnings_func.test b/mysql-test/t/sql_warnings_func.test new file mode 100644 index 00000000000..e7705d1f146 --- /dev/null +++ b/mysql-test/t/sql_warnings_func.test @@ -0,0 +1,120 @@ +############# mysql-test\t\sql_warnings_func.test ######################### +# # +# Variable Name: sql_warnings # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: BOOLEAN # +# Default Value: FALSE 0 # +# Values: TRUE 1, FALSE 0 # +# # +# # +# Creation Date: 2008-03-02 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "sql_warnings" # +# that checks behavior of this variable in the following ways# +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +########################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @default_sql_warnings = @@sql_warnings; + +# +# Creating tables +# + +CREATE TEMPORARY TABLE t1(a varchar(5), b varchar(20)); + +--enable_info +--disable_warnings + +--echo '#-----------------------------FN_DYNVARS_167_01------------#' +# +# Value DEFAULT +# +SET @@sql_warnings = DEFAULT; + +INSERT INTO t1 VALUES('abcdef', 'val1'); + +--echo '#-----------------------------FN_DYNVARS_167_02------------------#' +# +# OFF value +# + +SET @@sql_warnings = 0; + +INSERT INTO t1 VALUES('abcdef', 'val1'); + +--echo '#-----------------------------FN_DYNVARS_167_03---------------#' +# +# ON value +# + +SET @@sql_warnings = 1; + +INSERT INTO t1 VALUES('abcdef', 'val1'); + + +--echo '#----------------------------FN_DYNVARS_167_04---------------#' +# +# Session data integrity check Value check +# + +--disable_info + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_warnings; +--echo 0 / FALSE Expected + +SET SESSION sql_warnings = FALSE; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_warnings; +--echo 0 / FALSE Expected + +SET SESSION sql_warnings = TRUE; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.sql_warnings; +--echo 1 / TRUE Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.sql_warnings; +--echo 0 / FALSE Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + +DROP TABLE t1; + +SET @@sql_warnings = @default_sql_warnings; + +--disable_info +--enable_warnings diff --git a/mysql-test/t/ssl_ca_basic.test b/mysql-test/t/ssl_ca_basic.test new file mode 100644 index 00000000000..1d0b9d92fdd --- /dev/null +++ b/mysql-test/t/ssl_ca_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\ssl_ca_basic.test ############################# +# # +# Variable Name: ssl_ca # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable ssl_ca # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_045_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.ssl_ca); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_045_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.ssl_ca=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.ssl_ca); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_045_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.ssl_ca = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_ca'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.ssl_ca); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_ca'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_045_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@ssl_ca = @@GLOBAL.ssl_ca; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_045_05----------------------#' +################################################################################ +# Check if ssl_ca can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@ssl_ca); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.ssl_ca); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.ssl_ca); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.ssl_ca); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT ssl_ca = @@SESSION.ssl_ca; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/ssl_capath_basic.test b/mysql-test/t/ssl_capath_basic.test new file mode 100644 index 00000000000..c32b572fb1b --- /dev/null +++ b/mysql-test/t/ssl_capath_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\ssl_capath_basic.test ######################### +# # +# Variable Name: ssl_capath # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable ssl_capath # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_046_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.ssl_capath); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_046_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.ssl_capath=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.ssl_capath); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_046_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.ssl_capath = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_capath'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.ssl_capath); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_capath'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_046_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@ssl_capath = @@GLOBAL.ssl_capath; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_046_05----------------------#' +################################################################################ +# Check if ssl_capath can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@ssl_capath); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.ssl_capath); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.ssl_capath); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.ssl_capath); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT ssl_capath = @@SESSION.ssl_capath; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/ssl_cert_basic.test b/mysql-test/t/ssl_cert_basic.test new file mode 100644 index 00000000000..86104cdf3cb --- /dev/null +++ b/mysql-test/t/ssl_cert_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\ssl_cert_basic.test ########################### +# # +# Variable Name: ssl_cert # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable ssl_cert # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_047_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.ssl_cert); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_047_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.ssl_cert=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.ssl_cert); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_047_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.ssl_cert = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cert'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.ssl_cert); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cert'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_047_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@ssl_cert = @@GLOBAL.ssl_cert; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_047_05----------------------#' +################################################################################ +# Check if ssl_cert can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@ssl_cert); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.ssl_cert); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.ssl_cert); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.ssl_cert); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT ssl_cert = @@SESSION.ssl_cert; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/ssl_cipher_basic.test b/mysql-test/t/ssl_cipher_basic.test new file mode 100644 index 00000000000..425f7aae442 --- /dev/null +++ b/mysql-test/t/ssl_cipher_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\ssl_cipher_basic.test ######################### +# # +# Variable Name: ssl_cipher # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable ssl_cipher # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_048_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.ssl_cipher); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_048_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.ssl_cipher=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.ssl_cipher); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_048_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.ssl_cipher = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cipher'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.ssl_cipher); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_cipher'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_048_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@ssl_cipher = @@GLOBAL.ssl_cipher; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_048_05----------------------#' +################################################################################ +# Check if ssl_cipher can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@ssl_cipher); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.ssl_cipher); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.ssl_cipher); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.ssl_cipher); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT ssl_cipher = @@SESSION.ssl_cipher; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/ssl_key_basic.test b/mysql-test/t/ssl_key_basic.test new file mode 100644 index 00000000000..dceb5ee9063 --- /dev/null +++ b/mysql-test/t/ssl_key_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\ssl_key_basic.test ############################ +# # +# Variable Name: ssl_key # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable ssl_key # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_049_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.ssl_key); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_049_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.ssl_key=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.ssl_key); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_049_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.ssl_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_key'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.ssl_key); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='ssl_key'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_049_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@ssl_key = @@GLOBAL.ssl_key; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_049_05----------------------#' +################################################################################ +# Check if ssl_key can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@ssl_key); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.ssl_key); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.ssl_key); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.ssl_key); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT ssl_key = @@SESSION.ssl_key; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/storage_engine_basic-master.opt b/mysql-test/t/storage_engine_basic-master.opt new file mode 100644 index 00000000000..627becdbfb5 --- /dev/null +++ b/mysql-test/t/storage_engine_basic-master.opt @@ -0,0 +1 @@ +--innodb diff --git a/mysql-test/t/storage_engine_basic.test b/mysql-test/t/storage_engine_basic.test new file mode 100644 index 00000000000..129b7d8b406 --- /dev/null +++ b/mysql-test/t/storage_engine_basic.test @@ -0,0 +1,179 @@ +############## mysql-test\t\storage_engine_basic.test ################## +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable # +# storage_engine that check behavior of this # +# variable with valid values, invalid values, accessing # +# variable with scope that is allowed and with scope that # +# is now allowed. # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_storage_engine # +# # +######################################################################## + +--source include/load_sysvars.inc + +###################################################################### +# START OF storage_engine TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.storage_engine; +SELECT @start_global_value; +SET @start_session_value = @@session.storage_engine; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +###################################################################### +# Display the DEFAULT value of storage_engine # +###################################################################### + +SET @@global.storage_engine = MYISAM; + +--Error ER_NO_DEFAULT +SET @@global.storage_engine = DEFAULT; +SELECT @@global.storage_engine; + +SET @@session.storage_engine = INNODB; +SET @@session.storage_engine = DEFAULT; +SELECT @@session.storage_engine; + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +######################################################################## +# Change the value of storage_engine to a valid value for GLOBAL Scope # +######################################################################## + +SET @@global.storage_engine = MYISAM; +SELECT @@global.storage_engine; +SET @@global.storage_engine = MERGE; +SELECT @@global.storage_engine; +SET @@global.storage_engine = MEMORY; +SELECT @@global.storage_engine; +SET @@global.storage_engine = INNODB; +SELECT @@global.storage_engine; + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +######################################################################### +# Change the value of storage_engine to a valid value for SESSION Scope # +######################################################################### + +SET @@session.storage_engine = MYISAM; +SELECT @@session.storage_engine; +SET @@session.storage_engine = MERGE; +SELECT @@session.storage_engine; +SET @@session.storage_engine = MEMORY; +SELECT @@session.storage_engine; +SET @@session.storage_engine = INNODB; +SELECT @@session.storage_engine; + + +--echo '#------------------FN_DYNVARS_005_04-----------------------#' +################################################################## +# Change the value of storage_engine to an invalid value # +################################################################## + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.storage_engine = 8199; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.storage_engine = -1024; + +--Error ER_PARSE_ERROR +SET @@global.storage_engine = 65530.34.; + +--Error ER_UNKNOWN_STORAGE_ENGINE +SET @@global.storage_engine = FILE; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.storage_engine = 8199; + +--Error ER_PARSE_ERROR +SET @@session.storage_engine = 65530.34.; + +--Error ER_UNKNOWN_STORAGE_ENGINE +SET @@session.storage_engine = RECORD; + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.storage_engine = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='storage_engine'; + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.storage_engine = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='storage_engine'; + + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.storage_engine = TRUE; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.storage_engine = FALSE; + + +--echo '#---------------------FN_DYNVARS_001_8----------------------#' +############################################################### +# Check if accessing variable with SESSION,LOCAL and without # +# SCOPE points to same session variable # +############################################################### + +SET @@storage_engine = MYISAM; +SELECT @@storage_engine = @@local.storage_engine; +SELECT @@local.storage_engine = @@session.storage_engine; + + +--echo '#---------------------FN_DYNVARS_001_9----------------------#' +######################################################################### +# Check if storage_engine can be accessed with and without @@ sign # +######################################################################### + +SET storage_engine = MEMORY; +SELECT @@storage_engine; +--Error ER_UNKNOWN_TABLE +SELECT local.storage_engine; +--Error ER_UNKNOWN_TABLE +SELECT session.storage_engine; +--Error ER_BAD_FIELD_ERROR +SELECT storage_engine = @@session.storage_engine; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.storage_engine = @start_global_value; +SELECT @@global.storage_engine; +SET @@session.storage_engine = @start_session_value; +SELECT @@session.storage_engine; + + +############################################################# +# END OF storage_engine TESTS # +############################################################# + diff --git a/mysql-test/t/sync_frm_basic.test b/mysql-test/t/sync_frm_basic.test new file mode 100644 index 00000000000..6c00182a805 --- /dev/null +++ b/mysql-test/t/sync_frm_basic.test @@ -0,0 +1,163 @@ +############## mysql-test\t\sync_frm_basic.test ############################### +# # +# Variable Name: sync_frm # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: TRUE # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable sync_frm # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +############################################################## +# START OF sync_frm TESTS # +############################################################## + + +################################################################ +# Saving initial value of sync_frm in a temporary variable # +################################################################ + +SET @start_value = @@global.sync_frm; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_169_01------------------------#' +###################################################### +# Display the DEFAULT value of sync_frm # +###################################################### + +SET @@global.sync_frm = FALSE; +SET @@global.sync_frm = DEFAULT; +SELECT @@global.sync_frm; + + +--echo '#---------------------FN_DYNVARS_169_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.sync_frm = DEFAULT; +SELECT @@global.sync_frm = TRUE; + + +--echo '#--------------------FN_DYNVARS_169_03------------------------#' +###################################################### +# Change the value of sync_frm to a valid value # +###################################################### + +SET @@global.sync_frm = ON; +SELECT @@global.sync_frm; +SET @@global.sync_frm = OFF; +SELECT @@global.sync_frm; +SET @@global.sync_frm = 0; +SELECT @@global.sync_frm; +SET @@global.sync_frm = 1; +SELECT @@global.sync_frm; +SET @@global.sync_frm = TRUE; +SELECT @@global.sync_frm; +SET @@global.sync_frm = FALSE; +SELECT @@global.sync_frm; + +--echo '#--------------------FN_DYNVARS_169_04-------------------------#' +#################################################################### +# Change the value of sync_frm to invalid value # +#################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = TRUEF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = TRUE_F; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = FALSE0; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = OON; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = ONN; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = OOFF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = ' '; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = " "; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.sync_frm = ''; + + +--echo '#-------------------FN_DYNVARS_169_05----------------------------#' +#################################################################### +# Test if accessing session sync_frm gives error # +#################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.sync_frm = 1; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.sync_frm; + + +--echo '#----------------------FN_DYNVARS_169_06------------------------#' +#################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +#################################################################### + +SELECT @@global.sync_frm = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sync_frm'; + +--echo '#---------------------FN_DYNVARS_169_07----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same session variable # +############################################################################### + +SET @@global.sync_frm = 1; +SELECT @@sync_frm = @@global.sync_frm; + + +--echo '#---------------------FN_DYNVARS_169_08----------------------#' +################################################################### +# Check if sync_frm can be accessed with and without @@ sign # +################################################################### + +--Error ER_GLOBAL_VARIABLE +SET sync_frm = 1; +SELECT @@sync_frm; +--Error ER_PARSE_ERROR +SET global.sync_frm = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.sync_frm; +--Error ER_BAD_FIELD_ERROR +SELECT sync_frm = @@session.sync_frm; + + +############################## +# Restore initial value # +############################## + +SET @@global.sync_frm = @start_value; +SELECT @@global.sync_frm; + + +###################################################### +# END OF sync_frm TESTS # +###################################################### diff --git a/mysql-test/t/system_time_zone_basic.test b/mysql-test/t/system_time_zone_basic.test new file mode 100644 index 00000000000..0dfc850d227 --- /dev/null +++ b/mysql-test/t/system_time_zone_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\system_time_zone_basic.test ################### +# # +# Variable Name: system_time_zone # +# Scope: Global # +# Access Type: Static # +# Data Type: string # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable system_time_zone # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_050_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.system_time_zone); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_050_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.system_time_zone=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.system_time_zone); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_050_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.system_time_zone = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='system_time_zone'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.system_time_zone); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='system_time_zone'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_050_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@system_time_zone = @@GLOBAL.system_time_zone; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_050_05----------------------#' +################################################################################ +# Check if system_time_zone can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@system_time_zone); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.system_time_zone); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.system_time_zone); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.system_time_zone); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT system_time_zone = @@SESSION.system_time_zone; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/table_definition_cache_basic.test b/mysql-test/t/table_definition_cache_basic.test new file mode 100644 index 00000000000..63296590511 --- /dev/null +++ b/mysql-test/t/table_definition_cache_basic.test @@ -0,0 +1,159 @@ +############## mysql-test\t\table_definition_cache_basic.test ################## +# # +# Variable Name: table_definition_cache # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 128 # +# Range: 1 - 524288 # +# # +# # +# Creation Date: 2008-03-16 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "table_definition_cache" # +# that checks 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#option_mysqld_table_definition_cache # +# # +################################################################################ + +--source include/load_sysvars.inc + +############################################################### +# START OF table_definition_cache TESTS # +############################################################### + +############################################################################## +# Saving initial value of table_definition_cache in a temporary variable # +############################################################################## + +SET @start_value = @@global.table_definition_cache; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_019_01------------------------#' +####################################################################### +# Display the DEFAULT value of table_definition_cache # +####################################################################### + +SET @@global.table_definition_cache = 100; +SET @@global.table_definition_cache = DEFAULT; +SELECT @@global.table_definition_cache; + + +--echo '#---------------------FN_DYNVARS_019_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.table_definition_cache = DEFAULT; +SELECT @@global.table_definition_cache = 128; + + +--echo '#--------------------FN_DYNVARS_019_03------------------------#' +############################################################################## +# Change the value of table_definition_cache to a valid value # +############################################################################## + +SET @@global.table_definition_cache = 1; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = 2; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = 524287; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = 524288; +SELECT @@global.table_definition_cache; + + +--echo '#--------------------FN_DYNVARS_019_04-------------------------#' +################################################################################# +# Change the value of table_definition_cache to invalid value # +################################################################################# + +SET @@global.table_definition_cache = 0; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = -1024; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = 524289; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = 42949672950; +SELECT @@global.table_definition_cache; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_definition_cache = 21221204.10; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_definition_cache = ON; + + +--echo '#-------------------FN_DYNVARS_019_05----------------------------#' +################################################################################# +# Test if accessing session table_definition_cache gives error # +################################################################################# + +--Error ER_GLOBAL_VARIABLE +SET @@session.table_definition_cache = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.table_definition_cache; + + +--echo '#----------------------FN_DYNVARS_019_06------------------------#' +#################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +#################################################################### + +SELECT @@global.table_definition_cache = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='table_definition_cache'; + + +--echo '#---------------------FN_DYNVARS_019_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.table_definition_cache = TRUE; +SELECT @@global.table_definition_cache; +SET @@global.table_definition_cache = FALSE; +SELECT @@global.table_definition_cache; + + +--echo '#---------------------FN_DYNVARS_019_08----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same global variable # +############################################################################### + +SET @@global.table_definition_cache = 5; +SELECT @@table_definition_cache = @@global.table_definition_cache; + +--echo '#---------------------FN_DYNVARS_019_09----------------------#' +################################################################################ +# Check if table_definition_cache can be accessed with and without @@ sign # +################################################################################ + +--Error ER_GLOBAL_VARIABLE +SET table_definition_cache = 1; +--Error ER_PARSE_ERROR +SET global.table_definition_cache = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.table_definition_cache; +--Error ER_BAD_FIELD_ERROR +SELECT table_definition_cache = @@session.table_definition_cache; + +############################## +# Restore initial value # +############################## + +SET @@global.table_definition_cache = @start_value; +SELECT @@global.table_definition_cache; + + +################################################################ +# END OF table_definition_cache TESTS # +################################################################ + diff --git a/mysql-test/t/table_lock_wait_timeout_basic.test b/mysql-test/t/table_lock_wait_timeout_basic.test new file mode 100644 index 00000000000..43186c70874 --- /dev/null +++ b/mysql-test/t/table_lock_wait_timeout_basic.test @@ -0,0 +1,172 @@ +############## mysql-test\t\table_lock_wait_timeout_basic.test ################ +# # +# Variable Name: table_lock_wait _timeout # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 50 # +# Range: 1-1073741824 # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable table_lock_wait_timeout # +# 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#option_mysqld_table_lock_wait_timeout # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF table_lock_wait_timeout TESTS # +######################################################################## + + +########################################################################## +# Saving initial value of table_lock_wait_timeout in a temporary variable# +########################################################################## + +SET @start_value = @@global.table_lock_wait_timeout; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_001_01------------------------#' +######################################################################## +# Display the DEFAULT value of table_lock_wait_timeout # +######################################################################## + +SET @@global.table_lock_wait_timeout = 99; +SET @@global.table_lock_wait_timeout = DeFAULT; +SELECT @@global.table_lock_wait_timeout; + + +--echo '#---------------------FN_DYNVARS_001_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.table_lock_wait_timeout =Default; +SELECT @@global.table_lock_wait_timeout = 50; + +--echo '#--------------------FN_DYNVARS_001_03------------------------#' +######################################################################## +# Change the value of table_lock_wait_timeout to a valid value # +######################################################################## + + +SET @@global.table_lock_wait_timeout = 8; +SELECT @@global.table_lock_wait_timeout ; + +SET @@global.table_lock_wait_timeout = 1; +SELECT @@global.table_lock_wait_timeout ; +SET @@global.table_lock_wait_timeout = 1073741824; +SELECT @@global.table_lock_wait_timeout ; +SET @@global.table_lock_wait_timeout = 18000; +SELECT @@global.table_lock_wait_timeout ; +SET @@global.table_lock_wait_timeout = 65535; +SELECT @@global.table_lock_wait_timeout ; + + + +--echo '#--------------------FN_DYNVARS_001_04-------------------------#' +######################################################################### +# Change the value of table_lock_wait_timeout to invalid value # +######################################################################### + +SET @@global.table_lock_wait_timeout = -1; + +SET @@global.table_lock_wait_timeout= 100000000000; + +SET @@global.table_lock_wait_timeout= -1024; + +SET @@global.table_lock_wait_timeout= 0; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_lock_wait_timeout= 10000.01; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_lock_wait_timeout= ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_lock_wait_timeout= 'test'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_lock_wait_timeout= ''; + + +--echo '#-------------------FN_DYNVARS_001_05----------------------------#' +########################################################################### +# Test if accessing session table_lock_wait_timeout gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.table_lock_wait_timeout= 0; +SELECT @@table_lock_wait_timeout; + + +--echo '#----------------------FN_DYNVARS_001_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.table_lock_wait_timeout= VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='table_lock_wait_timeout'; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.table_lock_wait_timeout= TRUE; +SELECT @@global.table_lock_wait_timeout; + +SET @@global.table_lock_wait_timeout= FALSE; +SELECT @@global.table_lock_wait_timeout; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same global variable # +############################################################################### + +SET @@global.table_lock_wait_timeout= 10; +SELECT @@table_lock_wait_timeout= @@global.table_lock_wait_timeout; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +############################################################################### +# Check if table_lock_wait_timeout can be accessed with and without @@ sign # +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET table_lock_wait_timeout= 8; +--Error ER_PARSE_ERROR +SET global.table_lock_wait_timeout= 10; +--Error ER_UNKNOWN_TABLE +SELECT global.table_lock_wait_timeout; +--Error ER_BAD_FIELD_ERROR +SELECT table_lock_wait_timeout= @@session.table_lock_wait_timeout; + + +############################## +# Restore initial value # +############################## + +SET @@global.table_lock_wait_timeout= @start_value; +SELECT @@global.table_lock_wait_timeout; + + +######################################################################## +# END OF table_lock_wait_timeout TESTS # +######################################################################## + + diff --git a/mysql-test/t/table_open_cache_basic.test b/mysql-test/t/table_open_cache_basic.test new file mode 100644 index 00000000000..23f60bde00a --- /dev/null +++ b/mysql-test/t/table_open_cache_basic.test @@ -0,0 +1,177 @@ +############## mysql-test\t\table_open_cache_basic.test ####################### +# # +# Variable Name: table_open_cache # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 64 # +# Range: 1-524288 # +# # +# # +# Creation Date: 2008-02-13 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable table_open_cache # +# 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#option_mysqld_table_open_cache # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF table_open_cache TESTS # +######################################################################## + + +########################################################################## +# Saving initial value of table_open_cache in a temporary variable # +########################################################################## + +SET @start_value = @@global.table_open_cache ; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_001_01------------------------#' +######################################################################## +# Display the DEFAULT value of table_open_cache # +######################################################################## + +SET @@global.table_open_cache = 99; +SET @@global.table_open_cache = DeFAULT; +SELECT @@global.table_open_cache; + + +--echo '#---------------------FN_DYNVARS_001_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.table_open_cache = Default; +SELECT @@global.table_open_cache = 64; + +--echo '#--------------------FN_DYNVARS_001_03------------------------#' +######################################################################## +# Change the value of table_open_cache to a valid value # +######################################################################## + + +SET @@global.table_open_cache = 8; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = 1; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = 1073741824; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = 18000; +SELECT @@global.table_open_cache ; +SET @@global.table_open_cache = 65535; +SELECT @@global.table_open_cache ; + + + +--echo '#--------------------FN_DYNVARS_001_04-------------------------#' +####################################################################### +# Change the value of table_open_cache to invalid value # +####################################################################### + +SET @@global.table_open_cache = -1; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = 100000000000; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = -1024; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = 0; +SELECT @@global.table_open_cache ; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_open_cache = 10000.01; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_open_cache = ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_open_cache= 'test'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.table_open_cache = ''; + + +--echo '#-------------------FN_DYNVARS_001_05----------------------------#' +########################################################################### +# Test if accessing session table_open_cache gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.table_open_cache = 0; + + +--echo '#----------------------FN_DYNVARS_001_06------------------------#' +#################################################################### +# Check if the value in GLOBAL Tables matches values in variable # +#################################################################### + +SELECT @@global.table_open_cache = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='table_open_cache '; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.table_open_cache = TRUE; +SELECT @@global.table_open_cache ; + +SET @@global.table_open_cache = FALSE; +SELECT @@global.table_open_cache ; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################## +# Check if accessing variable without SCOPE points to same session variable # +############################################################################## + +SET @@global.table_open_cache = 10; +SELECT @@table_open_cache = @@global.table_open_cache ; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +########################################################################## +# Check if table_open_cache can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET table_open_cache = 8; +--Error ER_PARSE_ERROR +SET global.table_open_cache = 10; +--Error ER_UNKNOWN_TABLE +SELECT global.table_open_cache ; +--Error ER_BAD_FIELD_ERROR +SELECT table_open_cache = @@session.table_open_cache ; + + +############################## +# Restore initial value # +############################## + +SET @@global.table_open_cache = @start_value; +SELECT @@global.table_open_cache ; + + +################################################################## +# END OF table_open_cache TESTS # +################################################################## + diff --git a/mysql-test/t/thread_cache_size_func.test b/mysql-test/t/thread_cache_size_func.test new file mode 100644 index 00000000000..9f2eb906f52 --- /dev/null +++ b/mysql-test/t/thread_cache_size_func.test @@ -0,0 +1,156 @@ +############# mysql-test\t\thread_cache_size_func.test ####################################### +# # +# Variable Name: thread_cache_size # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: Enumeration # +# Default Value: 0 # +# Values: 0-16384 # +# # +# # +# Creation Date: 2008-03-02 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "thread_cache_size" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # +# option_mysqld_thread_cache_size # +# # +######################################################################################### + + + +# +# Setup +# + +SET @global_thread_cache_size = @@GLOBAL.thread_cache_size; + +FLUSH STATUS; + +# +# Greater than cache threads, setting cache size to 3 +# +-- ECHO '# Test1#' +SET @@GLOBAL.thread_cache_size=3; + +let $threadsCreated1 = query_get_value(SHOW STATUS LIKE 'Threads_created', Value, 1); +--echo Saving threads cached, threads created values + +SHOW STATUS LIKE 'Threads_cached'; +--echo 0 Expected + +--ECHO '#Old value for thread_cache'# + +################################## +# Make 4 connections # +################################## + +--echo ** Connecting conn1 using username 'root' ** +connect (conn1,localhost,root,,); +--echo ** Connecting conn2 using username 'root' ** +connect (conn2,localhost,root,,); +--echo ** Connecting conn3 using username 'root' ** +connect (conn3,localhost,root,,); +--echo ** Connecting conn4 using username 'root' ** +connect (conn4,localhost,root,,); + +let $threadsCreated2 = query_get_value(SHOW STATUS LIKE 'Threads_created', Value, 1); +--echo Saving threads cached, threads created values + +--disable_query_log +eval SELECT ($threadsCreated2 - $threadsCreated1) AS 'Threads Created Difference'; +--enable_query_log + +--echo 4 Expected +SHOW STATUS LIKE 'Threads_cached'; +--echo 0 Expected + +#################################### +#Disconnecting all the connections # +#################################### + +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting conn1,conn2,conn3,conn4 ** +disconnect conn1; +disconnect conn2; +disconnect conn3; +disconnect conn4; + +# +# Checking the status +# + +--echo '#new values for thread cache after disconnecting'# +let $threadsCreated3 = query_get_value(SHOW STATUS LIKE 'Threads_created', Value, 1); + +--echo Saving threads cached, threads created values +--disable_query_log +eval SELECT ($threadsCreated3 - $threadsCreated2) AS 'Threads Created Difference'; +--enable_query_log +--echo 0 Expected +SHOW STATUS LIKE 'Threads_cached'; +--echo 3 Expected + + +# +# Decreasing cache size to 1 +# +SET @@GLOBAL.thread_cache_size=1; + +connection default; + +let $threadsCreated6 = query_get_value(SHOW STATUS LIKE 'Threads_created', Value, 1); +--echo Saving threads cached, threads created values +--disable_query_log +eval SELECT $threadsCreated6 - $threadsCreated3 AS 'Threads Created Difference'; +--enable_query_log +--echo 0 Expected +SHOW STATUS LIKE 'Threads_cached'; +--echo 1 Expected +--echo Bug: The number of threads cached should have decreased with cache size decrease. + +--echo ** Connecting conn1 using username 'root' ** +CONNECT (conn1,localhost,root,,); +--echo ** Connecting conn2 using username 'root' ** +CONNECT (conn2,localhost,root,,); + +let $threadsCreated4 = query_get_value(SHOW STATUS LIKE 'Threads_created', Value, 1); +--echo Saving threads cached, threads created values +--disable_query_log +eval SELECT $threadsCreated4 - $threadsCreated3 AS 'Threads Created Difference'; +--enable_query_log +--echo 1 Expected +--echo Bug: The number of threads created should have increased because the cache should have 1 thread only +SHOW STATUS LIKE 'Threads_cached'; +--echo 0 Expected +--echo Bug: The number of threads created should have decreased because atleast 1 new connection came in + +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting conn1,conn2 ** +disconnect conn1; +disconnect conn2; + +--ECHO '#new status values for thread cache'# +let $threadsCreated5 = query_get_value(SHOW STATUS LIKE 'Threads_created', Value, 1); +--echo Saving threads cached, threads created values +--disable_query_log +eval SELECT ($threadsCreated5 - $threadsCreated4) AS 'Threads Created Difference'; +--enable_query_log +--echo 0 Expected +SHOW STATUS LIKE 'Threads_cached'; +--echo 1 Expected + +--echo Saving threads cached, threads created values + +# +# Cleanup +# + +SET @@GLOBAL.thread_cache_size = @global_thread_cache_size; diff --git a/mysql-test/t/thread_handling_basic.test b/mysql-test/t/thread_handling_basic.test new file mode 100644 index 00000000000..bcad003ce93 --- /dev/null +++ b/mysql-test/t/thread_handling_basic.test @@ -0,0 +1,107 @@ + + +################## mysql-test\t\thread_handling_basic.test #################### +# # +# Variable Name: thread_handling # +# Scope: Global # +# Access Type: Static # +# Data Type: enumeration # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable thread_handling # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_051_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.thread_handling); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_051_02----------------------#' +# +# Test case for Bug #35433 +# +#################################################################### +# Check if Value can set # +#################################################################### + + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.thread_handling=1; + +--ECHO Expected error ER_INCORRECT_GLOBAL_LOCAL_VAR + +SELECT COUNT(@@GLOBAL.thread_handling); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_051_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.thread_handling = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='thread_handling'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.thread_handling); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='thread_handling'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_051_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@thread_handling = @@GLOBAL.thread_handling; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_051_05----------------------#' +################################################################################ +# Check if thread_handling can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@thread_handling); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.thread_handling); +--echo Bug:Variable is global so it can not be accessed by local there should be error ER_INCORRECT_GLOBAL_LOCAL_VAR +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.thread_handling); +--ECHO Bug:Variable is global so it can not be accessed by session there should be error ER_INCORRECT_GLOBAL_LOCAL_VAR +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.thread_handling); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT thread_handling = @@SESSION.thread_handling; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/time_zone_basic.test b/mysql-test/t/time_zone_basic.test new file mode 100644 index 00000000000..32616e97534 --- /dev/null +++ b/mysql-test/t/time_zone_basic.test @@ -0,0 +1,325 @@ +################### mysql-test\t\time_zone_basic.test ######################### +# # +# Variable Name: time_zone # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: SYSTEM # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable time_zone # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +####################################################################### +# START OF time_zone TESTS # +####################################################################### + + +####################################################################### +# Saving initial value of time_zone in a temporary variable # +####################################################################### + +SET @global_start_value = @@global.time_zone; +SELECT @global_start_value; + +SET @session_start_value = @@session.time_zone; +SELECT @session_start_value; + + +--echo '#--------------------FN_DYNVARS_001_01------------------------#' +######################################################################## +# Display the DEFAULT value of time_zone # +######################################################################## + +SET @@time_zone = "+02:00"; +SET @@time_zone = DEFAULT; +SELECT @@time_zone; + +SET @@global.time_zone = "-00:30"; +SET @@global.time_zone = DEFAULT; +SELECT @@global.time_zone; + + +--echo '#---------------------FN_DYNVARS_001_02-------------------------#' +############################################################################## +# see if setting global value changes session value and vice versa # +############################################################################## + +SET @@session.time_zone = "+02:00"; +SELECT @@session.time_zone; +SET @@global.time_zone = "+05:00"; +SELECT @@global.time_zone; +SELECT @@session.time_zone AS res_is_02_00; + +SET @@session.time_zone = "-02:00"; +SELECT @@session.time_zone; +SELECT @@global.time_zone AS res_is_05_00; +# composite check +SELECT @@global.time_zone=@@session.time_zone AS res_is_false; + + +--echo '#--------------------FN_DYNVARS_001_03------------------------#' +######################################################################## +# Change the value of time_zone to a valid value # +######################################################################## + +# for session scope + +SET @@time_zone = "+13:00"; +SELECT @@time_zone; +SET @@time_zone = "-12:00"; +SELECT @@time_zone; +SET @@time_zone = "+12:59"; +SELECT @@time_zone; +SET @@time_zone = "-11:30"; +SELECT @@time_zone; +SET @@time_zone = "+00:00"; +SELECT @@time_zone; +SET @@time_zone = "-12:59"; +SELECT @@time_zone; +SET @@time_zone = "-00:00"; +SELECT @@time_zone; +SET @@time_zone = "+10:00"; +SELECT @@time_zone; +SET @@time_zone = "+0:0"; +SELECT @@time_zone; +SET @@time_zone = "-10:00"; +SELECT @@time_zone; +SET @@time_zone = "+2:00"; +SELECT @@time_zone; + +# for global scope + +SET @@global.time_zone = "+13:00"; +SELECT @@global.time_zone; +SET @@global.time_zone = "-12:00"; +SELECT @@global.time_zone; +SET @@global.time_zone = "+12:59"; +SELECT @@global.time_zone; +SET @@global.time_zone = "-11:30"; +SELECT @@global.time_zone; +SET @@global.time_zone = "+00:00"; +SELECT @@global.time_zone; +SET @@global.time_zone = "-12:59"; +SELECT @@global.time_zone; +SET @@global.time_zone = "-00:00"; +SELECT @@global.time_zone; +SET @@global.time_zone = "+10:00"; +SELECT @@global.time_zone; +SET @@global.time_zone = "+0:0"; +SELECT @@global.time_zone; +SET @@global.time_zone = "-10:00"; +SELECT @@global.time_zone; +SET @@global.time_zone = "+2:00"; +SELECT @@global.time_zone; + + +# these test are dependant on values stored in mysql.time_zone_name + +#SET @@time_zone = "africa/cairo"; +#SELECT @@time_zone; +#SET @@time_zone = "America/Aruba"; +#SELECT @@time_zone; +# +#SET @@time_zone = "Etc/GMT-14"; +#SELECT @@time_zone; +# +#SET @@time_zone = "GMT-0"; +#SELECT @@time_zone; +# +#SET @@time_zone = "UTC"; +#SELECT @@time_zone; + +#--echo 'Bug: Region and zone values cant be set in time_zone. Although values are loaded in mysql.time_zone_name' + +--echo '#--------------------FN_DYNVARS_001_04-------------------------#' +########################################################################### +# Change the value of time_zone to invalid value # +########################################################################### + +# for session scope + +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = "+24:00"; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = "+23:59"; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = "+13:01"; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = "-13:01"; + +# for global scope + +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = "+24:00"; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = "+23:59"; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = "+13:01"; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = "-13:01"; + + +#checking time zone names not in mysql.time_zone_name. These test may succeed +#depending on timezone stored + +#SET @@time_zone = "london"; +#SELECT @@time_zone; +# +#SET @@time_zone = "GMT+14"; +#SELECT @@time_zone; + + +--echo '#-------------------FN_DYNVARS_001_05----------------------------#' +########################################################################### +# Assign System time zone to variable for session and global # +########################################################################### + +SET @@global.time_zone = 'SYSTEM'; +SELECT @@global.time_zone; + +SET @@time_zone = 'SYSTEM'; +SELECT @@time_zone; + +--echo '#----------------------FN_DYNVARS_001_06------------------------#' +######################################################################### +# Check if the value in SESSION Table matches value in variable # +######################################################################### + +SELECT @@time_zone = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='time_zone'; + + +--echo '#----------------------FN_DYNVARS_001_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.time_zone = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='time_zone'; + + +--echo '#---------------------FN_DYNVARS_001_08-------------------------#' +############################################################################# +# Check if ON, OFF, TRUE and FALSE values can be used on variable # +############################################################################# +# for session scope +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = OFF; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = ON; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@time_zone = TRUE; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@time_zone = FALSE; + +# for global scope +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = OFF; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = ON; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.time_zone = TRUE; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.time_zone = FALSE; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +##################################################################### +# Check if Numbers and empty values can be used on variable # +##################################################################### +# for session scope +--Error ER_WRONG_TYPE_FOR_VAR +SET @@time_zone = 1; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@time_zone = +0200; + +--Error ER_PARSE_ERROR +SET @@time_zone = GMT+; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = ""; + +# for global scope +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.time_zone = 1; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.time_zone = +0200; + +--Error ER_PARSE_ERROR +SET @@global.time_zone = GMT+; + +--Error ER_UNKNOWN_TIME_ZONE +SET @@global.time_zone = ""; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points +# to same session variable +############################################################################## + +SET @@time_zone = '+02:30'; +SELECT @@time_zone = @@local.time_zone and @@time_zone = @@session.time_zone; +SET @@time_zone = '-01:30'; +SELECT @@time_zone = @@local.time_zone and @@time_zone = @@session.time_zone; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +#################################################################### +# Check if time_zone can be accessed with and without @@ sign # +#################################################################### + +SET time_zone = "+01:00"; +SELECT @@time_zone; +--Error ER_UNKNOWN_TABLE +SELECT local.time_zone; +--Error ER_UNKNOWN_TABLE +SELECT session.time_zone; +--Error ER_BAD_FIELD_ERROR +SELECT time_zone = @@session.time_zone; + +############################## +# Restore initial value # +############################## + +SET @@time_zone = @session_start_value; +SELECT @@time_zone; + +SET @@global.time_zone = @global_start_value; +SELECT @@global.time_zone; + +####################################################################### +# END OF time_zone TESTS # +####################################################################### diff --git a/mysql-test/t/time_zone_func.test b/mysql-test/t/time_zone_func.test new file mode 100644 index 00000000000..1d9bc954d8a --- /dev/null +++ b/mysql-test/t/time_zone_func.test @@ -0,0 +1,188 @@ +############# mysql-test\t\time_zone_func.test ############################# +# # +# Variable Name: time_zone # +# Scope: GLOBAL, SESSION # +# Access Type: Dynamic # +# Data Type: STRING # +# Default Value: TRUE 1, FALSE 0 # +# Values: FALSE 0 # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "time_zone" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# + +SET @session_time_zone = @@SESSION.time_zone; +SET @global_time_zone = @@GLOBAL.time_zone; + +CREATE TABLE t1 (a datetime); +CREATE TABLE t2 (a timestamp); + +--echo '#-----------------------------FN_DYNVARS_177_01--------------------#' +# +# Value DEFAULT +# +SET @@time_zone = DEFAULT; + +SELECT @@time_zone; +--echo SYSTEM Expected + +--echo '#-----------------------------FN_DYNVARS_177_02-------------------#' +# +# Testing difference values +# + +SET @@time_zone = '+05:00'; + +SELECT @@time_zone; +--echo +05:00 Expected + +SET @@time_zone = '-01:00'; + +SELECT @@time_zone; +--echo -01:00 Expected + +SET @@time_zone = '+00:00'; + +SELECT @@time_zone; +--echo +00:00 Expected + +SET @@time_zone = '-00:00'; + +SELECT @@time_zone; +--echo -00:00 Expected + +--echo '#-----------------------------FN_DYNVARS_177_03----------------#' +# +# Setting possible values +# + +SET @@time_zone = '+00:00'; + +INSERT INTO t1 VALUES('2008-03-05 16:28:00'); +INSERT INTO t1 VALUES('1970-01-01 00:05:00'),('1970-01-01 01:05:00'); +INSERT INTO t2 VALUES(20080305162800); +INSERT INTO t2 VALUES(19730101235900); +INSERT INTO t2 VALUES('1970-01-01 00:05:00'),('1970-01-01 01:05:00'); +INSERT INTO t2 VALUES(19700101000500); + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = 'MET'; + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = '+05:00'; + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = '+06:00'; +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = '+01:00'; + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = '+02:00'; + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = '+00:00'; + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +SET @@time_zone = '+06:00'; + +SELECT a,UNIX_TIMESTAMP(a) FROM t1; +SELECT a,UNIX_TIMESTAMP(a) FROM t2; + +--echo Potential Feature: upon recovery of timezone, +--echo the original value of the timestamp should be recovered. + +--echo '#-----------------------------FN_DYNVARS_177_04--------------------#' +# +# Testing invalid values +# +--error ER_UNKNOWN_TIME_ZONE +SET @@time_zone = '6'; + + +--echo '#-----------------------------FN_DYNVARS_177_05---------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL time_zone = 'SYSTEM'; + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.time_zone; +--echo SYSTEM Expected + +SET SESSION time_zone = '+05:00'; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.time_zone; +--echo SYSTEM Expected + +SET SESSION time_zone = '-10:00'; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.time_zone; +--echo -10:00 Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.time_zone; +--echo +05:00 Expected + + +SELECT @@GLOBAL.time_zone; +--echo SYSTEM Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + + +# +# Cleanup +# + + +SET @@SESSION.time_zone = @session_time_zone; +SET @@GLOBAL.time_zone = @global_time_zone; + +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/t/timed_mutexes_basic.test b/mysql-test/t/timed_mutexes_basic.test new file mode 100644 index 00000000000..b0eb41afb49 --- /dev/null +++ b/mysql-test/t/timed_mutexes_basic.test @@ -0,0 +1,169 @@ +################## mysql-test\t\timed_mutexes_basic.test ###################### +# # +# Variable Name: timed_mutexes # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: OFF # +# Valid Values: ON, OFF # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable timed_mutexes # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF timed_mutexes TESTS # +######################################################################## + + +############################################################################## +# Saving initial value of timed_mutexes in a temporary variable # +############################################################################## + +SET @global_start_value = @@global.timed_mutexes; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_177_01------------------------#' +######################################################################## +# Display the DEFAULT value of timed_mutexes # +######################################################################## + +SET @@global.timed_mutexes = 1; +SET @@global.timed_mutexes = DEFAULT; +SELECT @@global.timed_mutexes; + +--echo '#---------------------FN_DYNVARS_177_02-------------------------#' +############################################################################# +# Check if timed_mutexes can be accessed with and without @@ sign # +############################################################################# + +--Error ER_GLOBAL_VARIABLE +SET timed_mutexes = 1; +SELECT @@timed_mutexes; +--Error ER_UNKNOWN_TABLE +SELECT global.timed_mutexes; + +SET global timed_mutexes = 1; +SELECT @@global.timed_mutexes; + + +--echo '#--------------------FN_DYNVARS_177_03------------------------#' +######################################################################## +# Change the value of timed_mutexes to a valid value # +######################################################################## + +SET @@global.timed_mutexes = 0; +SELECT @@global.timed_mutexes; +SET @@global.timed_mutexes = 1; +SELECT @@global.timed_mutexes; + + +--echo '#--------------------FN_DYNVARS_177_04-------------------------#' +########################################################################### +# Change the value of timed_mutexes to invalid value # +########################################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = 2; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = "T"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = "Y"; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = _true; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = 0N; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = 1+1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = 0FF; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = '0'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.timed_mutexes = N; + + +--echo '#-------------------FN_DYNVARS_177_05----------------------------#' +########################################################################### +# Test if accessing session timed_mutexes gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.timed_mutexes = 0; +--Error ER_GLOBAL_VARIABLE +SET @@timed_mutexes = 0; +--Error ER_GLOBAL_VARIABLE +SET @@local.timed_mutexes = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.timed_mutexes; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@local.timed_mutexes; + +--echo '#----------------------FN_DYNVARS_177_06------------------------#' +######################################################################### +# Check if the value in SESSION Table contains variable value # +######################################################################### + +SELECT count(VARIABLE_VALUE) FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='timed_mutexes'; + + +--echo '#----------------------FN_DYNVARS_177_07------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.timed_mutexes = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='timed_mutexes'; +SELECT @@global.timed_mutexes; + +SELECT VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='timed_mutexes'; + +--echo '#---------------------FN_DYNVARS_177_08-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +SET @@global.timed_mutexes = OFF; +SELECT @@global.timed_mutexes; +SET @@global.timed_mutexes = ON; +SELECT @@global.timed_mutexes; + +--echo '#---------------------FN_DYNVARS_177_09----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.timed_mutexes = TRUE; +SELECT @@global.timed_mutexes; +SET @@global.timed_mutexes = FALSE; +SELECT @@global.timed_mutexes; + +############################## +# Restore initial value # +############################## + +SET @@global.timed_mutexes = @global_start_value; +SELECT @@global.timed_mutexes; + +############################################################### +# END OF timed_mutexes TESTS # +############################################################### diff --git a/mysql-test/t/timestamp_func.test b/mysql-test/t/timestamp_func.test new file mode 100644 index 00000000000..d77c422cb7a --- /dev/null +++ b/mysql-test/t/timestamp_func.test @@ -0,0 +1,79 @@ +############# mysql-test\t\timestamp_func.test ############################# +# # +# Variable Name: timestamp # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: INTEGER # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "timestamp" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# +--echo ** Connecting con0 using root ** +connect (con0,localhost,root,,); +--echo ** Connecting con1 using root ** +connect (con1, localhost, root,,); + +--echo '#-----------------------------FN_DYNVARS_179_01------------------#' +# +# Checking for connection 1 +# + +--echo ** Connection con0 ** +connection con0; +SET @ts_old = @@SESSION.timestamp; +--echo waiting 1 sec +--sleep 1 +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +--echo 1 Expected + + +# +# Checking for connection 2 +# +--echo ** Connection con1 ** +connection con1; +SET @ts_old = @@SESSION.timestamp; +--echo waiting 4 sec +--sleep 4 +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +--echo 4 Expected + +--echo '#-----------------------------FN_DYNVARS_179_02---------------------#' +# +# Testing timezone change effect +# + +SET @ts_old = @@SESSION.timestamp; +--sleep 1 +--echo Changing time zone +SET time_zone = 'MET'; +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +--echo 1 Expected + +# +# Cleanup +# +--echo ** Cleanup ** + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con0, con1 +disconnect con0; +disconnect con1; diff --git a/mysql-test/t/tmpdir_basic.test b/mysql-test/t/tmpdir_basic.test new file mode 100644 index 00000000000..5e9d08c4876 --- /dev/null +++ b/mysql-test/t/tmpdir_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\tmpdir_basic.test ############################# +# # +# Variable Name: tmpdir # +# Scope: Global # +# Access Type: Static # +# Data Type: filename # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable tmpdir # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_052_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.tmpdir); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_052_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.tmpdir=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.tmpdir); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_052_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.tmpdir = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='tmpdir'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.tmpdir); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='tmpdir'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_052_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@tmpdir = @@GLOBAL.tmpdir; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_052_05----------------------#' +################################################################################ +# Check if tmpdir can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@tmpdir); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.tmpdir); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.tmpdir); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.tmpdir); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT tmpdir = @@SESSION.tmpdir; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/tx_isolation_basic.test b/mysql-test/t/tx_isolation_basic.test new file mode 100644 index 00000000000..136a9b4331e --- /dev/null +++ b/mysql-test/t/tx_isolation_basic.test @@ -0,0 +1,251 @@ +################# mysql-test\t\tx_isolation_basic.test ######################## +# # +# Variable Name: tx_isolation # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: enumeration # +# Default Value: REPEATABLE-READ # +# Valid Values: READ-UNCOMMITTED, READCOMMITTED, REPEATABLE-READ,SERIALIZABLE # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable tx_isolation # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF tx_isolation TESTS # +######################################################################## + + +######################################################################### +# Saving initial value of tx_isolation in a temporary variable # +######################################################################### + +SET @global_start_value = @@global.tx_isolation; +SELECT @global_start_value; + +SET @session_start_value = @@session.tx_isolation; +SELECT @session_start_value; + +--echo '#--------------------FN_DYNVARS_183_01------------------------#' +#################################################################### +# Display the DEFAULT value of tx_isolation # +#################################################################### + +SET @@global.tx_isolation = 'READ-UNCOMMITTED'; +--Error ER_NO_DEFAULT +SET @@global.tx_isolation = DEFAULT; +--echo 'Bug# 34878: Documentation specifies a DEFAULT value of REPEATABLE-READ'; +--echo 'where as DEFAULT is not supported here.'; + +SET @@session.tx_isolation = 'SERIALIZABLE'; +SET @@session.tx_isolation = DEFAULT; +SELECT @@session.tx_isolation; +--echo 'Bug# 34876: Documentation specifies a DEFAULT value of REPEATABLE-READ'; +--echo 'where as DEFAULT here as no effect.'; + +--echo '#---------------------FN_DYNVARS_183_02-------------------------#' +######################################################### +# Check if NULL or empty value is accepeted # +######################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = NULL; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = ''; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.tx_isolation = NULL; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.tx_isolation = ''; + +--echo '#--------------------FN_DYNVARS_183_03------------------------#' +##################################################################### +# Change the value of tx_isolation to a valid value # +##################################################################### + +SET @@global.tx_isolation = 'READ-UNCOMMITTED'; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 'read-COMMITTED'; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 'REPEATABLE-READ'; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 'SERIALIZable'; +SELECT @@global.tx_isolation; + + +SET @@session.tx_isolation = 'READ-UNCOMMITTED'; +SELECT @@session.tx_isolation; + +SET @@session.tx_isolation = 'READ-COMMITTED'; +SELECT @@session.tx_isolation; + +SET @@session.tx_isolation = 'REPEATABLE-READ'; +SELECT @@session.tx_isolation; + +SET @@session.tx_isolation = 'serializable'; +SELECT @@session.tx_isolation; + + +--echo '#--------------------FN_DYNVARS_183_04-------------------------#' +####################################################################### +# Change the value of tx_isolation to invalid value # +####################################################################### + +# for global scope +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = READUNCOMMITTED; + + +SET @@global.tx_isolation = 'REPEATABLE'; +SELECT @@global.tx_isolation; +--echo 'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = OFF; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = ON; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.tx_isolation = 'NON-SERIALIZABLE'; + +# for session scope + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@tx_isolation = -1; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@tx_isolation = READUNCOMMITTED; + +SET @@tx_isolation = 'REPEATABLE'; +SELECT @@tx_isolation; +--echo 'Bug# 34833: REPEATABLE is not documented as as valid tx_isolation level' + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@tx_isolation = 'NONE'; +--Error ER_WRONG_VALUE_FOR_VAR +SET @@tx_isolation = 'ALL'; + +--echo '#-------------------FN_DYNVARS_183_05----------------------------#' +######################################################################### +# Check if the value in session Table matches value in variable # +######################################################################### + +SELECT @@session.tx_isolation = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='tx_isolation'; + +--echo '#----------------------FN_DYNVARS_183_06------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.tx_isolation = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='tx_isolation'; + + +--echo '#---------------------FN_DYNVARS_183_07-------------------------#' +################################################################### +# Check if numbers can be used on variable # +################################################################### + +# test if variable accepts 0,1,2 +SET @@global.tx_isolation = 0; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 1; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 2; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 3; +SELECT @@global.tx_isolation; + +# use of decimal values + +SET @@global.tx_isolation = 0.4; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 1.1; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 1.5; +SELECT @@global.tx_isolation; + +SET @@global.tx_isolation = 2.9; +SELECT @@global.tx_isolation; + +SET @@session.tx_isolation = 3.49; +SELECT @@session.tx_isolation; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.tx_isolation = 3.6; + +--echo 'Bug: Decimal values can be used within the range [0.0-3.5).'; +--echo 'Values are rounded to 0,1,2,3 as evident from outcome.'; + + +--echo '#---------------------FN_DYNVARS_183_08----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.tx_isolation = TRUE; +SELECT @@global.tx_isolation; +SET @@global.tx_isolation = FALSE; +SELECT @@global.tx_isolation; + +--echo '#---------------------FN_DYNVARS_183_09----------------------#' +######################################################################## +# Check if tx_isolation can be accessed with and without @@ sign # +######################################################################## + +SET tx_isolation = 'REPEATABLE-READ'; + +--Error ER_PARSE_ERROR +SET session.tx_isolation = 'REPEATABLE-READ'; +--Error ER_PARSE_ERROR +SET global.tx_isolation = 'REPEATABLE-READ'; +#using SET SESSION|GLOBAL syntax +SET session tx_isolation = 'REPEATABLE-READ'; +SELECT @@tx_isolation; + +SET global tx_isolation = 'REPEATABLE-READ'; +SELECT @@global.tx_isolation; + +############################## +# Restore initial value # +############################## + +SET @@global.tx_isolation = @global_start_value; +SELECT @@global.tx_isolation; + +SET @@session.tx_isolation = @session_start_value; +SELECT @@session.tx_isolation; + +#################################################################### +# END OF tx_isolation TESTS # +#################################################################### + diff --git a/mysql-test/t/tx_isolation_func-master.opt b/mysql-test/t/tx_isolation_func-master.opt new file mode 100644 index 00000000000..c15943a7544 --- /dev/null +++ b/mysql-test/t/tx_isolation_func-master.opt @@ -0,0 +1,3 @@ +--innodb +--innodb_lock_wait_timeout=2 +--binlog-format=row \ No newline at end of file diff --git a/mysql-test/t/tx_isolation_func.test b/mysql-test/t/tx_isolation_func.test new file mode 100644 index 00000000000..24240b6c275 --- /dev/null +++ b/mysql-test/t/tx_isolation_func.test @@ -0,0 +1,412 @@ +############# mysql-test\t\tx_isolation_func.test ####################################### +# # +# Variable Name: tx_isolation # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: ENUMERATION # +# Default Value: REPEATABLE-READ # +# Values: READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "tx_isolation" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +######################################################################################### + +--echo ** Setup ** +# +# Setup +# + +SET @session_tx_isolation = @@SESSION.tx_isolation; +SET @global_tx_isolation = @@GLOBAL.tx_isolation; + +# +# Creating connections +# + +--echo ** Connecting con0 using root ** +connect (con0,localhost,root,,); + +--echo ** Connection con0 ** +connection con0; + +SET SESSION AUTOCOMMIT = OFF; + +--echo ** Connecting con1 using root ** +connect (con1, localhost, root,,); + +--echo ** Connection con1 ** +connection con1; + +SET SESSION AUTOCOMMIT = OFF; + +--echo ** Connection default ** +connection default; + +# +# Creating tables +# + +CREATE TABLE t1 (a int PRIMARY KEY, b int) ENGINE=INNODB; + +INSERT INTO t1 VALUES(2, 2); +INSERT INTO t1 VALUES(4, 4); +INSERT INTO t1 VALUES(6, 6); +INSERT INTO t1 VALUES(8, 8); +INSERT INTO t1 VALUES(16, 16); +INSERT INTO t1 VALUES(18, 18); +INSERT INTO t1 VALUES(20, 20); +INSERT INTO t1 VALUES(22, 22); +INSERT INTO t1 VALUES(24, 24); + +--echo '#----------------------------FN_DYNVARS_184_01--------------------------------------#' +# +# Testing for value READ-UNCOMMITTED +# +--echo ** Connection con0 ** +connection con0; +SET SESSION tx_isolation = 'READ-UNCOMMITTED'; + +--echo ** Connection con1 ** +connection con1; +SET SESSION tx_isolation = 'READ-UNCOMMITTED'; + +# +# Testing WHERE on keys using IN clause +# +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a IN (2,4,6,8) FOR UPDATE; +UPDATE t1 SET b = 10 WHERE a IN (2,4,6,8); + +--echo ** Connection con1 ** +connection con1; + +START TRANSACTION; + +SELECT * FROM t1; + +INSERT INTO t1 VALUES(1, 1); +INSERT INTO t1 VALUES(3, 3); + +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +DELETE FROM t1 WHERE a = 1 OR a = 3; + +COMMIT; + +--echo '#----------------------------FN_DYNVARS_184_02--------------------------------------#' +# +# Testing WHERE on keys using # on even rows +# + +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +UPDATE t1 SET b = 10 WHERE a % 2 = 0; + +--echo ** Connection con1 ** +connection con1; + +START TRANSACTION; + +SELECT * FROM t1; + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(23, 23); + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(25, 25); +--echo Bug: Only even rows are being locked, error 1205 should'nt have occured + +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +COMMIT; + +--echo '#----------------------------FN_DYNVARS_184_03--------------------------------------#' +# +# Testing for value READ-COMMITTED +# +--echo ** Connection con0 ** +connection con0; +SET SESSION tx_isolation = 'READ-COMMITTED'; + +--echo ** Connection con1 ** +connection con1; +SET SESSION tx_isolation = 'READ-COMMITTED'; + +# +# Testing WHERE on keys using % on even rows +# +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +UPDATE t1 SET b = 11 WHERE a % 2 = 0; + +--echo ** Connection con1 ** +connection con1; + +START TRANSACTION; + +SELECT * FROM t1; + +INSERT INTO t1 VALUES(5, 5); +INSERT INTO t1 VALUES(7, 7); + +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +COMMIT; + + +--echo '#----------------------------FN_DYNVARS_184_04--------------------------------------#' +# +# Testing for value REPEATABLE-READ +# +--echo ** Connection con0 ** +connection con0; +SET SESSION tx_isolation = 'REPEATABLE-READ'; + +--echo ** Connection con1 ** +connection con1; +SET SESSION tx_isolation = 'REPEATABLE-READ'; + +# +# Testing WHERE on keys using % on even rows +# +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +UPDATE t1 SET b = 12 WHERE a % 2 = 0; + +--echo ** Connection con1 ** +connection con1; + +START TRANSACTION; + +SELECT * FROM t1; + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(9, 9); +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(13, 13); +--echo Expected error "Lock wait timeout" + +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +COMMIT; + +--echo '#----------------------------FN_DYNVARS_184_05--------------------------------------#' +# +# Testing WHERE on keys using IN clause +# +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0 FOR UPDATE; +UPDATE t1 SET b = 13 WHERE a IN (2,4,6,8,10,12,14,16,18,20,22,24,26) = 0; + +--echo ** Connection con1 ** +connection con1; + +START TRANSACTION; + +SELECT * FROM t1; + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(9, 9); +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(13, 13); +--echo Expected error "Lock wait timeout" + +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +COMMIT; + +--echo '#----------------------------FN_DYNVARS_184_06--------------------------------------#' +# +# Testing WHERE on keys using IN clause +# +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a IN (2,4,6,8) = 0 FOR UPDATE; +UPDATE t1 SET b = 14 WHERE a IN (2,4,6,8) = 0; + +--echo ** Connection con1 ** +connection con1; + +START TRANSACTION; + +SELECT * FROM t1; + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(9, 9); +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(13, 13); +--echo Expected error "Lock wait timeout" + +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +COMMIT; + +--echo '#----------------------------FN_DYNVARS_184_07--------------------------------------#' +# +# Testing for value SERIALIZABLE +# +--echo ** Connection con0 ** +connection con0; +SET SESSION tx_isolation = 'SERIALIZABLE'; + +--echo ** Connection con0 ** +connection con1; +SET SESSION tx_isolation = 'SERIALIZABLE'; + +# +# Testing WHERE on keys using # on even rows +# +--echo ** Connection con0 ** +connection con0; + +START TRANSACTION; + +SELECT * FROM t1 WHERE a % 2 = 0 FOR UPDATE; +UPDATE t1 SET b = 15 WHERE a % 2 = 0; + +--echo ** Connection con0 ** +connection con1; + +START TRANSACTION; + +--error ER_LOCK_WAIT_TIMEOUT +SELECT * FROM t1; + +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(15, 15); +--error ER_LOCK_WAIT_TIMEOUT +INSERT INTO t1 VALUES(17, 17); + +--error ER_LOCK_WAIT_TIMEOUT +SELECT * FROM t1; + +COMMIT; + +--echo ** Connection con0 ** +connection con0; + +COMMIT; + + +--echo '#----------------------------FN_DYNVARS_184_08--------------------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL tx_isolation = 'READ-UNCOMMITTED'; +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.tx_isolation; +--echo READ-UNCOMMITTED Expected + +SET SESSION tx_isolation = 'SERIALIZABLE'; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.tx_isolation; +--echo READ-UNCOMMITTED Expected + +SET SESSION tx_isolation = 'REPEATABLE-READ'; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.tx_isolation; +--echo REPEATABLE-READ Expected + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.tx_isolation; +--echo SERIALIZABLE Expected + + +SELECT @@GLOBAL.tx_isolation; +--echo READ-UNCOMMITTED Expected + +--echo ** Connection default ** +connection default; + +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# + +SET @@SESSION.tx_isolation = @session_tx_isolation; +SET @@GLOBAL.tx_isolation = @global_tx_isolation; + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con0, con1 +disconnect con0; +disconnect con1; + +DROP TABLE t1; diff --git a/mysql-test/t/unique_checks_basic.test b/mysql-test/t/unique_checks_basic.test new file mode 100644 index 00000000000..55308adcc82 --- /dev/null +++ b/mysql-test/t/unique_checks_basic.test @@ -0,0 +1,170 @@ +############## mysql-test\t\unique_checks_basic.test ########################## +# # +# Variable Name: unique_checks # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: 1 # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable unique_checks # +# 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#option_mysqld_UNIQUE_CHECKS # +# # +############################################################################### + +--source include/load_sysvars.inc +######################################################################## +# START OF transaction_allow_batching TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_session_value = @@session.unique_checks; +SELECT @start_session_value; + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +############################################################ +# Display the DEFAULT value of unique_checks # +############################################################ + + +SET @@session.unique_checks= 1; +SET @@session.unique_checks= DEFAULT; +SELECT @@session.unique_checks; + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +############################################################# +# Check the DEFAULT value of unique_checks # +############################################################# + + +SET @@session.unique_checks = DEFAULT; +SELECT @@session.unique_checks =1; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +######################################################################## +# Change the value of unique_checks to a valid value for SESSION Scope # +######################################################################## + +SET @@session.unique_checks =1; +SELECT @@session.unique_checks; + +SET @@session.unique_checks = 0; +SELECT @@session.unique_checks; + +SET @@session.unique_checks = True; +SELECT @@session.unique_checks; + +SET @@session.unique_checks = False; +SELECT @@session.unique_checks; + +SET @@session.unique_checks = "ON"; +SELECT @@session.unique_checks; + +SET @@session.unique_checks = "OFF"; +SELECT @@session.unique_checks; + + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +########################################################### +# Change the value of 'unique_checks' to an invalid value # +########################################################### + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = 'No'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = "yes"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = yes; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = NO; + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = "True"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = "False"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = "Test"; + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = 'test'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.unique_checks = 123456789031; + + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.unique_checks = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='unique_checks'; + + +--echo '#---------------------FN_DYNVARS_001_08----------------------#' +######################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE # +# points to same session variable # +######################################################################## +SET @@unique_checks = 1; +SELECT @@unique_checks = @@local.unique_checks; +SELECT @@local.unique_checks = @@session.unique_checks; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +######################################################################## +# Check if unique_checks can be accessed with and without @@ sign # +######################################################################## + +--Error ER_WRONG_VALUE_FOR_VAR +SET unique_checks = 1027; +SELECT @@unique_checks; + +--Error ER_UNKNOWN_TABLE +SELECT local.unique_checks; + +--Error ER_UNKNOWN_TABLE +SELECT session.unique_checks; + +--Error ER_BAD_FIELD_ERROR +SELECT unique_checks = @@session.unique_checks; + + +#################################### +# Restore initial value # +#################################### + + +SET @@session.unique_checks = @start_session_value; +SELECT @@session.unique_checks; + + +################################################## +# END OF unique_checks TESTS # +################################################## + diff --git a/mysql-test/t/updatable_views_with_limit_basic.test b/mysql-test/t/updatable_views_with_limit_basic.test new file mode 100644 index 00000000000..61a45793d39 --- /dev/null +++ b/mysql-test/t/updatable_views_with_limit_basic.test @@ -0,0 +1,275 @@ +############## mysql-test\t\updatable_views_with_limit_basic.test ############# +# # +# Variable Name: updatable_views_with_limit # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: 1 # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Sharique Abdullah # +# # +# Description: Test Case of Dynamic System Variable updatable_views_with_limit# +# 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#option_mysqld_updatable_views_with_limit # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF updatable_views_with_limit TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.updatable_views_with_limit; +SELECT @start_global_value; +SET @start_session_value = @@session.updatable_views_with_limit; +SELECT @start_session_value; + + + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +######################################################################## +# Display the DEFAULT value of updatable_views_with_limit # +######################################################################## + +SET @@global.updatable_views_with_limit = 'NO'; +SET @@global.updatable_views_with_limit = DEFAULT; +SELECT @@global.updatable_views_with_limit; + + +SET @@session.updatable_views_with_limit = 'NO'; +SET @@session.updatable_views_with_limit = DEFAULT; +SELECT @@session.updatable_views_with_limit; + + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +######################################################################## +# Check the DEFAULT value of updatable_views_with_limit # +######################################################################## + +SET @@global.updatable_views_with_limit = DEFAULT; +SELECT @@global.updatable_views_with_limit = 'Yes'; + +SET @@session.updatable_views_with_limit = DEFAULT; +SELECT @@session.updatable_views_with_limit ='Yes'; + + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +################################################################## +# Change the value of variable to a valid value for GLOBAL Scope # +################################################################## + +SET @@global.updatable_views_with_limit = NO; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = 'NO'; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = YES; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = 'YES'; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = "NO"; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = "YES"; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = 1; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = 0; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = TRUE; +SELECT @@global.updatable_views_with_limit; + +SET @@global.updatable_views_with_limit = False; +SELECT @@global.updatable_views_with_limit; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +################################################################### +# Change the value of variable to a valid value for SESSION Scope # +################################################################### + +SET @@session.updatable_views_with_limit = NO; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = 'NO'; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = YES; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = 'YES'; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = "YES"; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = "NO"; +SELECT @@session.updatable_views_with_limit; + + + +SET @@session.updatable_views_with_limit =1; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = 0; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = True; +SELECT @@session.updatable_views_with_limit; + +SET @@session.updatable_views_with_limit = False; +SELECT @@session.updatable_views_with_limit; + + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +######################################################################## +# Change the value of 'updatable_views_with_limit' to an invalid value # +######################################################################## + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.updatable_views_with_limit = "TRUE"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.updatable_views_with_limit = -1024; + + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.updatable_views_with_limit = 2345; + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.updatable_views_with_limit = "FALSE"; + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.updatable_views_with_limit = 65530.34; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@global.updatable_views_with_limit ="Testing"; + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = "ON"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = "OFF"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = "True"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = "False"; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = "Test"; + + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = 'test'; + +--Error ER_WRONG_VALUE_FOR_VAR +SET @@session.updatable_views_with_limit = 123456789031; + + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.updatable_views_with_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='updatable_views_with_limit'; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.updatable_views_with_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='updatable_views_with_limit'; + + + + +--echo '#---------------------FN_DYNVARS_001_08----------------------#' +########################################################################### +# Check if global and session variable are independent of each other # +########################################################################### + +SET @@global.updatable_views_with_limit = NO; +SET @@session.updatable_views_with_limit = YES; +SELECT @@updatable_views_with_limit = @@global.updatable_views_with_limit; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +######################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE # +# points to same session variable # +######################################################################## + +SET @@updatable_views_with_limit = YES; +SELECT @@updatable_views_with_limit = @@local.updatable_views_with_limit; +SELECT @@local.updatable_views_with_limit = @@session.updatable_views_with_limit; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +################################################################ +# Check if variable can be accessed with and without @@ sign # +################################################################ + +--Error ER_WRONG_VALUE_FOR_VAR +SET updatable_views_with_limit = 1027; +SELECT @@updatable_views_with_limit; + + +--Error ER_UNKNOWN_TABLE +SELECT local.updatable_views_with_limit; + +--Error ER_UNKNOWN_TABLE +SELECT session.updatable_views_with_limit; + +--Error ER_BAD_FIELD_ERROR +SELECT updatable_views_with_limit = @@session.updatable_views_with_limit; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.updatable_views_with_limit = @start_global_value; +SELECT @@global.updatable_views_with_limit; +SET @@session.updatable_views_with_limit = @start_session_value; +SELECT @@session.updatable_views_with_limit; + + +############################################################# +# END OF updatable_views_with_limit TESTS # +############################################################# + diff --git a/mysql-test/t/updatable_views_with_limit_func.test b/mysql-test/t/updatable_views_with_limit_func.test new file mode 100644 index 00000000000..2e1a3f97346 --- /dev/null +++ b/mysql-test/t/updatable_views_with_limit_func.test @@ -0,0 +1,143 @@ +############ mysql-test\t\updatable_views_with_limit_func.test ################# +# # +#Variable Name: updatable_views_with_limit # +#Scope: SESSION # +#Access Type: Dynamic # +#Data Type: Enumeration # +#Default Value: - # +#Values: - # +# # +# # +#Creation Date: 2008-03-02 # +#Author: Sharique Abdullah # +# # +#Description: Test Cases of Dynamic System Variable "updatable_views_with_limit# +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +#Reference: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html# +#option_mysqld_updatable_views_with_limit # +# # +################################################################################ + +# +# Setup +# + +SET @session_updatable_views_with_limit = @@Session.UPDATABLE_VIEWS_WITH_LIMIT; + + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +################################ +# Creating table # +################################ + +CREATE TABLE t1 (a INT, b INT, c INT, PRIMARY KEY(a,b)); + +################################## +# Inserting values in the table # +################################## + + +INSERT INTO t1 VALUES (10,2,-1), (20,3,-2), + (30,4,-3), (40,5,-4); + + +#################################### +# Creating views # +#################################### +CREATE VIEW v1 (x,y) AS SELECT a, c FROM t1; + + +--echo ** Connecting test_con1 using username 'root' ** +CONNECT (test_con1,localhost,root,,); +--echo ** Connection test_con1 ** +CONNECTION test_con1; + +SET @@Session.UPDATABLE_VIEWS_WITH_LIMIT=YES; + +# +# Testing WITH a limit clause +# + +--echo Warning expected, 'View does not contain complete key of the table' +UPDATE v1 SET x=x+6 LIMIT 1; + +SELECT * FROM t1; + +# +# Testing WITHOUT a limit clause +# + +UPDATE v1 SET x=x+5; + +SELECT * FROM t1; + +--echo ** Connecting test_con2 using username 'root' ** +CONNECT (test_con2,localhost,root,,); +--echo ** Connection test_con2 ** +CONNECTION test_con2; + +SET @@Session.UPDATABLE_VIEWS_WITH_LIMIT=NO; + +SELECT @@SESSION.UPDATABLE_VIEWS_WITH_LIMIT; + +--ERROR ER_NON_UPDATABLE_TABLE +UPDATE v1 SET x=x+10 LIMIT 1; +--echo Expected error 'Non updatable table' + +SELECT * FROM t1; + + +--echo '#---------------------FN_DYNVARS_039_01----------------------#' +###################################### +# Setting value to NO # +###################################### + +SET UPDATABLE_VIEWS_WITH_LIMIT=NO; + +-- error ER_NON_UPDATABLE_TABLE +UPDATE v1 SET x=x+1 LIMIT 1; +--echo Expected error 'Non updatable table' + +SET UPDATABLE_VIEWS_WITH_LIMIT=0; + +-- error ER_NON_UPDATABLE_TABLE +UPDATE v1 SET x=x+1 LIMIT 1; +--echo Expected error 'Non updatable table' + +--echo '#---------------------FN_DYNVARS_039_02----------------------#' +###################################### +# Setting value to Default # +###################################### + +--echo Warning expected, 'View does not contain complete key of the table' +SET UPDATABLE_VIEWS_WITH_LIMIT=DEFAULT; +UPDATE v1 SET x=x+1 LIMIT 1; + + +--echo Warning expected, 'View does not contain complete key of the table' +SET UPDATABLE_VIEWS_WITH_LIMIT=YES; +UPDATE v1 SET x=x+2 LIMIT 1; + +# +# Cleanup +# + +--echo ** Connection default ** +connection default; + +--echo ** Disconnecting test_con1, test_con2 ** +disconnect test_con1; +disconnect test_con2; + +SET @@SESSION.updatable_views_with_limit = @session_updatable_views_with_limit; + +--disable_warnings +DROP VIEW IF EXISTS v1; +DROP TABLE IF EXISTS t1; +--enable_warnings + diff --git a/mysql-test/t/version_basic.test b/mysql-test/t/version_basic.test new file mode 100644 index 00000000000..0a22713ca12 --- /dev/null +++ b/mysql-test/t/version_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\version_basic.test ############################ +# # +# Variable Name: version # +# Scope: Global # +# Access Type: Static # +# Data Type: String # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable version # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_053_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.version); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_053_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.version=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.version); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_053_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.version = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.version); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_053_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@version = @@GLOBAL.version; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_053_05----------------------#' +################################################################################ +# Check if version can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@version); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.version); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.version); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.version); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT version = @@SESSION.version; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/version_comment_basic.test b/mysql-test/t/version_comment_basic.test new file mode 100644 index 00000000000..3ae6daa192a --- /dev/null +++ b/mysql-test/t/version_comment_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\version_comment_basic.test #################### +# # +# Variable Name: version_comment # +# Scope: Global # +# Access Type: Static # +# Data Type: String # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable version_comment # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_054_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.version_comment); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_054_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.version_comment=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.version_comment); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_054_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.version_comment = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_comment'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.version_comment); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_comment'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_054_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@version_comment = @@GLOBAL.version_comment; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_054_05----------------------#' +################################################################################ +# Check if version_comment can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@version_comment); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.version_comment); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.version_comment); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.version_comment); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT version_comment = @@SESSION.version_comment; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/version_compile_machine_basic.test b/mysql-test/t/version_compile_machine_basic.test new file mode 100644 index 00000000000..30742436068 --- /dev/null +++ b/mysql-test/t/version_compile_machine_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\version_compile_machine_basic.test ############ +# # +# Variable Name: version_compile_machine # +# Scope: Global # +# Access Type: Static # +# Data Type: String # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable version_compile_machine # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_055_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.version_compile_machine); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_055_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.version_compile_machine=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.version_compile_machine); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_055_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.version_compile_machine = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_machine'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.version_compile_machine); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_machine'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_055_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@version_compile_machine = @@GLOBAL.version_compile_machine; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_055_05----------------------#' +################################################################################ +# Check if version_compile_machine can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@version_compile_machine); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.version_compile_machine); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.version_compile_machine); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.version_compile_machine); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT version_compile_machine = @@SESSION.version_compile_machine; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/version_compile_os_basic.test b/mysql-test/t/version_compile_os_basic.test new file mode 100644 index 00000000000..8858f248249 --- /dev/null +++ b/mysql-test/t/version_compile_os_basic.test @@ -0,0 +1,100 @@ + + +################## mysql-test\t\version_compile_os_basic.test ################# +# # +# Variable Name: version_compile_os # +# Scope: Global # +# Access Type: Static # +# Data Type: String # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable version_compile_os # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_056_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### +SELECT COUNT(@@GLOBAL.version_compile_os); +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_056_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@GLOBAL.version_compile_os=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@GLOBAL.version_compile_os); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_056_03----------------------#' +################################################################# +# Check if the value in GLOBAL Table matches value in variable # +################################################################# + +SELECT @@GLOBAL.version_compile_os = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_os'; +--echo 1 Expected + +SELECT COUNT(@@GLOBAL.version_compile_os); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='version_compile_os'; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_056_04----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ +SELECT @@version_compile_os = @@GLOBAL.version_compile_os; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_056_05----------------------#' +################################################################################ +# Check if version_compile_os can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@version_compile_os); +--echo 1 Expected + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@local.version_compile_os); +--echo Expected error 'Variable is a GLOBAL variable' + +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@SESSION.version_compile_os); +--echo Expected error 'Variable is a GLOBAL variable' + +SELECT COUNT(@@GLOBAL.version_compile_os); +--echo 1 Expected + +--Error ER_BAD_FIELD_ERROR +SELECT version_compile_os = @@SESSION.version_compile_os; +--echo Expected error 'Readonly variable' + + diff --git a/mysql-test/t/wait_timeout_func.test b/mysql-test/t/wait_timeout_func.test new file mode 100644 index 00000000000..dd4d2ebcbbb --- /dev/null +++ b/mysql-test/t/wait_timeout_func.test @@ -0,0 +1,101 @@ +############## mysql-test\t\wait_timeout_func.test ############################ +# # +# Variable Name: wait_timeout # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable wait_timeout # +# that checks the functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_wait_timeouts # +# # +############################################################################### + +--disable_warnings +drop table if exists t1; +--enable_warnings + +############################## +# Creating two new tables # +############################## + +--echo ## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name VARCHAR(30) +); + + +--echo '#--------------------FN_DYNVARS_186_01-------------------------#' +####################################################################### +# Setting initial value of interactive_timeout greater than sleep and +# verifying its behavior on session scope +####################################################################### + +--echo ## Creating new connection test_con1 ## +connect (test_con1, localhost, root,,); +connection test_con1; + +--echo ## Setting value of variable to 5 ## +SET @@session.wait_timeout = 5; + +--echo ## Inserting record in table t1 ## +INSERT into t1(name) values('Record_1'); + +--echo ## Using sleep to check timeout ## +sleep 4; + + +--echo '#--------------------FN_DYNVARS_186_02-------------------------#' +####################################################################### +# Setting initial value of interactive_timeout greater than sleep and +# verifying its behavior on global scope +####################################################################### + +--echo ## Setting value of variable ## +SET @@global.wait_timeout = 5; + +--echo ## Creating new connection test_con2 ## +connect (test_con2, localhost, root,,); +connection test_con2; + +INSERT into t1(name) values('Record_2'); + +--echo ## Using sleep to check timeout ## +sleep 4; + + + + +--echo '#--------------------FN_DYNVARS_186_03-------------------------#' +####################################################################### +# Setting initial value of interactive_timeout less than sleep and +# verifying its behavior on global scope +####################################################################### + +--echo ## Setting value of variable to 1 ## +SET @@global.wait_timeout = 1; + +--echo ## Creating new connection ## +connect (test_con3, localhost, root,,); +connection test_con3; + +INSERT into t1(name) values('Record_3'); + +--echo ## Using sleep to check timeout ## +sleep 5; + +--echo ## We cannot test it further because the server stops due to wait_timeout ## +--Error 2006 +SELECT * from t1; + diff --git a/mysql-test/t/warning_count_basic.test b/mysql-test/t/warning_count_basic.test new file mode 100644 index 00000000000..64539e28d5b --- /dev/null +++ b/mysql-test/t/warning_count_basic.test @@ -0,0 +1,97 @@ + + +################## mysql-test\t\warning_count_basic.test ###################### +# # +# Variable Name: warning_count # +# Scope: Session # +# Access Type: Static # +# Data Type: numeric # +# # +# # +# Creation Date: 2008-02-07 # +# Author : Sharique Abdullah # +# # +# # +# Description:Test Cases of Dynamic System Variable warning_count # +# that checks the behavior of this variable in the following ways # +# * Value Check # +# * Scope Check # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--echo '#---------------------BS_STVARS_057_01----------------------#' +#################################################################### +# Displaying default value # +#################################################################### + +SELECT COUNT(@@SESSION.warning_count); +--echo 1 Expected + +--echo '#---------------------BS_STVARS_057_02----------------------#' +#################################################################### +# Check if Value can set # +#################################################################### + + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SET @@SESSION.warning_count=1; +--echo Expected error 'Read only variable' + +SELECT COUNT(@@SESSION.warning_count); +--echo 1 Expected + + + + +--echo '#---------------------BS_STVARS_057_03----------------------#' +################################################################# +# Check if the value in SESSION Table matches value in variable # +################################################################# + +SELECT @@SESSION.warning_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='warning_count'; +--echo 1 Expected + +SELECT COUNT(@@SESSION.warning_count); +--echo 1 Expected + +SELECT COUNT(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='warning_count'; +--echo 1 Expected + + +--echo '#---------------------BS_STVARS_057_04----------------------#' +################################################################################ +# Check if accessing variable with and without SESSION point to same variable # +################################################################################ +SELECT @@warning_count = @@SESSION.warning_count; +--echo 1 Expected + + + +--echo '#---------------------BS_STVARS_057_05----------------------#' +################################################################################ +# Check if warning_count can be accessed with and without @@ sign # +################################################################################ + +SELECT COUNT(@@warning_count); +--echo 1 Expected +SELECT COUNT(@@local.warning_count); +--echo 1 Expected +SELECT COUNT(@@SESSION.warning_count); +--echo 1 Expected + +--error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT COUNT(@@GLOBAL.warning_count); +--echo Expected error 'Variable is a SESSION variable' + +--error ER_BAD_FIELD_ERROR +SELECT COUNT(warning_count = @@GLOBAL.warning_count); +--echo Expected error 'Readonly variable' + + From 57784eae1235d62831cbdab16827027288dd7cbf Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 10 Apr 2008 15:55:37 -0400 Subject: [PATCH 050/435] Fix mismerge. sql/field.cc: Fix indentation of new line. --- sql/field.cc | 2 +- sql/item_create.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index 91f356988e4..18bb7153060 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -8615,7 +8615,7 @@ bool create_field::init(THD *thd, char *fld_name, enum_field_types fld_type, and 19 as length of 4.1 compatible representation. Silently shrink it to MAX_DATETIME_COMPRESSED_WIDTH. */ - DBUG_ASSERT(MAX_DATETIME_COMPRESSED_WIDTH < UINT_MAX); + DBUG_ASSERT(MAX_DATETIME_COMPRESSED_WIDTH < UINT_MAX); if (length != UINT_MAX) /* avoid overflow; is safe because of min() */ length= ((length+1)/2)*2; length= min(length, MAX_DATETIME_COMPRESSED_WIDTH); diff --git a/sql/item_create.cc b/sql/item_create.cc index 6f3608b6b9a..c897b7aef79 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -531,7 +531,7 @@ Item *create_func_cast(Item *a, Cast_target cast_type, ulong decoded_size; errno= 0; decoded_size= strtoul(c_len, NULL, 10); - if (errno != 0) + if ((errno != 0) || (decoded_size > MAX_FIELD_BLOBLENGTH)) { my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH); return NULL; From 462704c5c64da33cbf0250eb97a6ab67fe874cdb Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 10 Apr 2008 23:27:24 -0400 Subject: [PATCH 051/435] Fix merge problem. --- sql/item_create.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/item_create.cc b/sql/item_create.cc index 427857c58ad..349c47816ad 100644 --- a/sql/item_create.cc +++ b/sql/item_create.cc @@ -5125,7 +5125,7 @@ create_func_cast(THD *thd, Item *a, Cast_target cast_type, ulong decoded_size; errno= 0; decoded_size= strtoul(c_len, NULL, 10); - if (errno != 0) + if ((errno != 0) || (decoded_size > MAX_FIELD_BLOBLENGTH)) { my_error(ER_TOO_BIG_DISPLAYWIDTH, MYF(0), "cast as char", MAX_FIELD_BLOBLENGTH); return NULL; From 5fd727f73b3af7cac84bb40de5bb86ca45bb40bf Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 11 Apr 2008 21:59:33 +0200 Subject: [PATCH 052/435] Fixes of system variable test programs for bug#35988. --- mysql-test/r/local_infile_func.result | 4 ++-- mysql-test/r/max_allowed_packet_func.result | 1 - mysql-test/t/automatic_sp_privileges_func.test | 2 ++ mysql-test/t/completion_type_func.test | 2 +- mysql-test/t/delayed_insert_limit_func.test | 2 ++ mysql-test/t/disabled.def | 3 +++ mysql-test/t/general_log_file_func.test | 3 ++- mysql-test/t/general_log_func.test | 6 ++++-- mysql-test/t/local_infile_func.test | 4 ++-- mysql-test/t/max_allowed_packet_func.test | 2 +- mysql-test/t/max_user_connections_func.test | 2 ++ mysql-test/t/old_passwords_func.test | 2 ++ mysql-test/t/read_only_func.test | 2 ++ mysql-test/t/relay_log_purge_basic.test | 1 + mysql-test/t/secure_auth_func.test | 2 ++ mysql-test/t/slave_compressed_protocol_basic.test | 1 + mysql-test/t/slave_net_timeout_basic.test | 1 + mysql-test/t/slow_launch_time_func.test | 2 ++ mysql-test/t/slow_query_log_file_func.test | 3 ++- mysql-test/t/sql_slave_skip_counter_basic.test | 1 + mysql-test/t/ssl_ca_basic.test | 2 ++ mysql-test/t/ssl_cert_basic.test | 2 ++ mysql-test/t/ssl_key_basic.test | 2 ++ mysql-test/t/thread_cache_size_func.test | 2 ++ mysql-test/t/wait_timeout_func.test | 2 ++ 25 files changed, 45 insertions(+), 11 deletions(-) diff --git a/mysql-test/r/local_infile_func.result b/mysql-test/r/local_infile_func.result index bed373bb0c9..ef0a5039a88 100644 --- a/mysql-test/r/local_infile_func.result +++ b/mysql-test/r/local_infile_func.result @@ -18,7 +18,7 @@ SET @@global.local_infile = 1; DROP TABLE IF EXISTS t1; create table t1(a int); LOAD DATA LOCAL INFILE -'MYSQL_TEST_DIR/std_data/numbers.txt' INTO TABLE test.t1; +'var/std_data_ln/numbers.txt' INTO TABLE test.t1; SELECT count(*) from t1; count(*) 9 @@ -27,7 +27,7 @@ SET @@global.local_infile = 0; DROP TABLE IF EXISTS t1; create table t1(a int); LOAD DATA LOCAL INFILE -'MYSQL_TEST_DIR/std_data/numbers.txt' INTO TABLE test.t1; +'var/std_data_ln/numbers.txt' INTO TABLE test.t1; ERROR 42000: The used command is not allowed with this MySQL version SELECT count(*) from t1; count(*) diff --git a/mysql-test/r/max_allowed_packet_func.result b/mysql-test/r/max_allowed_packet_func.result index 4d595b92e9f..32464f87048 100644 --- a/mysql-test/r/max_allowed_packet_func.result +++ b/mysql-test/r/max_allowed_packet_func.result @@ -40,6 +40,5 @@ SELECT @@global.net_buffer_length; ## Creating new connection test_con1 ## ## Inserting and fetching data of length greater than 1024 ## INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); -ERROR 08S01: Got a packet bigger than 'max_allowed_packet' bytes ## Server disconnects after this case and error occurs that Server ## ## has gone away ## diff --git a/mysql-test/t/automatic_sp_privileges_func.test b/mysql-test/t/automatic_sp_privileges_func.test index afbacbcef0f..ae5edbb078e 100644 --- a/mysql-test/t/automatic_sp_privileges_func.test +++ b/mysql-test/t/automatic_sp_privileges_func.test @@ -24,6 +24,8 @@ # Setup # +--source include/not_embedded.inc + --echo ** Setup ** SET @global_automatic_sp_privileges = @@GLOBAL.automatic_sp_privileges; diff --git a/mysql-test/t/completion_type_func.test b/mysql-test/t/completion_type_func.test index 5ac0c6985e0..34521744559 100644 --- a/mysql-test/t/completion_type_func.test +++ b/mysql-test/t/completion_type_func.test @@ -84,7 +84,7 @@ COMMIT; --echo ## Inserting rows should give error here because connection should ## --echo ## disconnect after using COMMIT ## ---Error 2006,2013 +--Error 2006,2013,1053 INSERT into t1(name) values('Record_4'); --echo ## Creating new connection test_con2 ## diff --git a/mysql-test/t/delayed_insert_limit_func.test b/mysql-test/t/delayed_insert_limit_func.test index 559abe5c059..97e1f2daed1 100644 --- a/mysql-test/t/delayed_insert_limit_func.test +++ b/mysql-test/t/delayed_insert_limit_func.test @@ -25,6 +25,8 @@ # Setup # +--source include/not_embedded.inc + --echo Creating connection con0 connect (con0,localhost,root,,); --echo Creating connection con1 diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 9e0b681528b..6d7af76adbf 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -21,3 +21,6 @@ ctype_create : Bug#32965 main.ctype_create fails status : Bug#32966 main.status fails ps_ddl : Bug#12093 2007-12-14 pending WL#4165 / WL#4166 csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables +event_scheduler_basic: BUG#35997 server seems to crash. +event_scheduler_func: BUG#35997 server seems to crash. + diff --git a/mysql-test/t/general_log_file_func.test b/mysql-test/t/general_log_file_func.test index 7f79115f420..eeea3f75d26 100644 --- a/mysql-test/t/general_log_file_func.test +++ b/mysql-test/t/general_log_file_func.test @@ -50,7 +50,8 @@ INSERT into t1(name) values('Record_3'); INSERT into t1(name) values('Record_4'); --echo ## Verifying general log file ## ---file_exists var/master-data/mysql-test.log +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--file_exists $MYSQLTEST_VARDIR/master-data/mysql-test.log --echo ## Dropping table ## DROP TABLE t1; diff --git a/mysql-test/t/general_log_func.test b/mysql-test/t/general_log_func.test index de222ec120a..715e14501db 100644 --- a/mysql-test/t/general_log_func.test +++ b/mysql-test/t/general_log_func.test @@ -46,7 +46,8 @@ name VARCHAR(30) SET @@global.general_log = OFF; SELECT @@general_log; ---copy_file var/log/master.log var/log/master-test.log +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--copy_file $MYSQLTEST_VARDIR/log/master.log $MYSQLTEST_VARDIR/log/master-test.log --echo ## Inserting some Records & Verifying output in log ## INSERT into t1(name) values('Record_1'); @@ -66,7 +67,8 @@ INSERT into t1(name) values('Record_2'); SET @@global.general_log = ON; SELECT @@general_log; ---copy_file var/log/master.log var/log/master-test-1.log +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--copy_file $MYSQLTEST_VARDIR/log/master.log $MYSQLTEST_VARDIR/log/master-test-1.log --echo ## Inserting some Records & Verifying output in log ## INSERT into t1(name) values('Record_3'); diff --git a/mysql-test/t/local_infile_func.test b/mysql-test/t/local_infile_func.test index 4971e0686e6..f79efffbf95 100644 --- a/mysql-test/t/local_infile_func.test +++ b/mysql-test/t/local_infile_func.test @@ -62,7 +62,7 @@ create table t1(a int); --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR eval LOAD DATA LOCAL INFILE -'$MYSQL_TEST_DIR/std_data/numbers.txt' INTO TABLE test.t1; +'var/std_data_ln/numbers.txt' INTO TABLE test.t1; SELECT count(*) from t1; @@ -79,7 +79,7 @@ create table t1(a int); --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --Error ER_NOT_ALLOWED_COMMAND eval LOAD DATA LOCAL INFILE -'$MYSQL_TEST_DIR/std_data/numbers.txt' INTO TABLE test.t1; +'var/std_data_ln/numbers.txt' INTO TABLE test.t1; SELECT count(*) from t1; diff --git a/mysql-test/t/max_allowed_packet_func.test b/mysql-test/t/max_allowed_packet_func.test index 7de4dfe95cd..e71019f4884 100644 --- a/mysql-test/t/max_allowed_packet_func.test +++ b/mysql-test/t/max_allowed_packet_func.test @@ -77,7 +77,7 @@ connect (test_con1,localhost,root,,); connection test_con1; --echo ## Inserting and fetching data of length greater than 1024 ## ---Error ER_NET_PACKET_TOO_LARGE +--Error 0,ER_NET_PACKET_TOO_LARGE INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); --echo ## Server disconnects after this case and error occurs that Server ## diff --git a/mysql-test/t/max_user_connections_func.test b/mysql-test/t/max_user_connections_func.test index 21bea82ad77..b28b00ccfed 100644 --- a/mysql-test/t/max_user_connections_func.test +++ b/mysql-test/t/max_user_connections_func.test @@ -26,6 +26,8 @@ # Setup # +--source include/not_embedded.inc + SET @default_max_user_connections = @@max_user_connections; diff --git a/mysql-test/t/old_passwords_func.test b/mysql-test/t/old_passwords_func.test index 47f77e45f9b..2707fc3ab6d 100644 --- a/mysql-test/t/old_passwords_func.test +++ b/mysql-test/t/old_passwords_func.test @@ -24,6 +24,8 @@ # Setup # +--source include/not_embedded.inc + SET @global_old_passwords = @@GLOBAL.old_passwords; SET @session_old_passwords = @@SESSION.old_passwords; SET @global_secure_auth = @@GLOBAL.secure_auth; diff --git a/mysql-test/t/read_only_func.test b/mysql-test/t/read_only_func.test index 5e70a76d1e9..c8fb932544b 100644 --- a/mysql-test/t/read_only_func.test +++ b/mysql-test/t/read_only_func.test @@ -26,6 +26,8 @@ # Setup # +--source include/not_embedded.inc + SET @default_read_only = @@read_only; --echo '#--------------------FN_DYNVARS_140_01-------------------------#' diff --git a/mysql-test/t/relay_log_purge_basic.test b/mysql-test/t/relay_log_purge_basic.test index 9c9c18fc9e9..7e4d6a51440 100644 --- a/mysql-test/t/relay_log_purge_basic.test +++ b/mysql-test/t/relay_log_purge_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/not_embedded.inc --source include/load_sysvars.inc ##################################################################### diff --git a/mysql-test/t/secure_auth_func.test b/mysql-test/t/secure_auth_func.test index 24db2708986..10dc383035d 100644 --- a/mysql-test/t/secure_auth_func.test +++ b/mysql-test/t/secure_auth_func.test @@ -29,6 +29,8 @@ # Setup # +--source include/not_embedded.inc + # # Save initial value # diff --git a/mysql-test/t/slave_compressed_protocol_basic.test b/mysql-test/t/slave_compressed_protocol_basic.test index 16428cea551..29a3227a8f5 100644 --- a/mysql-test/t/slave_compressed_protocol_basic.test +++ b/mysql-test/t/slave_compressed_protocol_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/not_embedded.inc --source include/load_sysvars.inc ######################################################################## # START OF slave_compressed_protocol TESTS # diff --git a/mysql-test/t/slave_net_timeout_basic.test b/mysql-test/t/slave_net_timeout_basic.test index 0e4bd12ceea..5662eec3957 100644 --- a/mysql-test/t/slave_net_timeout_basic.test +++ b/mysql-test/t/slave_net_timeout_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/not_embedded.inc --source include/load_sysvars.inc ########################################################### # START OF slave_net_timeout TESTS # diff --git a/mysql-test/t/slow_launch_time_func.test b/mysql-test/t/slow_launch_time_func.test index 31a9567a239..fe8d1ba4c02 100644 --- a/mysql-test/t/slow_launch_time_func.test +++ b/mysql-test/t/slow_launch_time_func.test @@ -24,6 +24,8 @@ # Setup # +--source include/not_embedded.inc + SET @global_slow_launch_time = @@GLOBAL.slow_launch_time; diff --git a/mysql-test/t/slow_query_log_file_func.test b/mysql-test/t/slow_query_log_file_func.test index fedf90feaa3..519932b34b0 100644 --- a/mysql-test/t/slow_query_log_file_func.test +++ b/mysql-test/t/slow_query_log_file_func.test @@ -26,6 +26,7 @@ #################################################################### --echo ## --file_exists var/master-data/my_slow_test.log ## ---file_exists var/master-data/my_slow_test.log +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--file_exists $MYSQLTEST_VARDIR/master-data/my_slow_test.log --echo ## This case should pass because we have set this filename in opt file ## diff --git a/mysql-test/t/sql_slave_skip_counter_basic.test b/mysql-test/t/sql_slave_skip_counter_basic.test index 86ed75eb42a..e7d9098aee9 100644 --- a/mysql-test/t/sql_slave_skip_counter_basic.test +++ b/mysql-test/t/sql_slave_skip_counter_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/not_embedded.inc --source include/load_sysvars.inc ################################################################ diff --git a/mysql-test/t/ssl_ca_basic.test b/mysql-test/t/ssl_ca_basic.test index 1d0b9d92fdd..bca463b97c5 100644 --- a/mysql-test/t/ssl_ca_basic.test +++ b/mysql-test/t/ssl_ca_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_ssl.inc + --echo '#---------------------BS_STVARS_045_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/ssl_cert_basic.test b/mysql-test/t/ssl_cert_basic.test index 86104cdf3cb..c15380609df 100644 --- a/mysql-test/t/ssl_cert_basic.test +++ b/mysql-test/t/ssl_cert_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_ssl.inc + --echo '#---------------------BS_STVARS_047_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/ssl_key_basic.test b/mysql-test/t/ssl_key_basic.test index dceb5ee9063..12b19a802d5 100644 --- a/mysql-test/t/ssl_key_basic.test +++ b/mysql-test/t/ssl_key_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_ssl.inc + --echo '#---------------------BS_STVARS_049_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/thread_cache_size_func.test b/mysql-test/t/thread_cache_size_func.test index 9f2eb906f52..302f66a36c6 100644 --- a/mysql-test/t/thread_cache_size_func.test +++ b/mysql-test/t/thread_cache_size_func.test @@ -26,6 +26,8 @@ # Setup # +--source include/not_embedded.inc + SET @global_thread_cache_size = @@GLOBAL.thread_cache_size; FLUSH STATUS; diff --git a/mysql-test/t/wait_timeout_func.test b/mysql-test/t/wait_timeout_func.test index dd4d2ebcbbb..e825b5a3a39 100644 --- a/mysql-test/t/wait_timeout_func.test +++ b/mysql-test/t/wait_timeout_func.test @@ -19,6 +19,8 @@ # # ############################################################################### +--source include/not_embedded.inc + --disable_warnings drop table if exists t1; --enable_warnings From a9c37b3bfe80aa1d1a89c4c15963b7ae3a19b1e4 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 14 Apr 2008 17:21:18 +0200 Subject: [PATCH 053/435] Second set of fixes for bug#35988. --- mysql-test/r/character_set_database_func.result | 4 ++-- mysql-test/t/character_set_database_func.test | 8 ++++---- mysql-test/t/completion_type_func.test | 2 +- mysql-test/t/general_log_func.test | 3 ++- mysql-test/t/identity_func.test | 1 + mysql-test/t/innodb_additional_mem_pool_size_basic.test | 2 ++ mysql-test/t/innodb_autoextend_increment_basic.test | 1 + mysql-test/t/innodb_autoinc_lock_mode_basic.test | 1 + mysql-test/t/innodb_buffer_pool_size_basic.test | 2 ++ mysql-test/t/innodb_checksums_basic.test | 2 ++ mysql-test/t/innodb_commit_concurrency_basic.test | 1 + mysql-test/t/innodb_data_file_path_basic.test | 2 ++ mysql-test/t/innodb_data_home_dir_basic.test | 2 ++ mysql-test/t/innodb_doublewrite_basic.test | 2 ++ mysql-test/t/innodb_fast_shutdown_basic.test | 1 + mysql-test/t/innodb_file_io_threads_basic.test | 2 ++ mysql-test/t/innodb_file_per_table_basic.test | 2 ++ mysql-test/t/innodb_flush_log_at_trx_commit_basic.test | 1 + mysql-test/t/innodb_flush_method_basic.test | 2 ++ mysql-test/t/innodb_force_recovery_basic.test | 2 ++ mysql-test/t/innodb_lock_wait_timeout_basic.test | 2 ++ mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test | 2 ++ mysql-test/t/innodb_log_buffer_size_basic.test | 2 ++ mysql-test/t/innodb_log_file_size_basic.test | 2 ++ mysql-test/t/innodb_log_files_in_group_basic.test | 2 ++ mysql-test/t/innodb_log_group_home_dir_basic.test | 2 ++ mysql-test/t/innodb_max_dirty_pages_pct_basic.test | 2 +- mysql-test/t/innodb_mirrored_log_groups_basic.test | 2 ++ mysql-test/t/innodb_open_files_basic.test | 2 ++ mysql-test/t/innodb_rollback_on_timeout_basic.test | 2 ++ mysql-test/t/innodb_support_xa_basic.test | 1 + mysql-test/t/innodb_table_locks_basic.test | 1 + mysql-test/t/innodb_thread_concurrency_basic.test | 1 + mysql-test/t/last_insert_id_func.test | 2 ++ mysql-test/t/local_infile_func.test | 2 ++ mysql-test/t/rpl_max_binlog_size_func.test | 3 ++- mysql-test/t/storage_engine_basic.test | 1 + mysql-test/t/tx_isolation_func.test | 2 ++ 38 files changed, 66 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/character_set_database_func.result b/mysql-test/r/character_set_database_func.result index 69e718addf3..95b65eacfd2 100644 --- a/mysql-test/r/character_set_database_func.result +++ b/mysql-test/r/character_set_database_func.result @@ -59,14 +59,14 @@ USE test; CREATE TABLE t1 (a CHAR(4) CHARACTER SET utf8) ENGINE=MyISAM CHARACTER SET utf8; 'Verify with latin'; SET @@session.character_set_database = latin1; -LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data_ln/charset_utf8.txt' INTO TABLE t1; SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; count(*) 2433 TRUNCATE TABLE t1; 'Verify with utf8'; SET @@session.character_set_database = utf8; -LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +LOAD DATA INFILE 'MYSQLTEST_VARDIR/std_data_ln/charset_utf8.txt' INTO TABLE t1; SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; count(*) 1 diff --git a/mysql-test/t/character_set_database_func.test b/mysql-test/t/character_set_database_func.test index b09853955f2..2b17f4cf99e 100644 --- a/mysql-test/t/character_set_database_func.test +++ b/mysql-test/t/character_set_database_func.test @@ -89,15 +89,15 @@ CREATE TABLE t1 (a CHAR(4) CHARACTER SET utf8) ENGINE=MyISAM CHARACTER SET utf8; --echo 'Verify with latin'; SET @@session.character_set_database = latin1; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/charset_utf8.txt' INTO TABLE t1; SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; TRUNCATE TABLE t1; --echo 'Verify with utf8'; SET @@session.character_set_database = utf8; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '../std_data_ln/charset_utf8.txt' INTO TABLE t1; +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +eval LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/charset_utf8.txt' INTO TABLE t1; SELECT count(*) FROM t1 WHERE CHAR_LENGTH(a)>1; --disable_warnings diff --git a/mysql-test/t/completion_type_func.test b/mysql-test/t/completion_type_func.test index 34521744559..71d66dac777 100644 --- a/mysql-test/t/completion_type_func.test +++ b/mysql-test/t/completion_type_func.test @@ -99,6 +99,6 @@ INSERT into t1(name) values('Record_8'); INSERT into t1(name) values('Record_9'); ROLLBACK; ---Error 2006,2013 +--Error 2006,2013,1053 INSERT into t1(name) values('Record_4'); diff --git a/mysql-test/t/general_log_func.test b/mysql-test/t/general_log_func.test index 715e14501db..39ce964a105 100644 --- a/mysql-test/t/general_log_func.test +++ b/mysql-test/t/general_log_func.test @@ -54,7 +54,8 @@ INSERT into t1(name) values('Record_1'); INSERT into t1(name) values('Record_2'); --echo ## There should be no difference, case should pass ## ---diff_files var/log/master.log var/log/master-test.log +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--diff_files $MYSQLTEST_VARDIR/log/master.log $MYSQLTEST_VARDIR/log/master-test.log --echo '#--------------------FN_DYNVARS_018_01-------------------------#' diff --git a/mysql-test/t/identity_func.test b/mysql-test/t/identity_func.test index 2920b3f4c0b..ff93607a2cd 100644 --- a/mysql-test/t/identity_func.test +++ b/mysql-test/t/identity_func.test @@ -19,6 +19,7 @@ # # ############################################################################### +--source include/have_innodb.inc --disable_warnings drop table if exists t1; diff --git a/mysql-test/t/innodb_additional_mem_pool_size_basic.test b/mysql-test/t/innodb_additional_mem_pool_size_basic.test index 5082867a16f..ffb1046ed32 100644 --- a/mysql-test/t/innodb_additional_mem_pool_size_basic.test +++ b/mysql-test/t/innodb_additional_mem_pool_size_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_020_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_autoextend_increment_basic.test b/mysql-test/t/innodb_autoextend_increment_basic.test index e833189f1d2..86f8c7aa7a4 100644 --- a/mysql-test/t/innodb_autoextend_increment_basic.test +++ b/mysql-test/t/innodb_autoextend_increment_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_autoinc_lock_mode_basic.test b/mysql-test/t/innodb_autoinc_lock_mode_basic.test index 32398bf5fe3..5b6fa943bbe 100644 --- a/mysql-test/t/innodb_autoinc_lock_mode_basic.test +++ b/mysql-test/t/innodb_autoinc_lock_mode_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_buffer_pool_size_basic.test b/mysql-test/t/innodb_buffer_pool_size_basic.test index 7de4b9f853c..190b2d19bc4 100644 --- a/mysql-test/t/innodb_buffer_pool_size_basic.test +++ b/mysql-test/t/innodb_buffer_pool_size_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_022_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_checksums_basic.test b/mysql-test/t/innodb_checksums_basic.test index 7b738557789..89daad9ce0a 100644 --- a/mysql-test/t/innodb_checksums_basic.test +++ b/mysql-test/t/innodb_checksums_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_023_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_commit_concurrency_basic.test b/mysql-test/t/innodb_commit_concurrency_basic.test index c746660ecfb..1ef69e34999 100644 --- a/mysql-test/t/innodb_commit_concurrency_basic.test +++ b/mysql-test/t/innodb_commit_concurrency_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_data_file_path_basic.test b/mysql-test/t/innodb_data_file_path_basic.test index 5c1c2b06f44..1d88c47b1bb 100644 --- a/mysql-test/t/innodb_data_file_path_basic.test +++ b/mysql-test/t/innodb_data_file_path_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_024_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_data_home_dir_basic.test b/mysql-test/t/innodb_data_home_dir_basic.test index 1922f5e883c..f3b02edf83b 100644 --- a/mysql-test/t/innodb_data_home_dir_basic.test +++ b/mysql-test/t/innodb_data_home_dir_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_025_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_doublewrite_basic.test b/mysql-test/t/innodb_doublewrite_basic.test index a4cc53d59fc..4a0460bb4bc 100644 --- a/mysql-test/t/innodb_doublewrite_basic.test +++ b/mysql-test/t/innodb_doublewrite_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_026_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_fast_shutdown_basic.test b/mysql-test/t/innodb_fast_shutdown_basic.test index bda2bec59d4..5e108708716 100644 --- a/mysql-test/t/innodb_fast_shutdown_basic.test +++ b/mysql-test/t/innodb_fast_shutdown_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_file_io_threads_basic.test b/mysql-test/t/innodb_file_io_threads_basic.test index c7ce91d0f70..8e09c75ded6 100644 --- a/mysql-test/t/innodb_file_io_threads_basic.test +++ b/mysql-test/t/innodb_file_io_threads_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_027_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_file_per_table_basic.test b/mysql-test/t/innodb_file_per_table_basic.test index 0a865d11345..bc0e34c484e 100644 --- a/mysql-test/t/innodb_file_per_table_basic.test +++ b/mysql-test/t/innodb_file_per_table_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_028_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test b/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test index b56a6b6fe04..90da929d199 100644 --- a/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test +++ b/mysql-test/t/innodb_flush_log_at_trx_commit_basic.test @@ -24,6 +24,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_flush_method_basic.test b/mysql-test/t/innodb_flush_method_basic.test index bb21b23f166..531df4a2464 100644 --- a/mysql-test/t/innodb_flush_method_basic.test +++ b/mysql-test/t/innodb_flush_method_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_029_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_force_recovery_basic.test b/mysql-test/t/innodb_force_recovery_basic.test index 7986a336a72..f5aa769f09f 100644 --- a/mysql-test/t/innodb_force_recovery_basic.test +++ b/mysql-test/t/innodb_force_recovery_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_030_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_lock_wait_timeout_basic.test b/mysql-test/t/innodb_lock_wait_timeout_basic.test index 22d1da10312..ed31fc9eb6b 100644 --- a/mysql-test/t/innodb_lock_wait_timeout_basic.test +++ b/mysql-test/t/innodb_lock_wait_timeout_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_032_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test b/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test index da2584d84a0..63835113770 100644 --- a/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test +++ b/mysql-test/t/innodb_locks_unsafe_for_binlog_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_031_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_log_buffer_size_basic.test b/mysql-test/t/innodb_log_buffer_size_basic.test index c97f439dbc9..74c1aeab87a 100644 --- a/mysql-test/t/innodb_log_buffer_size_basic.test +++ b/mysql-test/t/innodb_log_buffer_size_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_033_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_log_file_size_basic.test b/mysql-test/t/innodb_log_file_size_basic.test index dc6e3d21a28..08925b73957 100644 --- a/mysql-test/t/innodb_log_file_size_basic.test +++ b/mysql-test/t/innodb_log_file_size_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_035_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_log_files_in_group_basic.test b/mysql-test/t/innodb_log_files_in_group_basic.test index 714278f6e28..67978efe76a 100644 --- a/mysql-test/t/innodb_log_files_in_group_basic.test +++ b/mysql-test/t/innodb_log_files_in_group_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_034_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_log_group_home_dir_basic.test b/mysql-test/t/innodb_log_group_home_dir_basic.test index 0dadbd0940b..7e3969c6bd7 100644 --- a/mysql-test/t/innodb_log_group_home_dir_basic.test +++ b/mysql-test/t/innodb_log_group_home_dir_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_036_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_max_dirty_pages_pct_basic.test b/mysql-test/t/innodb_max_dirty_pages_pct_basic.test index 8257c2ff89f..830617866ca 100644 --- a/mysql-test/t/innodb_max_dirty_pages_pct_basic.test +++ b/mysql-test/t/innodb_max_dirty_pages_pct_basic.test @@ -23,7 +23,7 @@ # server-system-variables.html # # # ############################################################################### - +--source include/have_innodb.inc --source include/load_sysvars.inc ###################################################################### diff --git a/mysql-test/t/innodb_mirrored_log_groups_basic.test b/mysql-test/t/innodb_mirrored_log_groups_basic.test index fb7ffb8544b..6edb07ac39f 100644 --- a/mysql-test/t/innodb_mirrored_log_groups_basic.test +++ b/mysql-test/t/innodb_mirrored_log_groups_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_037_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_open_files_basic.test b/mysql-test/t/innodb_open_files_basic.test index 34dcb8f3980..c55b7e55937 100644 --- a/mysql-test/t/innodb_open_files_basic.test +++ b/mysql-test/t/innodb_open_files_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_038_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_rollback_on_timeout_basic.test b/mysql-test/t/innodb_rollback_on_timeout_basic.test index 3dff6acdc0f..c33e0fa1b75 100644 --- a/mysql-test/t/innodb_rollback_on_timeout_basic.test +++ b/mysql-test/t/innodb_rollback_on_timeout_basic.test @@ -22,6 +22,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --echo '#---------------------BS_STVARS_039_01----------------------#' #################################################################### # Displaying default value # diff --git a/mysql-test/t/innodb_support_xa_basic.test b/mysql-test/t/innodb_support_xa_basic.test index 3e14ab18c30..6da3e68ebdf 100644 --- a/mysql-test/t/innodb_support_xa_basic.test +++ b/mysql-test/t/innodb_support_xa_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_table_locks_basic.test b/mysql-test/t/innodb_table_locks_basic.test index 0aadd0a3f4e..35961c43a7f 100644 --- a/mysql-test/t/innodb_table_locks_basic.test +++ b/mysql-test/t/innodb_table_locks_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/innodb_thread_concurrency_basic.test b/mysql-test/t/innodb_thread_concurrency_basic.test index 9f44c7fd4dc..40ce09ce4db 100644 --- a/mysql-test/t/innodb_thread_concurrency_basic.test +++ b/mysql-test/t/innodb_thread_concurrency_basic.test @@ -23,6 +23,7 @@ # # ############################################################################### +--source include/have_innodb.inc --source include/load_sysvars.inc ######################################################################## diff --git a/mysql-test/t/last_insert_id_func.test b/mysql-test/t/last_insert_id_func.test index 993adce46de..2309c539bd9 100644 --- a/mysql-test/t/last_insert_id_func.test +++ b/mysql-test/t/last_insert_id_func.test @@ -19,6 +19,8 @@ # # ############################################################################### +--source include/have_innodb.inc + --disable_warnings drop table if exists t1; --enable_warnings diff --git a/mysql-test/t/local_infile_func.test b/mysql-test/t/local_infile_func.test index f79efffbf95..d0a5a45e9c6 100644 --- a/mysql-test/t/local_infile_func.test +++ b/mysql-test/t/local_infile_func.test @@ -19,6 +19,8 @@ # # ################################################################################ +--source include/not_embedded.inc + --echo '#--------------------FN_DYNVARS_037_01-------------------------#' #################################################################### # Check if setting local_infile is changed in every new connection # diff --git a/mysql-test/t/rpl_max_binlog_size_func.test b/mysql-test/t/rpl_max_binlog_size_func.test index 224d12193a8..df22b253009 100644 --- a/mysql-test/t/rpl_max_binlog_size_func.test +++ b/mysql-test/t/rpl_max_binlog_size_func.test @@ -27,7 +27,8 @@ dec $a; --sleep 2 # if log file is not created then this will fail ---file_exists var/master-data/mylog.000002 +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR +--file_exists $MYSQLTEST_VARDIR/master-data/mylog.000002 --echo 'mylog.000002 exists' diff --git a/mysql-test/t/storage_engine_basic.test b/mysql-test/t/storage_engine_basic.test index 129b7d8b406..689afcd1010 100644 --- a/mysql-test/t/storage_engine_basic.test +++ b/mysql-test/t/storage_engine_basic.test @@ -15,6 +15,7 @@ # # ######################################################################## +--source include/have_innodb.inc --source include/load_sysvars.inc ###################################################################### diff --git a/mysql-test/t/tx_isolation_func.test b/mysql-test/t/tx_isolation_func.test index 24240b6c275..3a4167dc368 100644 --- a/mysql-test/t/tx_isolation_func.test +++ b/mysql-test/t/tx_isolation_func.test @@ -19,6 +19,8 @@ # # ######################################################################################### +--source include/have_innodb.inc + --echo ** Setup ** # # Setup From 77c7d6972dc6a36e26f8d24bc595b3d2277459e1 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 14 Apr 2008 17:43:08 -0400 Subject: [PATCH 054/435] Bug#35157: mysqldump should use FLUSH TABLES NO_WRITE_TO_BINLOG \ when --master-data is used When using the --master-data option with mysqldump, mysqldump uses a FLUSH TABLES command. However, this statement got replicated to the slave(s), which caused the slave(s) to block unnecessarily while the FLUSH tables command completed. Now, if the master-data option is set to one of the two "on" modes, then use the "LOCAL" qualifier to ensure that it's not replicated. client/mysqldump.c: If master_data is set to one of the two modes, then insert "LOCAL" to the command to FLUSH TABLES so that the slaves aren't told to flush also. mysql-test/r/mysqldump.result: Output of mysqldump changed. --- client/mysqldump.c | 5 ++++- mysql-test/r/mysqldump.result | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/mysqldump.c b/client/mysqldump.c index 49f3d3ad71b..0cc8916fac4 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -4326,7 +4326,10 @@ static int do_flush_tables_read_lock(MYSQL *mysql_con) update starts between the two FLUSHes, we have that bad stall. */ return - ( mysql_query_with_error_report(mysql_con, 0, "FLUSH TABLES") || + ( mysql_query_with_error_report(mysql_con, 0, + ((opt_master_data != 0) ? + "FLUSH /*!40101 LOCAL */ TABLES" : + "FLUSH TABLES")) || mysql_query_with_error_report(mysql_con, 0, "FLUSH TABLES WITH READ LOCK") ); } diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index a1b8eaa52f8..032bc844824 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -3565,8 +3565,8 @@ use test; create user mysqltest_1@localhost; create table t1(a int, b varchar(34)); reset master; -mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227) -mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227) +mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need the RELOAD privilege for this operation (1227) +mysqldump: Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES': Access denied; you need the RELOAD privilege for this operation (1227) grant RELOAD on *.* to mysqltest_1@localhost; mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227) mysqldump: Couldn't execute 'SHOW MASTER STATUS': Access denied; you need the SUPER,REPLICATION CLIENT privilege for this operation (1227) From 53c183268097de8ee772acf0849db4595193bfd8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 15 Apr 2008 15:44:11 +0200 Subject: [PATCH 055/435] Third set of fixes for bug#35988. --- mysql-test/include/charset_basic.inc | 1 + mysql-test/include/collation_basic.inc | 2 +- mysql-test/r/delay_key_write_func.result | 1 + mysql-test/r/ft_boolean_syntax_func.result | 1 + mysql-test/r/local_infile_func.result | 4 ++-- mysql-test/r/max_allowed_packet_func.result | 2 ++ mysql-test/t/character_set_client_basic.test | 1 + mysql-test/t/delay_key_write_func.test | 1 + mysql-test/t/ft_boolean_syntax_func.test | 1 + mysql-test/t/local_infile_func.test | 8 ++++---- mysql-test/t/max_allowed_packet_func.test | 6 ++++++ 11 files changed, 21 insertions(+), 7 deletions(-) diff --git a/mysql-test/include/charset_basic.inc b/mysql-test/include/charset_basic.inc index ebe3b8633cb..e3331697f2c 100644 --- a/mysql-test/include/charset_basic.inc +++ b/mysql-test/include/charset_basic.inc @@ -4,6 +4,7 @@ +--Error 0,ER_UNKNOWN_CHARACTER_SET eval SET $charset_variable = big5; eval SELECT $charset_variable; eval SET $charset_variable = dec8; diff --git a/mysql-test/include/collation_basic.inc b/mysql-test/include/collation_basic.inc index 5e983ad3163..be8ae36eeb8 100644 --- a/mysql-test/include/collation_basic.inc +++ b/mysql-test/include/collation_basic.inc @@ -1,7 +1,7 @@ # # This auxiliary file is used by collation variables # - +--Error 0,ER_UNKNOWN_CHARACTER_SET eval SET $collation_variable = big5_chinese_ci; eval SELECT $collation_variable; eval SET $collation_variable = big5_bin; diff --git a/mysql-test/r/delay_key_write_func.result b/mysql-test/r/delay_key_write_func.result index fdeaece3457..ca4e25e08b1 100644 --- a/mysql-test/r/delay_key_write_func.result +++ b/mysql-test/r/delay_key_write_func.result @@ -63,4 +63,5 @@ Key_write_requests 9 select count(*) from t1; count(*) 9 +DROP PROCEDURE sp_addRecords; DROP TABLE t1; diff --git a/mysql-test/r/ft_boolean_syntax_func.result b/mysql-test/r/ft_boolean_syntax_func.result index de127d7a38d..4a3159c77c3 100644 --- a/mysql-test/r/ft_boolean_syntax_func.result +++ b/mysql-test/r/ft_boolean_syntax_func.result @@ -105,3 +105,4 @@ id title body 9 Database Security Configuring MySQL for ... 'Bug#35361: Different syntax does not produce result as default operators' SET @@global.ft_boolean_syntax=DEFAULT; +DROP TABLE articles; diff --git a/mysql-test/r/local_infile_func.result b/mysql-test/r/local_infile_func.result index ef0a5039a88..52b922bc6d9 100644 --- a/mysql-test/r/local_infile_func.result +++ b/mysql-test/r/local_infile_func.result @@ -18,7 +18,7 @@ SET @@global.local_infile = 1; DROP TABLE IF EXISTS t1; create table t1(a int); LOAD DATA LOCAL INFILE -'var/std_data_ln/numbers.txt' INTO TABLE test.t1; +'MYSQLTEST_VARDIR/std_data_ln/numbers.txt' INTO TABLE test.t1; SELECT count(*) from t1; count(*) 9 @@ -27,7 +27,7 @@ SET @@global.local_infile = 0; DROP TABLE IF EXISTS t1; create table t1(a int); LOAD DATA LOCAL INFILE -'var/std_data_ln/numbers.txt' INTO TABLE test.t1; +'MYSQLTEST_VARDIR/std_data_ln/numbers.txt' INTO TABLE test.t1; ERROR 42000: The used command is not allowed with this MySQL version SELECT count(*) from t1; count(*) diff --git a/mysql-test/r/max_allowed_packet_func.result b/mysql-test/r/max_allowed_packet_func.result index 32464f87048..f37705e41b4 100644 --- a/mysql-test/r/max_allowed_packet_func.result +++ b/mysql-test/r/max_allowed_packet_func.result @@ -1,3 +1,4 @@ +1048576 drop table if exists t1; ## Creating new table t1 ## CREATE TABLE t1 @@ -40,5 +41,6 @@ SELECT @@global.net_buffer_length; ## Creating new connection test_con1 ## ## Inserting and fetching data of length greater than 1024 ## INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +SET @@global.max_allowed_packet = 1048576; ## Server disconnects after this case and error occurs that Server ## ## has gone away ## diff --git a/mysql-test/t/character_set_client_basic.test b/mysql-test/t/character_set_client_basic.test index ba330903528..7eaee2e28b4 100644 --- a/mysql-test/t/character_set_client_basic.test +++ b/mysql-test/t/character_set_client_basic.test @@ -114,6 +114,7 @@ SET @@character_set_client = utf8 + latin2; ############################################################################## # Change the value of character_set_client to a valid value for session # ############################################################################## +--Error 0,ER_UNKNOWN_CHARACTER_SET SET @@character_set_client = big5; SELECT @@character_set_client; SET @@character_set_client = dec8; diff --git a/mysql-test/t/delay_key_write_func.test b/mysql-test/t/delay_key_write_func.test index a361bf1f54c..3c0319be427 100644 --- a/mysql-test/t/delay_key_write_func.test +++ b/mysql-test/t/delay_key_write_func.test @@ -141,6 +141,7 @@ SHOW STATUS LIKE 'Key_writes'; SHOW STATUS LIKE 'Key_write_requests'; select count(*) from t1; +DROP PROCEDURE sp_addRecords; DROP TABLE t1; #################################################### diff --git a/mysql-test/t/ft_boolean_syntax_func.test b/mysql-test/t/ft_boolean_syntax_func.test index 7b30868224c..4ea28b015cb 100644 --- a/mysql-test/t/ft_boolean_syntax_func.test +++ b/mysql-test/t/ft_boolean_syntax_func.test @@ -122,4 +122,5 @@ SET @@global.ft_boolean_syntax=DEFAULT; ######################################################### # End of functionality Testing for ft_boolean_syntax # ######################################################### +DROP TABLE articles; diff --git a/mysql-test/t/local_infile_func.test b/mysql-test/t/local_infile_func.test index d0a5a45e9c6..166149ad9aa 100644 --- a/mysql-test/t/local_infile_func.test +++ b/mysql-test/t/local_infile_func.test @@ -62,9 +62,9 @@ DROP TABLE IF EXISTS t1; create table t1(a int); ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR eval LOAD DATA LOCAL INFILE -'var/std_data_ln/numbers.txt' INTO TABLE test.t1; +'$MYSQLTEST_VARDIR/std_data_ln/numbers.txt' INTO TABLE test.t1; SELECT count(*) from t1; @@ -78,10 +78,10 @@ DROP TABLE IF EXISTS t1; --enable_warnings create table t1(a int); ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR --Error ER_NOT_ALLOWED_COMMAND eval LOAD DATA LOCAL INFILE -'var/std_data_ln/numbers.txt' INTO TABLE test.t1; +'$MYSQLTEST_VARDIR/std_data_ln/numbers.txt' INTO TABLE test.t1; SELECT count(*) from t1; diff --git a/mysql-test/t/max_allowed_packet_func.test b/mysql-test/t/max_allowed_packet_func.test index e71019f4884..4474786d898 100644 --- a/mysql-test/t/max_allowed_packet_func.test +++ b/mysql-test/t/max_allowed_packet_func.test @@ -20,6 +20,8 @@ ############################################################################### +let $start_global_value = `SELECT @@global.max_allowed_packet`; +--echo $start_global_value --disable_warnings drop table if exists t1; @@ -80,5 +82,9 @@ connection test_con1; --Error 0,ER_NET_PACKET_TOO_LARGE INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +eval SET @@global.max_allowed_packet = $start_global_value; + --echo ## Server disconnects after this case and error occurs that Server ## --echo ## has gone away ## + + From 9c63b06c6d45f48195d9994c7018e78efe5212ed Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 16 Apr 2008 10:23:07 +0200 Subject: [PATCH 056/435] fourth set of fixes for bug#35988. --- mysql-test/t/character_set_client_basic.test | 7 ++++++- mysql-test/t/character_set_connection_basic.test | 5 +++++ mysql-test/t/character_set_database_basic.test | 5 +++++ mysql-test/t/character_set_database_func.test | 2 ++ mysql-test/t/character_set_filesystem_basic.test | 5 +++++ mysql-test/t/character_set_results_basic.test | 5 +++++ mysql-test/t/character_set_server_basic.test | 5 +++++ mysql-test/t/collation_connection_basic.test | 5 +++++ mysql-test/t/collation_database_basic.test | 5 +++++ mysql-test/t/collation_server_basic.test | 5 +++++ mysql-test/t/completion_type_func.test | 2 ++ mysql-test/t/max_prepared_stmt_count_func.test | 2 ++ 12 files changed, 52 insertions(+), 1 deletion(-) diff --git a/mysql-test/t/character_set_client_basic.test b/mysql-test/t/character_set_client_basic.test index 7eaee2e28b4..f07e9407047 100644 --- a/mysql-test/t/character_set_client_basic.test +++ b/mysql-test/t/character_set_client_basic.test @@ -22,6 +22,12 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc ################################################### @@ -114,7 +120,6 @@ SET @@character_set_client = utf8 + latin2; ############################################################################## # Change the value of character_set_client to a valid value for session # ############################################################################## ---Error 0,ER_UNKNOWN_CHARACTER_SET SET @@character_set_client = big5; SELECT @@character_set_client; SET @@character_set_client = dec8; diff --git a/mysql-test/t/character_set_connection_basic.test b/mysql-test/t/character_set_connection_basic.test index 6aa26e8dbc3..b300c8c827e 100644 --- a/mysql-test/t/character_set_connection_basic.test +++ b/mysql-test/t/character_set_connection_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc ################################################### diff --git a/mysql-test/t/character_set_database_basic.test b/mysql-test/t/character_set_database_basic.test index e744c47ebd0..5fbba83dffd 100644 --- a/mysql-test/t/character_set_database_basic.test +++ b/mysql-test/t/character_set_database_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc ################################################### diff --git a/mysql-test/t/character_set_database_func.test b/mysql-test/t/character_set_database_func.test index 2b17f4cf99e..b2d2d017d64 100644 --- a/mysql-test/t/character_set_database_func.test +++ b/mysql-test/t/character_set_database_func.test @@ -19,6 +19,8 @@ # # ############################################################################### +--source include/have_utf8.inc + --echo '#--------------------FN_DYNVARS_008_01-------------------------#' ######################################################################## # Check if setting character_set_database is changed in new connection # diff --git a/mysql-test/t/character_set_filesystem_basic.test b/mysql-test/t/character_set_filesystem_basic.test index 7034179ef48..37f06e886f1 100644 --- a/mysql-test/t/character_set_filesystem_basic.test +++ b/mysql-test/t/character_set_filesystem_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/character_set_results_basic.test b/mysql-test/t/character_set_results_basic.test index 26f4b0be73d..71f8d7d5e7b 100644 --- a/mysql-test/t/character_set_results_basic.test +++ b/mysql-test/t/character_set_results_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc ################################################ diff --git a/mysql-test/t/character_set_server_basic.test b/mysql-test/t/character_set_server_basic.test index e2d2a9ca9fc..985ff8d220a 100644 --- a/mysql-test/t/character_set_server_basic.test +++ b/mysql-test/t/character_set_server_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/collation_connection_basic.test b/mysql-test/t/collation_connection_basic.test index 5e1033d6ead..f1551b2a046 100644 --- a/mysql-test/t/collation_connection_basic.test +++ b/mysql-test/t/collation_connection_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/collation_database_basic.test b/mysql-test/t/collation_database_basic.test index 478ecbdb9ab..c1c520647f5 100644 --- a/mysql-test/t/collation_database_basic.test +++ b/mysql-test/t/collation_database_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/collation_server_basic.test b/mysql-test/t/collation_server_basic.test index b13543058f8..8e4d3fd83e7 100644 --- a/mysql-test/t/collation_server_basic.test +++ b/mysql-test/t/collation_server_basic.test @@ -22,6 +22,11 @@ # server-system-variables.html # # # ############################################################################### +--source include/have_big5.inc +--source include/have_ujis.inc +--source include/have_sjis.inc +--source include/have_utf8.inc +--source include/have_uds.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/completion_type_func.test b/mysql-test/t/completion_type_func.test index 71d66dac777..4f1ebf6700b 100644 --- a/mysql-test/t/completion_type_func.test +++ b/mysql-test/t/completion_type_func.test @@ -19,6 +19,8 @@ # # ################################################################################ +--source include/have_innodb.inc + --disable_warnings drop table if exists t1; --enable_warnings diff --git a/mysql-test/t/max_prepared_stmt_count_func.test b/mysql-test/t/max_prepared_stmt_count_func.test index d6c968633ee..6617c4ad2ea 100644 --- a/mysql-test/t/max_prepared_stmt_count_func.test +++ b/mysql-test/t/max_prepared_stmt_count_func.test @@ -147,4 +147,6 @@ DROP PREPARE stmt1; DROP PREPARE stmt2; DROP PREPARE stmt3; +DROP PROCEDURE sp_checkstmts; + SET @@global.max_prepared_stmt_count = @global_max_prepared_stmt_count; From 14f753d42f1d9571e190517b45ad53c2983d5192 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 16 Apr 2008 16:32:33 +0200 Subject: [PATCH 057/435] fifth set of fixes to bug#35988. --- mysql-test/r/max_prepared_stmt_count_func.result | 1 + mysql-test/t/character_set_client_basic.test | 1 - mysql-test/t/character_set_connection_basic.test | 2 +- mysql-test/t/character_set_database_basic.test | 2 +- mysql-test/t/character_set_filesystem_basic.test | 2 +- mysql-test/t/character_set_results_basic.test | 2 +- mysql-test/t/character_set_server_basic.test | 2 +- mysql-test/t/collation_connection_basic.test | 2 +- mysql-test/t/collation_database_basic.test | 2 +- mysql-test/t/collation_server_basic.test | 2 +- mysql-test/t/div_precision_increment_func.test | 3 ++- mysql-test/t/ssl_ca_basic.test | 2 +- mysql-test/t/ssl_cert_basic.test | 2 +- mysql-test/t/ssl_key_basic.test | 2 +- 14 files changed, 14 insertions(+), 13 deletions(-) diff --git a/mysql-test/r/max_prepared_stmt_count_func.result b/mysql-test/r/max_prepared_stmt_count_func.result index 94ab5437e81..562ef63f811 100644 --- a/mysql-test/r/max_prepared_stmt_count_func.result +++ b/mysql-test/r/max_prepared_stmt_count_func.result @@ -78,4 +78,5 @@ DROP PREPARE stmt; DROP PREPARE stmt1; DROP PREPARE stmt2; DROP PREPARE stmt3; +DROP PROCEDURE sp_checkstmts; SET @@global.max_prepared_stmt_count = @global_max_prepared_stmt_count; diff --git a/mysql-test/t/character_set_client_basic.test b/mysql-test/t/character_set_client_basic.test index f07e9407047..69e4c07dcd8 100644 --- a/mysql-test/t/character_set_client_basic.test +++ b/mysql-test/t/character_set_client_basic.test @@ -26,7 +26,6 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc --source include/have_ucs2.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/character_set_connection_basic.test b/mysql-test/t/character_set_connection_basic.test index b300c8c827e..509f8d0d346 100644 --- a/mysql-test/t/character_set_connection_basic.test +++ b/mysql-test/t/character_set_connection_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc ################################################### diff --git a/mysql-test/t/character_set_database_basic.test b/mysql-test/t/character_set_database_basic.test index 5fbba83dffd..9690fb84b5a 100644 --- a/mysql-test/t/character_set_database_basic.test +++ b/mysql-test/t/character_set_database_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc ################################################### diff --git a/mysql-test/t/character_set_filesystem_basic.test b/mysql-test/t/character_set_filesystem_basic.test index 37f06e886f1..0117145a06b 100644 --- a/mysql-test/t/character_set_filesystem_basic.test +++ b/mysql-test/t/character_set_filesystem_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/character_set_results_basic.test b/mysql-test/t/character_set_results_basic.test index 71f8d7d5e7b..aae05c824d1 100644 --- a/mysql-test/t/character_set_results_basic.test +++ b/mysql-test/t/character_set_results_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc ################################################ diff --git a/mysql-test/t/character_set_server_basic.test b/mysql-test/t/character_set_server_basic.test index 985ff8d220a..2b3c078363a 100644 --- a/mysql-test/t/character_set_server_basic.test +++ b/mysql-test/t/character_set_server_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/collation_connection_basic.test b/mysql-test/t/collation_connection_basic.test index f1551b2a046..f3544dd306e 100644 --- a/mysql-test/t/collation_connection_basic.test +++ b/mysql-test/t/collation_connection_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/collation_database_basic.test b/mysql-test/t/collation_database_basic.test index c1c520647f5..c130e276084 100644 --- a/mysql-test/t/collation_database_basic.test +++ b/mysql-test/t/collation_database_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/collation_server_basic.test b/mysql-test/t/collation_server_basic.test index 8e4d3fd83e7..c4b469007e5 100644 --- a/mysql-test/t/collation_server_basic.test +++ b/mysql-test/t/collation_server_basic.test @@ -26,7 +26,7 @@ --source include/have_ujis.inc --source include/have_sjis.inc --source include/have_utf8.inc ---source include/have_uds.inc +--source include/have_ucs2.inc --source include/load_sysvars.inc diff --git a/mysql-test/t/div_precision_increment_func.test b/mysql-test/t/div_precision_increment_func.test index 495273cf1a0..ae2862df2cf 100644 --- a/mysql-test/t/div_precision_increment_func.test +++ b/mysql-test/t/div_precision_increment_func.test @@ -19,6 +19,7 @@ # # ################################################################################ +SET @save_div_precision_increment = @@global.div_presision_increment; --disable_warnings drop table if exists t1; @@ -118,7 +119,7 @@ drop table t1; disconnect test_con1; disconnect test_con2; - +SET @@global.div_prescision_increment = @save_div_precision_increment; diff --git a/mysql-test/t/ssl_ca_basic.test b/mysql-test/t/ssl_ca_basic.test index bca463b97c5..c369f1f0894 100644 --- a/mysql-test/t/ssl_ca_basic.test +++ b/mysql-test/t/ssl_ca_basic.test @@ -22,7 +22,7 @@ # # ############################################################################### ---source include/have_ssl.inc +-- source include/have_ssl.inc --echo '#---------------------BS_STVARS_045_01----------------------#' #################################################################### diff --git a/mysql-test/t/ssl_cert_basic.test b/mysql-test/t/ssl_cert_basic.test index c15380609df..c3b69bd495f 100644 --- a/mysql-test/t/ssl_cert_basic.test +++ b/mysql-test/t/ssl_cert_basic.test @@ -22,7 +22,7 @@ # # ############################################################################### ---source include/have_ssl.inc +-- source include/have_ssl.inc --echo '#---------------------BS_STVARS_047_01----------------------#' #################################################################### diff --git a/mysql-test/t/ssl_key_basic.test b/mysql-test/t/ssl_key_basic.test index 12b19a802d5..4616f281c27 100644 --- a/mysql-test/t/ssl_key_basic.test +++ b/mysql-test/t/ssl_key_basic.test @@ -22,7 +22,7 @@ # # ############################################################################### ---source include/have_ssl.inc +-- source include/have_ssl.inc --echo '#---------------------BS_STVARS_049_01----------------------#' #################################################################### From bd2a73281243ad5c9f190e4fa17b752e41c11f3d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Apr 2008 01:04:49 +0400 Subject: [PATCH 058/435] WL#4165 "Prepared statements: validation". Add metadata validation to ~20 more SQL commands. Make sure that these commands actually work in ps-protocol, since until now they were enabled, but not carefully tested. Fixes the ml003 bug found by Matthias during internal testing of the patch. mysql-test/r/ps_ddl.result: Update test results (WL#4165) mysql-test/t/ps_ddl.test: Cover with tests metadata validation of 26 SQL statements. sql/mysql_priv.h: Fix the name in the comment. sql/sp_head.cc: Changed the way the observer is removed in case of stored procedures to support validation prepare stmt from "call p1()": whereas tables used in the expression must be validated, substatements of p1 must not. The previous scheme used to silence the observer only in stored functions and triggers. sql/sql_class.cc: Now the observer is silenced in sp_head::execute(). Remove it from Sub_statement_state. sql/sql_class.h: Now the observer is silenced in sp_head::execute(). Remove it from Sub_statement_state. sql/sql_parse.cc: Add CF_REEXECUTION_FRAGILE to 20 more SQLCOMs that need it. sql/sql_prepare.cc: Add metadata validation to ~20 new SQLCOMs that need it. Fix memory leaks with expressions used in SHOW DATABASES and CALL (and prepared statements). We need to fix all expressions at prepare, since if these expressions use subqueries, there are one-time transformations of the parse tree that must be done at prepare. List of fixed commands includes: SHOW TABLES, SHOW DATABASES, SHOW TRIGGERS, SHOW EVENTS, SHOW OPEN TABLES,SHOW KEYS, SHOW FIELDS, SHOW COLLATIONS, SHOW CHARSETS, SHOW VARIABLES, SHOW TATUS, SHOW TABLE STATUS, SHOW PROCEDURE STATUS, SHOW FUNCTION STATUS, CALL. Add comment to set_parameters(). sql/table.h: Update comments. --- mysql-test/r/ps_ddl.result | 537 ++++++++++++++++++++++++++++++++++ mysql-test/t/ps_ddl.test | 584 +++++++++++++++++++++++++++++++++++++ sql/mysql_priv.h | 2 +- sql/sp_head.cc | 21 ++ sql/sql_class.cc | 3 - sql/sql_class.h | 23 +- sql/sql_parse.cc | 40 +-- sql/sql_prepare.cc | 88 +++++- sql/table.h | 4 +- 9 files changed, 1255 insertions(+), 47 deletions(-) diff --git a/mysql-test/r/ps_ddl.result b/mysql-test/r/ps_ddl.result index fe7062716ea..3121650508d 100644 --- a/mysql-test/r/ps_ddl.result +++ b/mysql-test/r/ps_ddl.result @@ -663,6 +663,8 @@ a b c # Currently a different result from conventional statements. # A view is inlined once at prepare, later on view DDL # does not affect prepared statement and it is not re-prepared. +# This is reported in Bug#36002 Prepared statements: if a view +# used in a statement is replaced, bad data execute stmt; a b c 10 20 30 @@ -1497,6 +1499,541 @@ drop function f_12093; drop procedure p_12093; deallocate prepare stmt_sf; deallocate prepare stmt_sp; +===================================================================== +Ensure that metadata validation is performed for every type of +SQL statement where it is needed. +===================================================================== +drop table if exists t1; +create table t1 (a int); +# +# SQLCOM_SELECT +# +prepare stmt from "select 1 as res from dual where (1) in (select * from t1)"; +drop table t1; +create table t1 (x int); +execute stmt; +res +drop table t1; +deallocate prepare stmt; +call p_verify_reprepare_count(1); +SUCCESS + +# +# SQLCOM_CREATE_TABLE +# +drop table if exists t1; +drop table if exists t2; +create table t1 (a int); +prepare stmt from 'create table t2 as select * from t1'; +execute stmt; +drop table t2; +execute stmt; +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +ERROR 42S01: Table 't2' already exists +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +ERROR 42S01: Table 't2' already exists +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +create temporary table t2 (a int); +execute stmt; +ERROR 42S01: Table 't2' already exists +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +ERROR 42S01: Table 't2' already exists +call p_verify_reprepare_count(0); +SUCCESS + +drop temporary table t2; +execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +drop table t1; +create table t1 (x varchar(20)); +execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t2; +x +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +drop table t1; +deallocate prepare stmt; +# XXX: no validation of the first table in case of +# CREATE TEMPORARY TABLE. This is a shortcoming of the current code, +# but since validation is not strictly necessary, nothing is done +# about it. +# Will be fixed as part of work on Bug#21431 "Incomplete support of +# temporary tables" +create table t1 (a int); +insert into t1 (a) values (1); +prepare stmt from "create temporary table if not exists t2 as select * from t1"; +execute stmt; +drop table t2; +execute stmt; +execute stmt; +Warnings: +Note 1050 Table 't2' already exists +select * from t2; +a +1 +1 +execute stmt; +Warnings: +Note 1050 Table 't2' already exists +select * from t2; +a +1 +1 +1 +drop table t2; +create temporary table t2 (a varchar(10)); +execute stmt; +Warnings: +Note 1050 Table 't2' already exists +select * from t2; +a +1 +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +create table t1 (x int); +execute stmt; +Warnings: +Note 1050 Table 't2' already exists +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +Warnings: +Note 1050 Table 't2' already exists +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +drop table t2; +deallocate prepare stmt; +# +# SQLCOM_UPDATE +# +drop table if exists t1, t2; +create table t1 (a int); +create table t2 (a int); +prepare stmt from "update t2 set a=a+1 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; +# +# SQLCOM_INSERT +# +drop table if exists t1, t2; +create table t1 (a int); +create table t2 (a int); +prepare stmt from "insert into t2 set a=((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; +# +# SQLCOM_INSERT_SELECT +# +drop table if exists t1, t2; +create table t1 (a int); +create table t2 (a int); +prepare stmt from "insert into t2 select * from t1"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; +# +# SQLCOM_REPLACE +# +drop table if exists t1, t2; +create table t1 (a int); +create table t2 (a int); +prepare stmt from "replace t2 set a=((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; +# +# SQLCOM_REPLACE_SELECT +# +drop table if exists t1, t2; +create table t1 (a int); +create table t2 (a int); +prepare stmt from "replace t2 select * from t1"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; +# +# SQLCOM_DELETE +# +drop table if exists t1, t2; +create table t1 (a int); +create table t2 (a int); +prepare stmt from "delete from t2 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; +# +# SQLCOM_DELETE_MULTI +# +drop table if exists t1, t2, t3; +create table t1 (a int); +create table t2 (a int); +create table t3 (a int); +prepare stmt from "delete t2, t3 from t2, t3 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2, t3; +deallocate prepare stmt; +# +# SQLCOM_UPDATE_MULTI +# +drop table if exists t1, t2, t3; +create table t1 (a int); +create table t2 (a int); +create table t3 (a int); +prepare stmt from "update t2, t3 set t3.a=t2.a, t2.a=null where (1) in (select * from t1)"; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2, t3; +deallocate prepare stmt; +# Intermediate results: 8 SQLCOMs tested, 8 automatic reprepares +call p_verify_reprepare_count(8); +SUCCESS + +# +# SQLCOM_LOAD +# +drop table if exists t1; +create table t1 (a varchar(20)); +prepare stmt from "load data infile '../std_data_ln/words.dat' into table t1"; +ERROR HY000: This command is not supported in the prepared statement protocol yet +drop table t1; +# +# SQLCOM_SHOW_DATABASES +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show databases where (1) in (select * from t1)"; +execute stmt; +Database +drop table t1; +create table t1 (x int); +execute stmt; +Database +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_TABLES +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show tables where (1) in (select * from t1)"; +execute stmt; +Tables_in_test +drop table t1; +create table t1 (x int); +execute stmt; +Tables_in_test +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_FIELDS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show fields from t1 where (1) in (select * from t1)"; +execute stmt; +Field Type Null Key Default Extra +drop table t1; +create table t1 (x int); +execute stmt; +Field Type Null Key Default Extra +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_KEYS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show keys from t1 where (1) in (select * from t1)"; +execute stmt; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +drop table t1; +create table t1 (x int); +execute stmt; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_VARIABLES +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show variables where (1) in (select * from t1)"; +execute stmt; +Variable_name Value +drop table t1; +create table t1 (x int); +execute stmt; +Variable_name Value +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_STATUS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show status where (1) in (select * from t1)"; +execute stmt; +Variable_name Value +drop table t1; +create table t1 (x int); +execute stmt; +Variable_name Value +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_LOGS, +# SQLCOM_SHOW_ENGINE_MUTEX, SQLCOM_SHOW_PROCESSLIST +# +# Currently can not have a where clause, need to be covered +# with tests +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show engine all status where (1) in (select * from t1)"; +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 'where (1) in (select * from t1)' at line 1 +prepare stmt from "show engine all logs where (1) in (select * from t1)"; +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 'where (1) in (select * from t1)' at line 1 +prepare stmt from "show engine all mutex where (1) in (select * from t1)"; +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 'where (1) in (select * from t1)' at line 1 +prepare stmt from "show processlist where (1) in (select * from t1)"; +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 'where (1) in (select * from t1)' at line 1 +drop table t1; +# +# SQLCOM_SHOW_CHARSETS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show charset where (1) in (select * from t1)"; +execute stmt; +Charset Description Default collation Maxlen +drop table t1; +create table t1 (x int); +execute stmt; +Charset Description Default collation Maxlen +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_COLLATIONS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show collation where (1) in (select * from t1)"; +execute stmt; +Collation Charset Id Default Compiled Sortlen +drop table t1; +create table t1 (x int); +execute stmt; +Collation Charset Id Default Compiled Sortlen +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_TABLE_STATUS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show table status where (1) in (select * from t1)"; +execute stmt; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +drop table t1; +create table t1 (x int); +execute stmt; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_TRIGGERS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show triggers where (1) in (select * from t1)"; +execute stmt; +Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation +drop table t1; +create table t1 (x int); +execute stmt; +Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_OPEN_TABLES +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show open tables where (1) in (select * from t1)"; +execute stmt; +Database Table In_use Name_locked +drop table t1; +create table t1 (x int); +execute stmt; +Database Table In_use Name_locked +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_STATUS_PROC +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show procedure status where (1) in (select * from t1)"; +execute stmt; +Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation +drop table t1; +create table t1 (x int); +execute stmt; +Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_STATUS_FUNC +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show function status where (1) in (select * from t1)"; +execute stmt; +Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation +drop table t1; +create table t1 (x int); +execute stmt; +Db Name Type Definer Modified Created Security_type Comment character_set_client collation_connection Database Collation +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SHOW_EVENTS +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "show events where (1) in (select * from t1)"; +execute stmt; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +drop table t1; +create table t1 (x int); +execute stmt; +Db Name Definer Time zone Type Execute at Interval value Interval field Starts Ends Status Originator character_set_client collation_connection Database Collation +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_SET_OPTION +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "set @a=((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_DO +# +drop table if exists t1; +create table t1 (a int); +prepare stmt from "do ((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; +# +# SQLCOM_CALL +# +drop table if exists t1; +drop procedure if exists p1; +create procedure p1(a int) begin end; +create table t1 (a int); +prepare stmt from "call p1((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +drop procedure p1; +deallocate prepare stmt; +# +# SQLCOM_CREATE_VIEW +# +drop table if exists t1; +drop view if exists v1; +create table t1 (a int); +prepare stmt from "create view v1 as select * from t1"; +execute stmt; +drop view v1; +drop table t1; +create table t1 (x int); +execute stmt; +drop view v1; +drop table t1; +deallocate prepare stmt; +# Intermediate result: number of reprepares matches the number +# of tests +call p_verify_reprepare_count(18); +SUCCESS + +# +# SQLCOM_ALTER_VIEW +# +drop view if exists v1; +create view v1 as select 1; +prepare stmt from "alter view v1 as select 2"; +ERROR HY000: This command is not supported in the prepared statement protocol yet +drop view v1; # Cleanup # drop temporary table if exists t1, t2, t3; diff --git a/mysql-test/t/ps_ddl.test b/mysql-test/t/ps_ddl.test index d3df035444c..94791cd81f8 100644 --- a/mysql-test/t/ps_ddl.test +++ b/mysql-test/t/ps_ddl.test @@ -614,6 +614,8 @@ select * from t1; --echo # Currently a different result from conventional statements. --echo # A view is inlined once at prepare, later on view DDL --echo # does not affect prepared statement and it is not re-prepared. +--echo # This is reported in Bug#36002 Prepared statements: if a view +--echo # used in a statement is replaced, bad data execute stmt; call p_verify_reprepare_count(0); flush table t2; @@ -1347,6 +1349,588 @@ drop procedure p_12093; deallocate prepare stmt_sf; deallocate prepare stmt_sp; + +--echo ===================================================================== +--echo Ensure that metadata validation is performed for every type of +--echo SQL statement where it is needed. +--echo ===================================================================== +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +--echo # +--echo # SQLCOM_SELECT +--echo # +prepare stmt from "select 1 as res from dual where (1) in (select * from t1)"; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; +call p_verify_reprepare_count(1); +--echo # +--echo # SQLCOM_CREATE_TABLE +--echo # +--disable_warnings +drop table if exists t1; +drop table if exists t2; +--enable_warnings + +create table t1 (a int); + +prepare stmt from 'create table t2 as select * from t1'; +execute stmt; +drop table t2; +execute stmt; +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +--error ER_TABLE_EXISTS_ERROR +execute stmt; +call p_verify_reprepare_count(1); +--error ER_TABLE_EXISTS_ERROR +execute stmt; +call p_verify_reprepare_count(0); +drop table t2; +create temporary table t2 (a int); +--error ER_TABLE_EXISTS_ERROR +execute stmt; +call p_verify_reprepare_count(1); +--error ER_TABLE_EXISTS_ERROR +execute stmt; +call p_verify_reprepare_count(0); +drop temporary table t2; +execute stmt; +call p_verify_reprepare_count(1); +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +drop table t2; +drop table t1; +create table t1 (x varchar(20)); +execute stmt; +call p_verify_reprepare_count(1); +select * from t2; +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +drop table t2; +drop table t1; +deallocate prepare stmt; +--echo # XXX: no validation of the first table in case of +--echo # CREATE TEMPORARY TABLE. This is a shortcoming of the current code, +--echo # but since validation is not strictly necessary, nothing is done +--echo # about it. +--echo # Will be fixed as part of work on Bug#21431 "Incomplete support of +--echo # temporary tables" +create table t1 (a int); +insert into t1 (a) values (1); +prepare stmt from "create temporary table if not exists t2 as select * from t1"; +execute stmt; +drop table t2; +execute stmt; +execute stmt; +select * from t2; +execute stmt; +select * from t2; +drop table t2; +create temporary table t2 (a varchar(10)); +execute stmt; +select * from t2; +call p_verify_reprepare_count(0); +drop table t1; +create table t1 (x int); +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); +drop table t1; +drop table t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_UPDATE +--echo # + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +prepare stmt from "update t2 set a=a+1 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_INSERT +--echo # + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +prepare stmt from "insert into t2 set a=((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; + +drop table t1, t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_INSERT_SELECT +--echo # + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +prepare stmt from "insert into t2 select * from t1"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_REPLACE +--echo # + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +prepare stmt from "replace t2 set a=((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_REPLACE_SELECT +--echo # + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +prepare stmt from "replace t2 select * from t1"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_DELETE +--echo # + +--disable_warnings +drop table if exists t1, t2; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +prepare stmt from "delete from t2 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_DELETE_MULTI +--echo # + +--disable_warnings +drop table if exists t1, t2, t3; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +create table t3 (a int); +prepare stmt from "delete t2, t3 from t2, t3 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2, t3; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_UPDATE_MULTI +--echo # + +--disable_warnings +drop table if exists t1, t2, t3; +--enable_warnings +create table t1 (a int); +create table t2 (a int); +create table t3 (a int); +prepare stmt from "update t2, t3 set t3.a=t2.a, t2.a=null where (1) in (select * from t1)"; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1, t2, t3; +deallocate prepare stmt; +--echo # Intermediate results: 8 SQLCOMs tested, 8 automatic reprepares +call p_verify_reprepare_count(8); + +--echo # +--echo # SQLCOM_LOAD +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a varchar(20)); +--error ER_UNSUPPORTED_PS +prepare stmt from "load data infile '../std_data_ln/words.dat' into table t1"; +drop table t1; + +--echo # +--echo # SQLCOM_SHOW_DATABASES +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show databases where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_TABLES +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show tables where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_FIELDS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show fields from t1 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_KEYS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show keys from t1 where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_VARIABLES +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show variables where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_STATUS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show status where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_LOGS, +--echo # SQLCOM_SHOW_ENGINE_MUTEX, SQLCOM_SHOW_PROCESSLIST +--echo # + +--echo # Currently can not have a where clause, need to be covered +--echo # with tests + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +--error ER_PARSE_ERROR +prepare stmt from "show engine all status where (1) in (select * from t1)"; +--error ER_PARSE_ERROR +prepare stmt from "show engine all logs where (1) in (select * from t1)"; +--error ER_PARSE_ERROR +prepare stmt from "show engine all mutex where (1) in (select * from t1)"; +--error ER_PARSE_ERROR +prepare stmt from "show processlist where (1) in (select * from t1)"; +drop table t1; + +--echo # +--echo # SQLCOM_SHOW_CHARSETS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show charset where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_COLLATIONS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show collation where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_TABLE_STATUS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show table status where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_TRIGGERS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show triggers where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_OPEN_TABLES +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show open tables where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_STATUS_PROC +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show procedure status where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_STATUS_FUNC +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show function status where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SHOW_EVENTS +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "show events where (1) in (select * from t1)"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_SET_OPTION +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "set @a=((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_DO +--echo # + +--disable_warnings +drop table if exists t1; +--enable_warnings +create table t1 (a int); +prepare stmt from "do ((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_CALL +--echo # + +--disable_warnings +drop table if exists t1; +drop procedure if exists p1; +--enable_warnings +create procedure p1(a int) begin end; +create table t1 (a int); +prepare stmt from "call p1((1) in (select * from t1))"; +execute stmt; +drop table t1; +create table t1 (x int); +execute stmt; +drop table t1; +drop procedure p1; +deallocate prepare stmt; + +--echo # +--echo # SQLCOM_CREATE_VIEW +--echo # + +--disable_warnings +drop table if exists t1; +drop view if exists v1; +--enable_warnings +create table t1 (a int); +prepare stmt from "create view v1 as select * from t1"; +execute stmt; +drop view v1; +drop table t1; +create table t1 (x int); +execute stmt; +drop view v1; +drop table t1; +deallocate prepare stmt; +--echo # Intermediate result: number of reprepares matches the number +--echo # of tests +call p_verify_reprepare_count(18); + +--echo # +--echo # SQLCOM_ALTER_VIEW +--echo # + +--disable_warnings +drop view if exists v1; +--enable_warnings +create view v1 as select 1; +--error ER_UNSUPPORTED_PS +prepare stmt from "alter view v1 as select 2"; +drop view v1; + --echo # Cleanup --echo # --disable_warnings diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index 491a4c8ca1b..dd26a2d8103 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -695,7 +695,7 @@ const char *set_thd_proc_info(THD *thd, const char *info, prepare matches the type of the object we obtained from the table definition cache. - @sa check_and_update_metadata_version() + @sa check_and_update_table_version() @sa Execute_observer @sa Prepared_statement::reprepare() */ diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 8bd10e00f15..ab95575a965 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -1068,6 +1068,7 @@ sp_head::execute(THD *thd) LEX *old_lex; Item_change_list old_change_list; String old_packet; + Metadata_version_observer *save_metadata_observer= thd->m_metadata_observer; Object_creation_ctx *saved_creation_ctx; @@ -1135,6 +1136,25 @@ sp_head::execute(THD *thd) thd->variables.sql_mode= m_sql_mode; save_abort_on_warning= thd->abort_on_warning; thd->abort_on_warning= 0; + /** + When inside a substatement (a stored function or trigger + statement), clear the metadata observer in THD, if any. + Remember the value of the observer here, to be able + to restore it when leaving the substatement. + + We reset the observer to suppress errors when a substatement + uses temporary tables. If a temporary table does not exist + at start of the main statement, it's not prelocked + and thus is not validated with other prelocked tables. + + Later on, when the temporary table is opened, metadata + versions mismatch, expectedly. + + The proper solution for the problem is to re-validate tables + of substatements (Bug#12257, Bug#27011, Bug#32868, Bug#33000), + but it's not implemented yet. + */ + thd->m_metadata_observer= 0; /* It is also more efficient to save/restore current thd->lex once when @@ -1297,6 +1317,7 @@ sp_head::execute(THD *thd) thd->derived_tables= old_derived_tables; thd->variables.sql_mode= save_sql_mode; thd->abort_on_warning= save_abort_on_warning; + thd->m_metadata_observer= save_metadata_observer; thd->stmt_arena= old_arena; state= EXECUTED; diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 6a4ef0781a2..85f8e607213 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2876,7 +2876,6 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, first_successful_insert_id_in_prev_stmt; backup->first_successful_insert_id_in_cur_stmt= first_successful_insert_id_in_cur_stmt; - backup->m_metadata_observer= m_metadata_observer; if ((!lex->requires_prelocking() || is_update_query(lex->sql_command)) && !current_stmt_binlog_row_based) @@ -2896,7 +2895,6 @@ void THD::reset_sub_statement_state(Sub_statement_state *backup, cuted_fields= 0; transaction.savepoints= 0; first_successful_insert_id_in_cur_stmt= 0; - m_metadata_observer= 0; } @@ -2945,7 +2943,6 @@ void THD::restore_sub_statement_state(Sub_statement_state *backup) */ examined_row_count+= backup->examined_row_count; cuted_fields+= backup->cuted_fields; - m_metadata_observer= backup->m_metadata_observer; } diff --git a/sql/sql_class.h b/sql/sql_class.h index 837b74b3b60..cdb2300cabc 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -45,7 +45,7 @@ At most 1 instance of this class is active at a time, in which case THD::m_metadata_observer is not NULL. - @sa check_and_update_metadata_version() for details of the + @sa check_and_update_table_version() for details of the version tracking algorithm @sa Execute_observer for details of how we detect that @@ -847,7 +847,7 @@ public: to avoid spurious ER_NEED_REPREPARE errors -- system and INFORMATION_SCHEMA tables are not subject to metadata version tracking. - @sa check_and_update_metadata_version() + @sa check_and_update_table_version() */ Metadata_version_observer *m_metadata_observer; @@ -983,25 +983,6 @@ public: bool enable_slow_log; bool last_insert_id_used; SAVEPOINT *savepoints; - /** - When inside a substatement (a stored function or trigger - statement), clear the metadata observer in THD, if any. - Remember the value of the observer here, to be able - to restore it when leaving the substatement. - - We reset the observer to suppress errors when a substatement - uses temporary tables. If a temporary table does not exist - at start of the main statement, it's not prelocked - and thus is not validated with other prelocked tables. - - Later on, when the temporary table is opened, metadata - versions mismatch, expectedly. - - The proper solution for the problem is to re-validate tables - of substatements (Bug#12257, Bug#27011, Bug#32868, Bug#33000), - but it's not implemented yet. - */ - Metadata_version_observer *m_metadata_observer; }; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index faf48b38fd0..b495b2a268b 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -200,19 +200,19 @@ void init_update_queries(void) { bzero((uchar*) &sql_command_flags, sizeof(sql_command_flags)); - sql_command_flags[SQLCOM_CREATE_TABLE]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_CREATE_TABLE]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_CREATE_INDEX]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_ALTER_TABLE]= CF_CHANGES_DATA | CF_WRITE_LOGS_COMMAND; sql_command_flags[SQLCOM_TRUNCATE]= CF_CHANGES_DATA | CF_WRITE_LOGS_COMMAND; sql_command_flags[SQLCOM_DROP_TABLE]= CF_CHANGES_DATA; - sql_command_flags[SQLCOM_LOAD]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_LOAD]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_CREATE_DB]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_DROP_DB]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_RENAME_TABLE]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_BACKUP_TABLE]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_RESTORE_TABLE]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_DROP_INDEX]= CF_CHANGES_DATA; - sql_command_flags[SQLCOM_CREATE_VIEW]= CF_CHANGES_DATA; + sql_command_flags[SQLCOM_CREATE_VIEW]= CF_CHANGES_DATA | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_DROP_VIEW]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_CREATE_EVENT]= CF_CHANGES_DATA; sql_command_flags[SQLCOM_ALTER_EVENT]= CF_CHANGES_DATA; @@ -235,19 +235,21 @@ void init_update_queries(void) sql_command_flags[SQLCOM_REPLACE_SELECT]= CF_CHANGES_DATA | CF_HAS_ROW_COUNT | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_SELECT]= CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SET_OPTION]= CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_DO]= CF_REEXECUTION_FRAGILE; - sql_command_flags[SQLCOM_SHOW_STATUS_PROC]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_STATUS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_DATABASES]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_TRIGGERS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_EVENTS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_OPEN_TABLES]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_STATUS_PROC]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_STATUS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_DATABASES]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_TRIGGERS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_EVENTS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_OPEN_TABLES]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_SHOW_PLUGINS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_FIELDS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_KEYS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_VARIABLES]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_CHARSETS]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_COLLATIONS]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_FIELDS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_KEYS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_VARIABLES]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_CHARSETS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; + sql_command_flags[SQLCOM_SHOW_COLLATIONS]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_SHOW_NEW_MASTER]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_BINLOGS]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_SLAVE_HOSTS]= CF_STATUS_COMMAND; @@ -271,7 +273,7 @@ void init_update_queries(void) sql_command_flags[SQLCOM_SHOW_CREATE_PROC]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_CREATE_FUNC]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_CREATE_TRIGGER]= CF_STATUS_COMMAND; - sql_command_flags[SQLCOM_SHOW_STATUS_FUNC]= CF_STATUS_COMMAND; + sql_command_flags[SQLCOM_SHOW_STATUS_FUNC]= CF_STATUS_COMMAND | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_SHOW_PROC_CODE]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_FUNC_CODE]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_CREATE_EVENT]= CF_STATUS_COMMAND; @@ -279,9 +281,11 @@ void init_update_queries(void) sql_command_flags[SQLCOM_SHOW_PROFILE]= CF_STATUS_COMMAND; sql_command_flags[SQLCOM_SHOW_TABLES]= (CF_STATUS_COMMAND | - CF_SHOW_TABLE_COMMAND); + CF_SHOW_TABLE_COMMAND | + CF_REEXECUTION_FRAGILE); sql_command_flags[SQLCOM_SHOW_TABLE_STATUS]= (CF_STATUS_COMMAND | - CF_SHOW_TABLE_COMMAND); + CF_SHOW_TABLE_COMMAND | + CF_REEXECUTION_FRAGILE); /* The following is used to preserver CF_ROW_COUNT during the @@ -289,7 +293,7 @@ void init_update_queries(void) last called (or executed) statement is preserved. See mysql_execute_command() for how CF_ROW_COUNT is used. */ - sql_command_flags[SQLCOM_CALL]= CF_HAS_ROW_COUNT; + sql_command_flags[SQLCOM_CALL]= CF_HAS_ROW_COUNT | CF_REEXECUTION_FRAGILE; sql_command_flags[SQLCOM_EXECUTE]= CF_HAS_ROW_COUNT; /* diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 720deac116d..b815b993591 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -1480,6 +1480,43 @@ error: } +/** + Validate and prepare for execution CALL statement expressions. + + @param stmt prepared statement + @param tables list of tables used in this query + @param value_list list of expressions + + @retval FALSE success + @retval TRUE error, error message is set in THD +*/ + +static bool mysql_test_call_fields(Prepared_statement *stmt, + TABLE_LIST *tables, + List *value_list) +{ + DBUG_ENTER("mysql_test_call_fields"); + + List_iterator it(*value_list); + THD *thd= stmt->thd; + Item *item; + + if (tables && check_table_access(thd, SELECT_ACL, tables, UINT_MAX, FALSE) || + open_normal_and_derived_tables(thd, tables, 0)) + goto err; + + while ((item= it++)) + { + if (!item->fixed && item->fix_fields(thd, it.ref()) || + item->check_cols(1)) + goto err; + } + DBUG_RETURN(FALSE); +err: + DBUG_RETURN(TRUE); +} + + /** Check internal SELECT of the prepared command. @@ -1601,6 +1638,17 @@ static bool mysql_test_create_table(Prepared_statement *stmt) res= select_like_stmt_test(stmt, 0, 0); } + else if (lex->create_info.options & HA_LEX_CREATE_TABLE_LIKE) + { + /* + Check that the source table exist, and also record + its metadata version. Even though not strictly necessary, + we validate metadata of all CREATE TABLE statements, + which keeps metadata validation code simple. + */ + if (open_normal_and_derived_tables(stmt->thd, lex->query_tables, 0)) + DBUG_RETURN(TRUE); + } /* put tables back for PS rexecuting */ lex->link_first_table_back(create_table, link_to_local); @@ -1838,7 +1886,21 @@ static bool check_prepared_statement(Prepared_statement *stmt) case SQLCOM_DELETE: res= mysql_test_delete(stmt, tables); break; - + /* The following allow WHERE clause, so they must be tested like SELECT */ + case SQLCOM_SHOW_DATABASES: + case SQLCOM_SHOW_TABLES: + case SQLCOM_SHOW_TRIGGERS: + case SQLCOM_SHOW_EVENTS: + case SQLCOM_SHOW_OPEN_TABLES: + case SQLCOM_SHOW_FIELDS: + case SQLCOM_SHOW_KEYS: + case SQLCOM_SHOW_COLLATIONS: + case SQLCOM_SHOW_CHARSETS: + case SQLCOM_SHOW_VARIABLES: + case SQLCOM_SHOW_STATUS: + case SQLCOM_SHOW_TABLE_STATUS: + case SQLCOM_SHOW_STATUS_PROC: + case SQLCOM_SHOW_STATUS_FUNC: case SQLCOM_SELECT: res= mysql_test_select(stmt, tables); if (res == 2) @@ -1863,6 +1925,9 @@ static bool check_prepared_statement(Prepared_statement *stmt) res= mysql_test_do_fields(stmt, tables, lex->insert_list); break; + case SQLCOM_CALL: + res= mysql_test_call_fields(stmt, tables, &lex->value_list); + break; case SQLCOM_SET_OPTION: res= mysql_test_set_fields(stmt, tables, &lex->var_list); break; @@ -1912,7 +1977,6 @@ static bool check_prepared_statement(Prepared_statement *stmt) case SQLCOM_DROP_INDEX: case SQLCOM_ROLLBACK: case SQLCOM_TRUNCATE: - case SQLCOM_CALL: case SQLCOM_DROP_VIEW: case SQLCOM_REPAIR: case SQLCOM_ANALYZE: @@ -3064,6 +3128,26 @@ bool Prepared_statement::prepare(const char *packet, uint packet_len) } +/** + Assign parameter values either from variables, in case of SQL PS + or from the execute packet. + + @param expanded_query a container with the original SQL statement. + '?' placeholders will be replaced with + their values in case of success. + The result is used for logging and replication + @param packet pointer to execute packet. + NULL in case of SQL PS + @param packet_end end of the packet. NULL in case of SQL PS + + @todo Use a paremeter source class family instead of 'if's, and + support stored procedure variables. + + @retval TRUE an error occurred when assigning a parameter (likely + a conversion error or out of memory, or malformed packet) + @retval FALSE success +*/ + bool Prepared_statement::set_parameters(String *expanded_query, uchar *packet, uchar *packet_end) diff --git a/sql/table.h b/sql/table.h index 2b3c9b8d5b1..603557fee78 100644 --- a/sql/table.h +++ b/sql/table.h @@ -1336,7 +1336,7 @@ struct TABLE_LIST (if any) with values obtained from the current table definition cache element. - @sa check_and_update_metadata_version() + @sa check_and_update_table_version() */ inline bool is_metadata_version_equal(TABLE_SHARE *s) const @@ -1349,7 +1349,7 @@ struct TABLE_LIST Record the value of metadata version of the corresponding table definition cache element in this parse tree node. - @sa check_and_update_metadata_version() + @sa check_and_update_table_version() */ inline void set_metadata_version(TABLE_SHARE *s) From 9590918851d39f323e66514638226993fc034abd Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Apr 2008 03:27:14 +0400 Subject: [PATCH 059/435] Fix create.test in --ps-protocol broken by the previous push. sql/sql_table.cc: Fix create.test in --ps-protocol broken by the previous push, that added prepared statement validation of CREATE TABLE LIKE: move assignment of src_table->required_type to the parser. sql/sql_yacc.yy: Fix create.test in --ps-protocol broken by the previous push, that added prepared statement validation of CREATE TABLE LIKE: move assignment of src_table->required_type to the parser. --- sql/sql_table.cc | 3 --- sql/sql_yacc.yy | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/sql/sql_table.cc b/sql/sql_table.cc index f69f5fadff3..4997f99fd3a 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4775,9 +4775,6 @@ bool mysql_create_like_table(THD* thd, TABLE_LIST* table, TABLE_LIST* src_table, DBUG_ENTER("mysql_create_like_table"); - /* CREATE TABLE ... LIKE is not allowed for views. */ - src_table->required_type= FRMTYPE_TABLE; - /* By opening source table we guarantee that it exists and no concurrent DDL operation will mess with it. Later we also take an exclusive diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 5e28bdb45e8..37f29a44644 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -3577,20 +3577,30 @@ create2: | LIKE table_ident { THD *thd= YYTHD; + TABLE_LIST *src_table; LEX *lex= thd->lex; lex->create_info.options|= HA_LEX_CREATE_TABLE_LIKE; - if (!lex->select_lex.add_table_to_list(thd, $2, NULL, 0, TL_READ)) + src_table= lex->select_lex.add_table_to_list(thd, $2, NULL, 0, + TL_READ); + if (! src_table) MYSQL_YYABORT; + /* CREATE TABLE ... LIKE is not allowed for views. */ + src_table->required_type= FRMTYPE_TABLE; } | '(' LIKE table_ident ')' { THD *thd= YYTHD; + TABLE_LIST *src_table; LEX *lex= thd->lex; lex->create_info.options|= HA_LEX_CREATE_TABLE_LIKE; - if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0, TL_READ)) + src_table= lex->select_lex.add_table_to_list(thd, $3, NULL, 0, + TL_READ); + if (! src_table) MYSQL_YYABORT; + /* CREATE TABLE ... LIKE is not allowed for views. */ + src_table->required_type= FRMTYPE_TABLE; } ; From e119174cfe8c9835214d3f34a616ded43f453db3 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Apr 2008 14:31:43 +0200 Subject: [PATCH 060/435] Minor corrections within the script mysql-test/r/ps_ddl.result: Updated results mysql-test/t/ps_ddl.test: - remove trailing spaces - correct wrong written word "echo" --- mysql-test/r/ps_ddl.result | 26 +++++++++++----------- mysql-test/t/ps_ddl.test | 44 +++++++++++++++++++------------------- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/mysql-test/r/ps_ddl.result b/mysql-test/r/ps_ddl.result index 3121650508d..cca00dd4781 100644 --- a/mysql-test/r/ps_ddl.result +++ b/mysql-test/r/ps_ddl.result @@ -192,6 +192,7 @@ SUCCESS select @message; @message new trigger: 11 +Test 6-e: removing a relevant trigger drop trigger t1_bi; set @val=12; execute stmt using @val; @@ -338,7 +339,7 @@ SUCCESS # # Sic: the insert went into t3, even though the view now # points at t2. This is because neither the merged view -# nor its prelocking list are affected by view DDL +# nor its prelocking list are affected by view DDL # The binary log is of course wrong, since it is not # using prepared statements # @@ -380,7 +381,7 @@ set @var=2; # Since the dependent table is tracked in the prelocked # list of the prepared statement, invalidation happens # and the statement is re-prepared. This is an unnecessary -# side effect, since the statement that *is* dependent +# side effect, since the statement that *is* dependent # on t2 definition is inside the trigger, and it is currently # not reprepared (see the previous test case). execute stmt using @var; @@ -398,7 +399,7 @@ a comment drop table t1,t2; # Test 7-e: dependent TABLE TRIGGER has changed create table t1 (a int); -create trigger t1_ai after insert on t1 for each row +create trigger t1_ai after insert on t1 for each row insert into t2 (a) values (new.a); create table t2 (a int unique); create trigger t2_ai after insert on t2 for each row @@ -740,6 +741,7 @@ drop procedure p1; create procedure p1(out x int) select max(a) from t2 into x; # XXX: bug. The prelocked list is not invalidated # and we keep opening table t1, whereas the procedure +# is now referring to table t2 execute stmt; ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them call p_verify_reprepare_count(0); @@ -1007,7 +1009,7 @@ prepare stmt from "alter table t1 add column b int"; execute stmt; drop table t1; create table t1 (a1 int, a2 int); -# t1 has changed, and it's does not lead to reprepare +# t1 has changed, and it's does not lead to reprepare execute stmt; alter table t1 drop column b; execute stmt; @@ -1030,7 +1032,7 @@ test.t1 repair status OK drop table t1; create table t1 (a1 int, a2 int); insert into t1 values (1, 10), (2, 20), (3, 30); -# t1 has changed, and it's does not lead to reprepare +# t1 has changed, and it's does not lead to reprepare execute stmt; Table Op Msg_type Msg_text test.t1 repair status OK @@ -1333,7 +1335,7 @@ insert into t_27430_2 values (2, 2), (1234, 3), (1234, 4); -prepare stmt from +prepare stmt from "select oref, a, a in (select a from t_27430_1 where oref=t_27430_2.oref) Z from t_27430_2"; execute stmt; oref a Z @@ -1346,7 +1348,7 @@ SUCCESS drop table t_27430_1, t_27430_2; create table t_27430_1 (a int, oref int, key(a)); -insert into t_27430_1 values +insert into t_27430_1 values (1, 1), (1, NULL), (2, 3), @@ -1500,7 +1502,7 @@ drop procedure p_12093; deallocate prepare stmt_sf; deallocate prepare stmt_sp; ===================================================================== -Ensure that metadata validation is performed for every type of +Ensure that metadata validation is performed for every type of SQL statement where it is needed. ===================================================================== drop table if exists t1; @@ -1586,7 +1588,7 @@ deallocate prepare stmt; # CREATE TEMPORARY TABLE. This is a shortcoming of the current code, # but since validation is not strictly necessary, nothing is done # about it. -# Will be fixed as part of work on Bug#21431 "Incomplete support of +# Will be fixed as part of work on Bug#21431 "Incomplete support of # temporary tables" create table t1 (a int); insert into t1 (a) values (1); @@ -1839,11 +1841,11 @@ Variable_name Value drop table t1; deallocate prepare stmt; # -# SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_LOGS, +# SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_LOGS, # SQLCOM_SHOW_ENGINE_MUTEX, SQLCOM_SHOW_PROCESSLIST # # Currently can not have a where clause, need to be covered -# with tests +# with tests drop table if exists t1; create table t1 (a int); prepare stmt from "show engine all status where (1) in (select * from t1)"; @@ -2035,7 +2037,7 @@ prepare stmt from "alter view v1 as select 2"; ERROR HY000: This command is not supported in the prepared statement protocol yet drop view v1; # Cleanup -# +# drop temporary table if exists t1, t2, t3; drop table if exists t1, t2, t3, v1, v2; drop procedure if exists p_verify_reprepare_count; diff --git a/mysql-test/t/ps_ddl.test b/mysql-test/t/ps_ddl.test index 94791cd81f8..810dc568eee 100644 --- a/mysql-test/t/ps_ddl.test +++ b/mysql-test/t/ps_ddl.test @@ -181,7 +181,7 @@ select @message; # Unrelated trigger: reprepare may or may not happen, implementation dependent create trigger t1_bd before delete on t1 for each row set @message= old.a; - + set @val=5; execute stmt using @val; call p_verify_reprepare_count(1); @@ -229,7 +229,7 @@ execute stmt using @val; call p_verify_reprepare_count(1); select @message; ---ehco Test 6-e: removing a relevant trigger +--echo Test 6-e: removing a relevant trigger drop trigger t1_bi; @@ -338,7 +338,7 @@ call p_verify_reprepare_count(0); --echo # --echo # Sic: the insert went into t3, even though the view now --echo # points at t2. This is because neither the merged view ---echo # nor its prelocking list are affected by view DDL +--echo # nor its prelocking list are affected by view DDL --echo # The binary log is of course wrong, since it is not --echo # using prepared statements --echo # @@ -367,7 +367,7 @@ set @var=2; --echo # Since the dependent table is tracked in the prelocked --echo # list of the prepared statement, invalidation happens --echo # and the statement is re-prepared. This is an unnecessary ---echo # side effect, since the statement that *is* dependent +--echo # side effect, since the statement that *is* dependent --echo # on t2 definition is inside the trigger, and it is currently --echo # not reprepared (see the previous test case). execute stmt using @var; @@ -378,7 +378,7 @@ drop table t1,t2; --echo # Test 7-e: dependent TABLE TRIGGER has changed create table t1 (a int); -create trigger t1_ai after insert on t1 for each row +create trigger t1_ai after insert on t1 for each row insert into t2 (a) values (new.a); create table t2 (a int unique); create trigger t2_ai after insert on t2 for each row @@ -674,7 +674,7 @@ drop procedure p1; create procedure p1(out x int) select max(a) from t2 into x; --echo # XXX: bug. The prelocked list is not invalidated --echo # and we keep opening table t1, whereas the procedure ---ehco # is now referring to table t2 +--echo # is now referring to table t2 --error ER_VIEW_INVALID execute stmt; call p_verify_reprepare_count(0); @@ -702,7 +702,7 @@ execute stmt; call p_verify_reprepare_count(1); execute stmt; --echo # Test 18-d: dependent TABLE has changed -drop view v2; +drop view v2; create table v2 as select * from t1; execute stmt; call p_verify_reprepare_count(1); @@ -854,7 +854,7 @@ execute stmt; drop table t1; create table t1 (a1 int, a2 int); ---echo # t1 has changed, and it's does not lead to reprepare +--echo # t1 has changed, and it's does not lead to reprepare execute stmt; alter table t1 drop column b; @@ -881,7 +881,7 @@ drop table t1; create table t1 (a1 int, a2 int); insert into t1 values (1, 10), (2, 20), (3, 30); ---echo # t1 has changed, and it's does not lead to reprepare +--echo # t1 has changed, and it's does not lead to reprepare execute stmt; alter table t1 add column b varchar(50) default NULL; @@ -1190,16 +1190,16 @@ insert into t_27430_2 values (1234, 3), (1234, 4); -prepare stmt from +prepare stmt from "select oref, a, a in (select a from t_27430_1 where oref=t_27430_2.oref) Z from t_27430_2"; -execute stmt; +execute stmt; call p_verify_reprepare_count(0); drop table t_27430_1, t_27430_2; create table t_27430_1 (a int, oref int, key(a)); -insert into t_27430_1 values +insert into t_27430_1 values (1, 1), (1, NULL), (2, 3), @@ -1237,7 +1237,7 @@ insert into t_27690_1 values (1,1),(2,2); create table v_27690_1 as select * from t_27690_1; create table v_27690_2 as select * from t_27690_1; -prepare stmt from "select * from v_27690_1, v_27690_2"; +prepare stmt from "select * from v_27690_1, v_27690_2"; execute stmt; execute stmt; @@ -1327,17 +1327,17 @@ drop procedure p_12093_unrelated; connection default; --echo # XXX: bug ---error ER_SP_DOES_NOT_EXIST +--error ER_SP_DOES_NOT_EXIST execute stmt_sf; --echo # XXX: bug ---error ER_SP_DOES_NOT_EXIST +--error ER_SP_DOES_NOT_EXIST execute stmt_sp; --echo # XXX: bug ---error ER_SP_DOES_NOT_EXIST +--error ER_SP_DOES_NOT_EXIST execute stmt_sf; --echo # XXX: bug ---error ER_SP_DOES_NOT_EXIST +--error ER_SP_DOES_NOT_EXIST execute stmt_sp; call p_verify_reprepare_count(0); @@ -1351,7 +1351,7 @@ deallocate prepare stmt_sp; --echo ===================================================================== ---echo Ensure that metadata validation is performed for every type of +--echo Ensure that metadata validation is performed for every type of --echo SQL statement where it is needed. --echo ===================================================================== --disable_warnings @@ -1421,7 +1421,7 @@ deallocate prepare stmt; --echo # CREATE TEMPORARY TABLE. This is a shortcoming of the current code, --echo # but since validation is not strictly necessary, nothing is done --echo # about it. ---echo # Will be fixed as part of work on Bug#21431 "Incomplete support of +--echo # Will be fixed as part of work on Bug#21431 "Incomplete support of --echo # temporary tables" create table t1 (a int); insert into t1 (a) values (1); @@ -1697,12 +1697,12 @@ drop table t1; deallocate prepare stmt; --echo # ---echo # SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_LOGS, +--echo # SQLCOM_SHOW_ENGINE_STATUS, SQLCOM_SHOW_ENGINE_LOGS, --echo # SQLCOM_SHOW_ENGINE_MUTEX, SQLCOM_SHOW_PROCESSLIST --echo # --echo # Currently can not have a where clause, need to be covered ---echo # with tests +--echo # with tests --disable_warnings drop table if exists t1; @@ -1932,7 +1932,7 @@ prepare stmt from "alter view v1 as select 2"; drop view v1; --echo # Cleanup ---echo # +--echo # --disable_warnings drop temporary table if exists t1, t2, t3; drop table if exists t1, t2, t3, v1, v2; From 1ca18a8a458eeb7f9882a03cf46170bdb6089e6e Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Apr 2008 15:51:17 +0200 Subject: [PATCH 061/435] fix of typo for bug#35988. --- mysql-test/r/div_precision_increment_func.result | 1 + mysql-test/t/div_precision_increment_func.test | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/div_precision_increment_func.result b/mysql-test/r/div_precision_increment_func.result index aaabcf901d8..eb1fc7ae3a7 100644 --- a/mysql-test/r/div_precision_increment_func.result +++ b/mysql-test/r/div_precision_increment_func.result @@ -77,3 +77,4 @@ id name salary income_tax ## Dropping table t1 ## drop table t1; ## Disconnection both the connections ## +SET @@global.div_precision_increment = 4; diff --git a/mysql-test/t/div_precision_increment_func.test b/mysql-test/t/div_precision_increment_func.test index ae2862df2cf..aebca88abf9 100644 --- a/mysql-test/t/div_precision_increment_func.test +++ b/mysql-test/t/div_precision_increment_func.test @@ -19,7 +19,9 @@ # # ################################################################################ -SET @save_div_precision_increment = @@global.div_presision_increment; +let $save_div_precision_increment = `SELECT @@global.div_precision_increment` + +#SET @save_div_precision_increment = @@global.div_precision_increment; --disable_warnings drop table if exists t1; @@ -119,7 +121,8 @@ drop table t1; disconnect test_con1; disconnect test_con2; -SET @@global.div_prescision_increment = @save_div_precision_increment; +connection default; +eval SET @@global.div_precision_increment = $save_div_precision_increment; From d4e5ae56ae313d70fc2f0bd113e06b1f498f1545 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Apr 2008 18:41:23 +0200 Subject: [PATCH 062/435] Fix for Bug #34291 compile-amd64-debug-max-no-ndb missing Include several "BUILD/compile-*" files in a source tarball ("make dist" target) which might be useful to community users who want to build from source. When merging this up, the "BUILD/compile-*" file list needs to be checked. BUILD/Makefile.am: Fix for Bug #34291 compile-amd64-debug-max-no-ndb missing Include several "BUILD/compile-*" files in a source tarball ("make dist" target) which might be useful to community users who want to build from source. --- BUILD/Makefile.am | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/BUILD/Makefile.am b/BUILD/Makefile.am index d06106d4431..ee0f07864e8 100644 --- a/BUILD/Makefile.am +++ b/BUILD/Makefile.am @@ -27,6 +27,8 @@ EXTRA_DIST = FINISH.sh \ compile-alpha-cxx \ compile-alpha-debug \ compile-amd64-debug-max \ + compile-amd64-gcov \ + compile-amd64-gprof \ compile-amd64-max \ compile-amd64-max-sci \ compile-darwin-mwcc \ @@ -54,6 +56,8 @@ EXTRA_DIST = FINISH.sh \ compile-pentium-valgrind-max \ compile-pentium64-debug \ compile-pentium64-debug-max \ + compile-pentium64-gcov \ + compile-pentium64-gprof \ compile-pentium64-max-sci \ compile-pentium64-valgrind-max \ compile-ppc \ @@ -61,6 +65,10 @@ EXTRA_DIST = FINISH.sh \ compile-ppc-debug-max \ compile-ppc-debug-max-no-ndb \ compile-ppc-max \ + compile-solaris-amd64 \ + compile-solaris-amd64-debug \ + compile-solaris-amd64-forte \ + compile-solaris-amd64-forte-debug \ compile-solaris-sparc \ compile-solaris-sparc-debug \ compile-solaris-sparc-forte \ From c1444fce1b42beac74380cad263cbb5ca7df82c7 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Apr 2008 23:02:01 +0400 Subject: [PATCH 063/435] Fix broken --cursor-protocol (all tests). sql/sql_cursor.cc: Fix broken --cursor-protocol (all tests). Initialize a variable that was for some reason not initialized. --- sql/sql_cursor.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc index 5c4e93d4c74..d33680e1e0b 100644 --- a/sql/sql_cursor.cc +++ b/sql/sql_cursor.cc @@ -111,7 +111,8 @@ class Select_materialize: public select_union select_result *result; /**< the result object of the caller (PS or SP) */ public: Materialized_cursor *materialized_cursor; - Select_materialize(select_result *result_arg) :result(result_arg) {} + Select_materialize(select_result *result_arg) + :result(result_arg), materialized_cursor(0) {} virtual bool send_fields(List &list, uint flags); }; From 97c25b23a325d43f493cccb2482eea7a22d0678d Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 18 Apr 2008 11:38:41 +0200 Subject: [PATCH 064/435] Fix for win platforms (bug#35988). mysql-test/Makefile.am: Fix for missing data files (bug#35988). --- mysql-test/Makefile.am | 2 ++ mysql-test/r/max_allowed_packet_func.result | 1 + mysql-test/t/max_allowed_packet_func.test | 3 +++ 3 files changed, 6 insertions(+) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 339c7574895..bbd0cb436a6 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -71,6 +71,7 @@ dist-hook: $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.txt $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(distdir)/std_data/ndb_backup50 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(distdir)/std_data/ndb_backup51 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(distdir)/std_data/ndb_backup51_data_be @@ -125,6 +126,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.txt $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_be diff --git a/mysql-test/r/max_allowed_packet_func.result b/mysql-test/r/max_allowed_packet_func.result index f37705e41b4..9e44bcfb7b1 100644 --- a/mysql-test/r/max_allowed_packet_func.result +++ b/mysql-test/r/max_allowed_packet_func.result @@ -41,6 +41,7 @@ SELECT @@global.net_buffer_length; ## Creating new connection test_con1 ## ## Inserting and fetching data of length greater than 1024 ## INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +drop table t1; SET @@global.max_allowed_packet = 1048576; ## Server disconnects after this case and error occurs that Server ## ## has gone away ## diff --git a/mysql-test/t/max_allowed_packet_func.test b/mysql-test/t/max_allowed_packet_func.test index 4474786d898..cbedc10c808 100644 --- a/mysql-test/t/max_allowed_packet_func.test +++ b/mysql-test/t/max_allowed_packet_func.test @@ -82,6 +82,9 @@ connection test_con1; --Error 0,ER_NET_PACKET_TOO_LARGE INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); +disconnect test_con1; +connection default; +drop table t1; eval SET @@global.max_allowed_packet = $start_global_value; --echo ## Server disconnects after this case and error occurs that Server ## From 476a5c134a20b57a94f2ffe17f58b79adccd2e87 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 18 Apr 2008 16:58:47 +0200 Subject: [PATCH 065/435] BUILD/Makefile.am Post-merge fix: Add those files which are new in version 5.1 This is the 5.1 version of the fix for Bug #34291 compile-amd64-debug-max-no-ndb missing BUILD/Makefile.am: Post-merge fix: Add those files which are new in version 5.1 --- BUILD/Makefile.am | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/BUILD/Makefile.am b/BUILD/Makefile.am index a6298da1e08..cd4b00ea731 100644 --- a/BUILD/Makefile.am +++ b/BUILD/Makefile.am @@ -20,6 +20,7 @@ EXTRA_DIST = FINISH.sh \ SETUP.sh \ autorun.sh \ + build_mccge.sh \ check-cpu \ cleanup \ compile-alpha \ @@ -27,10 +28,12 @@ EXTRA_DIST = FINISH.sh \ compile-alpha-cxx \ compile-alpha-debug \ compile-amd64-debug-max \ + compile-amd64-debug-max-no-ndb \ compile-amd64-gcov \ compile-amd64-gprof \ compile-amd64-max \ compile-amd64-max-sci \ + compile-amd64-valgrind-max \ compile-darwin-mwcc \ compile-dist \ compile-hpux11-parisc2-aCC \ @@ -53,10 +56,12 @@ EXTRA_DIST = FINISH.sh \ compile-pentium-mysqlfs-debug \ compile-pentium-pgcc \ compile-pentium-valgrind-max \ + compile-pentium64 \ compile-pentium64-debug \ compile-pentium64-debug-max \ compile-pentium64-gcov \ compile-pentium64-gprof \ + compile-pentium64-max \ compile-pentium64-max-sci \ compile-pentium64-valgrind-max \ compile-ppc \ From e82865b54da530e99795362487d02c434b062d49 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 18 Apr 2008 19:22:35 +0200 Subject: [PATCH 066/435] Fix of makefile. --- mysql-test/Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 587b1ee416a..e7cdf2c3469 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -71,7 +71,7 @@ dist-hook: $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.txt $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.txt $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(distdir)/std_data/ndb_backup50 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(distdir)/std_data/ndb_backup51 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(distdir)/std_data/ndb_backup51_data_be @@ -126,7 +126,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data - $(INSTALL_DATA) $(srcdir)/std_data/*.txt $(distdir)/std_data + $(INSTALL_DATA) $(srcdir)/std_data/*.txt $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51 $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup51_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup51_data_be From 0a3d14a3950a8f07fecd4184f50ac3a781bc33dd Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 18 Apr 2008 21:18:53 +0200 Subject: [PATCH 067/435] Add tests + modifications according to review mysql-test/r/ps_ddl.result: Updated results mysql-test/t/ps_ddl.test: - add missing subtests - add comments + minor reformatting for better overview on content mysql-test/r/ps_ddl1.result: Expected results mysql-test/t/ps_ddl1.test: Script for tests which do not really fit into ps_ddl --- mysql-test/r/ps_ddl.result | 170 ++++++++++++- mysql-test/r/ps_ddl1.result | 482 ++++++++++++++++++++++++++++++++++++ mysql-test/t/ps_ddl.test | 140 ++++++++++- mysql-test/t/ps_ddl1.test | 398 +++++++++++++++++++++++++++++ 4 files changed, 1182 insertions(+), 8 deletions(-) create mode 100644 mysql-test/r/ps_ddl1.result create mode 100644 mysql-test/t/ps_ddl1.test diff --git a/mysql-test/r/ps_ddl.result b/mysql-test/r/ps_ddl.result index cca00dd4781..9e1db062368 100644 --- a/mysql-test/r/ps_ddl.result +++ b/mysql-test/r/ps_ddl.result @@ -35,6 +35,7 @@ Part 3: NOTHING -> VIEW transitions ===================================================================== Part 4: TABLE -> NOTHING transitions ===================================================================== +# Test 4-a: select ... from create table t1 (a int); prepare stmt from "select * from t1"; execute stmt; @@ -59,6 +60,32 @@ call p_verify_reprepare_count(0); SUCCESS deallocate prepare stmt; +# Test 4-b: TABLE -> NOTHING by renaming the table +create table t1 (a int); +prepare stmt from "select * from t1"; +execute stmt; +a +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +a +call p_verify_reprepare_count(0); +SUCCESS + +rename table t1 to t2; +execute stmt; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; +drop table t2; ===================================================================== Part 5: TABLE -> TABLE (DDL) transitions ===================================================================== @@ -445,6 +472,7 @@ deallocate prepare stmt; ===================================================================== Part 8: TABLE -> TEMPORARY TABLE transitions ===================================================================== +# Test 8-a: base table used recreated as temporary table create table t1 (a int); prepare stmt from "select * from t1"; execute stmt; @@ -463,6 +491,37 @@ SUCCESS drop table t1; deallocate prepare stmt; +# Test 8-b: temporary table has precedence over base table with same name +create table t1 (a int); +prepare stmt from 'select count(*) from t1'; +execute stmt; +count(*) +0 +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +count(*) +0 +call p_verify_reprepare_count(0); +SUCCESS + +create temporary table t1 AS SELECT 1; +execute stmt; +count(*) +1 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +count(*) +1 +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; +drop temporary table t1; +drop table t1; ===================================================================== Part 9: TABLE -> VIEW transitions ===================================================================== @@ -504,6 +563,7 @@ deallocate prepare stmt; ===================================================================== Part 11: TEMPORARY TABLE -> TABLE transitions ===================================================================== +# Test 11-a: temporary table replaced by base table create table t1 (a int); insert into t1 (a) value (1); create temporary table t1 (a int); @@ -525,6 +585,38 @@ a 1 drop table t1; deallocate prepare stmt; +# Test 11-b: temporary table has precedence over base table with same name +# temporary table disappears +create table t1 (a int); +create temporary table t1 as select 1 as a; +prepare stmt from "select count(*) from t1"; +execute stmt; +count(*) +1 +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +count(*) +1 +call p_verify_reprepare_count(0); +SUCCESS + +drop temporary table t1; +execute stmt; +count(*) +0 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +count(*) +0 +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; +drop table t1; ===================================================================== Part 12: TEMPORARY TABLE -> TEMPORARY TABLE (DDL) transitions ===================================================================== @@ -1505,11 +1597,11 @@ deallocate prepare stmt_sp; Ensure that metadata validation is performed for every type of SQL statement where it is needed. ===================================================================== -drop table if exists t1; -create table t1 (a int); # # SQLCOM_SELECT # +drop table if exists t1; +create table t1 (a int); prepare stmt from "select 1 as res from dual where (1) in (select * from t1)"; drop table t1; create table t1 (x int); @@ -1568,6 +1660,18 @@ call p_verify_reprepare_count(0); SUCCESS drop table t2; +create view t2 as select 1; +execute stmt; +Got one of the listed errors +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +Got one of the listed errors +call p_verify_reprepare_count(0); +SUCCESS + +drop view t2; drop table t1; create table t1 (x varchar(20)); execute stmt; @@ -1582,6 +1686,18 @@ call p_verify_reprepare_count(0); SUCCESS drop table t2; +alter table t1 add column y decimal(10,3); +execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t2; +x y +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + drop table t1; deallocate prepare stmt; # XXX: no validation of the first table in case of @@ -1636,6 +1752,56 @@ Note 1050 Table 't2' already exists call p_verify_reprepare_count(0); SUCCESS +drop table t1; +drop temporary table t2; +drop table t2; +deallocate prepare stmt; +create table t1 (a int); +prepare stmt from "create table t2 like t1"; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +drop table t1; +execute stmt; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +create table t1 (x char(17)); +execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t2; +alter table t1 add column y time; +execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +select * from t2; +x y +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + drop table t1; drop table t2; deallocate prepare stmt; diff --git a/mysql-test/r/ps_ddl1.result b/mysql-test/r/ps_ddl1.result new file mode 100644 index 00000000000..87abcd90590 --- /dev/null +++ b/mysql-test/r/ps_ddl1.result @@ -0,0 +1,482 @@ +drop temporary table if exists t1; +drop table if exists t1, t2; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists t1; +drop schema if exists mysqltest; +create procedure p_verify_reprepare_count(expected int) +begin +declare old_reprepare_count int default @reprepare_count; +select variable_value from +information_schema.session_status where +variable_name='com_stmt_reprepare' + into @reprepare_count; +if old_reprepare_count + expected <> @reprepare_count then +select concat("Expected: ", expected, +", actual: ", @reprepare_count - old_reprepare_count) +as "ERROR"; +else +select '' as "SUCCESS"; +end if; +end| +set @reprepare_count= 0; +flush status; +drop table if exists t1; +# Column added or dropped is not within the list of selected columns +# or table comment has changed. +# A reprepare is probably not needed. +create table t1 (a int, b int); +prepare stmt from "select a from t1"; +execute stmt; +a +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 add column c int; +execute stmt; +a +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +a +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 drop column b; +execute stmt; +a +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +a +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 comment "My best table"; +execute stmt; +a +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +a +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +deallocate prepare stmt; +# Selects using the table at various positions, inser,update ... +# + the table disappears +create table t1 (a int); +prepare stmt1 from "truncate t1"; +prepare stmt2 from "select 1 as my_column from t1"; +prepare stmt3 from "select 1 as my_column from (select * from t1) as t2"; +prepare stmt4 from +"select 1 as my_column from (select 1) as t2 where exists (select 1 from t1)"; +prepare stmt5 from "select * from (select 1 as b) as t2, t1"; +prepare stmt6 from "select * from t1 union all select 1.5"; +prepare stmt7 from "select 1 as my_column union all select 1 from t1"; +prepare stmt8 from "insert into t1 values(1),(2)"; +prepare stmt9 from "update t1 set a = 3 where a = 2"; +prepare stmt10 from "delete from t1 where a = 1"; +# Attention: Result logging is disabled. +execute stmt10; +execute stmt9; +execute stmt8; +execute stmt7; +execute stmt6; +execute stmt5; +execute stmt4; +execute stmt3; +execute stmt2; +execute stmt1; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +execute stmt10; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt9; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt8; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt7; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt6; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt5; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt4; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt3; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt2; +ERROR 42S02: Table 'test.t1' doesn't exist +execute stmt1; +ERROR 42S02: Table 'test.t1' doesn't exist +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt10; +deallocate prepare stmt9; +deallocate prepare stmt8; +deallocate prepare stmt7; +deallocate prepare stmt6; +deallocate prepare stmt5; +deallocate prepare stmt4; +deallocate prepare stmt3; +deallocate prepare stmt2; +deallocate prepare stmt1; +# Selects using the table at various positions, inser,update ... +# + layout change (drop column) which must cause a reprepare +create table t1 (a int, b int); +insert into t1 values(1,1),(2,2),(3,3); +create table t2 like t1; +insert into t1 values(2,2); +prepare stmt1 from "select a,b from t1"; +prepare stmt2 from "select a,b from (select * from t1) as t1"; +prepare stmt3 from "select * from t1 where a = 2 and b = 2"; +prepare stmt4 from "select * from t2 where (a,b) in (select * from t1)"; +prepare stmt5 from "select * from t1 union select * from t2"; +prepare stmt6 from "select * from t1 union all select * from t2"; +prepare stmt7 from "insert into t1 set a = 4, b = 4"; +prepare stmt8 from "insert into t1 select * from t2"; +# Attention: Result logging is disabled. +execute stmt8; +execute stmt7; +execute stmt6; +execute stmt5; +execute stmt4; +execute stmt3; +execute stmt2; +execute stmt1; +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 drop column b; +execute stmt8; +ERROR 21S01: Column count doesn't match value count at row 1 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt7; +ERROR 42S22: Unknown column 'b' in 'field list' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt6; +ERROR 21000: The used SELECT statements have a different number of columns +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt5; +ERROR 21000: The used SELECT statements have a different number of columns +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt4; +ERROR 21000: Operand should contain 2 column(s) +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt3; +ERROR 42S22: Unknown column 'b' in 'where clause' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt2; +ERROR 42S22: Unknown column 'b' in 'field list' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt1; +ERROR 42S22: Unknown column 'b' in 'field list' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt8; +ERROR 21S01: Column count doesn't match value count at row 1 +call p_verify_reprepare_count(1); +ERROR +Expected: 1, actual: 0 +execute stmt7; +ERROR 42S22: Unknown column 'b' in 'field list' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt6; +ERROR 21000: The used SELECT statements have a different number of columns +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt5; +ERROR 21000: The used SELECT statements have a different number of columns +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt4; +ERROR 21000: Operand should contain 2 column(s) +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt3; +ERROR 42S22: Unknown column 'b' in 'where clause' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt2; +ERROR 42S22: Unknown column 'b' in 'field list' +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt1; +ERROR 42S22: Unknown column 'b' in 'field list' +call p_verify_reprepare_count(1); +SUCCESS + +# Why does the INSERT ... SELECT does not get a reprepare or is +# only the counter not incremented? +execute stmt8; +ERROR 21S01: Column count doesn't match value count at row 1 +call p_verify_reprepare_count(1); +ERROR +Expected: 1, actual: 0 +alter table t2 add column c int; +execute stmt8; +ERROR 21S01: Column count doesn't match value count at row 1 +call p_verify_reprepare_count(1); +SUCCESS + +deallocate prepare stmt8; +deallocate prepare stmt7; +deallocate prepare stmt6; +deallocate prepare stmt5; +deallocate prepare stmt4; +deallocate prepare stmt3; +deallocate prepare stmt2; +deallocate prepare stmt1; +drop table t1; +drop table t2; +# select AVG() + optimizer uses index meets loss of the index +create table t1 (a int, b int, primary key(b),unique index t1_unq_idx(a)); +insert into t1 set a = 0, b = 0; +insert into t1 select a + 1, b + 1 from t1; +insert into t1 select a + 2, b + 2 from t1; +insert into t1 select a + 4, b + 4 from t1; +insert into t1 select a + 8, b + 8 from t1; +# Optimizer strategy: Possible keys = NULL , Extra = Using index +prepare stmt from "select avg(a) from t1"; +execute stmt; +avg(a) +7.5000 +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +avg(a) +7.5000 +call p_verify_reprepare_count(0); +SUCCESS + +alter table t1 drop index t1_unq_idx; +# Optimizer strategy: Possible keys = NULL , Extra = +execute stmt; +avg(a) +7.5000 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +avg(a) +7.5000 +call p_verify_reprepare_count(0); +SUCCESS + +# select AVG() + optimizer uses table scan meets a new index +alter table t1 add unique index t1_unq_idx(a); +# Optimizer strategy: Possible keys = NULL , Extra = Using index +execute stmt; +avg(a) +7.5000 +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +avg(a) +7.5000 +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; +drop table t1; +# table replaced by not updatable view - Insert +create table t1 (a int); +prepare stmt from "insert into t1 values(1)"; +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +drop table t1; +create view t1 as select 1; +execute stmt; +ERROR HY000: The target table t1 of the INSERT is not insertable-into +call p_verify_reprepare_count(1); +SUCCESS + +drop view t1; +create table t2 (a int); +create view t1 as select * from t2 with check option; +execute stmt; +call p_verify_reprepare_count(1); +SUCCESS + +execute stmt; +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +1 +deallocate prepare stmt; +drop view t1; +drop table t2; +===================================================================== +Some freestyle tests +===================================================================== +create temporary table t1 as select 1 as a; +create procedure p1() +begin +drop temporary table t1; +end| +create function f1() returns int +begin +call p1(); +return 1; +end| +prepare stmt from "select f1() as my_column, a from t1"; +execute stmt; +ERROR HY000: Can't reopen table: 't1' +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +prepare stmt from "select a, f1() as my_column from t1"; +execute stmt; +ERROR HY000: Can't reopen table: 't1' +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +prepare stmt from "select f1() as my_column, count(*) from t1"; +execute stmt; +ERROR HY000: Can't reopen table: 't1' +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +prepare stmt from "select count(*), f1() as my_column from t1"; +execute stmt; +ERROR HY000: Can't reopen table: 't1' +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +# Execute fails, no drop of temporary table +prepare stmt from "select 1 as my_column from (select 1) as t2 + where exists (select f1() from t1)"; +execute stmt; +my_column +1 +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +my_column +1 +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +# Execute drops temporary table +prepare stmt from "select f1()"; +execute stmt; +f1() +1 +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +ERROR 42S02: Unknown table 't1' +call p_verify_reprepare_count(0); +SUCCESS + +drop function f1; +drop procedure p1; +deallocate prepare stmt; +# Execute fails, temporary table is not replaced by another +create temporary table t1 as select 1 as a; +create procedure p1() +begin +drop temporary table t1; +create temporary table t1 as select 'abc' as a; +end| +create function f1() returns int +begin +call p1(); +return 1; +end| +prepare stmt from "select count(*), f1() as my_column from t1"; +execute stmt; +ERROR HY000: Can't reopen table: 't1' +call p_verify_reprepare_count(0); +SUCCESS + +select * from t1; +a +1 +deallocate prepare stmt; +prepare stmt from "call p1"; +execute stmt; +drop procedure p1; +create schema mysqltest; +create procedure mysqltest.p1() +begin +drop schema mysqltest; +create schema mysqltest; +end| +execute stmt; +ERROR 42000: PROCEDURE test.p1 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +execute stmt; +ERROR 42000: PROCEDURE test.p1 does not exist +call p_verify_reprepare_count(0); +SUCCESS + +deallocate prepare stmt; +drop schema mysqltest; +drop temporary table t1; +# Cleanup +# +drop temporary table if exists t1; +drop table if exists t1, t2; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists t1; +drop schema if exists mysqltest; diff --git a/mysql-test/t/ps_ddl.test b/mysql-test/t/ps_ddl.test index 810dc568eee..e19e73df3ac 100644 --- a/mysql-test/t/ps_ddl.test +++ b/mysql-test/t/ps_ddl.test @@ -104,6 +104,7 @@ prepare stmt from "select * from t1"; --echo Part 4: TABLE -> NOTHING transitions --echo ===================================================================== +--echo # Test 4-a: select ... from
create table t1 (a int); prepare stmt from "select * from t1"; @@ -121,6 +122,25 @@ execute stmt; call p_verify_reprepare_count(0); deallocate prepare stmt; +--echo # Test 4-b: TABLE -> NOTHING by renaming the table +create table t1 (a int); +prepare stmt from "select * from t1"; +execute stmt; +call p_verify_reprepare_count(0); +execute stmt; +call p_verify_reprepare_count(0); + +rename table t1 to t2; +--error ER_NO_SUCH_TABLE +execute stmt; +call p_verify_reprepare_count(0); +--error ER_NO_SUCH_TABLE +execute stmt; +call p_verify_reprepare_count(0); + +deallocate prepare stmt; +drop table t2; + --echo ===================================================================== --echo Part 5: TABLE -> TABLE (DDL) transitions --echo ===================================================================== @@ -143,11 +163,11 @@ call p_verify_reprepare_count(0); drop table t1; deallocate prepare stmt; + --echo ===================================================================== --echo Part 6: TABLE -> TABLE (TRIGGER) transitions --echo ===================================================================== - --echo # Test 6-a: adding a relevant trigger create table t1 (a int); @@ -414,6 +434,7 @@ deallocate prepare stmt; --echo Part 8: TABLE -> TEMPORARY TABLE transitions --echo ===================================================================== +--echo # Test 8-a: base table used recreated as temporary table create table t1 (a int); prepare stmt from "select * from t1"; @@ -430,6 +451,25 @@ call p_verify_reprepare_count(0); drop table t1; deallocate prepare stmt; +--echo # Test 8-b: temporary table has precedence over base table with same name +create table t1 (a int); +prepare stmt from 'select count(*) from t1'; +execute stmt; +call p_verify_reprepare_count(0); +execute stmt; +call p_verify_reprepare_count(0); + +create temporary table t1 AS SELECT 1; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); + +deallocate prepare stmt; +drop temporary table t1; +drop table t1; + + --echo ===================================================================== --echo Part 9: TABLE -> VIEW transitions --echo ===================================================================== @@ -471,6 +511,7 @@ deallocate prepare stmt; --echo Part 11: TEMPORARY TABLE -> TABLE transitions --echo ===================================================================== +--echo # Test 11-a: temporary table replaced by base table create table t1 (a int); insert into t1 (a) value (1); create temporary table t1 (a int); @@ -488,6 +529,27 @@ select * from t1; drop table t1; deallocate prepare stmt; + +--echo # Test 11-b: temporary table has precedence over base table with same name +--echo # temporary table disappears +create table t1 (a int); +create temporary table t1 as select 1 as a; +prepare stmt from "select count(*) from t1"; +execute stmt; +call p_verify_reprepare_count(0); +execute stmt; +call p_verify_reprepare_count(0); + +drop temporary table t1; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); + +deallocate prepare stmt; +drop table t1; + + --echo ===================================================================== --echo Part 12: TEMPORARY TABLE -> TEMPORARY TABLE (DDL) transitions --echo ===================================================================== @@ -1354,13 +1416,15 @@ deallocate prepare stmt_sp; --echo Ensure that metadata validation is performed for every type of --echo SQL statement where it is needed. --echo ===================================================================== + +--echo # +--echo # SQLCOM_SELECT +--echo # + --disable_warnings drop table if exists t1; --enable_warnings create table t1 (a int); ---echo # ---echo # SQLCOM_SELECT ---echo # prepare stmt from "select 1 as res from dual where (1) in (select * from t1)"; drop table t1; create table t1 (x int); @@ -1368,16 +1432,16 @@ execute stmt; drop table t1; deallocate prepare stmt; call p_verify_reprepare_count(1); + --echo # --echo # SQLCOM_CREATE_TABLE --echo # + --disable_warnings drop table if exists t1; drop table if exists t2; --enable_warnings - create table t1 (a int); - prepare stmt from 'create table t2 as select * from t1'; execute stmt; drop table t2; @@ -1385,6 +1449,7 @@ execute stmt; drop table t2; execute stmt; call p_verify_reprepare_count(0); +# Base table with name of table to be created exists --error ER_TABLE_EXISTS_ERROR execute stmt; call p_verify_reprepare_count(1); @@ -1392,6 +1457,7 @@ call p_verify_reprepare_count(1); execute stmt; call p_verify_reprepare_count(0); drop table t2; +# Temporary table with name of table to be created exists create temporary table t2 (a int); --error ER_TABLE_EXISTS_ERROR execute stmt; @@ -1406,7 +1472,23 @@ drop table t2; execute stmt; call p_verify_reprepare_count(0); drop table t2; +# View with name of table to be created exists +# Attention: +# We cannot print the error message because it contains a random filename. +# Example: 1050: Table '/var/tmp/#sql_6979_0' already exists +# Therefore we mangle it via +# "--error ER_TABLE_EXISTS_ERROR,9999" (9999 is currently not used) +# to "Got one of the listed errors". +create view t2 as select 1; +--error ER_TABLE_EXISTS_ERROR,9999 +execute stmt; +call p_verify_reprepare_count(1); +--error ER_TABLE_EXISTS_ERROR,9999 +execute stmt; +call p_verify_reprepare_count(0); +drop view t2; drop table t1; +# Table to be used recreated (drop,create) with different layout create table t1 (x varchar(20)); execute stmt; call p_verify_reprepare_count(1); @@ -1415,6 +1497,14 @@ drop table t2; execute stmt; call p_verify_reprepare_count(0); drop table t2; +# Table to be used has a modified (alter table) layout +alter table t1 add column y decimal(10,3); +execute stmt; +call p_verify_reprepare_count(1); +select * from t2; +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); drop table t1; deallocate prepare stmt; --echo # XXX: no validation of the first table in case of @@ -1445,9 +1535,47 @@ call p_verify_reprepare_count(1); execute stmt; call p_verify_reprepare_count(0); drop table t1; +drop temporary table t2; drop table t2; deallocate prepare stmt; +create table t1 (a int); +prepare stmt from "create table t2 like t1"; +execute stmt; +call p_verify_reprepare_count(0); +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +drop table t2; +# Table to be used does not exist +drop table t1; +--error ER_NO_SUCH_TABLE +execute stmt; +call p_verify_reprepare_count(0); +--error ER_NO_SUCH_TABLE +execute stmt; +call p_verify_reprepare_count(0); +# Table to be used recreated (drop,create) with different layout +create table t1 (x char(17)); +execute stmt; +call p_verify_reprepare_count(1); +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +drop table t2; +# Table to be used has a modified (alter table) layout +alter table t1 add column y time; +execute stmt; +call p_verify_reprepare_count(1); +select * from t2; +drop table t2; +execute stmt; +call p_verify_reprepare_count(0); +drop table t1; +drop table t2; +deallocate prepare stmt; + + --echo # --echo # SQLCOM_UPDATE --echo # diff --git a/mysql-test/t/ps_ddl1.test b/mysql-test/t/ps_ddl1.test new file mode 100644 index 00000000000..0145d445a14 --- /dev/null +++ b/mysql-test/t/ps_ddl1.test @@ -0,0 +1,398 @@ +# +# Testing the behavior of 'PREPARE', 'DDL', 'EXECUTE' scenarios +# +# There are several subtests which are probably "superfluous" because a DDL +# statement before the EXECUTE contained a keyword +# or action (Example: Alter) which causes that all prepared statements using +# the modified object are reprepared before execution. +# Please do not delete these subtests if they disturb. Just disable them by +# if (0) +# { +# +# }. +# There might be future optimisations of the server which decrease the amount +# of unneeded reprepares or skip unneeded prepare steps and than these subtests +# might become valuable. +# Example: +# Every preceding ALTER TABLE seems to cause a reprepare. +# But if the ALTER only changed the table comment ... +# +# Created: 2008-04-18 mleich +# + +--disable_warnings +drop temporary table if exists t1; +drop table if exists t1, t2; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists t1; +drop schema if exists mysqltest; +--enable_warnings + +delimiter |; +create procedure p_verify_reprepare_count(expected int) +begin + declare old_reprepare_count int default @reprepare_count; + + select variable_value from + information_schema.session_status where + variable_name='com_stmt_reprepare' + into @reprepare_count; + + if old_reprepare_count + expected <> @reprepare_count then + select concat("Expected: ", expected, + ", actual: ", @reprepare_count - old_reprepare_count) + as "ERROR"; + else + select '' as "SUCCESS"; + end if; +end| +delimiter ;| +set @reprepare_count= 0; +flush status; + +--disable_warnings +drop table if exists t1; +--disable_warnings + +--echo # Column added or dropped is not within the list of selected columns +--echo # or table comment has changed. +--echo # A reprepare is probably not needed. +create table t1 (a int, b int); +prepare stmt from "select a from t1"; +execute stmt; +call p_verify_reprepare_count(0); +alter table t1 add column c int; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); +alter table t1 drop column b; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); +alter table t1 comment "My best table"; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); +drop table t1; +deallocate prepare stmt; + +--echo # Selects using the table at various positions, inser,update ... +--echo # + the table disappears +create table t1 (a int); +# Attention: +# "truncate" must have the first position (= executed as last prepared +# statement), because it recreates the table which has leads to reprepare +# (is this really needed) of all statements. +prepare stmt1 from "truncate t1"; +prepare stmt2 from "select 1 as my_column from t1"; +prepare stmt3 from "select 1 as my_column from (select * from t1) as t2"; +prepare stmt4 from +"select 1 as my_column from (select 1) as t2 where exists (select 1 from t1)"; +prepare stmt5 from "select * from (select 1 as b) as t2, t1"; +prepare stmt6 from "select * from t1 union all select 1.5"; +prepare stmt7 from "select 1 as my_column union all select 1 from t1"; +prepare stmt8 from "insert into t1 values(1),(2)"; +prepare stmt9 from "update t1 set a = 3 where a = 2"; +prepare stmt10 from "delete from t1 where a = 1"; +let ps_stmt_count= 10; +--echo # Attention: Result logging is disabled. +# Checks of correct results of statements are not the goal of this test. +let $num= $ps_stmt_count; +while ($num) +{ + --disable_result_log + eval execute stmt$num; + --enable_result_log + dec $num; +} +# There was no reprepare needed, because none of the objects has changed. +call p_verify_reprepare_count(0); +drop table t1; +let $num= $ps_stmt_count; +while ($num) +{ + --error ER_NO_SUCH_TABLE + eval execute stmt$num; + dec $num; +} +# There was no reprepare needed, because the statement is no more applicable. +call p_verify_reprepare_count(0); +let $num= $ps_stmt_count; +while ($num) +{ + eval deallocate prepare stmt$num; + dec $num; +} + +--echo # Selects using the table at various positions, inser,update ... +--echo # + layout change (drop column) which must cause a reprepare +create table t1 (a int, b int); +insert into t1 values(1,1),(2,2),(3,3); +create table t2 like t1; +insert into t1 values(2,2); +prepare stmt1 from "select a,b from t1"; +prepare stmt2 from "select a,b from (select * from t1) as t1"; +prepare stmt3 from "select * from t1 where a = 2 and b = 2"; +prepare stmt4 from "select * from t2 where (a,b) in (select * from t1)"; +prepare stmt5 from "select * from t1 union select * from t2"; +prepare stmt6 from "select * from t1 union all select * from t2"; +prepare stmt7 from "insert into t1 set a = 4, b = 4"; +prepare stmt8 from "insert into t1 select * from t2"; +let ps_stmt_count= 8; +--echo # Attention: Result logging is disabled. +# Checks of correct results of statements are not the goal of this test. +let $num= $ps_stmt_count; +while ($num) +{ + --disable_result_log + eval execute stmt$num; + --enable_result_log + dec $num; +} +call p_verify_reprepare_count(0); +alter table t1 drop column b; +--disable_abort_on_error +let $num= $ps_stmt_count; +while ($num) +{ + eval execute stmt$num; + # A reprepare is needed, because layout change of t1 affects statement. + call p_verify_reprepare_count(1); + dec $num; +} +let $num= $ps_stmt_count; +while ($num) +{ + eval execute stmt$num; + call p_verify_reprepare_count(1); + dec $num; +} +--echo # Why does the INSERT ... SELECT does not get a reprepare or is +--echo # only the counter not incremented? +eval execute stmt8; +call p_verify_reprepare_count(1); +--enable_abort_on_error +alter table t2 add column c int; +--error ER_WRONG_VALUE_COUNT_ON_ROW +eval execute stmt8; +call p_verify_reprepare_count(1); +let $num= $ps_stmt_count; +while ($num) +{ + eval deallocate prepare stmt$num; + dec $num; +} +drop table t1; +drop table t2; + + +--echo # select AVG() + optimizer uses index meets loss of the index +create table t1 (a int, b int, primary key(b),unique index t1_unq_idx(a)); +# We need an index which is not converted to PRIMARY KEY (becomes in +# case of InnoDB the key used for table clustering). +insert into t1 set a = 0, b = 0; +insert into t1 select a + 1, b + 1 from t1; +insert into t1 select a + 2, b + 2 from t1; +insert into t1 select a + 4, b + 4 from t1; +insert into t1 select a + 8, b + 8 from t1; +# "using index" optimizer strategy is intended +let $possible_keys= + query_get_value(explain select avg(a) from t1, possible_keys, 1); +let $extra= + query_get_value(explain select avg(a) from t1, Extra, 1); +--echo # Optimizer strategy: Possible keys = $possible_keys , Extra = $extra +prepare stmt from "select avg(a) from t1"; +execute stmt; +call p_verify_reprepare_count(0); +execute stmt; +call p_verify_reprepare_count(0); + +alter table t1 drop index t1_unq_idx; +let $possible_keys= + query_get_value(explain select avg(a) from t1, possible_keys, 1); +let $extra= + query_get_value(explain select avg(a) from t1, Extra, 1); +--echo # Optimizer strategy: Possible keys = $possible_keys , Extra = $extra +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); + + +--echo # select AVG() + optimizer uses table scan meets a new index +alter table t1 add unique index t1_unq_idx(a); +let $possible_keys= + query_get_value(explain select avg(a) from t1, possible_keys, 1); +let $extra= + query_get_value(explain select avg(a) from t1, Extra, 1); +--echo # Optimizer strategy: Possible keys = $possible_keys , Extra = $extra +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); + +deallocate prepare stmt; +drop table t1; + + +--echo # table replaced by not updatable view - Insert +create table t1 (a int); +prepare stmt from "insert into t1 values(1)"; +execute stmt; +call p_verify_reprepare_count(0); + +drop table t1; +create view t1 as select 1; +--error ER_NON_INSERTABLE_TABLE +execute stmt; +call p_verify_reprepare_count(1); + +drop view t1; +create table t2 (a int); +create view t1 as select * from t2 with check option; +execute stmt; +call p_verify_reprepare_count(1); +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; + +deallocate prepare stmt; +drop view t1; +drop table t2; + + +--echo ===================================================================== +--echo Some freestyle tests +--echo ===================================================================== + +create temporary table t1 as select 1 as a; +delimiter |; +create procedure p1() +begin + drop temporary table t1; +end| +create function f1() returns int +begin + call p1(); + return 1; +end| +delimiter ;| + +prepare stmt from "select f1() as my_column, a from t1"; +--error ER_CANT_REOPEN_TABLE +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; + +prepare stmt from "select a, f1() as my_column from t1"; +--error ER_CANT_REOPEN_TABLE +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; + +prepare stmt from "select f1() as my_column, count(*) from t1"; +--error ER_CANT_REOPEN_TABLE +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; + +prepare stmt from "select count(*), f1() as my_column from t1"; +--error ER_CANT_REOPEN_TABLE +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; + + +--echo # Execute fails, no drop of temporary table +prepare stmt from "select 1 as my_column from (select 1) as t2 + where exists (select f1() from t1)"; +execute stmt; +call p_verify_reprepare_count(0); +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; + +--echo # Execute drops temporary table +prepare stmt from "select f1()"; +execute stmt; +call p_verify_reprepare_count(0); +--error ER_BAD_TABLE_ERROR +execute stmt; +call p_verify_reprepare_count(0); + +drop function f1; +drop procedure p1; +deallocate prepare stmt; + +--echo # Execute fails, temporary table is not replaced by another +create temporary table t1 as select 1 as a; +delimiter |; +create procedure p1() +begin + drop temporary table t1; + create temporary table t1 as select 'abc' as a; +end| +create function f1() returns int +begin + call p1(); + return 1; +end| +delimiter ;| +prepare stmt from "select count(*), f1() as my_column from t1"; +--error ER_CANT_REOPEN_TABLE +execute stmt; +call p_verify_reprepare_count(0); +select * from t1; +deallocate prepare stmt; + +prepare stmt from "call p1"; +execute stmt; +drop procedure p1; +create schema mysqltest; +delimiter |; +create procedure mysqltest.p1() +begin + drop schema mysqltest; + create schema mysqltest; +end| +delimiter ;| +--error ER_SP_DOES_NOT_EXIST +execute stmt; +call p_verify_reprepare_count(0); +--error ER_SP_DOES_NOT_EXIST +execute stmt; +call p_verify_reprepare_count(0); +deallocate prepare stmt; +drop schema mysqltest; +drop temporary table t1; + + +# Bug#36089 drop temp table in SP called by function, crash +# Note: A non prepared "select 1 from t1 having count(*) = f1();" is sufficient. +if (0) +{ +create temporary table t1 as select 1 as a; +prepare stmt from "select 1 from t1 having count(*) = f1()"; +execute stmt; +call p_verify_reprepare_count(0); +deallocate prepare stmt; +drop temporary table t1; +} + + +--echo # Cleanup +--echo # +--disable_warnings +drop temporary table if exists t1; +drop table if exists t1, t2; +drop procedure if exists p_verify_reprepare_count; +drop procedure if exists p1; +drop function if exists f1; +drop view if exists t1; +drop schema if exists mysqltest; +--enable_warnings From 642b4c27c5920da3285d2f68fd77090057e84b57 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 Apr 2008 14:27:17 +0400 Subject: [PATCH 068/435] Attempt to fix a sporadic failure of innodb_mysql.test --- mysql-test/include/mix1.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/include/mix1.inc b/mysql-test/include/mix1.inc index a4cd6019be8..fdac8deb87e 100644 --- a/mysql-test/include/mix1.inc +++ b/mysql-test/include/mix1.inc @@ -1309,6 +1309,7 @@ SELECT * FROM t1; --echo # Switch to connection con2 connection con2; +--reap SELECT * FROM t1; --echo # Switch to connection con1 From 2cf97bdbd8ffe3f0e3b045bba60a57fc88c6029a Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 Apr 2008 15:44:08 +0400 Subject: [PATCH 069/435] Fix a Windows + embedded library build --- sql/mysqld.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 8bafb15eeaa..4e9df68c880 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1956,9 +1956,11 @@ static BOOL WINAPI console_event_handler( DWORD type ) between main thread doing initialization and CTRL-C thread doing cleanup, which can result into crash. */ +#ifndef EMBEDDED_LIBRARY if(hEventShutdown) kill_mysql(); else +#endif sql_print_warning("CTRL-C ignored during startup"); DBUG_RETURN(TRUE); } From 87ece3533c2819bb0fbce56b8ad0982124f1a68e Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 Apr 2008 17:48:29 +0400 Subject: [PATCH 070/435] An attempt to fix a link failure on Windows (embedded library). --- libmysqld/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index b1895e98014..fb7b214bf60 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -187,7 +187,7 @@ SET(LIBMYSQLD_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc ../sql/strfunc.cc ../sql/table.cc ../sql/thr_malloc.cc ../sql/time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc ../sql/partition_info.cc ../sql/sql_connect.cc - ../sql/scheduler.cc + ../sql/scheduler.cc ../sql/stacktrace.c ${GEN_SOURCES} ${LIB_SOURCES}) From 4c05e7e347c2eba2837aba867806ff2147818aa9 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 Apr 2008 20:51:23 +0400 Subject: [PATCH 071/435] Fix compilation warnings (embedded library, Windows build) --- libmysqld/lib_sql.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index ec9356ce98d..fde52c8c27e 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -285,7 +285,7 @@ static int emb_stmt_execute(MYSQL_STMT *stmt) my_bool res; int4store(header, stmt->stmt_id); - header[4]= stmt->flags; + header[4]= (uchar) stmt->flags; thd= (THD*)stmt->mysql->thd; thd->client_param_count= stmt->param_count; thd->client_params= stmt->params; @@ -848,7 +848,7 @@ void Protocol_text::remove_last_row() { MYSQL_DATA *data= thd->cur_data; MYSQL_ROWS **last_row_hook= &data->data; - uint count= data->rows; + my_ulonglong count= data->rows; DBUG_ENTER("Protocol_text::remove_last_row"); while (--count) last_row_hook= &(*last_row_hook)->next; From 07a73627da030327c7c836ba47c5f6e633a54299 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 Apr 2008 22:04:16 +0400 Subject: [PATCH 072/435] Fix a race condition in innodb_mysql.test mysql-test/include/mix1.inc: Fix a race condition in the test, causing a sporadic failure. --- mysql-test/include/mix1.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/mysql-test/include/mix1.inc b/mysql-test/include/mix1.inc index a4cd6019be8..fdac8deb87e 100644 --- a/mysql-test/include/mix1.inc +++ b/mysql-test/include/mix1.inc @@ -1309,6 +1309,7 @@ SELECT * FROM t1; --echo # Switch to connection con2 connection con2; +--reap SELECT * FROM t1; --echo # Switch to connection con1 From 1c1f0a62e1f68fd39ae7440042699faaffaaf7fe Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Apr 2008 02:53:12 +0400 Subject: [PATCH 073/435] BUG#36139 "float, zerofill, crash with subquery" - Make convert_zerofill_number_to_string() take into account that the constant it is converting may evaluate to NULL. mysql-test/r/subselect.result: BUG#36139 "float, zerofill, crash with subquery" - Testcase mysql-test/t/subselect.test: BUG#36139 "float, zerofill, crash with subquery" - Testcase --- mysql-test/r/subselect.result | 7 +++++++ mysql-test/t/subselect.test | 12 ++++++++++++ sql/item.cc | 11 ++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index 2de2589fc92..349b874cbb9 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4374,4 +4374,11 @@ a4 f3 a6 1 NULL NULL 2 NULL NULL DROP TABLE t1, t2, t3, t4; +create table t1 (a float(5,4) zerofill); +create table t2 (a float(5,4),b float(2,0)); +select t1.a from t1 where +t1.a= (select b from t2 limit 1) and not +t1.a= (select a from t2 limit 1) ; +a +drop table t1; End of 5.0 tests. diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index c5edd5414e3..a60159381e1 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -3259,5 +3259,17 @@ GROUP BY a4; DROP TABLE t1, t2, t3, t4; +# +# BUG#36139 "float, zerofill, crash with subquery" +# +create table t1 (a float(5,4) zerofill); +create table t2 (a float(5,4),b float(2,0)); + +select t1.a from t1 where + t1.a= (select b from t2 limit 1) and not + t1.a= (select a from t2 limit 1) ; + +drop table t1; + --echo End of 5.0 tests. diff --git a/sql/item.cc b/sql/item.cc index 553ba1b152c..9ff1f8c0084 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -4156,9 +4156,14 @@ static void convert_zerofill_number_to_string(Item **item, Field_num *field) String tmp(buff,sizeof(buff), field->charset()), *res; res= (*item)->val_str(&tmp); - field->prepend_zeros(res); - pos= (char *) sql_strmake (res->ptr(), res->length()); - *item= new Item_string(pos, res->length(), field->charset()); + if ((*item)->is_null()) + *item= new Item_null(); + else + { + field->prepend_zeros(res); + pos= (char *) sql_strmake (res->ptr(), res->length()); + *item= new Item_string(pos, res->length(), field->charset()); + } } From d526b7523f1fc0122ad24cd8e9425035d02feb54 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Apr 2008 15:04:10 +0200 Subject: [PATCH 074/435] Seventh set of fixes for bug 35988. --- .../query_cache_wlock_invalidate_func.result | 164 +++++++++ mysql-test/r/timestamp_func.result | 33 ++ mysql-test/t/innodb_table_locks_func.test | 88 +++++ .../t/query_cache_wlock_invalidate_func.test | 311 ++++++++++++++++++ mysql-test/t/timestamp_func.test | 79 +++++ 5 files changed, 675 insertions(+) create mode 100644 mysql-test/r/query_cache_wlock_invalidate_func.result create mode 100644 mysql-test/r/timestamp_func.result create mode 100644 mysql-test/t/innodb_table_locks_func.test create mode 100644 mysql-test/t/query_cache_wlock_invalidate_func.test create mode 100644 mysql-test/t/timestamp_func.test diff --git a/mysql-test/r/query_cache_wlock_invalidate_func.result b/mysql-test/r/query_cache_wlock_invalidate_func.result new file mode 100644 index 00000000000..9278b6605ab --- /dev/null +++ b/mysql-test/r/query_cache_wlock_invalidate_func.result @@ -0,0 +1,164 @@ +** Setup ** + +** Connecting con0 using root ** +** Connecting con1 using root ** +** Connection con0 ** +SET @start_global_value = @@GLOBAL.query_cache_wlock_invalidate; +SET @start_session_value = @@SESSION.query_cache_wlock_invalidate; +SET @old_cache_size = @@GLOBAL.query_cache_size; +SET @old_cache_type = @@GLOBAL.query_cache_type; +CREATE TABLE t1(id int, value varchar(10)); +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); +SET GLOBAL query_cache_size = 131072; +FLUSHING CACHE +SET GLOBAL query_cache_size = 0; +SET GLOBAL query_cache_size = 131072; +SET GLOBAL query_cache_type = ON; +Testing for value ON +** Connection con0 ** +SET SESSION query_cache_wlock_invalidate = ON; +** Connection con1 ** +SET SESSION query_cache_wlock_invalidate = ON; +'#----------------------------FN_DYNVARS_136_01--------------#' +Testing for cache invalidation +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +LOCK TABLE t1 WRITE; +UNLOCK TABLES; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 0 +0 Expected +'#----------------------------FN_DYNVARS_136_02-----------------------#' +SELECT * FROM t1; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +** Connection con1 ** +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +** Connection con0 ** +LOCK TABLE t1 WRITE; +** Connection con1 ** +** Asynchronous Execution ** +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)) >= 2; +SELECT @TimeDifference;| +** Connection con0 ** +Sleeping 2 Seconds before unlock +UNLOCK TABLES; +** Connection con1 ** +** Asynchronous Result ** +id value +1 val1 +2 val2 +3 val3 +@TimeDifference +1 +Testing for value OFF +** Connection con0 ** +SET SESSION query_cache_wlock_invalidate = OFF; +** Connection con1 ** +SET SESSION query_cache_wlock_invalidate = OFF; +'#----------------------------FN_DYNVARS_136_03------------------#' +Testing for cache invalidation +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +LOCK TABLE t1 WRITE; +UNLOCK TABLES; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +Variable_name Value +Qcache_queries_in_cache 1 +1 Expected +'#----------------------------FN_DYNVARS_136_04---------------------#' +SELECT * FROM t1; +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +** Connection con1 ** +SELECT * FROM t1; +id value +1 val1 +2 val2 +3 val3 +** Connection con0 ** +LOCK TABLE t1 WRITE; +** Connection con1 ** +** Asynchronous Execution ** +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)); +SELECT @TimeDifference;| +** Connection con0 ** +Sleeping 2 Seconds before unlock +UNLOCK TABLES; +** Connection con1 ** +** Asynchronous Result ** +id value +1 val1 +2 val2 +3 val3 +@TimeDifference +2 +'Bug#35390 the time difference should not be 2 seconds in this case,' +'it should be less than a second;' +'#----------------------------FN_DYNVARS_136_05------------------------#' +SET GLOBAL query_cache_wlock_invalidate = OFF; +** Connecting con_int1 using root ** +** Connection con_int1 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +SET SESSION query_cache_wlock_invalidate = ON; +** Connecting con_int2 using root ** +** Connection con_int2 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +SET SESSION query_cache_wlock_invalidate = OFF; +** Connection con_int1 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +1 +Expected Value : 1 / ON; +** Connection con_int2 ** +SELECT @@SESSION.query_cache_wlock_invalidate; +@@SESSION.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +SELECT @@GLOBAL.query_cache_wlock_invalidate; +@@GLOBAL.query_cache_wlock_invalidate +0 +Expected Value : 0 / OFF; +** Connection default ** +Disconnecting Connections con_int1, con_int2 + +CLEANUP +** Connection con0 ** +SET @@GLOBAL.query_cache_wlock_invalidate = @start_global_value; +SET @@SESSION.query_cache_wlock_invalidate = @start_session_value ; +SET @@GLOBAL.query_cache_size = @old_cache_size; +SET @@GLOBAL.query_cache_type = @old_cache_type; +** Connection default ** +Disconnecting Connections con0, con1 +DROP TABLE t1; diff --git a/mysql-test/r/timestamp_func.result b/mysql-test/r/timestamp_func.result new file mode 100644 index 00000000000..c41db55cae6 --- /dev/null +++ b/mysql-test/r/timestamp_func.result @@ -0,0 +1,33 @@ +** Setup ** + +** Connecting con0 using root ** +** Connecting con1 using root ** +'#-----------------------------FN_DYNVARS_179_01------------------#' +** Connection con0 ** +SET @ts_old = @@SESSION.timestamp; +waiting 1 sec +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +Timestamp Difference +1 +1 Expected +** Connection con1 ** +SET @ts_old = @@SESSION.timestamp; +waiting 4 sec +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +Timestamp Difference +4 +4 Expected +'#-----------------------------FN_DYNVARS_179_02---------------------#' +SET @ts_old = @@SESSION.timestamp; +Changing time zone +SET time_zone = 'MET'; +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old >= 1 AS 'Timestamp Difference'; +Timestamp Difference +1 +>=1 Expected +** Cleanup ** +** Connection default ** +Disconnecting Connections con0, con1 diff --git a/mysql-test/t/innodb_table_locks_func.test b/mysql-test/t/innodb_table_locks_func.test new file mode 100644 index 00000000000..d233a2a5240 --- /dev/null +++ b/mysql-test/t/innodb_table_locks_func.test @@ -0,0 +1,88 @@ +################# mysql-test\t\innodb_table_locks_func.test ################## +# # +# Variable Name: innodb_table_locks # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: 1 # +# Range: 0,1 # +# # +# # +# Creation Date: 2008-03-08 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable innodb_table_locks # +# that checks the behavior of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +--source include/not_embedded.inc +--source include/have_innodb.inc + +--echo '#--------------------FN_DYNVARS_048_01-------------------------#' +#################################################################### +# Check if setting innodb_table_locks is changed in new connection # +#################################################################### + +SET @@global.innodb_table_locks = OFF; +--echo 'connect (con1,localhost,root,,,,)' +connect (con1,localhost,root,,,,); +--echo 'connection con1' +connection con1; +SELECT @@global.innodb_table_locks; +SELECT @@session.innodb_table_locks; +disconnect con1; + + +--echo '#--------------------FN_DYNVARS_048_02-------------------------#' +########################################################### +# Begin the functionality Testing of innodb_table_locks # +########################################################### + +#============================================================================== +--echo '----check when innodb_table_locks = ON and autocommit = OFF---' +#============================================================================== +--echo 'connect (con2,localhost,root,,,,)' +connect (con2,localhost,root,,,,); + +--echo 'connection default' +connection default; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +CREATE TABLE t1 (a INT) ENGINE=INNODB; + +SET @@autocommit = OFF; +SET @@innodb_table_locks = ON; + +BEGIN; +INSERT INTO t1 VALUES(1); +SELECT * FROM t1 FOR UPDATE; + +--echo 'CONNECTION con2' +CONNECTION con2; +SET @@innodb_table_locks = ON; +SET @@autocommit = OFF; +send LOCK TABLES t1 WRITE; + +--echo 'CONNECTION default' +CONNECTION default; +COMMIT; + +--echo 'CONNECTION con2' +CONNECTION con2; +UNLOCK tables; + +DROP TABLE t1; +disconnect con2; + + +########################################################## +# End of functionality Testing for innodb_table_locks # +########################################################## + + diff --git a/mysql-test/t/query_cache_wlock_invalidate_func.test b/mysql-test/t/query_cache_wlock_invalidate_func.test new file mode 100644 index 00000000000..70b56f77da7 --- /dev/null +++ b/mysql-test/t/query_cache_wlock_invalidate_func.test @@ -0,0 +1,311 @@ +############# mysql-test\t\query_cache_wlock_invalidate_func.test #################### +# # +# Variable Name: query_cache_wlock_invalidate # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: boolean # +# Default Value: FALSE # +# Values: TRUE / 1, FALSE / 0 # +# # +# # +# Creation Date: 2008-02-21 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "query_cache_wlock_invalidate" # +# that checks behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Cache behaviors # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_query_cache_wlock_invalidate # +# # +###################################################################################### + +--echo ** Setup ** +--echo +# +# Setup +# + +# disabled due to differences in the result +--disable_ps_protocol +# +# Save initial value +# +--echo ** Connecting con0 using root ** +connect (con0,localhost,root,,); +--echo ** Connecting con1 using root ** +connect (con1, localhost, root,,); +--echo ** Connection con0 ** +connection con0; + +SET @start_global_value = @@GLOBAL.query_cache_wlock_invalidate; +SET @start_session_value = @@SESSION.query_cache_wlock_invalidate; + +SET @old_cache_size = @@GLOBAL.query_cache_size; +SET @old_cache_type = @@GLOBAL.query_cache_type; + +# +# Creating test table +# + +CREATE TABLE t1(id int, value varchar(10)); + +INSERT INTO t1 VALUES(1, 'val1'); +INSERT INTO t1 VALUES(2, 'val2'); +INSERT INTO t1 VALUES(3, 'val3'); + +# +# Clearing the query cache and setting up cache size +# + +SET GLOBAL query_cache_size = 131072; + +--echo FLUSHING CACHE +SET GLOBAL query_cache_size = 0; +SET GLOBAL query_cache_size = 131072; + +SET GLOBAL query_cache_type = ON; + +# +# Testing for value ON +# +--echo Testing for value ON + +--echo ** Connection con0 ** +connection con0; + +SET SESSION query_cache_wlock_invalidate = ON; + +--echo ** Connection con1 ** +connection con1; + +SET SESSION query_cache_wlock_invalidate = ON; + +--echo '#----------------------------FN_DYNVARS_136_01--------------#' +# +# Testing for cache invalidation +# + +--echo Testing for cache invalidation + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +LOCK TABLE t1 WRITE; + +UNLOCK TABLES; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 0 Expected + +--echo '#----------------------------FN_DYNVARS_136_02-----------------------#' +# +# Testing for blockage of access +# + +disable_result_log; + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; + +enable_result_log; + +--echo ** Connection con1 ** +connection con1; + +SELECT * FROM t1; + +--echo ** Connection con0 ** +connection con0; + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)) >= 2; +SELECT @TimeDifference;| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo Sleeping 2 Seconds before unlock +--sleep 2 +UNLOCK TABLES; + +--echo ** Connection con1 ** +connection con1; +--echo ** Asynchronous Result ** +reap; + +# +# Testing for value OFF +# +--echo Testing for value OFF + +--echo ** Connection con0 ** +connection con0; + +SET SESSION query_cache_wlock_invalidate = OFF; + +--echo ** Connection con1 ** +connection con1; + +SET SESSION query_cache_wlock_invalidate = OFF; + +--echo '#----------------------------FN_DYNVARS_136_03------------------#' +# +# Testing for cache invalidation +# + +--echo Testing for cache invalidation + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +LOCK TABLE t1 WRITE; + +UNLOCK TABLES; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; +--echo 1 Expected + +--echo '#----------------------------FN_DYNVARS_136_04---------------------#' +# +# Testing for blockage of access +# + +disable_result_log; + +SELECT * FROM t1; + +SHOW STATUS LIKE 'Qcache_queries_in_cache'; + +enable_result_log; + +--echo ** Connection con1 ** +connection con1; + +SELECT * FROM t1; + +--echo ** Connection con0 ** +connection con0; + +LOCK TABLE t1 WRITE; + +--echo ** Connection con1 ** +connection con1; + +--echo ** Asynchronous Execution ** +delimiter |; + +send +SET @startTime = NOW(); +SELECT * FROM t1; +SET @endTime = NOW(); +SET @TimeDifference = TIME_TO_SEC(TIMEDIFF(@endTime, @startTime)); +SELECT @TimeDifference;| + +delimiter ;| + +--echo ** Connection con0 ** +connection con0; + +--echo Sleeping 2 Seconds before unlock +--sleep 2 +UNLOCK TABLES; + +--echo ** Connection con1 ** +connection con1; +--echo ** Asynchronous Result ** +reap; + +--echo 'Bug#35390 the time difference should not be 2 seconds in this case,' +--echo 'it should be less than a second;' + +--echo '#----------------------------FN_DYNVARS_136_05------------------------#' +# +# Session data integrity check & GLOBAL Value check +# + +SET GLOBAL query_cache_wlock_invalidate = OFF; + +--echo ** Connecting con_int1 using root ** +connect (con_int1,localhost,root,,); +--echo ** Connection con_int1 ** +connection con_int1; + +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; +SET SESSION query_cache_wlock_invalidate = ON; + +--echo ** Connecting con_int2 using root ** +connect (con_int2,localhost,root,,); +--echo ** Connection con_int2 ** +connection con_int2; + +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; + +SET SESSION query_cache_wlock_invalidate = OFF; + +--echo ** Connection con_int1 ** +connection con_int1; +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 1 / ON; + +--echo ** Connection con_int2 ** +connection con_int2; +SELECT @@SESSION.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; + +SELECT @@GLOBAL.query_cache_wlock_invalidate; +--echo Expected Value : 0 / OFF; + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con_int1, con_int2 +disconnect con_int1; +disconnect con_int2; + +# +# Cleanup +# +--echo +--echo CLEANUP + +--echo ** Connection con0 ** +connection con0; + +SET @@GLOBAL.query_cache_wlock_invalidate = @start_global_value; +SET @@SESSION.query_cache_wlock_invalidate = @start_session_value ; +SET @@GLOBAL.query_cache_size = @old_cache_size; +SET @@GLOBAL.query_cache_type = @old_cache_type; + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con0, con1 +disconnect con0; +disconnect con1; + +DROP TABLE t1; + +--enable_ps_protocol + diff --git a/mysql-test/t/timestamp_func.test b/mysql-test/t/timestamp_func.test new file mode 100644 index 00000000000..84c66441e6f --- /dev/null +++ b/mysql-test/t/timestamp_func.test @@ -0,0 +1,79 @@ +############# mysql-test\t\timestamp_func.test ############################# +# # +# Variable Name: timestamp # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: INTEGER # +# # +# # +# Creation Date: 2008-02-25 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable "timestamp" # +# that checks behavior of this variable in the following ways # +# * Functionality based on different values # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/set-option.html # +# # +############################################################################ + +--echo ** Setup ** +--echo +# +# Setup +# +--echo ** Connecting con0 using root ** +connect (con0,localhost,root,,); +--echo ** Connecting con1 using root ** +connect (con1, localhost, root,,); + +--echo '#-----------------------------FN_DYNVARS_179_01------------------#' +# +# Checking for connection 1 +# + +--echo ** Connection con0 ** +connection con0; +SET @ts_old = @@SESSION.timestamp; +--echo waiting 1 sec +--sleep 1 +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +--echo 1 Expected + + +# +# Checking for connection 2 +# +--echo ** Connection con1 ** +connection con1; +SET @ts_old = @@SESSION.timestamp; +--echo waiting 4 sec +--sleep 4 +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +--echo 4 Expected + +--echo '#-----------------------------FN_DYNVARS_179_02---------------------#' +# +# Testing timezone change effect +# + +SET @ts_old = @@SESSION.timestamp; +--sleep 1 +--echo Changing time zone +SET time_zone = 'MET'; +SET @ts_new = @@SESSION.timestamp; +SELECT @ts_new - @ts_old >= 1 AS 'Timestamp Difference'; +--echo >=1 Expected + +# +# Cleanup +# +--echo ** Cleanup ** + +--echo ** Connection default ** +connection default; +--echo Disconnecting Connections con0, con1 +disconnect con0; +disconnect con1; From d8ebf276396252fc37169d108a993bf8b6b38157 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 23 Apr 2008 02:14:58 +0500 Subject: [PATCH 075/435] Fixed bug #35993: memory corruption and crash with multibyte conversion. Grouping or ordering of long values in not indexed BLOB/TEXT columns with GBK or BIG5 charsets crashes the server. MySQL server uses sorting (the filesort procedure) in the temporary table to evaluate the GROUP BY clause in case of lack of suitable index. That procedure takes into account only first @max_sort_length bytes (system variable, usually 1024) of TEXT/BLOB sorting key string. The my_strnxfrm_gbk and my_strnxfrm_big5 fill temporary keys with data of whole blob length instead of @max_sort_length bytes length. That buffer overrun has been fixed. mysql-test/r/ctype_gbk.result: Added test case for bug #35993. mysql-test/t/ctype_gbk.test: Added test case for bug #35993. strings/ctype-big5.c: Fixed bug #35993: memory corruption and crash with multibyte conversion. Buffer overrun has been fixed in the my_strnxfrm_big5 function. strings/ctype-gbk.c: Fixed bug #35993: memory corruption and crash with multibyte conversion. Buffer overrun has been fixed in the my_strnxfrm_gbk function. --- mysql-test/r/ctype_gbk.result | 7 +++++++ mysql-test/t/ctype_gbk.test | 14 ++++++++++++++ strings/ctype-big5.c | 6 ++++-- strings/ctype-gbk.c | 6 ++++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result index 6066246a2ef..1b425134095 100644 --- a/mysql-test/r/ctype_gbk.result +++ b/mysql-test/r/ctype_gbk.result @@ -247,4 +247,11 @@ t1 CREATE TABLE `t1` ( `c2` text NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=gbk drop table t1; +CREATE TABLE t1(a MEDIUMTEXT CHARACTER SET gbk, +b MEDIUMTEXT CHARACTER SET big5); +INSERT INTO t1 VALUES +(REPEAT(0x1125,200000), REPEAT(0x1125,200000)), ('', ''), ('', ''); +SELECT a FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; +SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; +DROP TABLES t1; End of 5.0 tests diff --git a/mysql-test/t/ctype_gbk.test b/mysql-test/t/ctype_gbk.test index 3ea696338dc..91fe50d89b9 100644 --- a/mysql-test/t/ctype_gbk.test +++ b/mysql-test/t/ctype_gbk.test @@ -53,4 +53,18 @@ alter table t1 change c1 c1 mediumtext character set gbk not null; show create table t1; drop table t1; +# +# Bug#35993: severe memory corruption and crash with multibyte conversion +# + +CREATE TABLE t1(a MEDIUMTEXT CHARACTER SET gbk, + b MEDIUMTEXT CHARACTER SET big5); +INSERT INTO t1 VALUES + (REPEAT(0x1125,200000), REPEAT(0x1125,200000)), ('', ''), ('', ''); + +SELECT a FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; +SELECT b FROM t1 GROUP BY 1 LIMIT 1 INTO @nullll; + +DROP TABLES t1; + --echo End of 5.0 tests diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c index 44b9951657d..c73247db404 100644 --- a/strings/ctype-big5.c +++ b/strings/ctype-big5.c @@ -307,15 +307,17 @@ static int my_strnxfrm_big5(CHARSET_INFO *cs __attribute__((unused)), { uint16 e; uint dstlen= len; + uchar *dest_end= dest + dstlen; len = srclen; - while (len--) + while (len-- && dest < dest_end) { if ((len > 0) && isbig5code(*src, *(src+1))) { e = big5strokexfrm((uint16) big5code(*src, *(src+1))); *dest++ = big5head(e); - *dest++ = big5tail(e); + if (dest < dest_end) + *dest++ = big5tail(e); src +=2; len--; } else diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c index 8ac7d62c9da..d0ba33aa3cc 100644 --- a/strings/ctype-gbk.c +++ b/strings/ctype-gbk.c @@ -2668,15 +2668,17 @@ static int my_strnxfrm_gbk(CHARSET_INFO *cs __attribute__((unused)), { uint16 e; uint dstlen= len; + uchar *dest_end= dest + dstlen; len = srclen; - while (len--) + while (len-- && dest < dest_end) { if ((len > 0) && isgbkcode(*src, *(src+1))) { e = gbksortorder((uint16) gbkcode(*src, *(src+1))); *dest++ = gbkhead(e); - *dest++ = gbktail(e); + if (dest < dest_end) + *dest++ = gbktail(e); src+=2; len--; } else From 73f7de59c2739a66dcf1a7d1d4c89a1e19fddcd1 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 23 Apr 2008 02:27:23 +0500 Subject: [PATCH 076/435] Fixed bug#36005: server crashes inside NOT IN clause subquery with impossible WHERE/HAVING clause (subselect_single_select_engine::exec). Allocation and initialization of joined table list t1, t2... of subqueries like: NOT IN (SELECT ... FROM t1,t2,... WHERE 0) is optimized out, however server tries to traverse this list. mysql-test/r/subselect3.result: Added test case for bug#36005. mysql-test/t/subselect3.test: Added test case for bug#36005. sql/sql_select.cc: Fixed bug#36005. 1. JOIN::prepare initializes JOIN::table counter (actually a size of the JOIN::join_tab array) and sets it to a number of joined tables. 2. The make_join_statistics function (when called from JOIN::optimize) allocates and fills the JOIN::join_tab array. However, when optimizing subselect has impossible (definite false) WHERE or HAVING clause, optimizer skips call to make_join_statistics and leaves JOIN::join_tab == NULL. 3. subselect_single_select_engine::exec does traversal of the JOIN::join_tab array and the server dies because array is not allocated but array counter is greater than 0. The JOIN::optimize method has been modified to reset the JOIN::table counter to 0 in cause of impossible WHERE/HAVING clause. --- mysql-test/r/subselect3.result | 9 +++++++++ mysql-test/t/subselect3.test | 13 +++++++++++++ sql/sql_select.cc | 1 + 3 files changed, 23 insertions(+) diff --git a/mysql-test/r/subselect3.result b/mysql-test/r/subselect3.result index c194ba33756..5221fa09744 100644 --- a/mysql-test/r/subselect3.result +++ b/mysql-test/r/subselect3.result @@ -770,4 +770,13 @@ SELECT ROW(1, 2) IN (SELECT t1.a, 2 FROM t2) FROM t1 GROUP BY t1.a; ROW(1, 2) IN (SELECT t1.a, 2 FROM t2) 1 DROP TABLE t1, t2; +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 SELECT * FROM t1; +SELECT 1 FROM t1 WHERE t1.a NOT IN (SELECT 1 FROM t1, t2 WHERE 0); +1 +1 +1 +1 +DROP TABLE t1, t2; End of 5.0 tests diff --git a/mysql-test/t/subselect3.test b/mysql-test/t/subselect3.test index cfbde8c29cd..d7bb1f7186a 100644 --- a/mysql-test/t/subselect3.test +++ b/mysql-test/t/subselect3.test @@ -605,4 +605,17 @@ SELECT ROW(1, 2) IN (SELECT t1.a, 2 FROM t2) FROM t1 GROUP BY t1.a; DROP TABLE t1, t2; +# +# Bug #36005: crash in subselect with single row +# (subselect_single_select_engine::exec) +# + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2),(3); +CREATE TABLE t2 SELECT * FROM t1; + +SELECT 1 FROM t1 WHERE t1.a NOT IN (SELECT 1 FROM t1, t2 WHERE 0); + +DROP TABLE t1, t2; + --echo End of 5.0 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 976d7322f56..11062998e6a 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -832,6 +832,7 @@ JOIN::optimize() "Impossible HAVING" : "Impossible WHERE")); zero_result_cause= having_value == Item::COND_FALSE ? "Impossible HAVING" : "Impossible WHERE"; + tables= 0; error= 0; DBUG_RETURN(0); } From 61f6c60274ac03e2993971d7332fe9d05aaebba5 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 22 Apr 2008 21:49:39 -0700 Subject: [PATCH 077/435] Fixed bug#35844. The function test_if_skip_sort_order ignored any covering index used for ref access of a table in a query with ORDER BY if this index was incompatible with the ORDER BY list and there was another covering index compatible with this list. As a result sub-optimal execution plans were chosen for some queries with ORDER BY clause. mysql-test/r/distinct.result: Adjusted results after the fix for bug#35844. mysql-test/r/order_by.result: Added a test case for bug#35844. mysql-test/t/order_by.test: Added a test case for bug#35844. --- mysql-test/r/distinct.result | 2 +- mysql-test/r/order_by.result | 26 ++++++++++++++++++++++++++ mysql-test/t/order_by.test | 32 ++++++++++++++++++++++++++++++++ sql/sql_select.cc | 7 ++++++- 4 files changed, 65 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/distinct.result b/mysql-test/r/distinct.result index 15e4c3f15b3..1fbda27f5da 100644 --- a/mysql-test/r/distinct.result +++ b/mysql-test/r/distinct.result @@ -694,7 +694,7 @@ INSERT INTO t1(a, b, c) VALUES (1, 1, 1), (1, 2, 3); EXPLAIN SELECT DISTINCT a, b, d, c FROM t1; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 index NULL a 16 NULL 6 Using index +1 SIMPLE t1 range NULL PRIMARY 16 NULL 7 Using index for group-by; Using temporary SELECT DISTINCT a, b, d, c FROM t1; a b d c 1 1 0 1 diff --git a/mysql-test/r/order_by.result b/mysql-test/r/order_by.result index faab8e49880..e70ce75797d 100644 --- a/mysql-test/r/order_by.result +++ b/mysql-test/r/order_by.result @@ -1458,3 +1458,29 @@ ORDER BY t2.c LIMIT 1; d 52.5 DROP TABLE t1,t2,t3; +CREATE TABLE t1 ( +id1 INT NULL, +id2 INT NOT NULL, +junk INT NOT NULL, +PRIMARY KEY (id1, id2, junk), +INDEX id2_j_id1 (id2, junk, id1) +); +INSERT INTO t1 VALUES (1, 1, 1), (2, 1, 2), (3, 1, 3), (4, 1, 4); +INSERT INTO t1 VALUES (5, 2, 1), (6, 2, 2), (7, 2, 3), (8, 2, 4); +INSERT INTO t1 VALUES (9, 3, 1), (10, 3, 2), (11, 3, 3), (12, 3, 4); +INSERT INTO t1 VALUES (13, 4, 1), (14, 4, 2), (15, 4, 3), (16, 4, 4); +INSERT INTO t1 VALUES (17, 5, 1), (18, 5, 2), (19, 5, 3), (20, 5, 4); +INSERT INTO t1 VALUES (21, 6, 1), (22, 6, 2), (23, 6, 3), (24, 6, 4); +INSERT INTO t1 VALUES (25, 7, 1), (26, 7, 2), (27, 7, 3), (28, 7, 4); +INSERT INTO t1 VALUES (29, 8, 1), (30, 8, 2), (31, 8, 3), (32, 8, 4); +INSERT INTO t1 VALUES (33, 9, 1), (34, 9, 2), (35, 9, 3), (36, 9, 4); +EXPLAIN SELECT id1 FROM t1 WHERE id2 = 4 ORDER BY id1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ref id2_j_id1 id2_j_id1 4 const 4 Using where; Using index; Using filesort +SELECT id1 FROM t1 WHERE id2 = 4 ORDER BY id1; +id1 +13 +14 +15 +16 +DROP TABLE t1; diff --git a/mysql-test/t/order_by.test b/mysql-test/t/order_by.test index 64665c6b5bd..bf4cc37a80f 100644 --- a/mysql-test/t/order_by.test +++ b/mysql-test/t/order_by.test @@ -1309,3 +1309,35 @@ WHERE t2.b=14 AND t2.a=t1.a AND 5.1join_tab; ha_rows table_records= table->file->stats.records; bool group= join->group && order == join->group_list; + ha_rows ref_key_quick_rows= HA_POS_ERROR; LINT_INIT(best_key_parts); LINT_INIT(best_key_direction); LINT_INIT(best_records); @@ -12999,6 +13000,9 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, else keys= usable_keys; + if (ref_key >= 0 && table->covering_keys.is_set(ref_key)) + ref_key_quick_rows= table->quick_rows[ref_key]; + read_time= join->best_positions[tablenr].read_time; for (uint i= tablenr+1; i < join->tables; i++) fanout*= join->best_positions[i].records_read; // fanout is always >= 1 @@ -13093,7 +13097,8 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, index_scan_time < read_time) { ha_rows quick_records= table_records; - if (is_best_covering && !is_covering) + if (is_best_covering && !is_covering || + is_covering && ref_key_quick_rows < select_limit) continue; if (table->quick_keys.is_set(nr)) quick_records= table->quick_rows[nr]; From 415112a9406c689fa4f3ec27c1c8135d2825b14c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 23 Apr 2008 14:22:49 +0500 Subject: [PATCH 078/435] subselect.test, subselect.result: Post-commit minor cleanup of testcase (bug#36139). mysql-test/r/subselect.result: Post-commit minor cleanup of testcase (bug#36139). mysql-test/t/subselect.test: Post-commit minor cleanup of testcase (bug#36139). --- mysql-test/r/subselect.result | 2 +- mysql-test/t/subselect.test | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index 349b874cbb9..e56c2f07d80 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4380,5 +4380,5 @@ select t1.a from t1 where t1.a= (select b from t2 limit 1) and not t1.a= (select a from t2 limit 1) ; a -drop table t1; +drop table t1, t2; End of 5.0 tests. diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index a60159381e1..527bd528f79 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -3269,7 +3269,7 @@ select t1.a from t1 where t1.a= (select b from t2 limit 1) and not t1.a= (select a from t2 limit 1) ; -drop table t1; +drop table t1, t2; --echo End of 5.0 tests. From 9fd9785a4a166d1ac33b9c0901bbf47724cc66a6 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 23 Apr 2008 11:36:17 +0200 Subject: [PATCH 079/435] Eightth set of fixes for bug 35988. BitKeeper/etc/ignore: Added mysql-test/r/max_allowed_packet_func.result to the ignore list --- .bzrignore | 1 + mysql-test/r/group_concat_max_len_func.result | 79 +++++++++++ mysql-test/r/timestamp_func.result | 12 +- mysql-test/t/disabled.def | 4 + mysql-test/t/group_concat_max_len_func.test | 131 ++++++++++++++++++ mysql-test/t/max_allowed_packet_func.test | 95 +++++++++++++ mysql-test/t/timestamp_func.test | 10 +- 7 files changed, 321 insertions(+), 11 deletions(-) create mode 100644 mysql-test/r/group_concat_max_len_func.result create mode 100644 mysql-test/t/group_concat_max_len_func.test create mode 100644 mysql-test/t/max_allowed_packet_func.test diff --git a/.bzrignore b/.bzrignore index 25af8360a83..9ef8bc64f80 100644 --- a/.bzrignore +++ b/.bzrignore @@ -3020,3 +3020,4 @@ win/vs8cache.txt ylwrap zlib/*.ds? zlib/*.vcproj +mysql-test/r/max_allowed_packet_func.result diff --git a/mysql-test/r/group_concat_max_len_func.result b/mysql-test/r/group_concat_max_len_func.result new file mode 100644 index 00000000000..4ec07c989b7 --- /dev/null +++ b/mysql-test/r/group_concat_max_len_func.result @@ -0,0 +1,79 @@ +SET @save = @@global.group_concat_max_len; +drop table if exists t1; +## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +rollno int NOT NULL, +name VARCHAR(30) +); +'#--------------------FN_DYNVARS_034_01-------------------------#' +## Setting initial value of variable to 4 ## +SET @@global.group_concat_max_len = 4; +## Inserting some rows in table ## +INSERT into t1(rollno, name) values(1, 'Record_1'); +INSERT into t1(rollno, name) values(2, 'Record_2'); +INSERT into t1(rollno, name) values(1, 'Record_3'); +INSERT into t1(rollno, name) values(3, 'Record_4'); +INSERT into t1(rollno, name) values(1, 'Record_5'); +INSERT into t1(rollno, name) values(3, 'Record_6'); +INSERT into t1(rollno, name) values(4, 'Record_7'); +INSERT into t1(rollno, name) values(4, 'Record_8'); +## Creating two new connections ## +'#--------------------FN_DYNVARS_034_02-------------------------#' +## Connecting with test_con1 ## +## Accessing data and using group_concat on column whose value is greater than 4 ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Reco +2 2 Reco +4 3 Reco +7 4 Reco +Warnings: +Warning 1260 4 line(s) were cut by GROUP_CONCAT() +## Changing session value of variable and verifying its behavior, ## +## warning should come here ## +SET @@session.group_concat_max_len = 10; +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Record_1,R +2 2 Record_2 +4 3 Record_4,R +7 4 Record_7,R +Warnings: +Warning 1260 3 line(s) were cut by GROUP_CONCAT() +'#--------------------FN_DYNVARS_034_03-------------------------#' +## Connecting with new connection test_con2 ## +## Verifying initial value of variable. It should be 4 ## +SELECT @@session.group_concat_max_len = 4; +@@session.group_concat_max_len = 4 +1 +## Setting session value of variable to 20 and verifying variable is concating ## +## column's value to 20 or not ## +SET @@session.group_concat_max_len = 20; +## Verifying value of name column, it should not me more than 20 characters ## +## Warning should come here ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Record_1,Record_3,Re +2 2 Record_2 +4 3 Record_4,Record_6 +7 4 Record_7,Record_8 +Warnings: +Warning 1260 1 line(s) were cut by GROUP_CONCAT() +'#--------------------FN_DYNVARS_034_04-------------------------#' +## Setting session value of variable to 26. No warning should appear here ## +## because the value after concatination is less than 30 ## +SET @@session.group_concat_max_len = 26; +## Verifying value of name column, it should not give warning now ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +id rollno group_concat(name) +1 1 Record_1,Record_3,Record_5 +2 2 Record_2 +4 3 Record_4,Record_6 +7 4 Record_7,Record_8 +## Dropping table t1 ## +DROP table t1; +## Disconnecting both the connection ## +SET @@group_concat_max_len = @save; diff --git a/mysql-test/r/timestamp_func.result b/mysql-test/r/timestamp_func.result index c41db55cae6..ed51cec4227 100644 --- a/mysql-test/r/timestamp_func.result +++ b/mysql-test/r/timestamp_func.result @@ -7,18 +7,18 @@ SET @ts_old = @@SESSION.timestamp; waiting 1 sec SET @ts_new = @@SESSION.timestamp; -SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +SELECT @ts_new - @ts_old >= 1 AS 'Timestamp Difference'; Timestamp Difference 1 -1 Expected +1 means >=1 expected is true ** Connection con1 ** SET @ts_old = @@SESSION.timestamp; waiting 4 sec SET @ts_new = @@SESSION.timestamp; -SELECT @ts_new - @ts_old AS 'Timestamp Difference'; +SELECT @ts_new - @ts_old >= 4 AS 'Timestamp Difference'; Timestamp Difference -4 -4 Expected +1 +1 means >=4 expected is true '#-----------------------------FN_DYNVARS_179_02---------------------#' SET @ts_old = @@SESSION.timestamp; Changing time zone @@ -27,7 +27,7 @@ SET @ts_new = @@SESSION.timestamp; SELECT @ts_new - @ts_old >= 1 AS 'Timestamp Difference'; Timestamp Difference 1 ->=1 Expected +1 means >=1 expected is true ** Cleanup ** ** Connection default ** Disconnecting Connections con0, con1 diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 89979ef8dee..afbccbf0af1 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -19,3 +19,7 @@ ctype_create : Bug#32965 main.ctype_create fails status : Bug#32966 main.status fails ps_ddl : Bug#12093 2007-12-14 pending WL#4165 / WL#4166 csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables +event_scheduler_basic: BUG#35997 server seems to crash. +event_scheduler_func: BUG#35997 server seems to crash. +thread_cache_size_func: BUG#35988 Due to not deterministic results + diff --git a/mysql-test/t/group_concat_max_len_func.test b/mysql-test/t/group_concat_max_len_func.test new file mode 100644 index 00000000000..1c581d16aa3 --- /dev/null +++ b/mysql-test/t/group_concat_max_len_func.test @@ -0,0 +1,131 @@ +############## mysql-test\t\group_concat_max_len_func.test #################### +# # +# Variable Name: group_concat_max_len # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 1024 # +# Minimum value: 4 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable group_concat_max_len # +# that checks the functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +SET @save = @@global.group_concat_max_len; + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +rollno int NOT NULL, +name VARCHAR(30) +); + +--echo '#--------------------FN_DYNVARS_034_01-------------------------#' +######################################################################## +# Setting initial value of group_concat_max_len, inserting some rows +# & creating 2 new connections +######################################################################## + +--echo ## Setting initial value of variable to 4 ## +SET @@global.group_concat_max_len = 4; + +--echo ## Inserting some rows in table ## +INSERT into t1(rollno, name) values(1, 'Record_1'); +INSERT into t1(rollno, name) values(2, 'Record_2'); +INSERT into t1(rollno, name) values(1, 'Record_3'); +INSERT into t1(rollno, name) values(3, 'Record_4'); +INSERT into t1(rollno, name) values(1, 'Record_5'); +INSERT into t1(rollno, name) values(3, 'Record_6'); +INSERT into t1(rollno, name) values(4, 'Record_7'); +INSERT into t1(rollno, name) values(4, 'Record_8'); + +--echo ## Creating two new connections ## +CONNECT (test_con1,localhost,root,,); +CONNECT (test_con2,localhost,root,,); + + +--echo '#--------------------FN_DYNVARS_034_02-------------------------#' +############################################################################### +# Verifying initial behavior of variable by concatinating values greater than 4 +############################################################################### + +--echo ## Connecting with test_con1 ## +CONNECTION test_con1; + +--echo ## Accessing data and using group_concat on column whose value is greater than 4 ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + +--echo ## Changing session value of variable and verifying its behavior, ## +--echo ## warning should come here ## + +SET @@session.group_concat_max_len = 10; +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + + +--echo '#--------------------FN_DYNVARS_034_03-------------------------#' +############################################################################## +# Verifying behavior of variable by increasing session value of variable # +############################################################################## + +--echo ## Connecting with new connection test_con2 ## +connection test_con2; + +--echo ## Verifying initial value of variable. It should be 4 ## +SELECT @@session.group_concat_max_len = 4; + +--echo ## Setting session value of variable to 20 and verifying variable is concating ## +--echo ## column's value to 20 or not ## +SET @@session.group_concat_max_len = 20; + +--echo ## Verifying value of name column, it should not me more than 20 characters ## +--echo ## Warning should come here ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + + +--echo '#--------------------FN_DYNVARS_034_04-------------------------#' +############################################################################### +# Verifying behavior of variable by increasing session value of variable # +# greater than the maximum concat length of name column # +############################################################################### + +--echo ## Setting session value of variable to 26. No warning should appear here ## +--echo ## because the value after concatination is less than 30 ## +SET @@session.group_concat_max_len = 26; + +--echo ## Verifying value of name column, it should not give warning now ## +SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; + + +############################################################ +# Disconnecting all connection & dropping table # +############################################################ + +--echo ## Dropping table t1 ## +DROP table t1; + +--echo ## Disconnecting both the connection ## +DISCONNECT test_con2; +DISCONNECT test_con1; + +connection default; + +SET @@group_concat_max_len = @save; + diff --git a/mysql-test/t/max_allowed_packet_func.test b/mysql-test/t/max_allowed_packet_func.test new file mode 100644 index 00000000000..37ca15f85f0 --- /dev/null +++ b/mysql-test/t/max_allowed_packet_func.test @@ -0,0 +1,95 @@ +################## mysql-test\t\max_allowed_packet_func.test ################## +# # +# Variable Name: max_allowed_packet # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:1048576 # +# Range:1024-1073741824 # +# # +# # +# Creation Date: 2008-03-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable max_allowed_packet # +# that checks the functionality of this variable # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html # +# # +############################################################################### + +#due to lost connection on win64 +--source include/not_windows.inc + +let $start_global_value = `SELECT @@global.max_allowed_packet`; +--echo $start_global_value + +--disable_warnings +drop table if exists t1; +--enable_warnings + +######################### +# Creating new table # +######################### + +--echo ## Creating new table t1 ## +CREATE TABLE t1 +( +id INT NOT NULL auto_increment, +PRIMARY KEY (id), +name BLOB +); + +--echo '#--------------------FN_DYNVARS_070_01-------------------------#' +############################################################################### +# Setting initial value of max_allowed_packet to 1024 at session level and +# verifying its behavior after inserting data greater than 1024 bytes +############################################################################### + +--echo ## Setting value of max_allowed packet and net_buffer_length to 1024 ## +SET @@session.max_allowed_packet = 1024; +SET @@session.net_buffer_length = 1024; +SELECT @@session.max_allowed_packet; +SELECT @@session.net_buffer_length; + +--echo ## Inserting and fetching data of length greater than 1024 ## +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); + +SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len; + +--echo ## Verifying record in table t1 ## +SELECT * from t1; + +--echo 'Bug#35381: Error is not coming on inserting and fetching data of length' +--echo 'greater than max_allowed_packet size at session level'; + +--echo '#--------------------FN_DYNVARS_070_02-------------------------#' +############################################################################### +# Setting value of max_allowed_packet to 1024 at global level and +# verifying its behavior after inserting data greater than 1024 bytes +############################################################################### + +--echo ## Setting value of max_allowed packet and net_buffer_length to 1024 ## +SET @@global.max_allowed_packet = 1024; +SET @@global.net_buffer_length = 1024; +SELECT @@global.max_allowed_packet; +SELECT @@global.net_buffer_length; + +--echo ## Creating new connection test_con1 ## +connect (test_con1,localhost,root,,); +connection test_con1; + +--echo ## Inserting and fetching data of length greater than 1024 ## +--Error 0,ER_NET_PACKET_TOO_LARGE +INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); + +disconnect test_con1; +connection default; +drop table t1; +eval SET @@global.max_allowed_packet = $start_global_value; + +--echo ## Server disconnects after this case and error occurs that Server ## +--echo ## has gone away ## + + diff --git a/mysql-test/t/timestamp_func.test b/mysql-test/t/timestamp_func.test index 84c66441e6f..ecca3c7daeb 100644 --- a/mysql-test/t/timestamp_func.test +++ b/mysql-test/t/timestamp_func.test @@ -38,8 +38,8 @@ SET @ts_old = @@SESSION.timestamp; --echo waiting 1 sec --sleep 1 SET @ts_new = @@SESSION.timestamp; -SELECT @ts_new - @ts_old AS 'Timestamp Difference'; ---echo 1 Expected +SELECT @ts_new - @ts_old >= 1 AS 'Timestamp Difference'; +--echo 1 means >=1 expected is true # @@ -51,8 +51,8 @@ SET @ts_old = @@SESSION.timestamp; --echo waiting 4 sec --sleep 4 SET @ts_new = @@SESSION.timestamp; -SELECT @ts_new - @ts_old AS 'Timestamp Difference'; ---echo 4 Expected +SELECT @ts_new - @ts_old >= 4 AS 'Timestamp Difference'; +--echo 1 means >=4 expected is true --echo '#-----------------------------FN_DYNVARS_179_02---------------------#' # @@ -65,7 +65,7 @@ SET @ts_old = @@SESSION.timestamp; SET time_zone = 'MET'; SET @ts_new = @@SESSION.timestamp; SELECT @ts_new - @ts_old >= 1 AS 'Timestamp Difference'; ---echo >=1 Expected +--echo 1 means >=1 expected is true # # Cleanup From b9efbe48900eaa6faac245f59a62761f9eaed9cc Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 23 Apr 2008 20:54:53 +0200 Subject: [PATCH 080/435] Raise version number after cloning 5.0.60 --- configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index 9c35dbcc7c7..d40df7b7895 100644 --- a/configure.in +++ b/configure.in @@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! # remember to also change ndb version below and update version.c in ndb -AM_INIT_AUTOMAKE(mysql, 5.0.60) +AM_INIT_AUTOMAKE(mysql, 5.0.62) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 @@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0 # ndb version NDB_VERSION_MAJOR=5 NDB_VERSION_MINOR=0 -NDB_VERSION_BUILD=60 +NDB_VERSION_BUILD=62 NDB_VERSION_STATUS="" # Set all version vars based on $VERSION. How do we do this more elegant ? From 905594b0088c34f2cb0b837fca5b5cac58a2a3a6 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 24 Apr 2008 00:06:46 +0200 Subject: [PATCH 081/435] Many files: [Changes done by mleich] Fix for Bug#35335 funcs_1: Some tests fail within load_file during pushbuild runs Solution: 1. Move files with input data used in load_file, load data etc. from suite/funcs_1/ to std_data 2. Use for testsuite funcs_1 the server option --secure-file-priv= 3. Outfiles have to be stored under MYSQLTEST_VARDIR + changes according to WL#4304 Cleanup in funcs_1 tests - backport of fixes/improvements made in 5.1 to 5.0 The differences between scripts in 5.0 and 5.1 cause much additional and annoying work during any upmerge. - replace error numbers with names - improved comments - improved formatting - Unify storage engine names so that result files for storage engine variants do not differ (some tests) - remove a script no more used (tests are done in other scripts) BUILD/Makefile.am: Test case adjustments mysql-test/Makefile.am: Test case adjustments mysql-test/mysql-test-run.pl: Test case adjustments mysql-test/suite/funcs_1/README.txt: Test case adjustments mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc: Test case adjustments mysql-test/suite/funcs_1/datadict/datadict_load.inc: Test case adjustments mysql-test/suite/funcs_1/include/innodb_tb1.inc: Test case adjustments mysql-test/suite/funcs_1/include/innodb_tb2.inc: Test case adjustments mysql-test/suite/funcs_1/include/innodb_tb3.inc: Test case adjustments mysql-test/suite/funcs_1/include/innodb_tb4.inc: Test case adjustments mysql-test/suite/funcs_1/include/memory_tb1.inc: Test case adjustments mysql-test/suite/funcs_1/include/memory_tb2.inc: Test case adjustments mysql-test/suite/funcs_1/include/memory_tb3.inc: Test case adjustments mysql-test/suite/funcs_1/include/memory_tb4.inc: Test case adjustments mysql-test/suite/funcs_1/include/myisam_tb1.inc: Test case adjustments mysql-test/suite/funcs_1/include/myisam_tb2.inc: Test case adjustments mysql-test/suite/funcs_1/include/myisam_tb3.inc: Test case adjustments mysql-test/suite/funcs_1/include/myisam_tb4.inc: Test case adjustments mysql-test/suite/funcs_1/include/sp_tb.inc: Test case adjustments mysql-test/suite/funcs_1/r/innodb_func_view.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_storedproc_02.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_storedproc_03.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_storedproc_06.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_storedproc_07.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_storedproc_08.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_storedproc_10.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_0102.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_03.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_0407.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_08.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_09.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_trig_frkey.result: Test case adjustments mysql-test/suite/funcs_1/r/innodb_views.result: Test case adjustments mysql-test/suite/funcs_1/r/is_columns_innodb.result: Test case adjustments mysql-test/suite/funcs_1/r/is_columns_memory.result: Test case adjustments mysql-test/suite/funcs_1/r/is_columns_myisam.result: Test case adjustments mysql-test/suite/funcs_1/r/is_columns_ndb.result: Test case adjustments mysql-test/suite/funcs_1/r/is_tables_innodb.result: Test case adjustments mysql-test/suite/funcs_1/r/is_tables_memory.result: Test case adjustments mysql-test/suite/funcs_1/r/is_tables_myisam.result: Test case adjustments mysql-test/suite/funcs_1/r/is_tables_ndb.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_func_view.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_storedproc_02.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_storedproc_03.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_storedproc_06.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_storedproc_07.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_storedproc_08.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_storedproc_10.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_trig_0102.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_trig_03.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_trig_0407.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_trig_08.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_trig_09.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_trig_1011ext.result: Test case adjustments mysql-test/suite/funcs_1/r/memory_views.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_func_view.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_storedproc_02.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_storedproc_03.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_storedproc_06.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_storedproc_07.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_storedproc_08.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_storedproc_10.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_trig_0102.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_trig_03.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_trig_0407.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_trig_08.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_trig_09.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result: Test case adjustments mysql-test/suite/funcs_1/r/myisam_views.result: Test case adjustments mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc: Test case adjustments mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc: Test case adjustments mysql-test/suite/funcs_1/storedproc/storedproc_02.inc: Test case adjustments mysql-test/suite/funcs_1/storedproc/storedproc_03.inc: Test case adjustments mysql-test/suite/funcs_1/storedproc/storedproc_06.inc: Test case adjustments mysql-test/suite/funcs_1/storedproc/storedproc_10.inc: Test case adjustments mysql-test/suite/funcs_1/t/innodb_trig_0407.test: Test case adjustments mysql-test/suite/funcs_1/t/is_basics_mixed.test: Test case adjustments mysql-test/suite/funcs_1/t/memory_storedproc_02.test: Test case adjustments mysql-test/suite/funcs_1/t/memory_storedproc_03.test: Test case adjustments mysql-test/suite/funcs_1/t/memory_storedproc_06.test: Test case adjustments mysql-test/suite/funcs_1/t/memory_storedproc_07.test: Test case adjustments mysql-test/suite/funcs_1/t/memory_storedproc_08.test: Test case adjustments mysql-test/suite/funcs_1/t/memory_storedproc_10.test: Test case adjustments mysql-test/suite/funcs_1/t/myisam_storedproc_02.test: Test case adjustments mysql-test/suite/funcs_1/t/myisam_storedproc_03.test: Test case adjustments mysql-test/suite/funcs_1/t/myisam_storedproc_06.test: Test case adjustments mysql-test/suite/funcs_1/t/myisam_storedproc_07.test: Test case adjustments mysql-test/suite/funcs_1/t/myisam_storedproc_08.test: Test case adjustments mysql-test/suite/funcs_1/t/myisam_storedproc_10.test: Test case adjustments mysql-test/suite/funcs_1/triggers/trig_frkey2.inc: Test case adjustments mysql-test/suite/funcs_1/triggers/triggers_0102.inc: Test case adjustments mysql-test/suite/funcs_1/triggers/triggers_03.inc: Test case adjustments mysql-test/suite/funcs_1/triggers/triggers_0407.inc: Test case adjustments mysql-test/suite/funcs_1/triggers/triggers_08.inc: Test case adjustments mysql-test/suite/funcs_1/triggers/triggers_09.inc: Test case adjustments mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc: Test case adjustments mysql-test/suite/funcs_1/views/func_view.inc: Test case adjustments mysql-test/suite/funcs_1/views/views_master.inc: Test case adjustments --- BUILD/Makefile.am | 8 + mysql-test/Makefile.am | 8 +- mysql-test/mysql-test-run.pl | 4 +- mysql-test/suite/funcs_1/README.txt | 10 +- .../funcs_1/datadict/datadict_bug_12777.inc | 12 +- .../suite/funcs_1/datadict/datadict_load.inc | 16 +- .../suite/funcs_1/include/innodb_tb1.inc | 119 +- .../suite/funcs_1/include/innodb_tb2.inc | 106 +- .../suite/funcs_1/include/innodb_tb3.inc | 122 +- .../suite/funcs_1/include/innodb_tb4.inc | 106 +- .../suite/funcs_1/include/memory_tb1.inc | 104 +- .../suite/funcs_1/include/memory_tb2.inc | 106 +- .../suite/funcs_1/include/memory_tb3.inc | 111 +- .../suite/funcs_1/include/memory_tb4.inc | 106 +- .../suite/funcs_1/include/myisam_tb1.inc | 118 +- .../suite/funcs_1/include/myisam_tb2.inc | 138 +- .../suite/funcs_1/include/myisam_tb3.inc | 122 +- .../suite/funcs_1/include/myisam_tb4.inc | 136 +- mysql-test/suite/funcs_1/include/sp_tb.inc | 83 +- .../suite/funcs_1/r/innodb_func_view.result | 1222 ++++++++++------- .../funcs_1/r/innodb_storedproc_02.result | 79 +- .../funcs_1/r/innodb_storedproc_03.result | 48 +- .../funcs_1/r/innodb_storedproc_06.result | 51 +- .../funcs_1/r/innodb_storedproc_07.result | 48 +- .../funcs_1/r/innodb_storedproc_08.result | 48 +- .../funcs_1/r/innodb_storedproc_10.result | 157 ++- .../suite/funcs_1/r/innodb_trig_0102.result | 185 +-- .../suite/funcs_1/r/innodb_trig_03.result | 345 ++--- .../suite/funcs_1/r/innodb_trig_0407.result | 167 +-- .../suite/funcs_1/r/innodb_trig_08.result | 322 +++-- .../suite/funcs_1/r/innodb_trig_09.result | 160 +-- .../funcs_1/r/innodb_trig_1011ext.result | 149 +- .../suite/funcs_1/r/innodb_trig_frkey.result | 119 +- .../suite/funcs_1/r/innodb_views.result | 206 +-- .../suite/funcs_1/r/is_columns_innodb.result | 585 ++++---- .../suite/funcs_1/r/is_columns_memory.result | 559 ++++---- .../suite/funcs_1/r/is_columns_myisam.result | 633 ++++----- .../suite/funcs_1/r/is_columns_ndb.result | 42 +- .../suite/funcs_1/r/is_tables_innodb.result | 585 ++++---- .../suite/funcs_1/r/is_tables_memory.result | 559 ++++---- .../suite/funcs_1/r/is_tables_myisam.result | 633 ++++----- .../suite/funcs_1/r/is_tables_ndb.result | 42 +- .../suite/funcs_1/r/memory_func_view.result | 1222 ++++++++++------- .../funcs_1/r/memory_storedproc_02.result | 79 +- .../funcs_1/r/memory_storedproc_03.result | 48 +- .../funcs_1/r/memory_storedproc_06.result | 51 +- .../funcs_1/r/memory_storedproc_07.result | 48 +- .../funcs_1/r/memory_storedproc_08.result | 48 +- .../funcs_1/r/memory_storedproc_10.result | 157 ++- .../suite/funcs_1/r/memory_trig_0102.result | 173 +-- .../suite/funcs_1/r/memory_trig_03.result | 333 ++--- .../suite/funcs_1/r/memory_trig_0407.result | 155 +-- .../suite/funcs_1/r/memory_trig_08.result | 310 +++-- .../suite/funcs_1/r/memory_trig_09.result | 148 +- .../funcs_1/r/memory_trig_1011ext.result | 137 +- .../suite/funcs_1/r/memory_views.result | 206 +-- .../suite/funcs_1/r/myisam_func_view.result | 1222 ++++++++++------- .../funcs_1/r/myisam_storedproc_02.result | 79 +- .../funcs_1/r/myisam_storedproc_03.result | 48 +- .../funcs_1/r/myisam_storedproc_06.result | 51 +- .../funcs_1/r/myisam_storedproc_07.result | 48 +- .../funcs_1/r/myisam_storedproc_08.result | 48 +- .../funcs_1/r/myisam_storedproc_10.result | 157 ++- .../suite/funcs_1/r/myisam_trig_0102.result | 185 +-- .../suite/funcs_1/r/myisam_trig_03.result | 345 ++--- .../suite/funcs_1/r/myisam_trig_0407.result | 167 +-- .../suite/funcs_1/r/myisam_trig_08.result | 322 +++-- .../suite/funcs_1/r/myisam_trig_09.result | 160 +-- .../funcs_1/r/myisam_trig_1011ext.result | 149 +- .../suite/funcs_1/r/myisam_views.result | 238 ++-- .../funcs_1/storedproc/cleanup_sp_tb.inc | 5 +- .../suite/funcs_1/storedproc/load_sp_tb.inc | 107 +- .../funcs_1/storedproc/storedproc_02.inc | 348 +++-- .../funcs_1/storedproc/storedproc_03.inc | 86 +- .../funcs_1/storedproc/storedproc_06.inc | 69 +- .../funcs_1/storedproc/storedproc_10.inc | 109 +- .../suite/funcs_1/t/innodb_trig_0407.test | 2 +- .../suite/funcs_1/t/is_basics_mixed.test | 2 +- .../suite/funcs_1/t/memory_storedproc_02.test | 4 +- .../suite/funcs_1/t/memory_storedproc_03.test | 4 +- .../suite/funcs_1/t/memory_storedproc_06.test | 4 +- .../suite/funcs_1/t/memory_storedproc_07.test | 4 +- .../suite/funcs_1/t/memory_storedproc_08.test | 4 +- .../suite/funcs_1/t/memory_storedproc_10.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_02.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_03.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_06.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_07.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_08.test | 4 +- .../suite/funcs_1/t/myisam_storedproc_10.test | 4 +- .../suite/funcs_1/triggers/trig_frkey2.inc | 102 +- .../suite/funcs_1/triggers/triggers_0102.inc | 228 +-- .../suite/funcs_1/triggers/triggers_03.inc | 175 +-- .../suite/funcs_1/triggers/triggers_0407.inc | 218 +-- .../suite/funcs_1/triggers/triggers_08.inc | 279 ++-- .../suite/funcs_1/triggers/triggers_09.inc | 154 +-- .../funcs_1/triggers/triggers_1011ext.inc | 42 +- mysql-test/suite/funcs_1/views/func_view.inc | 276 ++-- .../suite/funcs_1/views/views_master.inc | 6 +- 99 files changed, 9145 insertions(+), 7924 deletions(-) diff --git a/BUILD/Makefile.am b/BUILD/Makefile.am index d06106d4431..ee0f07864e8 100644 --- a/BUILD/Makefile.am +++ b/BUILD/Makefile.am @@ -27,6 +27,8 @@ EXTRA_DIST = FINISH.sh \ compile-alpha-cxx \ compile-alpha-debug \ compile-amd64-debug-max \ + compile-amd64-gcov \ + compile-amd64-gprof \ compile-amd64-max \ compile-amd64-max-sci \ compile-darwin-mwcc \ @@ -54,6 +56,8 @@ EXTRA_DIST = FINISH.sh \ compile-pentium-valgrind-max \ compile-pentium64-debug \ compile-pentium64-debug-max \ + compile-pentium64-gcov \ + compile-pentium64-gprof \ compile-pentium64-max-sci \ compile-pentium64-valgrind-max \ compile-ppc \ @@ -61,6 +65,10 @@ EXTRA_DIST = FINISH.sh \ compile-ppc-debug-max \ compile-ppc-debug-max-no-ndb \ compile-ppc-max \ + compile-solaris-amd64 \ + compile-solaris-amd64-debug \ + compile-solaris-amd64-forte \ + compile-solaris-amd64-forte-debug \ compile-solaris-sparc \ compile-solaris-sparc-debug \ compile-solaris-sparc-forte \ diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index 75d00457d14..c65c2fd82a4 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -45,7 +45,8 @@ dist-hook: mkdir -p $(distdir)/t $(distdir)/r $(distdir)/include \ $(distdir)/std_data \ $(distdir)/std_data/ndb_backup50_data_be $(distdir)/std_data/ndb_backup50_data_le \ - $(distdir)/lib + $(distdir)/lib \ + $(distdir)/funcs_1 -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t @@ -66,6 +67,7 @@ dist-hook: $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(distdir)/std_data/ndb_backup50_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(distdir)/std_data/ndb_backup50_data_le + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(distdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib -rm -rf `find $(distdir)/suite -type d -name SCCS` @@ -77,7 +79,8 @@ install-data-local: $(DESTDIR)$(testdir)/std_data \ $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be \ $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le \ - $(DESTDIR)$(testdir)/lib + $(DESTDIR)$(testdir)/lib \ + $(DESTDIR)$(testdir)/funcs_1 $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t @@ -103,6 +106,7 @@ install-data-local: $(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be $(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le + $(INSTALL_DATA) $(srcdir)/std_data/funcs_1/* $(DESTDIR)$(testdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib for f in `(cd $(srcdir); find suite -type f | grep -v SCCS)`; \ do \ diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 7c4677b8274..86e41c19284 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -3739,9 +3739,9 @@ sub mysqld_arguments ($$$$) { { # By default, prevent the started mysqld to access files outside of vardir my $secure_file_dir= $opt_vardir; - if ( $opt_suite ne "main" ) + if ( $opt_suite ne "main" and $opt_suite ne "funcs_1" ) { - # When running a suite other than default allow the mysqld + # When running a suite other than default or funcs_1 allow the mysqld # access to subdirs of mysql-test/ in order to make it possible # to "load data" from the suites data/ directory. $secure_file_dir= $glob_mysql_test_dir; diff --git a/mysql-test/suite/funcs_1/README.txt b/mysql-test/suite/funcs_1/README.txt index 7e98d1bc117..65f6226d0f2 100644 --- a/mysql-test/suite/funcs_1/README.txt +++ b/mysql-test/suite/funcs_1/README.txt @@ -25,7 +25,7 @@ SESSION_STATUS SESSION_VARIABLES -3. Some hints: +3. Some hints for maintainers of this suite: - SHOW TABLES ... LIKE '' does a case sensitive comparison between the tablename and the pattern. @@ -43,4 +43,12 @@ ERROR 42000: Access denied for user ... to database 'information_schema' DROP DATABASE INFORMATION_SCHEMA; ERROR 42000: Access denied for user ... to database 'INFORMATION_SCHEMA' + - Try to unify results by + --replace_result $engine_type + if we could expect that the results for storage engine variants of a + test differ only in the engine names. + This makes future maintenance easier. + - Avoid the use of include/show_msg*.inc. + They produce "SQL" noise which annoys during server debugging and can be + easy replaced by "--echo ...". diff --git a/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc b/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc index 0bca30b1dc3..5ba969fe4cb 100644 --- a/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc +++ b/mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc @@ -2,7 +2,7 @@ # # columns in INFORMATION_SCHEMA with VARCHAR(4096) on Linux and Intel or AMD -# processor are shown as VARCHAR(512) on Windows, VARCHAR(1023) on AIX and HPUX, +# processor are shown as VARCHAR(512) on Windows, VARCHAR(1023) on AIX and HPUX, # VARCHAR(1024) on Solaris10, ... see below and in bug #12777 for details. # So we need to replace the output for these systems. There may be other still # not tested / detected systems. @@ -10,10 +10,10 @@ # Setting the variables used below has been moved to the beginning of the datadict # tests to "suite/funcs_1/datadict/datadict_load.inc". # -# SELECT character_maximum_length INTO @CML -# FROM information_schema.columns -# WHERE table_schema = 'information_schema' -# AND table_name = 'columns' +# SELECT character_maximum_length INTO @CML +# FROM information_schema.columns +# WHERE table_schema = 'information_schema' +# AND table_name = 'columns' # AND column_name = 'table_catalog'; # this enables the --replace_result only if needed, using this we never replace @@ -31,7 +31,7 @@ if ($bug_12777_0512) --replace_result 512 4096 1536 12288 } -# aix52, aix52-64bit, hp3750, hp3750-64bit, hpux11, hpux11-64bit, +# aix52, aix52-64bit, hp3750, hp3750-64bit, hpux11, hpux11-64bit, if ($bug_12777_1023) { # nnnn 3*n diff --git a/mysql-test/suite/funcs_1/datadict/datadict_load.inc b/mysql-test/suite/funcs_1/datadict/datadict_load.inc index 542f3bb8eb6..67b25b555ed 100644 --- a/mysql-test/suite/funcs_1/datadict/datadict_load.inc +++ b/mysql-test/suite/funcs_1/datadict/datadict_load.inc @@ -12,14 +12,14 @@ --disable_query_log # ------------------------------------------------------------------------------ -# Get the size of ONE known colum and check the size against some values to -# be able to use the correct --replace_result statement. Using this only the -# one pair of 'wrong' values is replaced and not all occurrencies of all +# Get the size of ONE known colum and check the size against some values to +# be able to use the correct --replace_result statement. Using this only the +# one pair of 'wrong' values is replaced and not all occurrencies of all # possible pairs of values. See bug #12777 for details. -SELECT character_maximum_length INTO @CML - FROM information_schema.columns - WHERE table_schema = 'information_schema' - AND table_name = 'columns' +SELECT character_maximum_length INTO @CML + FROM information_schema.columns + WHERE table_schema = 'information_schema' + AND table_name = 'columns' AND column_name = 'table_catalog'; let $bug_12777_0512= `SELECT @CML = 512`; @@ -53,7 +53,7 @@ let $SERVER_NAME= `SELECT DISTINCT host FROM mysql.user WHERE host NOT In ("loca # load tables # ----------- # -# this was part of the 3 files $_datadict.test, but it has been moved +# this was part of the 3 files $_datadict.test, but it has been moved # here to have only one place where all preparation for the test is done. # ################################################################################ diff --git a/mysql-test/suite/funcs_1/include/innodb_tb1.inc b/mysql-test/suite/funcs_1/include/innodb_tb1.inc index 115d8b6318d..4fede496478 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb1.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb1.inc @@ -4,66 +4,67 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = innodb; - ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb1.txt' +into table tb1; diff --git a/mysql-test/suite/funcs_1/include/innodb_tb2.inc b/mysql-test/suite/funcs_1/include/innodb_tb2.inc index 99c09c1d963..b9a0910a0af 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb2.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb2.inc @@ -4,58 +4,60 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; diff --git a/mysql-test/suite/funcs_1/include/innodb_tb3.inc b/mysql-test/suite/funcs_1/include/innodb_tb3.inc index d8397b2b581..b8562d7acf2 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb3.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb3.inc @@ -4,65 +4,67 @@ drop table if exists tb3 ; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/innodb_tb4.inc b/mysql-test/suite/funcs_1/include/innodb_tb4.inc index 2cff9e57075..ef8fc240eca 100644 --- a/mysql-test/suite/funcs_1/include/innodb_tb4.inc +++ b/mysql-test/suite/funcs_1/include/innodb_tb4.inc @@ -4,56 +4,56 @@ drop table if exists tb4; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -64,5 +64,7 @@ f240 varchar(2000) unicode, f241 char(100) unicode ) engine = innodb; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/innodb_tb4.txt' +into table tb4; diff --git a/mysql-test/suite/funcs_1/include/memory_tb1.inc b/mysql-test/suite/funcs_1/include/memory_tb1.inc index 7d66443c62f..3a4ebb0c484 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb1.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb1.inc @@ -4,57 +4,59 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f1 char, +f2 char binary, +f3 char ascii, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb1.txt' +into table tb1; diff --git a/mysql-test/suite/funcs_1/include/memory_tb2.inc b/mysql-test/suite/funcs_1/include/memory_tb2.inc index 869a4904ce0..c059e565c64 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb2.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb2.inc @@ -4,58 +4,60 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; diff --git a/mysql-test/suite/funcs_1/include/memory_tb3.inc b/mysql-test/suite/funcs_1/include/memory_tb3.inc index 5aa56d06ede..b5d4bb93f12 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb3.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb3.inc @@ -4,60 +4,61 @@ drop table if exists tb3; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; - +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/memory_tb4.inc b/mysql-test/suite/funcs_1/include/memory_tb4.inc index 97bc04118bd..f9cc1d53c52 100644 --- a/mysql-test/suite/funcs_1/include/memory_tb4.inc +++ b/mysql-test/suite/funcs_1/include/memory_tb4.inc @@ -4,56 +4,56 @@ drop table if exists tb4 ; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f236 char(95) unicode, f241 char(255) unicode, @@ -63,5 +63,7 @@ f239 varbinary(0), f240 varchar(1200) unicode ) engine = memory; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb4.txt' +into table tb4; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb1.inc b/mysql-test/suite/funcs_1/include/myisam_tb1.inc index f2a8be4f5d6..da740cffaf3 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb1.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb1.inc @@ -4,65 +4,67 @@ drop table if exists tb1 ; --enable_warnings create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char, +f2 char binary, +f3 char ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = myisam; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb1.txt' into table tb1 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb1.txt' +into table tb1; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb2.inc b/mysql-test/suite/funcs_1/include/myisam_tb2.inc index 528031700cb..c878b1853f0 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb2.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb2.inc @@ -4,77 +4,79 @@ drop table if exists tb2 ; --enable_warnings create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; # The original columns. They are replaced by varbinary, because the funcs_1 tests should # not depend on the optional availability of the geometry feature. -# f110 geometry null, -# f111 point null , -# f112 linestring null , -# f113 polygon null , -# f114 geometrycollection , -# f115 multipoint null , -# f116 multilinestring null, -# f117 multipolygon null +# f110 geometry null, +# f111 point null , +# f112 linestring null , +# f113 polygon null , +# f114 geometrycollection , +# f115 multipoint null , +# f116 multilinestring null, +# f117 multipolygon null ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb3.inc b/mysql-test/suite/funcs_1/include/myisam_tb3.inc index aca35c0e11b..4ee6388f3bc 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb3.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb3.inc @@ -4,65 +4,67 @@ drop table if exists tb3 ; --enable_warnings create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; diff --git a/mysql-test/suite/funcs_1/include/myisam_tb4.inc b/mysql-test/suite/funcs_1/include/myisam_tb4.inc index d9051847c45..1f7d19fd061 100644 --- a/mysql-test/suite/funcs_1/include/myisam_tb4.inc +++ b/mysql-test/suite/funcs_1/include/myisam_tb4.inc @@ -4,64 +4,64 @@ drop table if exists tb4 ; --enable_warnings create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), -f226 set("1set","2set"), -f227 VARBINARY(64), -f228 VARBINARY(27), -f229 VARBINARY(64), -f230 VARBINARY(192), -f231 VARBINARY(192), -f232 VARBINARY(27), -f233 VARBINARY(64), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), +f226 set("1set","2set"), +f227 VARBINARY(64), +f228 VARBINARY(27), +f229 VARBINARY(64), +f230 VARBINARY(192), +f231 VARBINARY(192), +f232 VARBINARY(27), +f233 VARBINARY(64), f234 VARBINARY(192), f235 char(255) unicode, f236 char(60) ascii, @@ -75,14 +75,16 @@ f242 bit(30) # The original columns. They are replaced by varbinary, because the funcs_1 tests should # not depend on the optional availability of the geometry feature. -# f227 geometry, -# f228 point, -# f229 linestring, -# f230 polygon, -# f231 geometrycollection, -# f232 multipoint, -# f233 multilinestring, +# f227 geometry, +# f228 point, +# f229 linestring, +# f230 polygon, +# f231 geometrycollection, +# f232 multipoint, +# f233 multilinestring, # f234 multipolygon, ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb4.txt' into table tb4 ; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/myisam_tb4.txt' +into table tb4; diff --git a/mysql-test/suite/funcs_1/include/sp_tb.inc b/mysql-test/suite/funcs_1/include/sp_tb.inc index b37f2cc7ffe..ae1114fb5f1 100644 --- a/mysql-test/suite/funcs_1/include/sp_tb.inc +++ b/mysql-test/suite/funcs_1/include/sp_tb.inc @@ -5,29 +5,46 @@ USE test; --disable_warnings DROP TABLE IF EXISTS t1, t2, t4, t10, t11; --enable_warnings -eval CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; -eval CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +eval +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +eval +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; --disable_warnings drop TABLE if exists t3; --enable_warnings -eval CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +eval +CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; #--------------------------- @@ -37,9 +54,12 @@ drop database if exists test4; CREATE database test4; use test4; -eval CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +eval +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; #--------------------------- use test; @@ -47,18 +67,23 @@ use test; --disable_warnings drop TABLE if exists t7, t8; --enable_warnings -eval CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = $engine_type; -eval CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +eval +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = $engine_type; +eval +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; --disable_warnings drop TABLE if exists t9; --enable_warnings eval CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval LOAD DATA INFILE '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +--replace_result $MYSQLTEST_VARDIR +eval +LOAD DATA INFILE '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; diff --git a/mysql-test/suite/funcs_1/r/innodb_func_view.result b/mysql-test/suite/funcs_1/r/innodb_func_view.result index f901bcf8246..c2689a36801 100644 --- a/mysql-test/suite/funcs_1/r/innodb_func_view.result +++ b/mysql-test/suite/funcs_1/r/innodb_func_view.result @@ -1,7 +1,3 @@ - -! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables --------------------------------------------------------------------------------- DROP TABLE IF EXISTS t1_selects, t1_modes, t1_values; DROP VIEW IF EXISTS v1; CREATE TABLE t1_values @@ -9,7 +5,7 @@ CREATE TABLE t1_values id BIGINT AUTO_INCREMENT, select_id BIGINT, PRIMARY KEY(id) -) ENGINE = 'InnoDB' ; +) ENGINE = ; ALTER TABLE t1_values ADD my_char_30 CHAR(30); ALTER TABLE t1_values ADD my_varchar_1000 VARCHAR(1000); ALTER TABLE t1_values ADD my_binary_30 BINARY(30); @@ -39,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -54,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -89,6 +85,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 4; INSERT INTO t1_values SET select_id = @select_id, my_bigint = -25; +##### 1.1.1. CAST --> BINARY +##### 1.1.2. CAST --> CHAR +##### 1.1.3. CAST --> DATE INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27'; INSERT INTO t1_values SET select_id = @select_id, @@ -101,6 +100,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 20050627; INSERT INTO t1_values SET select_id = @select_id, my_double = +20.050627E+6; +##### 1.1.4. CAST --> DATETIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -113,6 +113,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 200506271758; INSERT INTO t1_values SET select_id = @select_id, my_double = +0.0200506271758E+13; +##### 1.1.5. CAST --> TIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -123,10 +124,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, my_bigint = 1758; - -some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = +1.758E+3; +##### 1.1.6. CAST --> DECIMAL INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, @@ -135,51 +135,39 @@ INSERT INTO t1_values SET select_id = @select_id, my_binary_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '-3333.3333'; - -some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = -0.33333333E+4; +##### 1.1.7. CAST --> SIGNED INTEGER "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later" --------------------------------------------------------------------------------- - -some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result + Status: To be fixed later" -------------------------------------------------------------------------------- +##### 1.1.8. CAST --> UNSIGNED INTEGER "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809" + The file with expected results suffers from Bug 5913" -------------------------------------------------------------------------------- some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast +Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; - -"Attention: IF(my_year IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails." --------------------------------------------------------------------------------- SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_varchar_1000), @@ -192,22 +180,20 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; - -"Attention: LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, -because there are 32/64 Bit differences --------------------------------------------------------------------------------- +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_double), my_double, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varchar_1000), @@ -216,8 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -299,19 +287,19 @@ SET sql_mode = ''; -------------------------------------------------------------------------------- CREATE VIEW v1 AS SELECT my_char_30, id FROM t1_values; SELECT my_char_30, id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL; +WHERE select_id = 193 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL); +WHERE select_id = 193 OR select_id IS NULL) order by id; DROP VIEW v1; CREATE VIEW v1 AS SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values; SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL; +WHERE select_id = 192 OR select_id IS NULL order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -323,7 +311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat(_latin1'A',`t1_values`.`my_char_30`) AS `CONCAT('A',my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL); +WHERE select_id = 192 OR select_id IS NULL) order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -337,13 +325,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL; +WHERE select_id = 191 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varbinary_1000`) AS `LTRIM(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL); +WHERE select_id = 191 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -351,13 +339,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values; SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL; +WHERE select_id = 190 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_binary_30`) AS `LTRIM(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL); +WHERE select_id = 190 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -365,13 +353,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL; +WHERE select_id = 189 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varchar_1000`) AS `LTRIM(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL); +WHERE select_id = 189 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -379,13 +367,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values; SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL; +WHERE select_id = 188 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_char_30`) AS `LTRIM(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL); +WHERE select_id = 188 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -393,13 +381,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL; +WHERE select_id = 187 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varbinary_1000`) AS `LOWER(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL); +WHERE select_id = 187 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -407,13 +395,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values; SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL; +WHERE select_id = 186 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_binary_30`) AS `LOWER(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL); +WHERE select_id = 186 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -421,13 +409,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL; +WHERE select_id = 185 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LOWER(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL); +WHERE select_id = 185 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -435,13 +423,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_char_30), my_char_30, id FROM t1_values; SELECT LOWER(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL; +WHERE select_id = 184 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_char_30`) AS `LOWER(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL); +WHERE select_id = 184 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -449,13 +437,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL; +WHERE select_id = 183 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_decimal`) AS `LOCATE('-', ' - -ABC', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL); +WHERE select_id = 183 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -463,13 +451,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL; +WHERE select_id = 182 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_double`) AS `LOCATE('-', ' - -ABC', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL); +WHERE select_id = 182 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -477,13 +465,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL; +WHERE select_id = 181 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_bigint`) AS `LOCATE('-', ' - -ABC', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL); +WHERE select_id = 181 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -491,13 +479,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL; +WHERE select_id = 180 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varbinary_1000`,3) AS `LOCATE('-', my_varbinary_1000, 3)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL); +WHERE select_id = 180 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -505,13 +493,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values; SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL; +WHERE select_id = 179 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_binary_30`,3) AS `LOCATE('-', my_binary_30, 3)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL); +WHERE select_id = 179 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -519,13 +507,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values; SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL; +WHERE select_id = 178 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varchar_1000`,3) AS `LOCATE('-', my_varchar_1000, 3)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL); +WHERE select_id = 178 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -533,13 +521,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values; SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL; +WHERE select_id = 177 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_char_30`,3) AS `LOCATE('-', my_char_30, 3)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL); +WHERE select_id = 177 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -547,13 +535,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL; +WHERE select_id = 176 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varbinary_1000, my_binary_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL); +WHERE select_id = 176 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -561,13 +549,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL; +WHERE select_id = 175 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varbinary_1000, my_varchar_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL); +WHERE select_id = 175 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -575,13 +563,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL; +WHERE select_id = 174 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varbinary_1000, my_char_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL); +WHERE select_id = 174 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -589,13 +577,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL; +WHERE select_id = 173 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varbinary_1000, my_varbinary_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL); +WHERE select_id = 173 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -603,13 +591,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL; +WHERE select_id = 172 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_binary_30, my_varbinary_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL); +WHERE select_id = 172 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -617,13 +605,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL; +WHERE select_id = 171 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_binary_30, my_varchar_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL); +WHERE select_id = 171 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -631,13 +619,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values; SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL; +WHERE select_id = 170 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_binary_30, my_char_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL); +WHERE select_id = 170 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -645,13 +633,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values; SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL; +WHERE select_id = 169 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_binary_30, my_binary_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL); +WHERE select_id = 169 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -659,13 +647,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL; +WHERE select_id = 168 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varchar_1000, my_varbinary_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL); +WHERE select_id = 168 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -673,13 +661,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL; +WHERE select_id = 167 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varchar_1000, my_binary_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL); +WHERE select_id = 167 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -687,13 +675,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL; +WHERE select_id = 166 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varchar_1000, my_char_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL); +WHERE select_id = 166 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -701,13 +689,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL; +WHERE select_id = 165 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varchar_1000, my_varchar_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL); +WHERE select_id = 165 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -715,13 +703,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL; +WHERE select_id = 164 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_char_30, my_varbinary_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL); +WHERE select_id = 164 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -729,13 +717,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values; SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL; +WHERE select_id = 163 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_char_30, my_binary_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL); +WHERE select_id = 163 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -743,13 +731,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL; +WHERE select_id = 162 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_char_30, my_varchar_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL); +WHERE select_id = 162 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -757,13 +745,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values; SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL; +WHERE select_id = 161 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_char_30, my_char_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL); +WHERE select_id = 161 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -771,13 +759,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL; +WHERE select_id = 160 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varbinary_1000`) AS `LOCATE('char', my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL); +WHERE select_id = 160 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -785,13 +773,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values; SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL; +WHERE select_id = 159 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_binary_30`) AS `LOCATE('char', my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL); +WHERE select_id = 159 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -799,13 +787,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL; +WHERE select_id = 158 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varchar_1000`) AS `LOCATE('char', my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL); +WHERE select_id = 158 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -813,46 +801,50 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values; SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL; +WHERE select_id = 157 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `LOCATE('char', my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL); +WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../log/current_test'), id FROM t1_values; -SELECT LOAD_FILE('../log/current_test'), id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL; -LOAD_FILE('../log/current_test') id -CURRENT_TEST: innodb_func_view +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values +WHERE select_id = 156 OR select_id IS NULL order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: innodb_func_view +Here is content from load_file 2 -CURRENT_TEST: innodb_func_view +Here is content from load_file 3 -CURRENT_TEST: innodb_func_view +Here is content from load_file 4 -CURRENT_TEST: innodb_func_view +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'../log/current_test') AS `LOAD_FILE('../log/current_test')`,`t1_values`.`id` AS `id` from `t1_values` +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL); -LOAD_FILE('../log/current_test') id -CURRENT_TEST: innodb_func_view +WHERE select_id = 156 OR select_id IS NULL) order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: innodb_func_view +Here is content from load_file 2 -CURRENT_TEST: innodb_func_view +Here is content from load_file 3 -CURRENT_TEST: innodb_func_view +Here is content from load_file 4 -CURRENT_TEST: innodb_func_view +Here is content from load_file 5 DROP VIEW v1; @@ -861,13 +853,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL; +WHERE select_id = 155 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varbinary_1000`) AS `LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL); +WHERE select_id = 155 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -875,13 +867,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL; +WHERE select_id = 154 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_binary_30`) AS `LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL); +WHERE select_id = 154 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -889,13 +881,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL; +WHERE select_id = 153 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varchar_1000`) AS `LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL); +WHERE select_id = 153 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -903,19 +895,49 @@ CREATE VIEW v1 AS SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL; +WHERE select_id = 152 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_char_30`) AS `LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL); +WHERE select_id = 152 OR select_id IS NULL) order by id; +DROP VIEW v1; + + +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values; SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL; +WHERE select_id = 150 OR select_id IS NULL order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -930,7 +952,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL); +WHERE select_id = 150 OR select_id IS NULL) order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -943,9 +965,33 @@ Error 1292 Truncated incorrect DECIMAL value: '' DROP VIEW v1; +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_bigint`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values; SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL; +WHERE select_id = 148 OR select_id IS NULL order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -957,7 +1003,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varbinary_1000`,2) AS `LEFT(my_varbinary_1000, 2)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL); +WHERE select_id = 148 OR select_id IS NULL) order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -969,19 +1015,19 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values; SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL; +WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL); +WHERE select_id = 147 OR select_id IS NULL) order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 2 @@ -993,7 +1039,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values; SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL; +WHERE select_id = 146 OR select_id IS NULL order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1005,7 +1051,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varchar_1000`,2) AS `LEFT(my_varchar_1000, 2)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL); +WHERE select_id = 146 OR select_id IS NULL) order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1017,7 +1063,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values; SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL; +WHERE select_id = 145 OR select_id IS NULL order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1029,7 +1075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_char_30`,2) AS `LEFT(my_char_30, 2)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL); +WHERE select_id = 145 OR select_id IS NULL) order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1043,13 +1089,13 @@ CREATE VIEW v1 AS SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL; +WHERE select_id = 144 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LCASE(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL); +WHERE select_id = 144 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1057,13 +1103,13 @@ CREATE VIEW v1 AS SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values; SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL; +WHERE select_id = 143 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `INSTR(my_char_30, 'char')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL); +WHERE select_id = 143 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1071,7 +1117,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL; +WHERE select_id = 142 OR select_id IS NULL order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1083,7 +1129,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varbinary_1000`) AS `BIT_LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL); +WHERE select_id = 142 OR select_id IS NULL) order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1097,19 +1143,19 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL; +WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL); +WHERE select_id = 141 OR select_id IS NULL) order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 240 2 @@ -1123,7 +1169,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL; +WHERE select_id = 140 OR select_id IS NULL order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1135,7 +1181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varchar_1000`) AS `BIT_LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL); +WHERE select_id = 140 OR select_id IS NULL) order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1149,7 +1195,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL; +WHERE select_id = 139 OR select_id IS NULL order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1161,7 +1207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_char_30`) AS `BIT_LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL); +WHERE select_id = 139 OR select_id IS NULL) order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1175,7 +1221,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values; SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL; +WHERE select_id = 138 OR select_id IS NULL order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1187,7 +1233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_year`,_latin1'IS_NULL') AS `IFNULL(my_year,'IS_NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL); +WHERE select_id = 138 OR select_id IS NULL) order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1201,7 +1247,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values; SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL; +WHERE select_id = 137 OR select_id IS NULL order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1213,7 +1259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_time`,_latin1'IS_NULL') AS `IFNULL(my_time,'IS_NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL); +WHERE select_id = 137 OR select_id IS NULL) order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1227,7 +1273,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values; SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL; +WHERE select_id = 136 OR select_id IS NULL order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1239,7 +1285,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_timestamp`,_latin1'IS_NULL') AS `IFNULL(my_timestamp,'IS_NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL); +WHERE select_id = 136 OR select_id IS NULL) order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1253,7 +1299,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values; SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL; +WHERE select_id = 135 OR select_id IS NULL order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1265,7 +1311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_date`,_latin1'IS_NULL') AS `IFNULL(my_date,'IS_NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL); +WHERE select_id = 135 OR select_id IS NULL) order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1279,7 +1325,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values; SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL; +WHERE select_id = 134 OR select_id IS NULL order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1291,7 +1337,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_datetime`,_latin1'IS_NULL') AS `IFNULL(my_datetime,'IS_NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL); +WHERE select_id = 134 OR select_id IS NULL) order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1305,7 +1351,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values; SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL; +WHERE select_id = 133 OR select_id IS NULL order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1317,7 +1363,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_double`,_latin1'IS_NULL') AS `IFNULL(my_double,'IS_NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL); +WHERE select_id = 133 OR select_id IS NULL) order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1331,7 +1377,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values; SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL; +WHERE select_id = 132 OR select_id IS NULL order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1343,7 +1389,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_decimal`,_latin1'IS_NULL') AS `IFNULL(my_decimal,'IS_NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL); +WHERE select_id = 132 OR select_id IS NULL) order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1357,7 +1403,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values; SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL; +WHERE select_id = 131 OR select_id IS NULL order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1369,7 +1415,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_bigint`,_latin1'IS_NULL') AS `IFNULL(my_bigint,'IS_NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL); +WHERE select_id = 131 OR select_id IS NULL) order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1383,7 +1429,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values; SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL; +WHERE select_id = 130 OR select_id IS NULL order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1395,7 +1441,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varbinary_1000`,_latin1'IS_NULL') AS `IFNULL(my_varbinary_1000,'IS_NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL); +WHERE select_id = 130 OR select_id IS NULL) order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1409,19 +1455,19 @@ CREATE VIEW v1 AS SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values; SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL; +WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,_latin1'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL); +WHERE select_id = 129 OR select_id IS NULL) order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 2 @@ -1435,7 +1481,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values; SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL; +WHERE select_id = 128 OR select_id IS NULL order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1447,7 +1493,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varchar_1000`,_latin1'IS_NULL') AS `IFNULL(my_varchar_1000,'IS_NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL); +WHERE select_id = 128 OR select_id IS NULL) order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1461,7 +1507,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values; SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL; +WHERE select_id = 127 OR select_id IS NULL order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1473,7 +1519,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_char_30`,_latin1'IS_NULL') AS `IFNULL(my_char_30,'IS_NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL); +WHERE select_id = 127 OR select_id IS NULL) order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1487,7 +1533,7 @@ CREATE VIEW v1 AS SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values; SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL; +WHERE select_id = 126 OR select_id IS NULL order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1501,7 +1547,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL); +WHERE select_id = 126 OR select_id IS NULL) order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1516,7 +1562,7 @@ CREATE VIEW v1 AS SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values; SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL; +WHERE select_id = 125 OR select_id IS NULL order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1530,7 +1576,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL); +WHERE select_id = 125 OR select_id IS NULL) order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1545,7 +1591,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL; +WHERE select_id = 124 OR select_id IS NULL order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1559,7 +1605,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL); +WHERE select_id = 124 OR select_id IS NULL) order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1574,7 +1620,7 @@ CREATE VIEW v1 AS SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values; SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL; +WHERE select_id = 123 OR select_id IS NULL order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1588,7 +1634,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL); +WHERE select_id = 123 OR select_id IS NULL) order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1603,7 +1649,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values; SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL; +WHERE select_id = 122 OR select_id IS NULL order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1617,7 +1663,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL); +WHERE select_id = 122 OR select_id IS NULL) order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1632,7 +1678,7 @@ CREATE VIEW v1 AS SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values; SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL; +WHERE select_id = 121 OR select_id IS NULL order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1646,7 +1692,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL); +WHERE select_id = 121 OR select_id IS NULL) order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1661,7 +1707,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values; SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL; +WHERE select_id = 120 OR select_id IS NULL order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1675,7 +1721,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL); +WHERE select_id = 120 OR select_id IS NULL) order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1690,7 +1736,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values; SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL; +WHERE select_id = 119 OR select_id IS NULL order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1704,7 +1750,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL); +WHERE select_id = 119 OR select_id IS NULL) order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1719,7 +1765,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL; +WHERE select_id = 118 OR select_id IS NULL order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1733,7 +1779,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL); +WHERE select_id = 118 OR select_id IS NULL) order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1748,21 +1794,21 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL; +WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),_latin1'IS NULL',_latin1'IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL); +WHERE select_id = 117 OR select_id IS NULL) order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 @@ -1777,7 +1823,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL; +WHERE select_id = 116 OR select_id IS NULL order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1791,7 +1837,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL); +WHERE select_id = 116 OR select_id IS NULL) order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1806,7 +1852,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values; SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL; +WHERE select_id = 115 OR select_id IS NULL order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1820,7 +1866,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL); +WHERE select_id = 115 OR select_id IS NULL) order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1835,7 +1881,7 @@ CREATE VIEW v1 AS SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values; SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL; +WHERE select_id = 114 OR select_id IS NULL order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1847,7 +1893,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_year`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_year, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL); +WHERE select_id = 114 OR select_id IS NULL) order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1861,7 +1907,7 @@ CREATE VIEW v1 AS SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values; SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL; +WHERE select_id = 113 OR select_id IS NULL order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1873,7 +1919,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_time`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_time, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL); +WHERE select_id = 113 OR select_id IS NULL) order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1887,7 +1933,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL; +WHERE select_id = 112 OR select_id IS NULL order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1899,7 +1945,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_timestamp`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL); +WHERE select_id = 112 OR select_id IS NULL) order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1913,7 +1959,7 @@ CREATE VIEW v1 AS SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values; SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL; +WHERE select_id = 111 OR select_id IS NULL order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1925,7 +1971,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_date`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_date, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL); +WHERE select_id = 111 OR select_id IS NULL) order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1939,7 +1985,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values; SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL; +WHERE select_id = 110 OR select_id IS NULL order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1951,7 +1997,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_datetime`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_datetime, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL); +WHERE select_id = 110 OR select_id IS NULL) order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1965,7 +2011,7 @@ CREATE VIEW v1 AS SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values; SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL; +WHERE select_id = 109 OR select_id IS NULL order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1977,7 +2023,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_double`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_double, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL); +WHERE select_id = 109 OR select_id IS NULL) order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1991,7 +2037,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values; SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL; +WHERE select_id = 108 OR select_id IS NULL order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2003,7 +2049,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_decimal`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_decimal, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL); +WHERE select_id = 108 OR select_id IS NULL) order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2017,7 +2063,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values; SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL; +WHERE select_id = 107 OR select_id IS NULL order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2029,7 +2075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_bigint`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_bigint, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL); +WHERE select_id = 107 OR select_id IS NULL) order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2043,7 +2089,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL; +WHERE select_id = 106 OR select_id IS NULL order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2055,7 +2101,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL); +WHERE select_id = 106 OR select_id IS NULL) order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2069,13 +2115,13 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL; +WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2086,7 +2132,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL); +WHERE select_id = 105 OR select_id IS NULL) order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2105,7 +2151,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL; +WHERE select_id = 104 OR select_id IS NULL order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2117,7 +2163,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL); +WHERE select_id = 104 OR select_id IS NULL) order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2131,7 +2177,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values; SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL; +WHERE select_id = 103 OR select_id IS NULL order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2146,7 +2192,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL); +WHERE select_id = 103 OR select_id IS NULL) order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2159,11 +2205,11 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL; +WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2175,7 +2221,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using koi8r) AS `CONVERT(my_varbinary_1000 USING koi8r)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL); +WHERE select_id = 102 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2185,23 +2231,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL; +WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL); +WHERE select_id = 101 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 2 @@ -2211,11 +2257,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL; +WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2227,7 +2273,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using koi8r) AS `CONVERT(my_varchar_1000 USING koi8r)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL); +WHERE select_id = 100 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2237,11 +2283,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL; +WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2253,7 +2299,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using koi8r) AS `CONVERT(my_char_30 USING koi8r)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL); +WHERE select_id = 99 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2263,11 +2309,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL; +WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2279,7 +2325,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using utf8) AS `CONVERT(my_varbinary_1000 USING utf8)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL); +WHERE select_id = 98 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2289,23 +2335,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL; +WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL); +WHERE select_id = 97 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 2 @@ -2315,11 +2361,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL; +WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2331,7 +2377,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using utf8) AS `CONVERT(my_varchar_1000 USING utf8)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL); +WHERE select_id = 96 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2341,11 +2387,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL; +WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2357,7 +2403,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using utf8) AS `CONVERT(my_char_30 USING utf8)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL); +WHERE select_id = 95 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2371,7 +2417,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL; +WHERE select_id = 94 OR select_id IS NULL order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2383,7 +2429,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as unsigned) AS `CAST(my_year AS UNSIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL); +WHERE select_id = 94 OR select_id IS NULL) order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2397,7 +2443,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL; +WHERE select_id = 93 OR select_id IS NULL order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2409,7 +2455,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as unsigned) AS `CAST(my_time AS UNSIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL); +WHERE select_id = 93 OR select_id IS NULL) order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2423,7 +2469,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL; +WHERE select_id = 92 OR select_id IS NULL order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2435,7 +2481,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as unsigned) AS `CAST(my_timestamp AS UNSIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL); +WHERE select_id = 92 OR select_id IS NULL) order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2449,7 +2495,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL; +WHERE select_id = 91 OR select_id IS NULL order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2461,7 +2507,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as unsigned) AS `CAST(my_date AS UNSIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL); +WHERE select_id = 91 OR select_id IS NULL) order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2475,7 +2521,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL; +WHERE select_id = 90 OR select_id IS NULL order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2487,7 +2533,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as unsigned) AS `CAST(my_datetime AS UNSIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL); +WHERE select_id = 90 OR select_id IS NULL) order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2497,11 +2543,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL) order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL; +WHERE select_id = 88 OR select_id IS NULL order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2517,7 +2595,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL); +WHERE select_id = 88 OR select_id IS NULL) order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2535,7 +2613,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL; +WHERE select_id = 87 OR select_id IS NULL order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2547,7 +2625,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as unsigned) AS `CAST(my_bigint AS UNSIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL); +WHERE select_id = 87 OR select_id IS NULL) order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2561,7 +2639,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL; +WHERE select_id = 86 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2578,7 +2656,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as unsigned) AS `CAST(my_varbinary_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL); +WHERE select_id = 86 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2597,13 +2675,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL; +WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2615,7 +2693,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as unsigned) AS `CAST(my_binary_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL); +WHERE select_id = 85 OR select_id IS NULL) order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2635,7 +2713,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL; +WHERE select_id = 84 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2652,7 +2730,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as unsigned) AS `CAST(my_varchar_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL); +WHERE select_id = 84 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2671,7 +2749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL; +WHERE select_id = 83 OR select_id IS NULL order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2688,7 +2766,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as unsigned) AS `CAST(my_char_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL); +WHERE select_id = 83 OR select_id IS NULL) order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2707,7 +2785,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL; +WHERE select_id = 82 OR select_id IS NULL order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2719,7 +2797,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as signed) AS `CAST(my_year AS SIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL); +WHERE select_id = 82 OR select_id IS NULL) order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2733,7 +2811,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL; +WHERE select_id = 81 OR select_id IS NULL order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2745,7 +2823,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as signed) AS `CAST(my_time AS SIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL); +WHERE select_id = 81 OR select_id IS NULL) order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2759,7 +2837,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL; +WHERE select_id = 80 OR select_id IS NULL order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2771,7 +2849,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as signed) AS `CAST(my_timestamp AS SIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL); +WHERE select_id = 80 OR select_id IS NULL) order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2785,7 +2863,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL; +WHERE select_id = 79 OR select_id IS NULL order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2797,7 +2875,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as signed) AS `CAST(my_date AS SIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL); +WHERE select_id = 79 OR select_id IS NULL) order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2811,7 +2889,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL; +WHERE select_id = 78 OR select_id IS NULL order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2823,7 +2901,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as signed) AS `CAST(my_datetime AS SIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL); +WHERE select_id = 78 OR select_id IS NULL) order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2833,11 +2911,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL) order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL; +WHERE select_id = 76 OR select_id IS NULL order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2852,7 +2962,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL); +WHERE select_id = 76 OR select_id IS NULL) order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2869,7 +2979,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL; +WHERE select_id = 75 OR select_id IS NULL order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2881,7 +2991,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as signed) AS `CAST(my_bigint AS SIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL); +WHERE select_id = 75 OR select_id IS NULL) order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2895,7 +3005,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL; +WHERE select_id = 74 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2911,7 +3021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as signed) AS `CAST(my_varbinary_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL); +WHERE select_id = 74 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2929,13 +3039,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL; +WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2946,7 +3056,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as signed) AS `CAST(my_binary_30 AS SIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL); +WHERE select_id = 73 OR select_id IS NULL) order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2965,7 +3075,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL; +WHERE select_id = 72 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2981,7 +3091,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as signed) AS `CAST(my_varchar_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL); +WHERE select_id = 72 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2999,7 +3109,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL; +WHERE select_id = 71 OR select_id IS NULL order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3015,7 +3125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as signed) AS `CAST(my_char_30 AS SIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL); +WHERE select_id = 71 OR select_id IS NULL) order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3033,7 +3143,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values; SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL; +WHERE select_id = 70 OR select_id IS NULL order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3045,7 +3155,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as decimal(37,2)) AS `CAST(my_year AS DECIMAL(37,2))`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL); +WHERE select_id = 70 OR select_id IS NULL) order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3059,7 +3169,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values; SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL; +WHERE select_id = 69 OR select_id IS NULL order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3071,7 +3181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as decimal(37,2)) AS `CAST(my_time AS DECIMAL(37,2))`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL); +WHERE select_id = 69 OR select_id IS NULL) order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3085,7 +3195,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL; +WHERE select_id = 68 OR select_id IS NULL order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3097,7 +3207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as decimal(37,2)) AS `CAST(my_timestamp AS DECIMAL(37,2))`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL); +WHERE select_id = 68 OR select_id IS NULL) order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3111,7 +3221,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values; SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL; +WHERE select_id = 67 OR select_id IS NULL order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3123,7 +3233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as decimal(37,2)) AS `CAST(my_date AS DECIMAL(37,2))`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL); +WHERE select_id = 67 OR select_id IS NULL) order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3137,7 +3247,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL; +WHERE select_id = 66 OR select_id IS NULL order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3149,7 +3259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as decimal(37,2)) AS `CAST(my_datetime AS DECIMAL(37,2))`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL); +WHERE select_id = 66 OR select_id IS NULL) order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3159,11 +3269,49 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values; +SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL) order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL; +WHERE select_id = 64 OR select_id IS NULL order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3175,7 +3323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as decimal(37,2)) AS `CAST(my_decimal AS DECIMAL(37,2))`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL); +WHERE select_id = 64 OR select_id IS NULL) order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3189,7 +3337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL; +WHERE select_id = 63 OR select_id IS NULL order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3201,7 +3349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as decimal(37,2)) AS `CAST(my_bigint AS DECIMAL(37,2))`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL); +WHERE select_id = 63 OR select_id IS NULL) order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3215,14 +3363,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL; +WHERE select_id = 62 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3232,14 +3380,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL); +WHERE select_id = 62 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3251,14 +3399,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL; +WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 27 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3273,14 +3421,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL); +WHERE select_id = 61 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 27 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3297,14 +3445,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL; +WHERE select_id = 60 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3314,14 +3462,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL); +WHERE select_id = 60 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3333,14 +3481,14 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL; +WHERE select_id = 59 OR select_id IS NULL order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3353,14 +3501,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL); +WHERE select_id = 59 OR select_id IS NULL) order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3375,7 +3523,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS TIME), my_year, id FROM t1_values; SELECT CAST(my_year AS TIME), my_year, id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL; +WHERE select_id = 58 OR select_id IS NULL order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3387,7 +3535,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as time) AS `CAST(my_year AS TIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL); +WHERE select_id = 58 OR select_id IS NULL) order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3401,7 +3549,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS TIME), my_time, id FROM t1_values; SELECT CAST(my_time AS TIME), my_time, id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL; +WHERE select_id = 57 OR select_id IS NULL order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3413,7 +3561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as time) AS `CAST(my_time AS TIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL); +WHERE select_id = 57 OR select_id IS NULL) order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3427,7 +3575,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL; +WHERE select_id = 56 OR select_id IS NULL order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3439,7 +3587,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as time) AS `CAST(my_timestamp AS TIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL); +WHERE select_id = 56 OR select_id IS NULL) order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3453,7 +3601,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS TIME), my_date, id FROM t1_values; SELECT CAST(my_date AS TIME), my_date, id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL; +WHERE select_id = 55 OR select_id IS NULL order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3465,7 +3613,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as time) AS `CAST(my_date AS TIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL); +WHERE select_id = 55 OR select_id IS NULL) order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3479,7 +3627,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL; +WHERE select_id = 54 OR select_id IS NULL order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3491,7 +3639,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as time) AS `CAST(my_datetime AS TIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL); +WHERE select_id = 54 OR select_id IS NULL) order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3501,11 +3649,45 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values; +SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL) order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL; +WHERE select_id = 52 OR select_id IS NULL order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3521,7 +3703,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as time) AS `CAST(my_bigint AS TIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL); +WHERE select_id = 52 OR select_id IS NULL) order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3539,7 +3721,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL; +WHERE select_id = 51 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3556,7 +3738,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as time) AS `CAST(my_varbinary_1000 AS TIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL); +WHERE select_id = 51 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3575,14 +3757,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL; +WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -3594,7 +3776,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as time) AS `CAST(my_binary_30 AS TIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL); +WHERE select_id = 50 OR select_id IS NULL) order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 00:00:00 2 @@ -3615,7 +3797,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL; +WHERE select_id = 49 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3632,7 +3814,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as time) AS `CAST(my_varchar_1000 AS TIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL); +WHERE select_id = 49 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3651,7 +3833,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL; +WHERE select_id = 48 OR select_id IS NULL order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3668,7 +3850,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as time) AS `CAST(my_char_30 AS TIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL); +WHERE select_id = 48 OR select_id IS NULL) order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3687,7 +3869,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values; SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL; +WHERE select_id = 47 OR select_id IS NULL order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3704,7 +3886,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as datetime) AS `CAST(my_year AS DATETIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL); +WHERE select_id = 47 OR select_id IS NULL) order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3723,7 +3905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values; SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL; +WHERE select_id = 46 OR select_id IS NULL order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3738,7 +3920,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as datetime) AS `CAST(my_time AS DATETIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL); +WHERE select_id = 46 OR select_id IS NULL) order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3755,7 +3937,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL; +WHERE select_id = 45 OR select_id IS NULL order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3767,7 +3949,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as datetime) AS `CAST(my_timestamp AS DATETIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL); +WHERE select_id = 45 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3781,7 +3963,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values; SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL; +WHERE select_id = 44 OR select_id IS NULL order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3793,7 +3975,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as datetime) AS `CAST(my_date AS DATETIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL); +WHERE select_id = 44 OR select_id IS NULL) order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3807,7 +3989,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL; +WHERE select_id = 43 OR select_id IS NULL order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3819,7 +4001,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as datetime) AS `CAST(my_datetime AS DATETIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL); +WHERE select_id = 43 OR select_id IS NULL) order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3833,7 +4015,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values; SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL; +WHERE select_id = 42 OR select_id IS NULL order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3852,7 +4034,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as datetime) AS `CAST(my_double AS DATETIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL); +WHERE select_id = 42 OR select_id IS NULL) order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3873,7 +4055,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL; +WHERE select_id = 41 OR select_id IS NULL order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3892,7 +4074,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as datetime) AS `CAST(my_bigint AS DATETIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL); +WHERE select_id = 41 OR select_id IS NULL) order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3913,7 +4095,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL; +WHERE select_id = 40 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3931,7 +4113,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as datetime) AS `CAST(my_varbinary_1000 AS DATETIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL); +WHERE select_id = 40 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3951,14 +4133,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL; +WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -3970,7 +4152,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as datetime) AS `CAST(my_binary_30 AS DATETIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL); +WHERE select_id = 39 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 NULL 2 @@ -3991,7 +4173,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL; +WHERE select_id = 38 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4009,7 +4191,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as datetime) AS `CAST(my_varchar_1000 AS DATETIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL); +WHERE select_id = 38 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4029,7 +4211,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL; +WHERE select_id = 37 OR select_id IS NULL order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4047,7 +4229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as datetime) AS `CAST(my_char_30 AS DATETIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL); +WHERE select_id = 37 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4067,7 +4249,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATE), my_year, id FROM t1_values; SELECT CAST(my_year AS DATE), my_year, id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL; +WHERE select_id = 36 OR select_id IS NULL order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4084,7 +4266,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as date) AS `CAST(my_year AS DATE)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL); +WHERE select_id = 36 OR select_id IS NULL) order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4103,7 +4285,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATE), my_time, id FROM t1_values; SELECT CAST(my_time AS DATE), my_time, id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL; +WHERE select_id = 35 OR select_id IS NULL order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4115,7 +4297,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as date) AS `CAST(my_time AS DATE)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL); +WHERE select_id = 35 OR select_id IS NULL) order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4129,7 +4311,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL; +WHERE select_id = 34 OR select_id IS NULL order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4141,7 +4323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as date) AS `CAST(my_timestamp AS DATE)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL); +WHERE select_id = 34 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4155,7 +4337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATE), my_date, id FROM t1_values; SELECT CAST(my_date AS DATE), my_date, id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL; +WHERE select_id = 33 OR select_id IS NULL order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4167,7 +4349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as date) AS `CAST(my_date AS DATE)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL); +WHERE select_id = 33 OR select_id IS NULL) order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4181,7 +4363,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL; +WHERE select_id = 32 OR select_id IS NULL order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4193,7 +4375,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as date) AS `CAST(my_datetime AS DATE)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL); +WHERE select_id = 32 OR select_id IS NULL) order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4207,7 +4389,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATE), my_double, id FROM t1_values; SELECT CAST(my_double AS DATE), my_double, id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL; +WHERE select_id = 31 OR select_id IS NULL order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4225,7 +4407,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as date) AS `CAST(my_double AS DATE)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL); +WHERE select_id = 31 OR select_id IS NULL) order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4245,7 +4427,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL; +WHERE select_id = 30 OR select_id IS NULL order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4263,7 +4445,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as date) AS `CAST(my_bigint AS DATE)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL); +WHERE select_id = 30 OR select_id IS NULL) order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4283,7 +4465,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL; +WHERE select_id = 29 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4301,7 +4483,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as date) AS `CAST(my_varbinary_1000 AS DATE)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL); +WHERE select_id = 29 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4321,14 +4503,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL; +WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -4340,7 +4522,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as date) AS `CAST(my_binary_30 AS DATE)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL); +WHERE select_id = 28 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 NULL 2 @@ -4361,7 +4543,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL; +WHERE select_id = 27 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4379,7 +4561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as date) AS `CAST(my_varchar_1000 AS DATE)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL); +WHERE select_id = 27 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4399,7 +4581,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL; +WHERE select_id = 26 OR select_id IS NULL order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4417,7 +4599,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as date) AS `CAST(my_char_30 AS DATE)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL); +WHERE select_id = 26 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4437,7 +4619,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values; SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL; +WHERE select_id = 25 OR select_id IS NULL order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4449,7 +4631,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset latin1) AS `CAST(my_year AS CHAR)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL); +WHERE select_id = 25 OR select_id IS NULL) order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4463,7 +4645,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values; SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL; +WHERE select_id = 24 OR select_id IS NULL order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4475,7 +4657,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset latin1) AS `CAST(my_time AS CHAR)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL); +WHERE select_id = 24 OR select_id IS NULL) order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4489,7 +4671,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL; +WHERE select_id = 23 OR select_id IS NULL order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4501,7 +4683,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset latin1) AS `CAST(my_timestamp AS CHAR)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL); +WHERE select_id = 23 OR select_id IS NULL) order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4515,7 +4697,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values; SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL; +WHERE select_id = 22 OR select_id IS NULL order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4527,7 +4709,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset latin1) AS `CAST(my_date AS CHAR)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL); +WHERE select_id = 22 OR select_id IS NULL) order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4541,7 +4723,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL; +WHERE select_id = 21 OR select_id IS NULL order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4553,7 +4735,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset latin1) AS `CAST(my_datetime AS CHAR)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL); +WHERE select_id = 21 OR select_id IS NULL) order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4567,7 +4749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values; SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL; +WHERE select_id = 20 OR select_id IS NULL order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4579,7 +4761,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset latin1) AS `CAST(my_double AS CHAR)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL); +WHERE select_id = 20 OR select_id IS NULL) order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4593,7 +4775,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL; +WHERE select_id = 19 OR select_id IS NULL order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4605,7 +4787,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset latin1) AS `CAST(my_decimal AS CHAR)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL); +WHERE select_id = 19 OR select_id IS NULL) order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4619,7 +4801,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL; +WHERE select_id = 18 OR select_id IS NULL order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4631,7 +4813,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset latin1) AS `CAST(my_bigint AS CHAR)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL); +WHERE select_id = 18 OR select_id IS NULL) order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4645,7 +4827,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL; +WHERE select_id = 17 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4657,7 +4839,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset latin1) AS `CAST(my_varbinary_1000 AS CHAR)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL); +WHERE select_id = 17 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4671,19 +4853,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL; +WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL); +WHERE select_id = 16 OR select_id IS NULL) order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 2 @@ -4697,7 +4879,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL; +WHERE select_id = 15 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4709,7 +4891,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset latin1) AS `CAST(my_varchar_1000 AS CHAR)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL); +WHERE select_id = 15 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4723,7 +4905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL; +WHERE select_id = 14 OR select_id IS NULL order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4735,7 +4917,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset latin1) AS `CAST(my_char_30 AS CHAR)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL); +WHERE select_id = 14 OR select_id IS NULL) order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4749,7 +4931,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values; SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL; +WHERE select_id = 13 OR select_id IS NULL order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4761,7 +4943,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset binary) AS `CAST(my_year AS BINARY)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL); +WHERE select_id = 13 OR select_id IS NULL) order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4775,7 +4957,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values; SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL; +WHERE select_id = 12 OR select_id IS NULL order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4787,7 +4969,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset binary) AS `CAST(my_time AS BINARY)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL); +WHERE select_id = 12 OR select_id IS NULL) order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4801,7 +4983,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL; +WHERE select_id = 11 OR select_id IS NULL order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4813,7 +4995,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset binary) AS `CAST(my_timestamp AS BINARY)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL); +WHERE select_id = 11 OR select_id IS NULL) order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4827,7 +5009,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values; SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL; +WHERE select_id = 10 OR select_id IS NULL order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4839,7 +5021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset binary) AS `CAST(my_date AS BINARY)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL); +WHERE select_id = 10 OR select_id IS NULL) order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4853,7 +5035,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL; +WHERE select_id = 9 OR select_id IS NULL order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4865,7 +5047,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset binary) AS `CAST(my_datetime AS BINARY)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL); +WHERE select_id = 9 OR select_id IS NULL) order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4879,7 +5061,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values; SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL; +WHERE select_id = 8 OR select_id IS NULL order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4891,7 +5073,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset binary) AS `CAST(my_double AS BINARY)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL); +WHERE select_id = 8 OR select_id IS NULL) order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4905,7 +5087,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL; +WHERE select_id = 7 OR select_id IS NULL order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4917,7 +5099,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset binary) AS `CAST(my_decimal AS BINARY)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL); +WHERE select_id = 7 OR select_id IS NULL) order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4931,7 +5113,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL; +WHERE select_id = 6 OR select_id IS NULL order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4943,7 +5125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset binary) AS `CAST(my_bigint AS BINARY)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL); +WHERE select_id = 6 OR select_id IS NULL) order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4957,7 +5139,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL; +WHERE select_id = 5 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4969,7 +5151,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset binary) AS `CAST(my_varbinary_1000 AS BINARY)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL); +WHERE select_id = 5 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4983,19 +5165,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL; +WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL); +WHERE select_id = 4 OR select_id IS NULL) order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 2 @@ -5009,7 +5191,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL; +WHERE select_id = 3 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5021,7 +5203,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset binary) AS `CAST(my_varchar_1000 AS BINARY)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL); +WHERE select_id = 3 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5035,7 +5217,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL; +WHERE select_id = 2 OR select_id IS NULL order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5047,7 +5229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset binary) AS `CAST(my_char_30 AS BINARY)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL); +WHERE select_id = 2 OR select_id IS NULL) order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5059,7 +5241,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT sqrt(my_bigint), my_bigint, id FROM t1_values; SELECT sqrt(my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL; +WHERE select_id = 1 OR select_id IS NULL order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -5073,7 +5255,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sqrt(`t1_values`.`my_bigint`) AS `sqrt(my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL); +WHERE select_id = 1 OR select_id IS NULL) order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result index 9081c6da3f7..6ba95c9fa63 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -164,7 +172,7 @@ declare y integer default 1; set @x = x; set @y = y; set @z = 234; -SELECT f1, f2 into @x, @y from t2 limit 1; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -207,7 +215,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; -SELECT f4, f3 into @x, @y from t2 limit 1; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// CALL sp1(); @@ -695,7 +703,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -794,7 +802,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -902,7 +910,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1082,7 +1090,8 @@ declare f2_value char(20); declare f5_value char(20); declare f4_value integer; declare f6_value integer; -declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1165,7 +1174,7 @@ of a compound statement ends. DROP TABLE IF EXISTS temp1; DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; f1 f2 f4 f5 a` a` -5000 a` aaa aaa -4999 aaa @@ -1185,8 +1194,8 @@ declare newf1 char(20); declare newf2 char(20); declare newf5 char(20); declare newf4 integer; -declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; -declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1268,8 +1277,10 @@ declare i_newf11 char(20); declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; -declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; -declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1300,8 +1311,10 @@ DECLARE o_newf11 CHAR(20); DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; -DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; -DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result index faf598b090b..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result index 639e8cdb48b..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_06.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- @@ -79,6 +87,7 @@ BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' +USE db_storedproc_1; root@localhost db_storedproc_1 GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -90,6 +99,7 @@ CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// +USE db_storedproc_1; root@localhost db_storedproc_1 DROP USER 'user_1'@'localhost'; @@ -115,6 +125,7 @@ CREATE FUNCTION fn1(v1 int) returns int BEGIN return v1; END// +USE db_storedproc_1; root@localhost db_storedproc_1 drop user 'user_1'@'localhost'; diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result index d0b9d8ae806..cbe0a18435a 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result index 68e32626425..40ebc1e51e4 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result b/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result index f2c47342019..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/innodb_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -78,7 +86,7 @@ connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK); user_1@localhost db_storedproc CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN -SELECT * FROM db_storedproc.t1 LIMIT 1; +SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// CREATE FUNCTION fn31105(n INT) RETURNS INT BEGIN @@ -93,6 +101,8 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +connection default; +USE db_storedproc; root@localhost db_storedproc CALL sp31102(); @@ -112,6 +122,8 @@ a` a` 1000-01-01 -5000 a` -5000 SELECT fn31105( 9 ); fn31105( 9 ) 81 +connection default; +USE db_storedproc; root@localhost db_storedproc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; @@ -129,6 +141,7 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +USE db_storedproc; root@localhost db_storedproc DROP PROCEDURE sp31102; @@ -176,6 +189,8 @@ DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; CREATE PROCEDURE sp_ins_1() @@ -203,49 +218,72 @@ END; SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// +CREATE PROCEDURE sp_del() +BEGIN +DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// +CREATE PROCEDURE sp_with_rowcount() +BEGIN +BEGIN +INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), +('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); +END; +SELECT row_count() AS 'row_count() after insert'; +SELECT row_count() AS 'row_count() after select row_count()'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; +SELECT row_count() AS 'row_count() after update'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +DELETE FROM temp WHERE temp.f1 = 'updated_2'; +SELECT row_count() AS 'row_count() after delete'; +END// CALL sp_ins_1(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 CALL sp_ins_3(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 +abc xyz 1949-05-23 100 uvw 1000 +abc xyz 1989-11-09 100 uvw 1000 +abc xyz 2005-10-24 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 -abc xyz 1949-05-23 100 uvw 1000 -abc xyz 1989-11-09 100 uvw 1000 -abc xyz 2005-10-24 100 uvw 1000 CALL sp_upd(); SELECT row_count(); row_count() 4 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -254,8 +292,6 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 @@ -279,6 +315,8 @@ row_count() 3 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -287,26 +325,73 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +qwe xyz 1998-03-26 100 uvw 1000 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 updated xyz 2005-10-24 100 uvw 1000 updated_2 abc 1989-11-09 100 uvw 1000 -qwe xyz 1998-03-26 100 uvw 1000 updated_2 abc 2000-11-09 100 uvw 1000 updated_2 abc 2005-11-07 100 uvw 1000 +CALL sp_del(); +SELECT row_count(); +row_count() +4 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +a` a` 1000-01-01 -5000 a` -5000 +aaa aaa 1000-01-02 -4999 aaa -4999 +abaa abaa 1000-01-03 -4998 abaa -4998 +acaaa acaaa 1000-01-04 -4997 acaaa -4997 +adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 +aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 +afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 +agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 +updated abc 2005-10-03 100 uvw 1000 +updated xyz 1949-05-23 100 uvw 1000 +updated xyz 1989-11-09 100 uvw 1000 +updated xyz 2005-10-24 100 uvw 1000 +DELETE FROM temp; +CALL sp_with_rowcount(); +row_count() after insert +4 +row_count() after select row_count() +-1 +f1 f2 f3 +qwe abc 1989-11-09 +qwe abc 2000-11-09 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +row_count() after update +2 +f1 f2 f3 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +updated_2 abc 1989-11-09 +updated_2 abc 2000-11-09 +row_count() after delete +2 +SELECT row_count(); +row_count() +-1 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +qwe xyz 1998-03-26 100 uvw 1000 +qwe xyz 2005-11-07 100 uvw 1000 DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_0102.result b/mysql-test/suite/funcs_1/r/innodb_trig_0102.result index 9c2c2a38a4d..ff1836f1313 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_0102.result @@ -1,96 +1,97 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -103,9 +104,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -113,7 +114,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -141,7 +142,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -194,7 +195,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=innodb; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -206,7 +207,7 @@ update t1 set f2='update 3.5.1.7'; select * from t1; f1 f2 f3 NULL update 3.5.1.7 42 -select trigger_name from information_schema.triggers; +select trigger_name from information_schema.triggers order by trigger_name; trigger_name trg5_1 trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -226,7 +227,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -234,11 +235,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = innodb; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -262,9 +263,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = innodb; create table t2 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -294,15 +295,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = innodb; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -313,7 +314,7 @@ insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; @test_var1 @test_var2 @test_var3 trig1 trig2 trig3 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -323,7 +324,7 @@ trig2 3 select * from trig_db3.t1; f1 f2 trig3 4 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -341,17 +342,17 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = innodb; create table trig_db2.t1 (f1 char(50), f2 integer) engine = innodb; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table -trig_db1 trig1_b t1 trig_db1 trig1_a t1 +trig_db1 trig1_b t1 trig_db2 trig2 t1 set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_03.result b/mysql-test/suite/funcs_1/r/innodb_trig_03.result index 4e6b4523f1d..e45115cdfab 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_03.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_03.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -106,7 +107,7 @@ set new.f1 = 'trig 3.5.3.2_1-no'; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no select current_user; @@ -121,15 +122,12 @@ root@localhost use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-yes'); ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - -note: once 15166 is fixed a similar case for SELECT needs to be added ---------------------------------------------------------------------- insert into t1 (f1) values ('insert 3.5.3.2-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -141,7 +139,7 @@ drop trigger trg1_2; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -150,12 +148,12 @@ use priv_db; drop trigger trg1_2; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg1_2; Testcase 3.5.3.7a: @@ -180,23 +178,22 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +create trigger trg4a_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1a'; insert into t1 (f1) values ('insert 3.5.3.7-1a'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg4a_1; use priv_db; select current_user; @@ -207,18 +204,13 @@ Grants for test_yesprivs@localhost GRANT UPDATE, SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' create trigger trg4a_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2a'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a drop trigger trg4a_2; @@ -245,30 +237,29 @@ Grants for test_noprivs@localhost GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4b_1 before UPDATE on t1 for each row +set new.f1 = 'trig 3.5.3.7-1b'; +ERROR 42000: Access denied; you need the SUPER privilege for this operation insert into t1 (f1) values ('insert 3.5.3.7-1b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a insert 3.5.3.7-1b +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a update 3.5.3.7-1b drop trigger trg4b_1; +ERROR HY000: Trigger does not exist show grants; Grants for test_yesprivs@localhost GRANT SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' @@ -276,32 +267,26 @@ GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4b_2 before UPDATE on t1 for each row set new.f1 = 'trig 3.5.3.7-2b'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a -update 3.5.3.7-1b insert 3.5.3.7-2b -update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; -select f1 from t1; -f1 -insert 3.5.3.2-no trig 3.5.3.2_2-yes trig 3.5.3.2_2-yes -insert 3.5.3.6-no -insert 3.5.3.7-1a trig 3.5.3.7-2a update 3.5.3.7-1b +update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; +select f1 from t1 order by f1; +f1 +insert 3.5.3.2-no +insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a trig 3.5.3.7-2b +update 3.5.3.7-1b drop trigger trg4b_2; Testcase 3.5.3.7c @@ -327,21 +312,19 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4c_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1c'; insert into t1 (f1) values ('insert 3.5.3.7-1c'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c +update 3.5.3.7-1b drop trigger trg4c_1; show grants; Grants for test_yesprivs@localhost @@ -350,23 +333,17 @@ GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4c_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2c'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2c'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c +update 3.5.3.7-1b drop trigger trg4c_2; Testcase 3.5.3.7d: @@ -390,23 +367,20 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4d_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1d'; insert into t1 (f1) values ('insert 3.5.3.7-1d'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d +update 3.5.3.7-1b drop trigger trg4d_1; show grants; Grants for test_yesprivs@localhost @@ -415,25 +389,18 @@ GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4d_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2d'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2d'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d trig 3.5.3.7-2d +update 3.5.3.7-1b drop trigger trg4d_2; Testcase 3.5.3.8a: @@ -458,14 +425,14 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5a_1 before INSERT on t1 for each row +set @test_var = new.f1; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; @test_var before trig 3.5.3.8-1a insert into t1 (f1) values ('insert 3.5.3.8-1a'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1a @@ -483,10 +450,6 @@ set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; @test_var before trig 3.5.3.8-2a - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @test_var @@ -517,15 +480,15 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5b_1 before UPDATE on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1b'; insert into t1 (f1) values ('insert 3.5.3.8-1b'); select @test_var; @test_var before trig 3.5.3.8-1b update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1b @@ -542,10 +505,6 @@ insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; @test_var before trig 3.5.3.8-2b - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.* to test_yesprivs@localhost; update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; @test_var @@ -576,11 +535,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5c_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1c @@ -593,10 +552,6 @@ use priv_db; create trigger trg5c_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2c'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; @test_var @@ -626,11 +581,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5d_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1d @@ -643,10 +598,6 @@ use priv_db; create trigger trg5d_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2d'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @test_var @@ -682,10 +633,10 @@ ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); -select f1 from t1; +select f1 from t1 order by f1; f1 4 -select f2 from t2; +select f2 from t2 order by f2; f2 4 use priv_db; @@ -698,11 +649,11 @@ ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 2 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 1 use priv_db; @@ -715,12 +666,12 @@ ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 -2 1 -select f2 from t2; +2 +4 +select f2 from t2 order by f2; f2 1 select @aaa; @@ -736,13 +687,13 @@ ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 +1 +1 2 -1 -1 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_0407.result b/mysql-test/suite/funcs_1/r/innodb_trig_0407.result index e7f2b374845..bd190c7ed2f 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_0407.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -88,22 +89,22 @@ Use db_drop; create table t1 (f1 char(30)) engine=innodb; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 Trigger 3.5.4.1 drop trigger trg1; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table Insert into t1 values ('Insert no trigger 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 -Trigger 3.5.4.1 Insert no trigger 3.5.4.1 +Trigger 3.5.4.1 drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -127,7 +128,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=innodb; create table t1_433a (f1a char (5)) engine=innodb; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -148,7 +149,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=innodb; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -184,7 +185,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=innodb; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -221,7 +222,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -229,7 +230,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -257,7 +258,7 @@ use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); Warnings: Warning 1265 Data truncated for column 'f1' at row 1 -Select * from dbtest_two.t2; +Select * from dbtest_two.t2 order by f1; f1 1st Insert 3.5. 2nd Insert 3.5. @@ -310,9 +311,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -330,9 +331,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -358,9 +359,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -378,9 +379,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -408,9 +409,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -440,12 +441,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_08.result b/mysql-test/suite/funcs_1/r/innodb_trig_08.result index a13116df9b4..19e42143a5d 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_08.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_08.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,17 +90,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=innodb; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=innodb; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -122,18 +123,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -161,14 +162,22 @@ select @test_var; 3.5.8.4 - single SQL - insert ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row -insert into db_test.t1_i +BEGIN +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); +END// +Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; +f120 f122 f136 f144 f163 +1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000 +select * from db_test.t1_i order by i120; +i120 i136 i144 i163 +1 00222 0000023456 1.050000000000000000000000000000 update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_i; +select * from db_test.t1_i order by i120; i120 i136 i144 i163 1 00222 0000023456 1.050000000000000000000000000000 I 00222 0000023456 1.050000000000000000000000000000 @@ -177,7 +186,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -185,27 +194,27 @@ update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_u; +select * from db_test.t1_u order by u120; u120 u136 u144 u163 a 00111 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 f 00333 0000099999 999.990000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 3.5.8.3/4 - single SQL - delete ------------------------------- drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_d; +select * from db_test.t1_d order by d120; d120 d136 d144 d163 a 00111 0000099999 999.990000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 @@ -214,10 +223,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -245,36 +254,36 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if -d Test 3.5.8.5-if 00010 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00101 three 2nd else D Test 3.5.8.5-if 00102 three 2nd else -d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00103 three 2nd else create trigger trg3 before update on tb3 for each row BEGIN @@ -289,7 +298,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -331,60 +340,60 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -398,40 +407,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -466,33 +475,62 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; Testcase 3.5.8.6: (requirement void) ------------------------------------ +CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// +CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW +BEGIN +CALL sp_01 (); +END// +Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); +update tb3 set f120='S', f136=111, +f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; +select f120, f122 +from tb3 where f122 like 'Test 3.5.8.6%' order by f120; +f120 f122 +S Test 3.5.8.6-tr8_1 +DROP TRIGGER trg8_1; +DROP PROCEDURE sp_01; -Testcase 3.5.8.7: (Disabled as a result of bug _____) ------------------------------------------------------ +Testcase 3.5.8.7 +---------------- +Create trigger trg9_1 before update on tb3 for each row +BEGIN +Start transaction; +Set new.f120='U'; +Commit; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. +Create trigger trg9_2 before delete on tb3 for each row +BEGIN +Start transaction; +Set @var2=old.f120; +Rollback; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. drop user test_general@localhost; drop user test_general; drop user test_super@localhost; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_09.result b/mysql-test/suite/funcs_1/r/innodb_trig_09.result index 34a430ba052..321b988587e 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_09.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_09.result @@ -1,74 +1,75 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -80,15 +81,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -116,17 +117,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -135,13 +136,13 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 delete from tb3 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -172,17 +173,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4%'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -194,15 +195,15 @@ Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; Warnings: Warning 1048 Column 'f136' cannot be null -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4-trig'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -240,6 +241,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result b/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result index 8976787420d..7412b8c8eff 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -86,7 +87,7 @@ Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 -from tb3 where f122 like 'Test 3.5.10.1/2/3%'; +from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000 NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000 @@ -100,7 +101,7 @@ f121 f122 f151 f163 NULL Not in View 3 111.110000000000000000000000000000 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 @@ -114,7 +115,7 @@ before delete 0 delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 select f121, f122, f151, f163 from vw11; @@ -141,11 +142,11 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 -Select * from tb_load limit 10; +Select * from tb_load order by f1 limit 10; f1 f2 f3 -5000 a` 1000 -4999 aaa 999 @@ -240,7 +241,7 @@ insert into t3 (f1) values (new.f1+1000); create trigger tr2_4 after insert on t2_4 for each row insert into t3 (f1) values (new.f1+10000); insert into t1 values (1); -select * from t3; +select * from t3 order by f1; f1 12 102 @@ -275,14 +276,14 @@ create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); insert into t1 values (1); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. -select * from t1; +select * from t1 order by f1; f1 0 -select * from t2; +select * from t2 order by f2; f2 -select * from t3; +select * from t3 order by f3; f3 -select * from t4; +select * from t4 order by f4; f4 drop trigger tr1; drop trigger tr2; @@ -293,8 +294,8 @@ drop table t2; drop table t3; drop table t4; -Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889) ----------------------------------------------------------------------- +Testcase y.y.y.4: Recursive trigger/SP references +------------------------------------------------- set @sql_mode='traditional'; create table t1_sp ( count integer, @@ -382,12 +383,12 @@ start transaction; insert into t1 values (1); ERROR 22003: Out of range value adjusted for column 'f4' at row 1 commit; -select * from t1; +select * from t1 order by f1; f1 1 -select * from t2; +select * from t2 order by f2; f2 -select * from t3; +select * from t3 order by f3; f3 drop trigger tr1; drop trigger tr2; diff --git a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result index debbec1dde3..fe341762047 100644 --- a/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result +++ b/mysql-test/suite/funcs_1/r/innodb_trig_frkey.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; Testcase x.x.x.1: ----------------- diff --git a/mysql-test/suite/funcs_1/r/innodb_views.result b/mysql-test/suite/funcs_1/r/innodb_views.result index 20d8c0ba2f3..d29e38925f6 100644 --- a/mysql-test/suite/funcs_1/r/innodb_views.result +++ b/mysql-test/suite/funcs_1/r/innodb_views.result @@ -1,117 +1,119 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; USE test; ! Attention: The file with the expected results is not diff --git a/mysql-test/suite/funcs_1/r/is_columns_innodb.result b/mysql-test/suite/funcs_1/r/is_columns_innodb.result index 101e7140645..d80ab62a987 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_innodb.result +++ b/mysql-test/suite/funcs_1/r/is_columns_innodb.result @@ -3,63 +3,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = innodb; Warnings: @@ -76,180 +76,183 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/innodb_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; drop table if exists tb4; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -259,89 +262,97 @@ f239 varchar(20000) binary, f240 varchar(2000) unicode, f241 char(100) unicode ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/innodb_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -353,7 +364,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -367,7 +378,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_columns_memory.result b/mysql-test/suite/funcs_1/r/is_columns_memory.result index 7f49fcb97d0..ae7c5919447 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_memory.result +++ b/mysql-test/suite/funcs_1/r/is_columns_memory.result @@ -4,55 +4,55 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f1 char, +f2 char binary, +f3 char ascii, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = memory; Warnings: @@ -72,174 +72,177 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/memory_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f236 char(95) unicode, f241 char(255) unicode, @@ -248,89 +251,97 @@ f238 varchar(25000) binary, f239 varbinary(0), f240 varchar(1200) unicode ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/memory_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -342,7 +353,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -356,7 +367,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_columns_myisam.result b/mysql-test/suite/funcs_1/r/is_columns_myisam.result index a30acc64a8d..94574c33d74 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_myisam.result +++ b/mysql-test/suite/funcs_1/r/is_columns_myisam.result @@ -4,63 +4,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char, +f2 char binary, +f3 char ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = myisam; Warnings: @@ -80,196 +80,199 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/myisam_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), -f226 set("1set","2set"), -f227 VARBINARY(64), -f228 VARBINARY(27), -f229 VARBINARY(64), -f230 VARBINARY(192), -f231 VARBINARY(192), -f232 VARBINARY(27), -f233 VARBINARY(64), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), +f226 set("1set","2set"), +f227 VARBINARY(64), +f228 VARBINARY(27), +f229 VARBINARY(64), +f230 VARBINARY(192), +f231 VARBINARY(192), +f232 VARBINARY(27), +f233 VARBINARY(64), f234 VARBINARY(192), f235 char(255) unicode, f236 char(60) ascii, @@ -280,97 +283,105 @@ f240 varchar(120) unicode, f241 char(100) unicode, f242 bit(30) ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/myisam_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -382,7 +393,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -396,7 +407,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_columns_ndb.result b/mysql-test/suite/funcs_1/r/is_columns_ndb.result index 4ae1723140e..444c62eb010 100644 --- a/mysql-test/suite/funcs_1/r/is_columns_ndb.result +++ b/mysql-test/suite/funcs_1/r/is_columns_ndb.result @@ -4,29 +4,35 @@ USE test; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = ndb; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = ndb; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = ndb; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = ndb; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -38,7 +44,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -52,7 +58,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = ndb; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; SELECT * FROM information_schema.columns WHERE table_schema LIKE 'test%' ORDER BY table_schema, table_name, column_name; diff --git a/mysql-test/suite/funcs_1/r/is_tables_innodb.result b/mysql-test/suite/funcs_1/r/is_tables_innodb.result index c160ac7f749..215e2c86654 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_innodb.result +++ b/mysql-test/suite/funcs_1/r/is_tables_innodb.result @@ -3,63 +3,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char(0), -f2 char(0) binary, -f3 char(0) ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char(0), +f2 char(0) binary, +f3 char(0) ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal, -f34 decimal unsigned, -f35 decimal zerofill, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal, +f34 decimal unsigned, +f35 decimal zerofill, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = innodb; Warnings: @@ -76,180 +76,183 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/innodb_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = innodb; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/innodb_tb3.txt' +into table tb3; drop table if exists tb4; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f235 char(0) unicode, f236 char(90), @@ -259,89 +262,97 @@ f239 varchar(20000) binary, f240 varchar(2000) unicode, f241 char(100) unicode ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/innodb_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = innodb; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/innodb_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/innodb_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = InnoDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -353,7 +364,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -367,7 +378,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = InnoDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/is_tables_memory.result b/mysql-test/suite/funcs_1/r/is_tables_memory.result index c1dfc42e1db..bfc83fa1f92 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_memory.result +++ b/mysql-test/suite/funcs_1/r/is_tables_memory.result @@ -4,55 +4,55 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f1 char, +f2 char binary, +f3 char ascii, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = memory; Warnings: @@ -72,174 +72,177 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/memory_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), f226 set("1set","2set"), f236 char(95) unicode, f241 char(255) unicode, @@ -248,89 +251,97 @@ f238 varchar(25000) binary, f239 varbinary(0), f240 varchar(1200) unicode ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/memory_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MEMORY; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -342,7 +353,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -356,7 +367,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MEMORY; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/is_tables_myisam.result b/mysql-test/suite/funcs_1/r/is_tables_myisam.result index f48128f6794..99d34818d98 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_myisam.result +++ b/mysql-test/suite/funcs_1/r/is_tables_myisam.result @@ -4,63 +4,63 @@ CREATE DATABASE test1; USE test; drop table if exists tb1 ; create table tb1 ( -f1 char, -f2 char binary, -f3 char ascii, -f4 tinytext unicode, -f5 text, -f6 mediumtext, -f7 longtext, -f8 tinyblob, +f1 char, +f2 char binary, +f3 char ascii, +f4 tinytext unicode, +f5 text, +f6 mediumtext, +f7 longtext, +f8 tinyblob, f9 blob, -f10 mediumblob, -f11 longblob, -f12 binary, -f13 tinyint, -f14 tinyint unsigned, -f15 tinyint zerofill, -f16 tinyint unsigned zerofill, -f17 smallint, -f18 smallint unsigned, -f19 smallint zerofill, -f20 smallint unsigned zerofill, -f21 mediumint, -f22 mediumint unsigned, -f23 mediumint zerofill, -f24 mediumint unsigned zerofill, -f25 int, -f26 int unsigned, -f27 int zerofill, -f28 int unsigned zerofill, -f29 bigint, -f30 bigint unsigned, -f31 bigint zerofill, -f32 bigint unsigned zerofill, -f33 decimal not null DEFAULT 9.9, -f34 decimal unsigned not null DEFAULT 9.9, -f35 decimal zerofill not null DEFAULT 9.9, -f36 decimal unsigned zerofill not null DEFAULT 9.9, -f37 decimal (0) not null DEFAULT 9.9, -f38 decimal (64) not null DEFAULT 9.9, -f39 decimal (0) unsigned not null DEFAULT 9.9, -f40 decimal (64) unsigned not null DEFAULT 9.9, -f41 decimal (0) zerofill not null DEFAULT 9.9, -f42 decimal (64) zerofill not null DEFAULT 9.9, -f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, -f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, -f45 decimal (0,0) not null DEFAULT 9.9, -f46 decimal (63,30) not null DEFAULT 9.9, -f47 decimal (0,0) unsigned not null DEFAULT 9.9, -f48 decimal (63,30) unsigned not null DEFAULT 9.9, -f49 decimal (0,0) zerofill not null DEFAULT 9.9, -f50 decimal (63,30) zerofill not null DEFAULT 9.9, -f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, -f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, -f53 numeric not null DEFAULT 99, -f54 numeric unsigned not null DEFAULT 99, -f55 numeric zerofill not null DEFAULT 99, -f56 numeric unsigned zerofill not null DEFAULT 99, -f57 numeric (0) not null DEFAULT 99, +f10 mediumblob, +f11 longblob, +f12 binary, +f13 tinyint, +f14 tinyint unsigned, +f15 tinyint zerofill, +f16 tinyint unsigned zerofill, +f17 smallint, +f18 smallint unsigned, +f19 smallint zerofill, +f20 smallint unsigned zerofill, +f21 mediumint, +f22 mediumint unsigned, +f23 mediumint zerofill, +f24 mediumint unsigned zerofill, +f25 int, +f26 int unsigned, +f27 int zerofill, +f28 int unsigned zerofill, +f29 bigint, +f30 bigint unsigned, +f31 bigint zerofill, +f32 bigint unsigned zerofill, +f33 decimal not null DEFAULT 9.9, +f34 decimal unsigned not null DEFAULT 9.9, +f35 decimal zerofill not null DEFAULT 9.9, +f36 decimal unsigned zerofill not null DEFAULT 9.9, +f37 decimal (0) not null DEFAULT 9.9, +f38 decimal (64) not null DEFAULT 9.9, +f39 decimal (0) unsigned not null DEFAULT 9.9, +f40 decimal (64) unsigned not null DEFAULT 9.9, +f41 decimal (0) zerofill not null DEFAULT 9.9, +f42 decimal (64) zerofill not null DEFAULT 9.9, +f43 decimal (0) unsigned zerofill not null DEFAULT 9.9, +f44 decimal (64) unsigned zerofill not null DEFAULT 9.9, +f45 decimal (0,0) not null DEFAULT 9.9, +f46 decimal (63,30) not null DEFAULT 9.9, +f47 decimal (0,0) unsigned not null DEFAULT 9.9, +f48 decimal (63,30) unsigned not null DEFAULT 9.9, +f49 decimal (0,0) zerofill not null DEFAULT 9.9, +f50 decimal (63,30) zerofill not null DEFAULT 9.9, +f51 decimal (0,0) unsigned zerofill not null DEFAULT 9.9, +f52 decimal (63,30) unsigned zerofill not null DEFAULT 9.9, +f53 numeric not null DEFAULT 99, +f54 numeric unsigned not null DEFAULT 99, +f55 numeric zerofill not null DEFAULT 99, +f56 numeric unsigned zerofill not null DEFAULT 99, +f57 numeric (0) not null DEFAULT 99, f58 numeric (64) not null DEFAULT 99 ) engine = myisam; Warnings: @@ -80,196 +80,199 @@ Note 1265 Data truncated for column 'f45' at row 1 Note 1265 Data truncated for column 'f47' at row 1 Note 1265 Data truncated for column 'f49' at row 1 Note 1265 Data truncated for column 'f51' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb1.txt' into table tb1 ; +load data infile '/std_data_ln/funcs_1/myisam_tb1.txt' +into table tb1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; drop table if exists tb4 ; create table tb4 ( -f176 numeric (0) unsigned not null DEFAULT 9, -f177 numeric (64) unsigned not null DEFAULT 9, -f178 numeric (0) zerofill not null DEFAULT 9, -f179 numeric (64) zerofill not null DEFAULT 9, -f180 numeric (0) unsigned zerofill not null DEFAULT 9, -f181 numeric (64) unsigned zerofill not null DEFAULT 9, -f182 numeric (0,0) not null DEFAULT 9, -f183 numeric (63,30) not null DEFAULT 9, -f184 numeric (0,0) unsigned not null DEFAULT 9, -f185 numeric (63,30) unsigned not null DEFAULT 9, -f186 numeric (0,0) zerofill not null DEFAULT 9, -f187 numeric (63,30) zerofill not null DEFAULT 9, -f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, -f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, -f190 real not null DEFAULT 88.8, -f191 real unsigned not null DEFAULT 88.8, -f192 real zerofill not null DEFAULT 88.8, -f193 real unsigned zerofill not null DEFAULT 88.8, -f194 double not null DEFAULT 55.5, -f195 double unsigned not null DEFAULT 55.5, -f196 double zerofill not null DEFAULT 55.5, -f197 double unsigned zerofill not null DEFAULT 55.5, -f198 float, -f199 float unsigned, -f200 float zerofill, -f201 float unsigned zerofill, -f202 float(0), -f203 float(23), -f204 float(0) unsigned, -f205 float(23) unsigned, -f206 float(0) zerofill, -f207 float(23) zerofill, -f208 float(0) unsigned zerofill, -f209 float(23) unsigned zerofill, -f210 float(24), -f211 float(53), -f212 float(24) unsigned, -f213 float(53) unsigned, -f214 float(24) zerofill, -f215 float(53) zerofill, -f216 float(24) unsigned zerofill, -f217 float(53) unsigned zerofill, -f218 date, -f219 time, -f220 datetime, -f221 timestamp, -f222 year, -f223 year(3), -f224 year(4), -f225 enum("1enum","2enum"), -f226 set("1set","2set"), -f227 VARBINARY(64), -f228 VARBINARY(27), -f229 VARBINARY(64), -f230 VARBINARY(192), -f231 VARBINARY(192), -f232 VARBINARY(27), -f233 VARBINARY(64), +f176 numeric (0) unsigned not null DEFAULT 9, +f177 numeric (64) unsigned not null DEFAULT 9, +f178 numeric (0) zerofill not null DEFAULT 9, +f179 numeric (64) zerofill not null DEFAULT 9, +f180 numeric (0) unsigned zerofill not null DEFAULT 9, +f181 numeric (64) unsigned zerofill not null DEFAULT 9, +f182 numeric (0,0) not null DEFAULT 9, +f183 numeric (63,30) not null DEFAULT 9, +f184 numeric (0,0) unsigned not null DEFAULT 9, +f185 numeric (63,30) unsigned not null DEFAULT 9, +f186 numeric (0,0) zerofill not null DEFAULT 9, +f187 numeric (63,30) zerofill not null DEFAULT 9, +f188 numeric (0,0) unsigned zerofill not null DEFAULT 9, +f189 numeric (63,30) unsigned zerofill not null DEFAULT 9, +f190 real not null DEFAULT 88.8, +f191 real unsigned not null DEFAULT 88.8, +f192 real zerofill not null DEFAULT 88.8, +f193 real unsigned zerofill not null DEFAULT 88.8, +f194 double not null DEFAULT 55.5, +f195 double unsigned not null DEFAULT 55.5, +f196 double zerofill not null DEFAULT 55.5, +f197 double unsigned zerofill not null DEFAULT 55.5, +f198 float, +f199 float unsigned, +f200 float zerofill, +f201 float unsigned zerofill, +f202 float(0), +f203 float(23), +f204 float(0) unsigned, +f205 float(23) unsigned, +f206 float(0) zerofill, +f207 float(23) zerofill, +f208 float(0) unsigned zerofill, +f209 float(23) unsigned zerofill, +f210 float(24), +f211 float(53), +f212 float(24) unsigned, +f213 float(53) unsigned, +f214 float(24) zerofill, +f215 float(53) zerofill, +f216 float(24) unsigned zerofill, +f217 float(53) unsigned zerofill, +f218 date, +f219 time, +f220 datetime, +f221 timestamp, +f222 year, +f223 year(3), +f224 year(4), +f225 enum("1enum","2enum"), +f226 set("1set","2set"), +f227 VARBINARY(64), +f228 VARBINARY(27), +f229 VARBINARY(64), +f230 VARBINARY(192), +f231 VARBINARY(192), +f232 VARBINARY(27), +f233 VARBINARY(64), f234 VARBINARY(192), f235 char(255) unicode, f236 char(60) ascii, @@ -280,97 +283,105 @@ f240 varchar(120) unicode, f241 char(100) unicode, f242 bit(30) ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb4.txt' into table tb4 ; +load data infile '/std_data_ln/funcs_1/myisam_tb4.txt' +into table tb4; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = MyISAM; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -382,7 +393,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -396,7 +407,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = MyISAM; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/is_tables_ndb.result b/mysql-test/suite/funcs_1/r/is_tables_ndb.result index 189f7f3464a..467f4566912 100644 --- a/mysql-test/suite/funcs_1/r/is_tables_ndb.result +++ b/mysql-test/suite/funcs_1/r/is_tables_ndb.result @@ -4,29 +4,35 @@ USE test; USE test; USE test; DROP TABLE IF EXISTS t1, t2, t4, t10, t11; -CREATE TABLE t1 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t2 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t4 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t10 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -CREATE TABLE t11 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t1; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t2; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t4; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t10; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t11; +CREATE TABLE t1 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t2 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t4 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t10 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +CREATE TABLE t11 (f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +ENGINE = NDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t1; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t2; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t4; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t10; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t11; drop TABLE if exists t3; CREATE TABLE t3 (f1 char(20), f2 char(20), f3 integer) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' INTO TABLE t3; +LOAD DATA INFILE '/std_data_ln/funcs_1/t3.txt' INTO TABLE t3; drop database if exists test4; CREATE database test4; use test4; -CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' INTO TABLE t6; +CREATE TABLE t6 (f1 char(20), f2 char(25), f3 date, f4 int, f5 char(25), f6 int) +ENGINE = NDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t4.txt' INTO TABLE t6; use test; drop TABLE if exists t7, t8; -CREATE TABLE t7 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = NDB; -CREATE TABLE t8 (f1 char(20), f2 char(25), f3 date, f4 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t7; +CREATE TABLE t7 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = NDB; +CREATE TABLE t8 (f1 char(20),f2 char(25),f3 date,f4 int) ENGINE = NDB; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -38,7 +44,7 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' INTO TABLE t8; +LOAD DATA INFILE '/std_data_ln/funcs_1/t7.txt' INTO TABLE t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -52,7 +58,7 @@ Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 drop TABLE if exists t9; CREATE TABLE t9 (f1 int, f2 char(25), f3 int) ENGINE = NDB; -LOAD DATA INFILE 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' INTO TABLE t9; +LOAD DATA INFILE '/std_data_ln/funcs_1/t9.txt' INTO TABLE t9; DROP DATABASE IF EXISTS db_datadict; CREATE DATABASE db_datadict; SELECT *, diff --git a/mysql-test/suite/funcs_1/r/memory_func_view.result b/mysql-test/suite/funcs_1/r/memory_func_view.result index 552b549a1a0..c2689a36801 100644 --- a/mysql-test/suite/funcs_1/r/memory_func_view.result +++ b/mysql-test/suite/funcs_1/r/memory_func_view.result @@ -1,7 +1,3 @@ - -! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables --------------------------------------------------------------------------------- DROP TABLE IF EXISTS t1_selects, t1_modes, t1_values; DROP VIEW IF EXISTS v1; CREATE TABLE t1_values @@ -9,7 +5,7 @@ CREATE TABLE t1_values id BIGINT AUTO_INCREMENT, select_id BIGINT, PRIMARY KEY(id) -) ENGINE = 'MEMORY' ; +) ENGINE = ; ALTER TABLE t1_values ADD my_char_30 CHAR(30); ALTER TABLE t1_values ADD my_varchar_1000 VARCHAR(1000); ALTER TABLE t1_values ADD my_binary_30 BINARY(30); @@ -39,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -54,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -89,6 +85,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 4; INSERT INTO t1_values SET select_id = @select_id, my_bigint = -25; +##### 1.1.1. CAST --> BINARY +##### 1.1.2. CAST --> CHAR +##### 1.1.3. CAST --> DATE INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27'; INSERT INTO t1_values SET select_id = @select_id, @@ -101,6 +100,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 20050627; INSERT INTO t1_values SET select_id = @select_id, my_double = +20.050627E+6; +##### 1.1.4. CAST --> DATETIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -113,6 +113,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 200506271758; INSERT INTO t1_values SET select_id = @select_id, my_double = +0.0200506271758E+13; +##### 1.1.5. CAST --> TIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -123,10 +124,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, my_bigint = 1758; - -some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = +1.758E+3; +##### 1.1.6. CAST --> DECIMAL INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, @@ -135,51 +135,39 @@ INSERT INTO t1_values SET select_id = @select_id, my_binary_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '-3333.3333'; - -some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = -0.33333333E+4; +##### 1.1.7. CAST --> SIGNED INTEGER "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later" --------------------------------------------------------------------------------- - -some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result + Status: To be fixed later" -------------------------------------------------------------------------------- +##### 1.1.8. CAST --> UNSIGNED INTEGER "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809" + The file with expected results suffers from Bug 5913" -------------------------------------------------------------------------------- some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast +Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; - -"Attention: IF(my_year IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails." --------------------------------------------------------------------------------- SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_varchar_1000), @@ -192,22 +180,20 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; - -"Attention: LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, -because there are 32/64 Bit differences --------------------------------------------------------------------------------- +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_double), my_double, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varchar_1000), @@ -216,8 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -299,19 +287,19 @@ SET sql_mode = ''; -------------------------------------------------------------------------------- CREATE VIEW v1 AS SELECT my_char_30, id FROM t1_values; SELECT my_char_30, id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL; +WHERE select_id = 193 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL); +WHERE select_id = 193 OR select_id IS NULL) order by id; DROP VIEW v1; CREATE VIEW v1 AS SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values; SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL; +WHERE select_id = 192 OR select_id IS NULL order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -323,7 +311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat(_latin1'A',`t1_values`.`my_char_30`) AS `CONCAT('A',my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL); +WHERE select_id = 192 OR select_id IS NULL) order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -337,13 +325,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL; +WHERE select_id = 191 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varbinary_1000`) AS `LTRIM(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL); +WHERE select_id = 191 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -351,13 +339,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values; SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL; +WHERE select_id = 190 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_binary_30`) AS `LTRIM(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL); +WHERE select_id = 190 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -365,13 +353,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL; +WHERE select_id = 189 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varchar_1000`) AS `LTRIM(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL); +WHERE select_id = 189 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -379,13 +367,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values; SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL; +WHERE select_id = 188 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_char_30`) AS `LTRIM(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL); +WHERE select_id = 188 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -393,13 +381,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL; +WHERE select_id = 187 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varbinary_1000`) AS `LOWER(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL); +WHERE select_id = 187 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -407,13 +395,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values; SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL; +WHERE select_id = 186 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_binary_30`) AS `LOWER(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL); +WHERE select_id = 186 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -421,13 +409,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL; +WHERE select_id = 185 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LOWER(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL); +WHERE select_id = 185 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -435,13 +423,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_char_30), my_char_30, id FROM t1_values; SELECT LOWER(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL; +WHERE select_id = 184 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_char_30`) AS `LOWER(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL); +WHERE select_id = 184 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -449,13 +437,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL; +WHERE select_id = 183 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_decimal`) AS `LOCATE('-', ' - -ABC', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL); +WHERE select_id = 183 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -463,13 +451,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL; +WHERE select_id = 182 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_double`) AS `LOCATE('-', ' - -ABC', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL); +WHERE select_id = 182 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -477,13 +465,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL; +WHERE select_id = 181 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_bigint`) AS `LOCATE('-', ' - -ABC', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL); +WHERE select_id = 181 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -491,13 +479,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL; +WHERE select_id = 180 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varbinary_1000`,3) AS `LOCATE('-', my_varbinary_1000, 3)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL); +WHERE select_id = 180 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -505,13 +493,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values; SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL; +WHERE select_id = 179 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_binary_30`,3) AS `LOCATE('-', my_binary_30, 3)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL); +WHERE select_id = 179 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -519,13 +507,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values; SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL; +WHERE select_id = 178 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varchar_1000`,3) AS `LOCATE('-', my_varchar_1000, 3)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL); +WHERE select_id = 178 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -533,13 +521,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values; SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL; +WHERE select_id = 177 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_char_30`,3) AS `LOCATE('-', my_char_30, 3)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL); +WHERE select_id = 177 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -547,13 +535,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL; +WHERE select_id = 176 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varbinary_1000, my_binary_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL); +WHERE select_id = 176 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -561,13 +549,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL; +WHERE select_id = 175 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varbinary_1000, my_varchar_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL); +WHERE select_id = 175 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -575,13 +563,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL; +WHERE select_id = 174 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varbinary_1000, my_char_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL); +WHERE select_id = 174 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -589,13 +577,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL; +WHERE select_id = 173 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varbinary_1000, my_varbinary_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL); +WHERE select_id = 173 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -603,13 +591,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL; +WHERE select_id = 172 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_binary_30, my_varbinary_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL); +WHERE select_id = 172 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -617,13 +605,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL; +WHERE select_id = 171 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_binary_30, my_varchar_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL); +WHERE select_id = 171 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -631,13 +619,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values; SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL; +WHERE select_id = 170 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_binary_30, my_char_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL); +WHERE select_id = 170 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -645,13 +633,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values; SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL; +WHERE select_id = 169 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_binary_30, my_binary_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL); +WHERE select_id = 169 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -659,13 +647,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL; +WHERE select_id = 168 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varchar_1000, my_varbinary_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL); +WHERE select_id = 168 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -673,13 +661,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL; +WHERE select_id = 167 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varchar_1000, my_binary_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL); +WHERE select_id = 167 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -687,13 +675,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL; +WHERE select_id = 166 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varchar_1000, my_char_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL); +WHERE select_id = 166 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -701,13 +689,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL; +WHERE select_id = 165 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varchar_1000, my_varchar_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL); +WHERE select_id = 165 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -715,13 +703,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL; +WHERE select_id = 164 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_char_30, my_varbinary_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL); +WHERE select_id = 164 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -729,13 +717,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values; SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL; +WHERE select_id = 163 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_char_30, my_binary_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL); +WHERE select_id = 163 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -743,13 +731,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL; +WHERE select_id = 162 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_char_30, my_varchar_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL); +WHERE select_id = 162 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -757,13 +745,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values; SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL; +WHERE select_id = 161 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_char_30, my_char_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL); +WHERE select_id = 161 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -771,13 +759,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL; +WHERE select_id = 160 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varbinary_1000`) AS `LOCATE('char', my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL); +WHERE select_id = 160 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -785,13 +773,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values; SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL; +WHERE select_id = 159 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_binary_30`) AS `LOCATE('char', my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL); +WHERE select_id = 159 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -799,13 +787,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL; +WHERE select_id = 158 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varchar_1000`) AS `LOCATE('char', my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL); +WHERE select_id = 158 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -813,46 +801,50 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values; SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL; +WHERE select_id = 157 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `LOCATE('char', my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL); +WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../log/current_test'), id FROM t1_values; -SELECT LOAD_FILE('../log/current_test'), id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL; -LOAD_FILE('../log/current_test') id -CURRENT_TEST: memory_func_view +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values +WHERE select_id = 156 OR select_id IS NULL order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: memory_func_view +Here is content from load_file 2 -CURRENT_TEST: memory_func_view +Here is content from load_file 3 -CURRENT_TEST: memory_func_view +Here is content from load_file 4 -CURRENT_TEST: memory_func_view +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'../log/current_test') AS `LOAD_FILE('../log/current_test')`,`t1_values`.`id` AS `id` from `t1_values` +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL); -LOAD_FILE('../log/current_test') id -CURRENT_TEST: memory_func_view +WHERE select_id = 156 OR select_id IS NULL) order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: memory_func_view +Here is content from load_file 2 -CURRENT_TEST: memory_func_view +Here is content from load_file 3 -CURRENT_TEST: memory_func_view +Here is content from load_file 4 -CURRENT_TEST: memory_func_view +Here is content from load_file 5 DROP VIEW v1; @@ -861,13 +853,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL; +WHERE select_id = 155 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varbinary_1000`) AS `LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL); +WHERE select_id = 155 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -875,13 +867,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL; +WHERE select_id = 154 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_binary_30`) AS `LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL); +WHERE select_id = 154 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -889,13 +881,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL; +WHERE select_id = 153 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varchar_1000`) AS `LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL); +WHERE select_id = 153 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -903,19 +895,49 @@ CREATE VIEW v1 AS SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL; +WHERE select_id = 152 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_char_30`) AS `LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL); +WHERE select_id = 152 OR select_id IS NULL) order by id; +DROP VIEW v1; + + +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values; SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL; +WHERE select_id = 150 OR select_id IS NULL order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -930,7 +952,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL); +WHERE select_id = 150 OR select_id IS NULL) order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -943,9 +965,33 @@ Error 1292 Truncated incorrect DECIMAL value: '' DROP VIEW v1; +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_bigint`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values; SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL; +WHERE select_id = 148 OR select_id IS NULL order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -957,7 +1003,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varbinary_1000`,2) AS `LEFT(my_varbinary_1000, 2)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL); +WHERE select_id = 148 OR select_id IS NULL) order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -969,19 +1015,19 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values; SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL; +WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL); +WHERE select_id = 147 OR select_id IS NULL) order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 2 @@ -993,7 +1039,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values; SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL; +WHERE select_id = 146 OR select_id IS NULL order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1005,7 +1051,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varchar_1000`,2) AS `LEFT(my_varchar_1000, 2)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL); +WHERE select_id = 146 OR select_id IS NULL) order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1017,7 +1063,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values; SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL; +WHERE select_id = 145 OR select_id IS NULL order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1029,7 +1075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_char_30`,2) AS `LEFT(my_char_30, 2)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL); +WHERE select_id = 145 OR select_id IS NULL) order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1043,13 +1089,13 @@ CREATE VIEW v1 AS SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL; +WHERE select_id = 144 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LCASE(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL); +WHERE select_id = 144 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1057,13 +1103,13 @@ CREATE VIEW v1 AS SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values; SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL; +WHERE select_id = 143 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `INSTR(my_char_30, 'char')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL); +WHERE select_id = 143 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1071,7 +1117,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL; +WHERE select_id = 142 OR select_id IS NULL order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1083,7 +1129,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varbinary_1000`) AS `BIT_LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL); +WHERE select_id = 142 OR select_id IS NULL) order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1097,19 +1143,19 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL; +WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL); +WHERE select_id = 141 OR select_id IS NULL) order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 240 2 @@ -1123,7 +1169,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL; +WHERE select_id = 140 OR select_id IS NULL order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1135,7 +1181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varchar_1000`) AS `BIT_LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL); +WHERE select_id = 140 OR select_id IS NULL) order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1149,7 +1195,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL; +WHERE select_id = 139 OR select_id IS NULL order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1161,7 +1207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_char_30`) AS `BIT_LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL); +WHERE select_id = 139 OR select_id IS NULL) order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1175,7 +1221,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values; SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL; +WHERE select_id = 138 OR select_id IS NULL order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1187,7 +1233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_year`,_latin1'IS_NULL') AS `IFNULL(my_year,'IS_NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL); +WHERE select_id = 138 OR select_id IS NULL) order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1201,7 +1247,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values; SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL; +WHERE select_id = 137 OR select_id IS NULL order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1213,7 +1259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_time`,_latin1'IS_NULL') AS `IFNULL(my_time,'IS_NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL); +WHERE select_id = 137 OR select_id IS NULL) order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1227,7 +1273,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values; SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL; +WHERE select_id = 136 OR select_id IS NULL order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1239,7 +1285,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_timestamp`,_latin1'IS_NULL') AS `IFNULL(my_timestamp,'IS_NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL); +WHERE select_id = 136 OR select_id IS NULL) order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1253,7 +1299,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values; SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL; +WHERE select_id = 135 OR select_id IS NULL order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1265,7 +1311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_date`,_latin1'IS_NULL') AS `IFNULL(my_date,'IS_NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL); +WHERE select_id = 135 OR select_id IS NULL) order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1279,7 +1325,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values; SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL; +WHERE select_id = 134 OR select_id IS NULL order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1291,7 +1337,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_datetime`,_latin1'IS_NULL') AS `IFNULL(my_datetime,'IS_NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL); +WHERE select_id = 134 OR select_id IS NULL) order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1305,7 +1351,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values; SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL; +WHERE select_id = 133 OR select_id IS NULL order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1317,7 +1363,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_double`,_latin1'IS_NULL') AS `IFNULL(my_double,'IS_NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL); +WHERE select_id = 133 OR select_id IS NULL) order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1331,7 +1377,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values; SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL; +WHERE select_id = 132 OR select_id IS NULL order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1343,7 +1389,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_decimal`,_latin1'IS_NULL') AS `IFNULL(my_decimal,'IS_NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL); +WHERE select_id = 132 OR select_id IS NULL) order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1357,7 +1403,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values; SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL; +WHERE select_id = 131 OR select_id IS NULL order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1369,7 +1415,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_bigint`,_latin1'IS_NULL') AS `IFNULL(my_bigint,'IS_NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL); +WHERE select_id = 131 OR select_id IS NULL) order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1383,7 +1429,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values; SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL; +WHERE select_id = 130 OR select_id IS NULL order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1395,7 +1441,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varbinary_1000`,_latin1'IS_NULL') AS `IFNULL(my_varbinary_1000,'IS_NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL); +WHERE select_id = 130 OR select_id IS NULL) order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1409,19 +1455,19 @@ CREATE VIEW v1 AS SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values; SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL; +WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,_latin1'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL); +WHERE select_id = 129 OR select_id IS NULL) order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 2 @@ -1435,7 +1481,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values; SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL; +WHERE select_id = 128 OR select_id IS NULL order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1447,7 +1493,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varchar_1000`,_latin1'IS_NULL') AS `IFNULL(my_varchar_1000,'IS_NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL); +WHERE select_id = 128 OR select_id IS NULL) order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1461,7 +1507,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values; SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL; +WHERE select_id = 127 OR select_id IS NULL order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1473,7 +1519,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_char_30`,_latin1'IS_NULL') AS `IFNULL(my_char_30,'IS_NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL); +WHERE select_id = 127 OR select_id IS NULL) order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1487,7 +1533,7 @@ CREATE VIEW v1 AS SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values; SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL; +WHERE select_id = 126 OR select_id IS NULL order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1501,7 +1547,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL); +WHERE select_id = 126 OR select_id IS NULL) order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1516,7 +1562,7 @@ CREATE VIEW v1 AS SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values; SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL; +WHERE select_id = 125 OR select_id IS NULL order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1530,7 +1576,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL); +WHERE select_id = 125 OR select_id IS NULL) order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1545,7 +1591,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL; +WHERE select_id = 124 OR select_id IS NULL order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1559,7 +1605,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL); +WHERE select_id = 124 OR select_id IS NULL) order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1574,7 +1620,7 @@ CREATE VIEW v1 AS SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values; SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL; +WHERE select_id = 123 OR select_id IS NULL order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1588,7 +1634,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL); +WHERE select_id = 123 OR select_id IS NULL) order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1603,7 +1649,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values; SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL; +WHERE select_id = 122 OR select_id IS NULL order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1617,7 +1663,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL); +WHERE select_id = 122 OR select_id IS NULL) order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1632,7 +1678,7 @@ CREATE VIEW v1 AS SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values; SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL; +WHERE select_id = 121 OR select_id IS NULL order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1646,7 +1692,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL); +WHERE select_id = 121 OR select_id IS NULL) order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1661,7 +1707,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values; SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL; +WHERE select_id = 120 OR select_id IS NULL order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1675,7 +1721,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL); +WHERE select_id = 120 OR select_id IS NULL) order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1690,7 +1736,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values; SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL; +WHERE select_id = 119 OR select_id IS NULL order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1704,7 +1750,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL); +WHERE select_id = 119 OR select_id IS NULL) order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1719,7 +1765,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL; +WHERE select_id = 118 OR select_id IS NULL order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1733,7 +1779,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL); +WHERE select_id = 118 OR select_id IS NULL) order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1748,21 +1794,21 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL; +WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),_latin1'IS NULL',_latin1'IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL); +WHERE select_id = 117 OR select_id IS NULL) order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 @@ -1777,7 +1823,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL; +WHERE select_id = 116 OR select_id IS NULL order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1791,7 +1837,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL); +WHERE select_id = 116 OR select_id IS NULL) order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1806,7 +1852,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values; SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL; +WHERE select_id = 115 OR select_id IS NULL order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1820,7 +1866,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL); +WHERE select_id = 115 OR select_id IS NULL) order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1835,7 +1881,7 @@ CREATE VIEW v1 AS SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values; SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL; +WHERE select_id = 114 OR select_id IS NULL order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1847,7 +1893,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_year`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_year, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL); +WHERE select_id = 114 OR select_id IS NULL) order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1861,7 +1907,7 @@ CREATE VIEW v1 AS SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values; SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL; +WHERE select_id = 113 OR select_id IS NULL order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1873,7 +1919,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_time`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_time, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL); +WHERE select_id = 113 OR select_id IS NULL) order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1887,7 +1933,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL; +WHERE select_id = 112 OR select_id IS NULL order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1899,7 +1945,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_timestamp`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL); +WHERE select_id = 112 OR select_id IS NULL) order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1913,7 +1959,7 @@ CREATE VIEW v1 AS SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values; SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL; +WHERE select_id = 111 OR select_id IS NULL order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1925,7 +1971,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_date`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_date, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL); +WHERE select_id = 111 OR select_id IS NULL) order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1939,7 +1985,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values; SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL; +WHERE select_id = 110 OR select_id IS NULL order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1951,7 +1997,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_datetime`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_datetime, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL); +WHERE select_id = 110 OR select_id IS NULL) order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1965,7 +2011,7 @@ CREATE VIEW v1 AS SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values; SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL; +WHERE select_id = 109 OR select_id IS NULL order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1977,7 +2023,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_double`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_double, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL); +WHERE select_id = 109 OR select_id IS NULL) order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1991,7 +2037,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values; SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL; +WHERE select_id = 108 OR select_id IS NULL order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2003,7 +2049,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_decimal`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_decimal, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL); +WHERE select_id = 108 OR select_id IS NULL) order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2017,7 +2063,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values; SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL; +WHERE select_id = 107 OR select_id IS NULL order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2029,7 +2075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_bigint`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_bigint, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL); +WHERE select_id = 107 OR select_id IS NULL) order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2043,7 +2089,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL; +WHERE select_id = 106 OR select_id IS NULL order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2055,7 +2101,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL); +WHERE select_id = 106 OR select_id IS NULL) order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2069,13 +2115,13 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL; +WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2086,7 +2132,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL); +WHERE select_id = 105 OR select_id IS NULL) order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2105,7 +2151,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL; +WHERE select_id = 104 OR select_id IS NULL order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2117,7 +2163,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL); +WHERE select_id = 104 OR select_id IS NULL) order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2131,7 +2177,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values; SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL; +WHERE select_id = 103 OR select_id IS NULL order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2146,7 +2192,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL); +WHERE select_id = 103 OR select_id IS NULL) order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2159,11 +2205,11 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL; +WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2175,7 +2221,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using koi8r) AS `CONVERT(my_varbinary_1000 USING koi8r)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL); +WHERE select_id = 102 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2185,23 +2231,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL; +WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL); +WHERE select_id = 101 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 2 @@ -2211,11 +2257,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL; +WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2227,7 +2273,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using koi8r) AS `CONVERT(my_varchar_1000 USING koi8r)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL); +WHERE select_id = 100 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2237,11 +2283,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL; +WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2253,7 +2299,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using koi8r) AS `CONVERT(my_char_30 USING koi8r)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL); +WHERE select_id = 99 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2263,11 +2309,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL; +WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2279,7 +2325,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using utf8) AS `CONVERT(my_varbinary_1000 USING utf8)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL); +WHERE select_id = 98 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2289,23 +2335,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL; +WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL); +WHERE select_id = 97 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 2 @@ -2315,11 +2361,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL; +WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2331,7 +2377,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using utf8) AS `CONVERT(my_varchar_1000 USING utf8)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL); +WHERE select_id = 96 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2341,11 +2387,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL; +WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2357,7 +2403,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using utf8) AS `CONVERT(my_char_30 USING utf8)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL); +WHERE select_id = 95 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2371,7 +2417,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL; +WHERE select_id = 94 OR select_id IS NULL order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2383,7 +2429,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as unsigned) AS `CAST(my_year AS UNSIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL); +WHERE select_id = 94 OR select_id IS NULL) order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2397,7 +2443,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL; +WHERE select_id = 93 OR select_id IS NULL order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2409,7 +2455,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as unsigned) AS `CAST(my_time AS UNSIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL); +WHERE select_id = 93 OR select_id IS NULL) order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2423,7 +2469,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL; +WHERE select_id = 92 OR select_id IS NULL order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2435,7 +2481,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as unsigned) AS `CAST(my_timestamp AS UNSIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL); +WHERE select_id = 92 OR select_id IS NULL) order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2449,7 +2495,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL; +WHERE select_id = 91 OR select_id IS NULL order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2461,7 +2507,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as unsigned) AS `CAST(my_date AS UNSIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL); +WHERE select_id = 91 OR select_id IS NULL) order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2475,7 +2521,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL; +WHERE select_id = 90 OR select_id IS NULL order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2487,7 +2533,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as unsigned) AS `CAST(my_datetime AS UNSIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL); +WHERE select_id = 90 OR select_id IS NULL) order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2497,11 +2543,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL) order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL; +WHERE select_id = 88 OR select_id IS NULL order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2517,7 +2595,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL); +WHERE select_id = 88 OR select_id IS NULL) order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2535,7 +2613,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL; +WHERE select_id = 87 OR select_id IS NULL order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2547,7 +2625,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as unsigned) AS `CAST(my_bigint AS UNSIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL); +WHERE select_id = 87 OR select_id IS NULL) order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2561,7 +2639,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL; +WHERE select_id = 86 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2578,7 +2656,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as unsigned) AS `CAST(my_varbinary_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL); +WHERE select_id = 86 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2597,13 +2675,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL; +WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2615,7 +2693,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as unsigned) AS `CAST(my_binary_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL); +WHERE select_id = 85 OR select_id IS NULL) order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2635,7 +2713,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL; +WHERE select_id = 84 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2652,7 +2730,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as unsigned) AS `CAST(my_varchar_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL); +WHERE select_id = 84 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2671,7 +2749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL; +WHERE select_id = 83 OR select_id IS NULL order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2688,7 +2766,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as unsigned) AS `CAST(my_char_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL); +WHERE select_id = 83 OR select_id IS NULL) order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2707,7 +2785,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL; +WHERE select_id = 82 OR select_id IS NULL order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2719,7 +2797,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as signed) AS `CAST(my_year AS SIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL); +WHERE select_id = 82 OR select_id IS NULL) order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2733,7 +2811,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL; +WHERE select_id = 81 OR select_id IS NULL order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2745,7 +2823,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as signed) AS `CAST(my_time AS SIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL); +WHERE select_id = 81 OR select_id IS NULL) order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2759,7 +2837,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL; +WHERE select_id = 80 OR select_id IS NULL order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2771,7 +2849,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as signed) AS `CAST(my_timestamp AS SIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL); +WHERE select_id = 80 OR select_id IS NULL) order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2785,7 +2863,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL; +WHERE select_id = 79 OR select_id IS NULL order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2797,7 +2875,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as signed) AS `CAST(my_date AS SIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL); +WHERE select_id = 79 OR select_id IS NULL) order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2811,7 +2889,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL; +WHERE select_id = 78 OR select_id IS NULL order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2823,7 +2901,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as signed) AS `CAST(my_datetime AS SIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL); +WHERE select_id = 78 OR select_id IS NULL) order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2833,11 +2911,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL) order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL; +WHERE select_id = 76 OR select_id IS NULL order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2852,7 +2962,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL); +WHERE select_id = 76 OR select_id IS NULL) order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2869,7 +2979,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL; +WHERE select_id = 75 OR select_id IS NULL order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2881,7 +2991,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as signed) AS `CAST(my_bigint AS SIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL); +WHERE select_id = 75 OR select_id IS NULL) order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2895,7 +3005,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL; +WHERE select_id = 74 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2911,7 +3021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as signed) AS `CAST(my_varbinary_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL); +WHERE select_id = 74 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2929,13 +3039,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL; +WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2946,7 +3056,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as signed) AS `CAST(my_binary_30 AS SIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL); +WHERE select_id = 73 OR select_id IS NULL) order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2965,7 +3075,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL; +WHERE select_id = 72 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2981,7 +3091,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as signed) AS `CAST(my_varchar_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL); +WHERE select_id = 72 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2999,7 +3109,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL; +WHERE select_id = 71 OR select_id IS NULL order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3015,7 +3125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as signed) AS `CAST(my_char_30 AS SIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL); +WHERE select_id = 71 OR select_id IS NULL) order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3033,7 +3143,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values; SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL; +WHERE select_id = 70 OR select_id IS NULL order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3045,7 +3155,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as decimal(37,2)) AS `CAST(my_year AS DECIMAL(37,2))`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL); +WHERE select_id = 70 OR select_id IS NULL) order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3059,7 +3169,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values; SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL; +WHERE select_id = 69 OR select_id IS NULL order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3071,7 +3181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as decimal(37,2)) AS `CAST(my_time AS DECIMAL(37,2))`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL); +WHERE select_id = 69 OR select_id IS NULL) order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3085,7 +3195,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL; +WHERE select_id = 68 OR select_id IS NULL order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3097,7 +3207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as decimal(37,2)) AS `CAST(my_timestamp AS DECIMAL(37,2))`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL); +WHERE select_id = 68 OR select_id IS NULL) order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3111,7 +3221,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values; SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL; +WHERE select_id = 67 OR select_id IS NULL order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3123,7 +3233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as decimal(37,2)) AS `CAST(my_date AS DECIMAL(37,2))`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL); +WHERE select_id = 67 OR select_id IS NULL) order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3137,7 +3247,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL; +WHERE select_id = 66 OR select_id IS NULL order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3149,7 +3259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as decimal(37,2)) AS `CAST(my_datetime AS DECIMAL(37,2))`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL); +WHERE select_id = 66 OR select_id IS NULL) order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3159,11 +3269,49 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values; +SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL) order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL; +WHERE select_id = 64 OR select_id IS NULL order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3175,7 +3323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as decimal(37,2)) AS `CAST(my_decimal AS DECIMAL(37,2))`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL); +WHERE select_id = 64 OR select_id IS NULL) order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3189,7 +3337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL; +WHERE select_id = 63 OR select_id IS NULL order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3201,7 +3349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as decimal(37,2)) AS `CAST(my_bigint AS DECIMAL(37,2))`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL); +WHERE select_id = 63 OR select_id IS NULL) order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3215,14 +3363,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL; +WHERE select_id = 62 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3232,14 +3380,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL); +WHERE select_id = 62 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3251,14 +3399,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL; +WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 27 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3273,14 +3421,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL); +WHERE select_id = 61 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 27 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3297,14 +3445,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL; +WHERE select_id = 60 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3314,14 +3462,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL); +WHERE select_id = 60 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3333,14 +3481,14 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL; +WHERE select_id = 59 OR select_id IS NULL order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3353,14 +3501,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL); +WHERE select_id = 59 OR select_id IS NULL) order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3375,7 +3523,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS TIME), my_year, id FROM t1_values; SELECT CAST(my_year AS TIME), my_year, id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL; +WHERE select_id = 58 OR select_id IS NULL order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3387,7 +3535,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as time) AS `CAST(my_year AS TIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL); +WHERE select_id = 58 OR select_id IS NULL) order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3401,7 +3549,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS TIME), my_time, id FROM t1_values; SELECT CAST(my_time AS TIME), my_time, id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL; +WHERE select_id = 57 OR select_id IS NULL order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3413,7 +3561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as time) AS `CAST(my_time AS TIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL); +WHERE select_id = 57 OR select_id IS NULL) order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3427,7 +3575,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL; +WHERE select_id = 56 OR select_id IS NULL order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3439,7 +3587,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as time) AS `CAST(my_timestamp AS TIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL); +WHERE select_id = 56 OR select_id IS NULL) order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3453,7 +3601,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS TIME), my_date, id FROM t1_values; SELECT CAST(my_date AS TIME), my_date, id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL; +WHERE select_id = 55 OR select_id IS NULL order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3465,7 +3613,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as time) AS `CAST(my_date AS TIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL); +WHERE select_id = 55 OR select_id IS NULL) order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3479,7 +3627,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL; +WHERE select_id = 54 OR select_id IS NULL order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3491,7 +3639,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as time) AS `CAST(my_datetime AS TIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL); +WHERE select_id = 54 OR select_id IS NULL) order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3501,11 +3649,45 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values; +SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL) order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL; +WHERE select_id = 52 OR select_id IS NULL order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3521,7 +3703,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as time) AS `CAST(my_bigint AS TIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL); +WHERE select_id = 52 OR select_id IS NULL) order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3539,7 +3721,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL; +WHERE select_id = 51 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3556,7 +3738,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as time) AS `CAST(my_varbinary_1000 AS TIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL); +WHERE select_id = 51 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3575,14 +3757,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL; +WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -3594,7 +3776,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as time) AS `CAST(my_binary_30 AS TIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL); +WHERE select_id = 50 OR select_id IS NULL) order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 00:00:00 2 @@ -3615,7 +3797,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL; +WHERE select_id = 49 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3632,7 +3814,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as time) AS `CAST(my_varchar_1000 AS TIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL); +WHERE select_id = 49 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3651,7 +3833,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL; +WHERE select_id = 48 OR select_id IS NULL order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3668,7 +3850,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as time) AS `CAST(my_char_30 AS TIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL); +WHERE select_id = 48 OR select_id IS NULL) order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3687,7 +3869,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values; SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL; +WHERE select_id = 47 OR select_id IS NULL order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3704,7 +3886,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as datetime) AS `CAST(my_year AS DATETIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL); +WHERE select_id = 47 OR select_id IS NULL) order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3723,7 +3905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values; SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL; +WHERE select_id = 46 OR select_id IS NULL order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3738,7 +3920,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as datetime) AS `CAST(my_time AS DATETIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL); +WHERE select_id = 46 OR select_id IS NULL) order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3755,7 +3937,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL; +WHERE select_id = 45 OR select_id IS NULL order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3767,7 +3949,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as datetime) AS `CAST(my_timestamp AS DATETIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL); +WHERE select_id = 45 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3781,7 +3963,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values; SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL; +WHERE select_id = 44 OR select_id IS NULL order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3793,7 +3975,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as datetime) AS `CAST(my_date AS DATETIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL); +WHERE select_id = 44 OR select_id IS NULL) order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3807,7 +3989,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL; +WHERE select_id = 43 OR select_id IS NULL order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3819,7 +4001,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as datetime) AS `CAST(my_datetime AS DATETIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL); +WHERE select_id = 43 OR select_id IS NULL) order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3833,7 +4015,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values; SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL; +WHERE select_id = 42 OR select_id IS NULL order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3852,7 +4034,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as datetime) AS `CAST(my_double AS DATETIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL); +WHERE select_id = 42 OR select_id IS NULL) order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3873,7 +4055,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL; +WHERE select_id = 41 OR select_id IS NULL order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3892,7 +4074,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as datetime) AS `CAST(my_bigint AS DATETIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL); +WHERE select_id = 41 OR select_id IS NULL) order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3913,7 +4095,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL; +WHERE select_id = 40 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3931,7 +4113,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as datetime) AS `CAST(my_varbinary_1000 AS DATETIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL); +WHERE select_id = 40 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3951,14 +4133,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL; +WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -3970,7 +4152,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as datetime) AS `CAST(my_binary_30 AS DATETIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL); +WHERE select_id = 39 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 NULL 2 @@ -3991,7 +4173,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL; +WHERE select_id = 38 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4009,7 +4191,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as datetime) AS `CAST(my_varchar_1000 AS DATETIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL); +WHERE select_id = 38 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4029,7 +4211,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL; +WHERE select_id = 37 OR select_id IS NULL order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4047,7 +4229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as datetime) AS `CAST(my_char_30 AS DATETIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL); +WHERE select_id = 37 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4067,7 +4249,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATE), my_year, id FROM t1_values; SELECT CAST(my_year AS DATE), my_year, id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL; +WHERE select_id = 36 OR select_id IS NULL order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4084,7 +4266,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as date) AS `CAST(my_year AS DATE)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL); +WHERE select_id = 36 OR select_id IS NULL) order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4103,7 +4285,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATE), my_time, id FROM t1_values; SELECT CAST(my_time AS DATE), my_time, id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL; +WHERE select_id = 35 OR select_id IS NULL order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4115,7 +4297,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as date) AS `CAST(my_time AS DATE)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL); +WHERE select_id = 35 OR select_id IS NULL) order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4129,7 +4311,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL; +WHERE select_id = 34 OR select_id IS NULL order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4141,7 +4323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as date) AS `CAST(my_timestamp AS DATE)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL); +WHERE select_id = 34 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4155,7 +4337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATE), my_date, id FROM t1_values; SELECT CAST(my_date AS DATE), my_date, id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL; +WHERE select_id = 33 OR select_id IS NULL order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4167,7 +4349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as date) AS `CAST(my_date AS DATE)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL); +WHERE select_id = 33 OR select_id IS NULL) order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4181,7 +4363,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL; +WHERE select_id = 32 OR select_id IS NULL order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4193,7 +4375,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as date) AS `CAST(my_datetime AS DATE)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL); +WHERE select_id = 32 OR select_id IS NULL) order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4207,7 +4389,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATE), my_double, id FROM t1_values; SELECT CAST(my_double AS DATE), my_double, id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL; +WHERE select_id = 31 OR select_id IS NULL order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4225,7 +4407,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as date) AS `CAST(my_double AS DATE)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL); +WHERE select_id = 31 OR select_id IS NULL) order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4245,7 +4427,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL; +WHERE select_id = 30 OR select_id IS NULL order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4263,7 +4445,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as date) AS `CAST(my_bigint AS DATE)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL); +WHERE select_id = 30 OR select_id IS NULL) order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4283,7 +4465,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL; +WHERE select_id = 29 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4301,7 +4483,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as date) AS `CAST(my_varbinary_1000 AS DATE)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL); +WHERE select_id = 29 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4321,14 +4503,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL; +WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -4340,7 +4522,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as date) AS `CAST(my_binary_30 AS DATE)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL); +WHERE select_id = 28 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 NULL 2 @@ -4361,7 +4543,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL; +WHERE select_id = 27 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4379,7 +4561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as date) AS `CAST(my_varchar_1000 AS DATE)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL); +WHERE select_id = 27 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4399,7 +4581,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL; +WHERE select_id = 26 OR select_id IS NULL order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4417,7 +4599,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as date) AS `CAST(my_char_30 AS DATE)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL); +WHERE select_id = 26 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4437,7 +4619,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values; SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL; +WHERE select_id = 25 OR select_id IS NULL order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4449,7 +4631,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset latin1) AS `CAST(my_year AS CHAR)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL); +WHERE select_id = 25 OR select_id IS NULL) order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4463,7 +4645,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values; SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL; +WHERE select_id = 24 OR select_id IS NULL order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4475,7 +4657,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset latin1) AS `CAST(my_time AS CHAR)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL); +WHERE select_id = 24 OR select_id IS NULL) order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4489,7 +4671,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL; +WHERE select_id = 23 OR select_id IS NULL order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4501,7 +4683,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset latin1) AS `CAST(my_timestamp AS CHAR)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL); +WHERE select_id = 23 OR select_id IS NULL) order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4515,7 +4697,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values; SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL; +WHERE select_id = 22 OR select_id IS NULL order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4527,7 +4709,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset latin1) AS `CAST(my_date AS CHAR)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL); +WHERE select_id = 22 OR select_id IS NULL) order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4541,7 +4723,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL; +WHERE select_id = 21 OR select_id IS NULL order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4553,7 +4735,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset latin1) AS `CAST(my_datetime AS CHAR)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL); +WHERE select_id = 21 OR select_id IS NULL) order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4567,7 +4749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values; SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL; +WHERE select_id = 20 OR select_id IS NULL order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4579,7 +4761,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset latin1) AS `CAST(my_double AS CHAR)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL); +WHERE select_id = 20 OR select_id IS NULL) order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4593,7 +4775,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL; +WHERE select_id = 19 OR select_id IS NULL order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4605,7 +4787,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset latin1) AS `CAST(my_decimal AS CHAR)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL); +WHERE select_id = 19 OR select_id IS NULL) order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4619,7 +4801,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL; +WHERE select_id = 18 OR select_id IS NULL order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4631,7 +4813,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset latin1) AS `CAST(my_bigint AS CHAR)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL); +WHERE select_id = 18 OR select_id IS NULL) order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4645,7 +4827,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL; +WHERE select_id = 17 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4657,7 +4839,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset latin1) AS `CAST(my_varbinary_1000 AS CHAR)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL); +WHERE select_id = 17 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4671,19 +4853,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL; +WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL); +WHERE select_id = 16 OR select_id IS NULL) order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 2 @@ -4697,7 +4879,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL; +WHERE select_id = 15 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4709,7 +4891,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset latin1) AS `CAST(my_varchar_1000 AS CHAR)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL); +WHERE select_id = 15 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4723,7 +4905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL; +WHERE select_id = 14 OR select_id IS NULL order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4735,7 +4917,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset latin1) AS `CAST(my_char_30 AS CHAR)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL); +WHERE select_id = 14 OR select_id IS NULL) order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4749,7 +4931,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values; SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL; +WHERE select_id = 13 OR select_id IS NULL order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4761,7 +4943,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset binary) AS `CAST(my_year AS BINARY)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL); +WHERE select_id = 13 OR select_id IS NULL) order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4775,7 +4957,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values; SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL; +WHERE select_id = 12 OR select_id IS NULL order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4787,7 +4969,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset binary) AS `CAST(my_time AS BINARY)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL); +WHERE select_id = 12 OR select_id IS NULL) order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4801,7 +4983,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL; +WHERE select_id = 11 OR select_id IS NULL order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4813,7 +4995,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset binary) AS `CAST(my_timestamp AS BINARY)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL); +WHERE select_id = 11 OR select_id IS NULL) order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4827,7 +5009,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values; SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL; +WHERE select_id = 10 OR select_id IS NULL order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4839,7 +5021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset binary) AS `CAST(my_date AS BINARY)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL); +WHERE select_id = 10 OR select_id IS NULL) order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4853,7 +5035,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL; +WHERE select_id = 9 OR select_id IS NULL order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4865,7 +5047,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset binary) AS `CAST(my_datetime AS BINARY)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL); +WHERE select_id = 9 OR select_id IS NULL) order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4879,7 +5061,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values; SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL; +WHERE select_id = 8 OR select_id IS NULL order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4891,7 +5073,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset binary) AS `CAST(my_double AS BINARY)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL); +WHERE select_id = 8 OR select_id IS NULL) order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4905,7 +5087,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL; +WHERE select_id = 7 OR select_id IS NULL order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4917,7 +5099,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset binary) AS `CAST(my_decimal AS BINARY)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL); +WHERE select_id = 7 OR select_id IS NULL) order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4931,7 +5113,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL; +WHERE select_id = 6 OR select_id IS NULL order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4943,7 +5125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset binary) AS `CAST(my_bigint AS BINARY)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL); +WHERE select_id = 6 OR select_id IS NULL) order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4957,7 +5139,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL; +WHERE select_id = 5 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4969,7 +5151,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset binary) AS `CAST(my_varbinary_1000 AS BINARY)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL); +WHERE select_id = 5 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4983,19 +5165,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL; +WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL); +WHERE select_id = 4 OR select_id IS NULL) order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 2 @@ -5009,7 +5191,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL; +WHERE select_id = 3 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5021,7 +5203,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset binary) AS `CAST(my_varchar_1000 AS BINARY)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL); +WHERE select_id = 3 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5035,7 +5217,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL; +WHERE select_id = 2 OR select_id IS NULL order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5047,7 +5229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset binary) AS `CAST(my_char_30 AS BINARY)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL); +WHERE select_id = 2 OR select_id IS NULL) order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5059,7 +5241,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT sqrt(my_bigint), my_bigint, id FROM t1_values; SELECT sqrt(my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL; +WHERE select_id = 1 OR select_id IS NULL order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -5073,7 +5255,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sqrt(`t1_values`.`my_bigint`) AS `sqrt(my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL); +WHERE select_id = 1 OR select_id IS NULL) order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result index fd31aa76ab9..6ba95c9fa63 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -164,7 +172,7 @@ declare y integer default 1; set @x = x; set @y = y; set @z = 234; -SELECT f1, f2 into @x, @y from t2 limit 1; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -207,7 +215,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; -SELECT f4, f3 into @x, @y from t2 limit 1; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// CALL sp1(); @@ -695,7 +703,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -794,7 +802,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -902,7 +910,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1082,7 +1090,8 @@ declare f2_value char(20); declare f5_value char(20); declare f4_value integer; declare f6_value integer; -declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1165,7 +1174,7 @@ of a compound statement ends. DROP TABLE IF EXISTS temp1; DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; f1 f2 f4 f5 a` a` -5000 a` aaa aaa -4999 aaa @@ -1185,8 +1194,8 @@ declare newf1 char(20); declare newf2 char(20); declare newf5 char(20); declare newf4 integer; -declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; -declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1268,8 +1277,10 @@ declare i_newf11 char(20); declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; -declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; -declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1300,8 +1311,10 @@ DECLARE o_newf11 CHAR(20); DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; -DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; -DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_03.result b/mysql-test/suite/funcs_1/r/memory_storedproc_03.result index c982691daad..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_06.result b/mysql-test/suite/funcs_1/r/memory_storedproc_06.result index 890498e1966..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_06.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- @@ -79,6 +87,7 @@ BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' +USE db_storedproc_1; root@localhost db_storedproc_1 GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -90,6 +99,7 @@ CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// +USE db_storedproc_1; root@localhost db_storedproc_1 DROP USER 'user_1'@'localhost'; @@ -115,6 +125,7 @@ CREATE FUNCTION fn1(v1 int) returns int BEGIN return v1; END// +USE db_storedproc_1; root@localhost db_storedproc_1 drop user 'user_1'@'localhost'; diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_07.result b/mysql-test/suite/funcs_1/r/memory_storedproc_07.result index 0980ca84a8c..cbe0a18435a 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result index e3f9556a082..40ebc1e51e4 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/memory_storedproc_10.result b/mysql-test/suite/funcs_1/r/memory_storedproc_10.result index 7f9946218e9..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/memory_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/memory_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -78,7 +86,7 @@ connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK); user_1@localhost db_storedproc CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN -SELECT * FROM db_storedproc.t1 LIMIT 1; +SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// CREATE FUNCTION fn31105(n INT) RETURNS INT BEGIN @@ -93,6 +101,8 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +connection default; +USE db_storedproc; root@localhost db_storedproc CALL sp31102(); @@ -112,6 +122,8 @@ a` a` 1000-01-01 -5000 a` -5000 SELECT fn31105( 9 ); fn31105( 9 ) 81 +connection default; +USE db_storedproc; root@localhost db_storedproc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; @@ -129,6 +141,7 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +USE db_storedproc; root@localhost db_storedproc DROP PROCEDURE sp31102; @@ -176,6 +189,8 @@ DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; CREATE PROCEDURE sp_ins_1() @@ -203,49 +218,72 @@ END; SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// +CREATE PROCEDURE sp_del() +BEGIN +DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// +CREATE PROCEDURE sp_with_rowcount() +BEGIN +BEGIN +INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), +('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); +END; +SELECT row_count() AS 'row_count() after insert'; +SELECT row_count() AS 'row_count() after select row_count()'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; +SELECT row_count() AS 'row_count() after update'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +DELETE FROM temp WHERE temp.f1 = 'updated_2'; +SELECT row_count() AS 'row_count() after delete'; +END// CALL sp_ins_1(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 CALL sp_ins_3(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 +abc xyz 1949-05-23 100 uvw 1000 +abc xyz 1989-11-09 100 uvw 1000 +abc xyz 2005-10-24 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 -abc xyz 1949-05-23 100 uvw 1000 -abc xyz 1989-11-09 100 uvw 1000 -abc xyz 2005-10-24 100 uvw 1000 CALL sp_upd(); SELECT row_count(); row_count() 4 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -254,8 +292,6 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 @@ -279,6 +315,8 @@ row_count() 3 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -287,26 +325,73 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +qwe xyz 1998-03-26 100 uvw 1000 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 updated xyz 2005-10-24 100 uvw 1000 updated_2 abc 1989-11-09 100 uvw 1000 -qwe xyz 1998-03-26 100 uvw 1000 updated_2 abc 2000-11-09 100 uvw 1000 updated_2 abc 2005-11-07 100 uvw 1000 +CALL sp_del(); +SELECT row_count(); +row_count() +4 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +a` a` 1000-01-01 -5000 a` -5000 +aaa aaa 1000-01-02 -4999 aaa -4999 +abaa abaa 1000-01-03 -4998 abaa -4998 +acaaa acaaa 1000-01-04 -4997 acaaa -4997 +adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 +aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 +afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 +agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 +updated abc 2005-10-03 100 uvw 1000 +updated xyz 1949-05-23 100 uvw 1000 +updated xyz 1989-11-09 100 uvw 1000 +updated xyz 2005-10-24 100 uvw 1000 +DELETE FROM temp; +CALL sp_with_rowcount(); +row_count() after insert +4 +row_count() after select row_count() +-1 +f1 f2 f3 +qwe abc 1989-11-09 +qwe abc 2000-11-09 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +row_count() after update +2 +f1 f2 f3 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +updated_2 abc 1989-11-09 +updated_2 abc 2000-11-09 +row_count() after delete +2 +SELECT row_count(); +row_count() +-1 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +qwe xyz 1998-03-26 100 uvw 1000 +qwe xyz 2005-11-07 100 uvw 1000 DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/memory_trig_0102.result b/mysql-test/suite/funcs_1/r/memory_trig_0102.result index a9477604425..d926d682d13 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_0102.result @@ -1,90 +1,91 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -97,9 +98,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -107,7 +108,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -135,7 +136,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -188,7 +189,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=memory; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -200,7 +201,7 @@ update t1 set f2='update 3.5.1.7'; select * from t1; f1 f2 f3 NULL update 3.5.1.7 42 -select trigger_name from information_schema.triggers; +select trigger_name from information_schema.triggers order by trigger_name; trigger_name trg5_1 trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -220,7 +221,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -228,11 +229,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = memory; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -256,9 +257,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = memory; create table t2 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -288,15 +289,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = memory; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -307,7 +308,7 @@ insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; @test_var1 @test_var2 @test_var3 trig1 trig2 trig3 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -317,7 +318,7 @@ trig2 3 select * from trig_db3.t1; f1 f2 trig3 4 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -335,17 +336,17 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = memory; create table trig_db2.t1 (f1 char(50), f2 integer) engine = memory; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table -trig_db1 trig1_b t1 trig_db1 trig1_a t1 +trig_db1 trig1_b t1 trig_db2 trig2 t1 set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); diff --git a/mysql-test/suite/funcs_1/r/memory_trig_03.result b/mysql-test/suite/funcs_1/r/memory_trig_03.result index e5813236213..4fa5a72afd5 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_03.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_03.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -100,7 +101,7 @@ set new.f1 = 'trig 3.5.3.2_1-no'; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no select current_user; @@ -115,15 +116,12 @@ root@localhost use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-yes'); ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - -note: once 15166 is fixed a similar case for SELECT needs to be added ---------------------------------------------------------------------- insert into t1 (f1) values ('insert 3.5.3.2-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -135,7 +133,7 @@ drop trigger trg1_2; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -144,12 +142,12 @@ use priv_db; drop trigger trg1_2; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg1_2; Testcase 3.5.3.7a: @@ -174,23 +172,22 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +create trigger trg4a_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1a'; insert into t1 (f1) values ('insert 3.5.3.7-1a'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg4a_1; use priv_db; select current_user; @@ -201,18 +198,13 @@ Grants for test_yesprivs@localhost GRANT UPDATE, SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' create trigger trg4a_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2a'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a drop trigger trg4a_2; @@ -239,30 +231,29 @@ Grants for test_noprivs@localhost GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4b_1 before UPDATE on t1 for each row +set new.f1 = 'trig 3.5.3.7-1b'; +ERROR 42000: Access denied; you need the SUPER privilege for this operation insert into t1 (f1) values ('insert 3.5.3.7-1b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a insert 3.5.3.7-1b +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a update 3.5.3.7-1b drop trigger trg4b_1; +ERROR HY000: Trigger does not exist show grants; Grants for test_yesprivs@localhost GRANT SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' @@ -270,32 +261,26 @@ GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4b_2 before UPDATE on t1 for each row set new.f1 = 'trig 3.5.3.7-2b'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a -update 3.5.3.7-1b insert 3.5.3.7-2b -update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; -select f1 from t1; -f1 -insert 3.5.3.2-no trig 3.5.3.2_2-yes trig 3.5.3.2_2-yes -insert 3.5.3.6-no -insert 3.5.3.7-1a trig 3.5.3.7-2a update 3.5.3.7-1b +update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; +select f1 from t1 order by f1; +f1 +insert 3.5.3.2-no +insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a trig 3.5.3.7-2b +update 3.5.3.7-1b drop trigger trg4b_2; Testcase 3.5.3.7c @@ -321,21 +306,19 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4c_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1c'; insert into t1 (f1) values ('insert 3.5.3.7-1c'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c +update 3.5.3.7-1b drop trigger trg4c_1; show grants; Grants for test_yesprivs@localhost @@ -344,23 +327,17 @@ GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4c_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2c'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2c'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c +update 3.5.3.7-1b drop trigger trg4c_2; Testcase 3.5.3.7d: @@ -384,23 +361,20 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4d_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1d'; insert into t1 (f1) values ('insert 3.5.3.7-1d'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d +update 3.5.3.7-1b drop trigger trg4d_1; show grants; Grants for test_yesprivs@localhost @@ -409,25 +383,18 @@ GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4d_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2d'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2d'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d trig 3.5.3.7-2d +update 3.5.3.7-1b drop trigger trg4d_2; Testcase 3.5.3.8a: @@ -452,14 +419,14 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5a_1 before INSERT on t1 for each row +set @test_var = new.f1; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; @test_var before trig 3.5.3.8-1a insert into t1 (f1) values ('insert 3.5.3.8-1a'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1a @@ -477,10 +444,6 @@ set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; @test_var before trig 3.5.3.8-2a - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @test_var @@ -511,15 +474,15 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5b_1 before UPDATE on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1b'; insert into t1 (f1) values ('insert 3.5.3.8-1b'); select @test_var; @test_var before trig 3.5.3.8-1b update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1b @@ -536,10 +499,6 @@ insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; @test_var before trig 3.5.3.8-2b - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.* to test_yesprivs@localhost; update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; @test_var @@ -570,11 +529,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5c_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1c @@ -587,10 +546,6 @@ use priv_db; create trigger trg5c_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2c'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; @test_var @@ -620,11 +575,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5d_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1d @@ -637,10 +592,6 @@ use priv_db; create trigger trg5d_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2d'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @test_var @@ -676,10 +627,10 @@ ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); -select f1 from t1; +select f1 from t1 order by f1; f1 4 -select f2 from t2; +select f2 from t2 order by f2; f2 4 use priv_db; @@ -692,11 +643,11 @@ ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 2 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 1 use priv_db; @@ -709,12 +660,12 @@ ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 -2 1 -select f2 from t2; +2 +4 +select f2 from t2 order by f2; f2 1 select @aaa; @@ -730,13 +681,13 @@ ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 +1 +1 2 -1 -1 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_0407.result b/mysql-test/suite/funcs_1/r/memory_trig_0407.result index 14974428ecf..65bb3b91c9e 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_0407.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -82,22 +83,22 @@ Use db_drop; create table t1 (f1 char(30)) engine=memory; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 Trigger 3.5.4.1 drop trigger trg1; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table Insert into t1 values ('Insert no trigger 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 -Trigger 3.5.4.1 Insert no trigger 3.5.4.1 +Trigger 3.5.4.1 drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -121,7 +122,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=memory; create table t1_433a (f1a char (5)) engine=memory; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -142,7 +143,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=memory; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -178,7 +179,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=memory; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -215,7 +216,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -223,7 +224,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -251,7 +252,7 @@ use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); Warnings: Warning 1265 Data truncated for column 'f1' at row 1 -Select * from dbtest_two.t2; +Select * from dbtest_two.t2 order by f1; f1 1st Insert 3.5. 2nd Insert 3.5. @@ -304,9 +305,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -324,9 +325,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -352,9 +353,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -372,9 +373,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -402,9 +403,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -434,12 +435,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_08.result b/mysql-test/suite/funcs_1/r/memory_trig_08.result index a703de751c2..3224df54f4d 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_08.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_08.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -83,17 +84,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=memory; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=memory; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -116,18 +117,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -155,14 +156,22 @@ select @test_var; 3.5.8.4 - single SQL - insert ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row -insert into db_test.t1_i +BEGIN +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); +END// +Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; +f120 f122 f136 f144 f163 +1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000 +select * from db_test.t1_i order by i120; +i120 i136 i144 i163 +1 00222 0000023456 1.050000000000000000000000000000 update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_i; +select * from db_test.t1_i order by i120; i120 i136 i144 i163 1 00222 0000023456 1.050000000000000000000000000000 I 00222 0000023456 1.050000000000000000000000000000 @@ -171,7 +180,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -179,27 +188,27 @@ update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_u; +select * from db_test.t1_u order by u120; u120 u136 u144 u163 a 00111 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 f 00333 0000099999 999.990000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 3.5.8.3/4 - single SQL - delete ------------------------------- drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_d; +select * from db_test.t1_d order by d120; d120 d136 d144 d163 a 00111 0000099999 999.990000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 @@ -208,10 +217,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -239,36 +248,36 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if -d Test 3.5.8.5-if 00010 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00101 three 2nd else D Test 3.5.8.5-if 00102 three 2nd else -d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00103 three 2nd else create trigger trg3 before update on tb3 for each row BEGIN @@ -283,7 +292,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -325,60 +334,60 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -392,40 +401,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -460,33 +469,62 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; Testcase 3.5.8.6: (requirement void) ------------------------------------ +CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// +CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW +BEGIN +CALL sp_01 (); +END// +Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); +update tb3 set f120='S', f136=111, +f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; +select f120, f122 +from tb3 where f122 like 'Test 3.5.8.6%' order by f120; +f120 f122 +S Test 3.5.8.6-tr8_1 +DROP TRIGGER trg8_1; +DROP PROCEDURE sp_01; -Testcase 3.5.8.7: (Disabled as a result of bug _____) ------------------------------------------------------ +Testcase 3.5.8.7 +---------------- +Create trigger trg9_1 before update on tb3 for each row +BEGIN +Start transaction; +Set new.f120='U'; +Commit; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. +Create trigger trg9_2 before delete on tb3 for each row +BEGIN +Start transaction; +Set @var2=old.f120; +Rollback; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. drop user test_general@localhost; drop user test_general; drop user test_super@localhost; diff --git a/mysql-test/suite/funcs_1/r/memory_trig_09.result b/mysql-test/suite/funcs_1/r/memory_trig_09.result index da8b15901d9..b14e0a02aa2 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_09.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_09.result @@ -1,68 +1,69 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -74,15 +75,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 9 9 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -110,17 +111,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -129,13 +130,13 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 delete from tb3 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -166,17 +167,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4%'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -188,15 +189,15 @@ Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; Warnings: Warning 1048 Column 'f136' cannot be null -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4-trig'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -234,6 +235,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result b/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result index 8fc9178f494..5f7859189aa 100644 --- a/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/memory_trig_1011ext.result @@ -1,64 +1,65 @@ USE test; drop table if exists tb3; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 char(50), -f122 char(50), -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 char(50), +f122 char(50), +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) engine = memory; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/memory_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -80,7 +81,7 @@ Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 -from tb3 where f122 like 'Test 3.5.10.1/2/3%'; +from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000 NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000 @@ -94,7 +95,7 @@ f121 f122 f151 f163 NULL Not in View 3 111.110000000000000000000000000000 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 @@ -108,7 +109,7 @@ before delete 0 delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 select f121, f122, f151, f163 from vw11; @@ -135,11 +136,11 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 -Select * from tb_load limit 10; +Select * from tb_load order by f1 limit 10; f1 f2 f3 -5000 a` 1000 -4999 aaa 999 @@ -234,7 +235,7 @@ insert into t3 (f1) values (new.f1+1000); create trigger tr2_4 after insert on t2_4 for each row insert into t3 (f1) values (new.f1+10000); insert into t1 values (1); -select * from t3; +select * from t3 order by f1; f1 12 102 @@ -269,17 +270,17 @@ create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); insert into t1 values (1); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. -select * from t1; +select * from t1 order by f1; f1 0 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 -select * from t4; +select * from t4 order by f4; f4 4 drop trigger tr1; @@ -291,8 +292,8 @@ drop table t2; drop table t3; drop table t4; -Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889) ----------------------------------------------------------------------- +Testcase y.y.y.4: Recursive trigger/SP references +------------------------------------------------- set @sql_mode='traditional'; create table t1_sp ( count integer, @@ -380,14 +381,14 @@ start transaction; insert into t1 values (1); ERROR 22003: Out of range value adjusted for column 'f4' at row 1 commit; -select * from t1; +select * from t1 order by f1; f1 1 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 drop trigger tr1; diff --git a/mysql-test/suite/funcs_1/r/memory_views.result b/mysql-test/suite/funcs_1/r/memory_views.result index cc50c8219f0..7bd674b8d76 100644 --- a/mysql-test/suite/funcs_1/r/memory_views.result +++ b/mysql-test/suite/funcs_1/r/memory_views.result @@ -1,117 +1,119 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set" ) engine = memory; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/memory_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/memory_tb2.txt' +into table tb2 ; USE test; ! Attention: The file with the expected results is not diff --git a/mysql-test/suite/funcs_1/r/myisam_func_view.result b/mysql-test/suite/funcs_1/r/myisam_func_view.result index 94cba9796a2..c2689a36801 100644 --- a/mysql-test/suite/funcs_1/r/myisam_func_view.result +++ b/mysql-test/suite/funcs_1/r/myisam_func_view.result @@ -1,7 +1,3 @@ - -! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables --------------------------------------------------------------------------------- DROP TABLE IF EXISTS t1_selects, t1_modes, t1_values; DROP VIEW IF EXISTS v1; CREATE TABLE t1_values @@ -9,7 +5,7 @@ CREATE TABLE t1_values id BIGINT AUTO_INCREMENT, select_id BIGINT, PRIMARY KEY(id) -) ENGINE = 'MYISAM' ; +) ENGINE = ; ALTER TABLE t1_values ADD my_char_30 CHAR(30); ALTER TABLE t1_values ADD my_varchar_1000 VARCHAR(1000); ALTER TABLE t1_values ADD my_binary_30 BINARY(30); @@ -39,10 +35,10 @@ my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = '<--------30 characters------->', +my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), -my_binary_30 = '<--------30 characters------->', +my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -54,23 +50,23 @@ my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; INSERT INTO t1_values SET -my_char_30 = ' ---äÖüß@µ*$-- ', -my_varchar_1000 = ' ---äÖüß@µ*$-- ', -my_binary_30 = ' ---äÖüß@µ*$-- ', -my_varbinary_1000 = ' ---äÖüß@µ*$-- ', +my_char_30 = ' ---äÖüß@µ*$-- ', +my_varchar_1000 = ' ---äÖüß@µ*$-- ', +my_binary_30 = ' ---äÖüß@µ*$-- ', +my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, -my_bigint = 0, +my_bigint = 0, my_decimal = 0.0, my_double = 0; INSERT INTO t1_values SET -my_char_30 = '-1', -my_varchar_1000 = '-1', -my_binary_30 = '-1', -my_varbinary_1000 = '-1', +my_char_30 = '-1', +my_varchar_1000 = '-1', +my_binary_30 = '-1', +my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -89,6 +85,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 4; INSERT INTO t1_values SET select_id = @select_id, my_bigint = -25; +##### 1.1.1. CAST --> BINARY +##### 1.1.2. CAST --> CHAR +##### 1.1.3. CAST --> DATE INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27'; INSERT INTO t1_values SET select_id = @select_id, @@ -101,6 +100,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 20050627; INSERT INTO t1_values SET select_id = @select_id, my_double = +20.050627E+6; +##### 1.1.4. CAST --> DATETIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '2005-06-27 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -113,6 +113,7 @@ INSERT INTO t1_values SET select_id = @select_id, my_bigint = 200506271758; INSERT INTO t1_values SET select_id = @select_id, my_double = +0.0200506271758E+13; +##### 1.1.5. CAST --> TIME INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, @@ -123,10 +124,9 @@ INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '1 17:58'; INSERT INTO t1_values SET select_id = @select_id, my_bigint = 1758; - -some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = +1.758E+3; +##### 1.1.6. CAST --> DECIMAL INSERT INTO t1_values SET select_id = @select_id, my_char_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, @@ -135,51 +135,39 @@ INSERT INTO t1_values SET select_id = @select_id, my_binary_30 = '-3333.3333'; INSERT INTO t1_values SET select_id = @select_id, my_varbinary_1000 = '-3333.3333'; - -some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian --------------------------------------------------------------------------------- +INSERT INTO t1_values SET select_id = @select_id, +my_double = -0.33333333E+4; +##### 1.1.7. CAST --> SIGNED INTEGER "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later" --------------------------------------------------------------------------------- - -some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result + Status: To be fixed later" -------------------------------------------------------------------------------- +##### 1.1.8. CAST --> UNSIGNED INTEGER "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809" + The file with expected results suffers from Bug 5913" -------------------------------------------------------------------------------- some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast +Bug#5913 Traditional mode: BIGINT range not correctly delimited -------------------------------------------------------------------------------- -SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values'; -SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), +SET @my_select = 'SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values'; - -"Attention: IF(my_year IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails." --------------------------------------------------------------------------------- SET @my_select = 'SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT BIT_LENGTH(my_varchar_1000), @@ -192,22 +180,20 @@ SET @my_select = 'SELECT INSTR(my_char_30, ''char''), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values'; -SET @my_select = +SET @my_select = 'SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values'; - -"Attention: LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, -because there are 32/64 Bit differences --------------------------------------------------------------------------------- +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_bigint), my_bigint, id FROM t1_values'; SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_decimal), my_decimal, id FROM t1_values'; +SET @my_select = +'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', my_double), my_double, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varchar_1000), @@ -216,8 +202,10 @@ SET @my_select = 'SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values'; SET @my_select = 'SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values'; -SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +SET @my_select = +'SELECT LOAD_FILE(''/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_char_30), my_char_30, id FROM t1_values'; SET @my_select = 'SELECT LOCATE(''char'', my_varchar_1000), @@ -299,19 +287,19 @@ SET sql_mode = ''; -------------------------------------------------------------------------------- CREATE VIEW v1 AS SELECT my_char_30, id FROM t1_values; SELECT my_char_30, id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL; +WHERE select_id = 193 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 187 OR select_id IS NULL); +WHERE select_id = 193 OR select_id IS NULL) order by id; DROP VIEW v1; CREATE VIEW v1 AS SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values; SELECT CONCAT('A',my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL; +WHERE select_id = 192 OR select_id IS NULL order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -323,7 +311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select concat(_latin1'A',`t1_values`.`my_char_30`) AS `CONCAT('A',my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 186 OR select_id IS NULL); +WHERE select_id = 192 OR select_id IS NULL) order by id; CONCAT('A',my_char_30) my_char_30 id NULL NULL 1 A 2 @@ -337,13 +325,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LTRIM(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL; +WHERE select_id = 191 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varbinary_1000`) AS `LTRIM(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 185 OR select_id IS NULL); +WHERE select_id = 191 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -351,13 +339,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values; SELECT LTRIM(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL; +WHERE select_id = 190 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_binary_30`) AS `LTRIM(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 184 OR select_id IS NULL); +WHERE select_id = 190 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -365,13 +353,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LTRIM(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL; +WHERE select_id = 189 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_varchar_1000`) AS `LTRIM(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 183 OR select_id IS NULL); +WHERE select_id = 189 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -379,13 +367,13 @@ CREATE VIEW v1 AS SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values; SELECT LTRIM(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL; +WHERE select_id = 188 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ltrim(`t1_values`.`my_char_30`) AS `LTRIM(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 182 OR select_id IS NULL); +WHERE select_id = 188 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -393,13 +381,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOWER(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL; +WHERE select_id = 187 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varbinary_1000`) AS `LOWER(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 181 OR select_id IS NULL); +WHERE select_id = 187 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -407,13 +395,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values; SELECT LOWER(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL; +WHERE select_id = 186 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_binary_30`) AS `LOWER(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 180 OR select_id IS NULL); +WHERE select_id = 186 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -421,13 +409,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOWER(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL; +WHERE select_id = 185 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LOWER(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 179 OR select_id IS NULL); +WHERE select_id = 185 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -435,13 +423,13 @@ CREATE VIEW v1 AS SELECT LOWER(my_char_30), my_char_30, id FROM t1_values; SELECT LOWER(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL; +WHERE select_id = 184 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_char_30`) AS `LOWER(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 178 OR select_id IS NULL); +WHERE select_id = 184 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -449,13 +437,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL; +WHERE select_id = 183 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_decimal`) AS `LOCATE('-', ' - -ABC', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 177 OR select_id IS NULL); +WHERE select_id = 183 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -463,13 +451,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_double), my_double, id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL; +WHERE select_id = 182 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_double`) AS `LOCATE('-', ' - -ABC', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 176 OR select_id IS NULL); +WHERE select_id = 182 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -477,13 +465,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values; SELECT LOCATE('-', ' - -ABC', my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL; +WHERE select_id = 181 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',_latin1' - -ABC',`t1_values`.`my_bigint`) AS `LOCATE('-', ' - -ABC', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 175 OR select_id IS NULL); +WHERE select_id = 181 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -491,13 +479,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('-', my_varbinary_1000, 3), my_varbinary_1000, id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL; +WHERE select_id = 180 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varbinary_1000`,3) AS `LOCATE('-', my_varbinary_1000, 3)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 174 OR select_id IS NULL); +WHERE select_id = 180 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -505,13 +493,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values; SELECT LOCATE('-', my_binary_30, 3), my_binary_30, id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL; +WHERE select_id = 179 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_binary_30`,3) AS `LOCATE('-', my_binary_30, 3)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 173 OR select_id IS NULL); +WHERE select_id = 179 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -519,13 +507,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values; SELECT LOCATE('-', my_varchar_1000, 3), my_varchar_1000, id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL; +WHERE select_id = 178 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_varchar_1000`,3) AS `LOCATE('-', my_varchar_1000, 3)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 172 OR select_id IS NULL); +WHERE select_id = 178 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -533,13 +521,13 @@ CREATE VIEW v1 AS SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values; SELECT LOCATE('-', my_char_30, 3), my_char_30, id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL; +WHERE select_id = 177 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'-',`t1_values`.`my_char_30`,3) AS `LOCATE('-', my_char_30, 3)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 171 OR select_id IS NULL); +WHERE select_id = 177 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -547,13 +535,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_binary_30 ), my_varbinary_1000, my_binary_30 id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL; +WHERE select_id = 176 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varbinary_1000, my_binary_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 170 OR select_id IS NULL); +WHERE select_id = 176 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -561,13 +549,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varchar_1000 ), my_varbinary_1000, my_varchar_1000 id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL; +WHERE select_id = 175 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varbinary_1000, my_varchar_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 169 OR select_id IS NULL); +WHERE select_id = 175 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -575,13 +563,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_char_30 ), my_varbinary_1000, my_char_30 id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL; +WHERE select_id = 174 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varbinary_1000, my_char_30 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 168 OR select_id IS NULL); +WHERE select_id = 174 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -589,13 +577,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values; SELECT LOCATE(my_varbinary_1000, my_varbinary_1000 ), my_varbinary_1000, id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL; +WHERE select_id = 173 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varbinary_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varbinary_1000, my_varbinary_1000 )`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 167 OR select_id IS NULL); +WHERE select_id = 173 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -603,13 +591,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varbinary_1000 ), my_binary_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL; +WHERE select_id = 172 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_binary_30, my_varbinary_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 166 OR select_id IS NULL); +WHERE select_id = 172 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -617,13 +605,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_binary_30, my_varchar_1000 ), my_binary_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL; +WHERE select_id = 171 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_binary_30, my_varchar_1000 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 165 OR select_id IS NULL); +WHERE select_id = 171 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -631,13 +619,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values; SELECT LOCATE(my_binary_30, my_char_30 ), my_binary_30, my_char_30 id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL; +WHERE select_id = 170 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_binary_30, my_char_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 164 OR select_id IS NULL); +WHERE select_id = 170 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -645,13 +633,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values; SELECT LOCATE(my_binary_30, my_binary_30 ), my_binary_30, id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL; +WHERE select_id = 169 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_binary_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_binary_30, my_binary_30 )`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 163 OR select_id IS NULL); +WHERE select_id = 169 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -659,13 +647,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varbinary_1000 ), my_varchar_1000, my_varbinary_1000 id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL; +WHERE select_id = 168 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_varchar_1000, my_varbinary_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 162 OR select_id IS NULL); +WHERE select_id = 168 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -673,13 +661,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_binary_30 ), my_varchar_1000, my_binary_30 id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL; +WHERE select_id = 167 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_binary_30`) AS `LOCATE(my_varchar_1000, my_binary_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 161 OR select_id IS NULL); +WHERE select_id = 167 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -687,13 +675,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_char_30 ), my_varchar_1000, my_char_30 id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL; +WHERE select_id = 166 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_char_30`) AS `LOCATE(my_varchar_1000, my_char_30 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`my_char_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 160 OR select_id IS NULL); +WHERE select_id = 166 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -701,13 +689,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values; SELECT LOCATE(my_varchar_1000, my_varchar_1000 ), my_varchar_1000, id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL; +WHERE select_id = 165 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_varchar_1000`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_varchar_1000, my_varchar_1000 )`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 159 OR select_id IS NULL); +WHERE select_id = 165 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -715,13 +703,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varbinary_1000 ), my_char_30, my_varbinary_1000 id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL; +WHERE select_id = 164 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varbinary_1000`) AS `LOCATE(my_char_30, my_varbinary_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varbinary_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 158 OR select_id IS NULL); +WHERE select_id = 164 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -729,13 +717,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values; SELECT LOCATE(my_char_30, my_binary_30 ), my_char_30, my_binary_30 id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL; +WHERE select_id = 163 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_binary_30`) AS `LOCATE(my_char_30, my_binary_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_binary_30` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 157 OR select_id IS NULL); +WHERE select_id = 163 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -743,13 +731,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values; SELECT LOCATE(my_char_30, my_varchar_1000 ), my_char_30, my_varchar_1000 id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL; +WHERE select_id = 162 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_varchar_1000`) AS `LOCATE(my_char_30, my_varchar_1000 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`my_varchar_1000` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 156 OR select_id IS NULL); +WHERE select_id = 162 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -757,13 +745,13 @@ CREATE VIEW v1 AS SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values; SELECT LOCATE(my_char_30, my_char_30 ), my_char_30, id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL; +WHERE select_id = 161 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(`t1_values`.`my_char_30`,`t1_values`.`my_char_30`) AS `LOCATE(my_char_30, my_char_30 )`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 155 OR select_id IS NULL); +WHERE select_id = 161 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -771,13 +759,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LOCATE('char', my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL; +WHERE select_id = 160 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varbinary_1000`) AS `LOCATE('char', my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 154 OR select_id IS NULL); +WHERE select_id = 160 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -785,13 +773,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values; SELECT LOCATE('char', my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL; +WHERE select_id = 159 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_binary_30`) AS `LOCATE('char', my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 153 OR select_id IS NULL); +WHERE select_id = 159 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -799,13 +787,13 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LOCATE('char', my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL; +WHERE select_id = 158 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_varchar_1000`) AS `LOCATE('char', my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 152 OR select_id IS NULL); +WHERE select_id = 158 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -813,46 +801,50 @@ CREATE VIEW v1 AS SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values; SELECT LOCATE('char', my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL; +WHERE select_id = 157 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `LOCATE('char', my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 151 OR select_id IS NULL); +WHERE select_id = 157 OR select_id IS NULL) order by id; DROP VIEW v1; -CREATE VIEW v1 AS SELECT LOAD_FILE('../log/current_test'), id FROM t1_values; -SELECT LOAD_FILE('../log/current_test'), id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL; -LOAD_FILE('../log/current_test') id -CURRENT_TEST: myisam_func_view +CREATE VIEW v1 AS SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values; +SELECT LOAD_FILE('/std_data_ln/funcs_1/load_file.txt') + AS my_col, + id FROM t1_values +WHERE select_id = 156 OR select_id IS NULL order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: myisam_func_view +Here is content from load_file 2 -CURRENT_TEST: myisam_func_view +Here is content from load_file 3 -CURRENT_TEST: myisam_func_view +Here is content from load_file 4 -CURRENT_TEST: myisam_func_view +Here is content from load_file 5 SHOW CREATE VIEW v1; View Create View -v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'../log/current_test') AS `LOAD_FILE('../log/current_test')`,`t1_values`.`id` AS `id` from `t1_values` +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select load_file(_latin1'/std_data_ln/funcs_1/load_file.txt') AS `my_col`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 150 OR select_id IS NULL); -LOAD_FILE('../log/current_test') id -CURRENT_TEST: myisam_func_view +WHERE select_id = 156 OR select_id IS NULL) order by id; +my_col id +Here is content from load_file 1 -CURRENT_TEST: myisam_func_view +Here is content from load_file 2 -CURRENT_TEST: myisam_func_view +Here is content from load_file 3 -CURRENT_TEST: myisam_func_view +Here is content from load_file 4 -CURRENT_TEST: myisam_func_view +Here is content from load_file 5 DROP VIEW v1; @@ -861,13 +853,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL; +WHERE select_id = 155 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varbinary_1000`) AS `LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 149 OR select_id IS NULL); +WHERE select_id = 155 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -875,13 +867,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL; +WHERE select_id = 154 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_binary_30`) AS `LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 148 OR select_id IS NULL); +WHERE select_id = 154 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -889,13 +881,13 @@ CREATE VIEW v1 AS SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL; +WHERE select_id = 153 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_varchar_1000`) AS `LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 147 OR select_id IS NULL); +WHERE select_id = 153 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -903,19 +895,49 @@ CREATE VIEW v1 AS SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL; +WHERE select_id = 152 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select length(`t1_values`.`my_char_30`) AS `LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 146 OR select_id IS NULL); +WHERE select_id = 152 OR select_id IS NULL) order by id; +DROP VIEW v1; + + +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double), my_double, id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_double`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 151 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_double) my_double id +NULL NULL 1 + -1.7976931348623e+308 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 1.7976931348623e+308 3 + 0 4 + -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values; SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal), my_decimal, id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL; +WHERE select_id = 150 OR select_id IS NULL order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -930,7 +952,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_decimal`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 145 OR select_id IS NULL); +WHERE select_id = 150 OR select_id IS NULL) order by id; LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_decimal) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -943,9 +965,33 @@ Error 1292 Truncated incorrect DECIMAL value: '' DROP VIEW v1; +CREATE VIEW v1 AS SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values; +SELECT LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint), my_bigint, id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(_latin1'AaBbCcDdEeFfGgHhIiJj',`t1_values`.`my_bigint`) AS `LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 149 OR select_id IS NULL) order by id; +LEFT('AaBbCcDdEeFfGgHhIiJjÄäÜüÖö', my_bigint) my_bigint id +NULL NULL 1 + -9223372036854775808 2 +AaBbCcDdEeFfGgHhIiJjÄäÜüÖö 9223372036854775807 3 + 0 4 + -1 5 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values; SELECT LEFT(my_varbinary_1000, 2), my_varbinary_1000, id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL; +WHERE select_id = 148 OR select_id IS NULL order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -957,7 +1003,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varbinary_1000`,2) AS `LEFT(my_varbinary_1000, 2)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 144 OR select_id IS NULL); +WHERE select_id = 148 OR select_id IS NULL) order by id; LEFT(my_varbinary_1000, 2) my_varbinary_1000 id NULL NULL 1 2 @@ -969,19 +1015,19 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values; SELECT LEFT(my_binary_30, 2), my_binary_30, id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL; +WHERE select_id = 147 OR select_id IS NULL order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 - 2 + 2 <- <--------30 characters-------> 3 - - ---äÖüß@µ*$-- 4 --1 -1 5 + - ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_binary_30`,2) AS `LEFT(my_binary_30, 2)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 143 OR select_id IS NULL); +WHERE select_id = 147 OR select_id IS NULL) order by id; LEFT(my_binary_30, 2) my_binary_30 id NULL NULL 1 2 @@ -993,7 +1039,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values; SELECT LEFT(my_varchar_1000, 2), my_varchar_1000, id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL; +WHERE select_id = 146 OR select_id IS NULL order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1005,7 +1051,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_varchar_1000`,2) AS `LEFT(my_varchar_1000, 2)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 142 OR select_id IS NULL); +WHERE select_id = 146 OR select_id IS NULL) order by id; LEFT(my_varchar_1000, 2) my_varchar_1000 id NULL NULL 1 2 @@ -1017,7 +1063,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values; SELECT LEFT(my_char_30, 2), my_char_30, id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL; +WHERE select_id = 145 OR select_id IS NULL order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1029,7 +1075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select left(`t1_values`.`my_char_30`,2) AS `LEFT(my_char_30, 2)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 141 OR select_id IS NULL); +WHERE select_id = 145 OR select_id IS NULL) order by id; LEFT(my_char_30, 2) my_char_30 id NULL NULL 1 2 @@ -1043,13 +1089,13 @@ CREATE VIEW v1 AS SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT LCASE(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL; +WHERE select_id = 144 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select lcase(`t1_values`.`my_varchar_1000`) AS `LCASE(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 140 OR select_id IS NULL); +WHERE select_id = 144 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1057,13 +1103,13 @@ CREATE VIEW v1 AS SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values; SELECT INSTR(my_char_30, 'char'), my_char_30, id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL; +WHERE select_id = 143 OR select_id IS NULL order by id; SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select locate(_latin1'char',`t1_values`.`my_char_30`) AS `INSTR(my_char_30, 'char')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 139 OR select_id IS NULL); +WHERE select_id = 143 OR select_id IS NULL) order by id; DROP VIEW v1; @@ -1071,7 +1117,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varbinary_1000), my_varbinary_1000, id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL; +WHERE select_id = 142 OR select_id IS NULL order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1083,7 +1129,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varbinary_1000`) AS `BIT_LENGTH(my_varbinary_1000)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 138 OR select_id IS NULL); +WHERE select_id = 142 OR select_id IS NULL) order by id; BIT_LENGTH(my_varbinary_1000) my_varbinary_1000 id NULL NULL 1 0 2 @@ -1097,19 +1143,19 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values; SELECT BIT_LENGTH(my_binary_30), my_binary_30, id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL; +WHERE select_id = 141 OR select_id IS NULL order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 -240 2 +240 2 240 <--------30 characters-------> 3 -240 ---äÖüß@µ*$-- 4 -240 -1 5 +240 ---äÖüß@µ*$-- 4 +240 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_binary_30`) AS `BIT_LENGTH(my_binary_30)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 137 OR select_id IS NULL); +WHERE select_id = 141 OR select_id IS NULL) order by id; BIT_LENGTH(my_binary_30) my_binary_30 id NULL NULL 1 240 2 @@ -1123,7 +1169,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values; SELECT BIT_LENGTH(my_varchar_1000), my_varchar_1000, id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL; +WHERE select_id = 140 OR select_id IS NULL order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1135,7 +1181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_varchar_1000`) AS `BIT_LENGTH(my_varchar_1000)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 136 OR select_id IS NULL); +WHERE select_id = 140 OR select_id IS NULL) order by id; BIT_LENGTH(my_varchar_1000) my_varchar_1000 id NULL NULL 1 0 2 @@ -1149,7 +1195,7 @@ CREATE VIEW v1 AS SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values; SELECT BIT_LENGTH(my_char_30), my_char_30, id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL; +WHERE select_id = 139 OR select_id IS NULL order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1161,7 +1207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select bit_length(`t1_values`.`my_char_30`) AS `BIT_LENGTH(my_char_30)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 135 OR select_id IS NULL); +WHERE select_id = 139 OR select_id IS NULL) order by id; BIT_LENGTH(my_char_30) my_char_30 id NULL NULL 1 0 2 @@ -1175,7 +1221,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values; SELECT IFNULL(my_year,'IS_NULL'), my_year, id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL; +WHERE select_id = 138 OR select_id IS NULL order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1187,7 +1233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_year`,_latin1'IS_NULL') AS `IFNULL(my_year,'IS_NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 134 OR select_id IS NULL); +WHERE select_id = 138 OR select_id IS NULL) order by id; IFNULL(my_year,'IS_NULL') my_year id IS_NULL NULL 1 1901 1901 2 @@ -1201,7 +1247,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values; SELECT IFNULL(my_time,'IS_NULL'), my_time, id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL; +WHERE select_id = 137 OR select_id IS NULL order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1213,7 +1259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_time`,_latin1'IS_NULL') AS `IFNULL(my_time,'IS_NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 133 OR select_id IS NULL); +WHERE select_id = 137 OR select_id IS NULL) order by id; IFNULL(my_time,'IS_NULL') my_time id IS_NULL NULL 1 -838:59:59 -838:59:59 2 @@ -1227,7 +1273,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values; SELECT IFNULL(my_timestamp,'IS_NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL; +WHERE select_id = 136 OR select_id IS NULL order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1239,7 +1285,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_timestamp`,_latin1'IS_NULL') AS `IFNULL(my_timestamp,'IS_NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 132 OR select_id IS NULL); +WHERE select_id = 136 OR select_id IS NULL) order by id; IFNULL(my_timestamp,'IS_NULL') my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -1253,7 +1299,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values; SELECT IFNULL(my_date,'IS_NULL'), my_date, id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL; +WHERE select_id = 135 OR select_id IS NULL order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1265,7 +1311,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_date`,_latin1'IS_NULL') AS `IFNULL(my_date,'IS_NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 131 OR select_id IS NULL); +WHERE select_id = 135 OR select_id IS NULL) order by id; IFNULL(my_date,'IS_NULL') my_date id IS_NULL NULL 1 0001-01-01 0001-01-01 2 @@ -1279,7 +1325,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values; SELECT IFNULL(my_datetime,'IS_NULL'), my_datetime, id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL; +WHERE select_id = 134 OR select_id IS NULL order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1291,7 +1337,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_datetime`,_latin1'IS_NULL') AS `IFNULL(my_datetime,'IS_NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 130 OR select_id IS NULL); +WHERE select_id = 134 OR select_id IS NULL) order by id; IFNULL(my_datetime,'IS_NULL') my_datetime id IS_NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -1305,7 +1351,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values; SELECT IFNULL(my_double,'IS_NULL'), my_double, id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL; +WHERE select_id = 133 OR select_id IS NULL order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1317,7 +1363,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_double`,_latin1'IS_NULL') AS `IFNULL(my_double,'IS_NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 129 OR select_id IS NULL); +WHERE select_id = 133 OR select_id IS NULL) order by id; IFNULL(my_double,'IS_NULL') my_double id IS_NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -1331,7 +1377,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values; SELECT IFNULL(my_decimal,'IS_NULL'), my_decimal, id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL; +WHERE select_id = 132 OR select_id IS NULL order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1343,7 +1389,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_decimal`,_latin1'IS_NULL') AS `IFNULL(my_decimal,'IS_NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 128 OR select_id IS NULL); +WHERE select_id = 132 OR select_id IS NULL) order by id; IFNULL(my_decimal,'IS_NULL') my_decimal id IS_NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -1357,7 +1403,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values; SELECT IFNULL(my_bigint,'IS_NULL'), my_bigint, id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL; +WHERE select_id = 131 OR select_id IS NULL order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1369,7 +1415,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_bigint`,_latin1'IS_NULL') AS `IFNULL(my_bigint,'IS_NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 127 OR select_id IS NULL); +WHERE select_id = 131 OR select_id IS NULL) order by id; IFNULL(my_bigint,'IS_NULL') my_bigint id IS_NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -1383,7 +1429,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values; SELECT IFNULL(my_varbinary_1000,'IS_NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL; +WHERE select_id = 130 OR select_id IS NULL order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1395,7 +1441,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varbinary_1000`,_latin1'IS_NULL') AS `IFNULL(my_varbinary_1000,'IS_NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 126 OR select_id IS NULL); +WHERE select_id = 130 OR select_id IS NULL) order by id; IFNULL(my_varbinary_1000,'IS_NULL') my_varbinary_1000 id IS_NULL NULL 1 2 @@ -1409,19 +1455,19 @@ CREATE VIEW v1 AS SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values; SELECT IFNULL(my_binary_30,'IS_NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL; +WHERE select_id = 129 OR select_id IS NULL order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_binary_30`,_latin1'IS_NULL') AS `IFNULL(my_binary_30,'IS_NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 125 OR select_id IS NULL); +WHERE select_id = 129 OR select_id IS NULL) order by id; IFNULL(my_binary_30,'IS_NULL') my_binary_30 id IS_NULL NULL 1 2 @@ -1435,7 +1481,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values; SELECT IFNULL(my_varchar_1000,'IS_NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL; +WHERE select_id = 128 OR select_id IS NULL order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1447,7 +1493,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_varchar_1000`,_latin1'IS_NULL') AS `IFNULL(my_varchar_1000,'IS_NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 124 OR select_id IS NULL); +WHERE select_id = 128 OR select_id IS NULL) order by id; IFNULL(my_varchar_1000,'IS_NULL') my_varchar_1000 id IS_NULL NULL 1 2 @@ -1461,7 +1507,7 @@ CREATE VIEW v1 AS SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values; SELECT IFNULL(my_char_30,'IS_NULL'), my_char_30, id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL; +WHERE select_id = 127 OR select_id IS NULL order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1473,7 +1519,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select ifnull(`t1_values`.`my_char_30`,_latin1'IS_NULL') AS `IFNULL(my_char_30,'IS_NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 123 OR select_id IS NULL); +WHERE select_id = 127 OR select_id IS NULL) order by id; IFNULL(my_char_30,'IS_NULL') my_char_30 id IS_NULL NULL 1 2 @@ -1487,7 +1533,7 @@ CREATE VIEW v1 AS SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values; SELECT IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL'), my_year, id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL; +WHERE select_id = 126 OR select_id IS NULL order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1501,7 +1547,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 122 OR select_id IS NULL); +WHERE select_id = 126 OR select_id IS NULL) order by id; IF(my_year IS NULL, 'IS NULL', 'IS NOT NULL') my_year id IS NULL NULL 1 @@ -1516,7 +1562,7 @@ CREATE VIEW v1 AS SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values; SELECT IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL'), my_time, id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL; +WHERE select_id = 125 OR select_id IS NULL order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1530,7 +1576,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 121 OR select_id IS NULL); +WHERE select_id = 125 OR select_id IS NULL) order by id; IF(my_time IS NULL, 'IS NULL', 'IS NOT NULL') my_time id IS NULL NULL 1 @@ -1545,7 +1591,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL'), my_timestamp, id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL; +WHERE select_id = 124 OR select_id IS NULL order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1559,7 +1605,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 120 OR select_id IS NULL); +WHERE select_id = 124 OR select_id IS NULL) order by id; IF(my_timestamp IS NULL, 'IS NULL', 'IS NOT NULL') my_timestamp id IS NOT NULL 0000-00-00 00:00:00 1 @@ -1574,7 +1620,7 @@ CREATE VIEW v1 AS SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values; SELECT IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL'), my_date, id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL; +WHERE select_id = 123 OR select_id IS NULL order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1588,7 +1634,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 119 OR select_id IS NULL); +WHERE select_id = 123 OR select_id IS NULL) order by id; IF(my_date IS NULL, 'IS NULL', 'IS NOT NULL') my_date id IS NULL NULL 1 @@ -1603,7 +1649,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values; SELECT IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL'), my_datetime, id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL; +WHERE select_id = 122 OR select_id IS NULL order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1617,7 +1663,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 118 OR select_id IS NULL); +WHERE select_id = 122 OR select_id IS NULL) order by id; IF(my_datetime IS NULL, 'IS NULL', 'IS NOT NULL') my_datetime id IS NULL NULL 1 @@ -1632,7 +1678,7 @@ CREATE VIEW v1 AS SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values; SELECT IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL'), my_double, id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL; +WHERE select_id = 121 OR select_id IS NULL order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1646,7 +1692,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 117 OR select_id IS NULL); +WHERE select_id = 121 OR select_id IS NULL) order by id; IF(my_double IS NULL, 'IS NULL', 'IS NOT NULL') my_double id IS NULL NULL 1 @@ -1661,7 +1707,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values; SELECT IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL'), my_decimal, id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL; +WHERE select_id = 120 OR select_id IS NULL order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1675,7 +1721,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 116 OR select_id IS NULL); +WHERE select_id = 120 OR select_id IS NULL) order by id; IF(my_decimal IS NULL, 'IS NULL', 'IS NOT NULL') my_decimal id IS NULL NULL 1 @@ -1690,7 +1736,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values; SELECT IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL'), my_bigint, id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL; +WHERE select_id = 119 OR select_id IS NULL order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1704,7 +1750,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 115 OR select_id IS NULL); +WHERE select_id = 119 OR select_id IS NULL) order by id; IF(my_bigint IS NULL, 'IS NULL', 'IS NOT NULL') my_bigint id IS NULL NULL 1 @@ -1719,7 +1765,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL; +WHERE select_id = 118 OR select_id IS NULL order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1733,7 +1779,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 114 OR select_id IS NULL); +WHERE select_id = 118 OR select_id IS NULL) order by id; IF(my_varbinary_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varbinary_1000 id IS NULL NULL 1 @@ -1748,21 +1794,21 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_binary_30, id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL; +WHERE select_id = 117 OR select_id IS NULL order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 -IS NOT NULL 2 +IS NOT NULL 2 IS NOT NULL <--------30 characters-------> 3 -IS NOT NULL ---äÖüß@µ*$-- 4 -IS NOT NULL -1 5 +IS NOT NULL ---äÖüß@µ*$-- 4 +IS NOT NULL -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(isnull(`t1_values`.`my_binary_30`),_latin1'IS NULL',_latin1'IS NOT NULL') AS `IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 113 OR select_id IS NULL); +WHERE select_id = 117 OR select_id IS NULL) order by id; IF(my_binary_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_binary_30 id IS NULL NULL 1 @@ -1777,7 +1823,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL'), my_varchar_1000, id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL; +WHERE select_id = 116 OR select_id IS NULL order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1791,7 +1837,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 112 OR select_id IS NULL); +WHERE select_id = 116 OR select_id IS NULL) order by id; IF(my_varchar_1000 IS NULL, 'IS NULL', 'IS NOT NULL') my_varchar_1000 id IS NULL NULL 1 @@ -1806,7 +1852,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values; SELECT IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL'), my_char_30, id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL; +WHERE select_id = 115 OR select_id IS NULL order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1820,7 +1866,7 @@ v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VI 'IS NOT NULL')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 111 OR select_id IS NULL); +WHERE select_id = 115 OR select_id IS NULL) order by id; IF(my_char_30 IS NULL, 'IS NULL', 'IS NOT NULL') my_char_30 id IS NULL NULL 1 @@ -1835,7 +1881,7 @@ CREATE VIEW v1 AS SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values; SELECT IF(my_year, 'IS TRUE', 'IS NOT TRUE'), my_year, id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL; +WHERE select_id = 114 OR select_id IS NULL order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1847,7 +1893,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_year`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_year, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 110 OR select_id IS NULL); +WHERE select_id = 114 OR select_id IS NULL) order by id; IF(my_year, 'IS TRUE', 'IS NOT TRUE') my_year id IS NOT TRUE NULL 1 IS TRUE 1901 2 @@ -1861,7 +1907,7 @@ CREATE VIEW v1 AS SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values; SELECT IF(my_time, 'IS TRUE', 'IS NOT TRUE'), my_time, id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL; +WHERE select_id = 113 OR select_id IS NULL order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1873,7 +1919,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_time`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_time, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 109 OR select_id IS NULL); +WHERE select_id = 113 OR select_id IS NULL) order by id; IF(my_time, 'IS TRUE', 'IS NOT TRUE') my_time id IS NOT TRUE NULL 1 IS TRUE -838:59:59 2 @@ -1887,7 +1933,7 @@ CREATE VIEW v1 AS SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values; SELECT IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE'), my_timestamp, id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL; +WHERE select_id = 112 OR select_id IS NULL order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1899,7 +1945,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_timestamp`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 108 OR select_id IS NULL); +WHERE select_id = 112 OR select_id IS NULL) order by id; IF(my_timestamp, 'IS TRUE', 'IS NOT TRUE') my_timestamp id IS NOT TRUE 0000-00-00 00:00:00 1 IS TRUE 1970-01-01 03:00:01 2 @@ -1913,7 +1959,7 @@ CREATE VIEW v1 AS SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values; SELECT IF(my_date, 'IS TRUE', 'IS NOT TRUE'), my_date, id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL; +WHERE select_id = 111 OR select_id IS NULL order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1925,7 +1971,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_date`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_date, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 107 OR select_id IS NULL); +WHERE select_id = 111 OR select_id IS NULL) order by id; IF(my_date, 'IS TRUE', 'IS NOT TRUE') my_date id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 2 @@ -1939,7 +1985,7 @@ CREATE VIEW v1 AS SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values; SELECT IF(my_datetime, 'IS TRUE', 'IS NOT TRUE'), my_datetime, id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL; +WHERE select_id = 110 OR select_id IS NULL order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1951,7 +1997,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_datetime`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_datetime, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 106 OR select_id IS NULL); +WHERE select_id = 110 OR select_id IS NULL) order by id; IF(my_datetime, 'IS TRUE', 'IS NOT TRUE') my_datetime id IS NOT TRUE NULL 1 IS TRUE 0001-01-01 00:00:00 2 @@ -1965,7 +2011,7 @@ CREATE VIEW v1 AS SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values; SELECT IF(my_double, 'IS TRUE', 'IS NOT TRUE'), my_double, id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL; +WHERE select_id = 109 OR select_id IS NULL order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1977,7 +2023,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_double`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_double, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 105 OR select_id IS NULL); +WHERE select_id = 109 OR select_id IS NULL) order by id; IF(my_double, 'IS TRUE', 'IS NOT TRUE') my_double id IS NOT TRUE NULL 1 IS TRUE -1.7976931348623e+308 2 @@ -1991,7 +2037,7 @@ CREATE VIEW v1 AS SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values; SELECT IF(my_decimal, 'IS TRUE', 'IS NOT TRUE'), my_decimal, id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL; +WHERE select_id = 108 OR select_id IS NULL order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2003,7 +2049,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_decimal`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_decimal, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 104 OR select_id IS NULL); +WHERE select_id = 108 OR select_id IS NULL) order by id; IF(my_decimal, 'IS TRUE', 'IS NOT TRUE') my_decimal id IS NOT TRUE NULL 1 IS TRUE -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2017,7 +2063,7 @@ CREATE VIEW v1 AS SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values; SELECT IF(my_bigint, 'IS TRUE', 'IS NOT TRUE'), my_bigint, id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL; +WHERE select_id = 107 OR select_id IS NULL order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2029,7 +2075,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_bigint`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_bigint, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 103 OR select_id IS NULL); +WHERE select_id = 107 OR select_id IS NULL) order by id; IF(my_bigint, 'IS TRUE', 'IS NOT TRUE') my_bigint id IS NOT TRUE NULL 1 IS TRUE -9223372036854775808 2 @@ -2043,7 +2089,7 @@ CREATE VIEW v1 AS SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values; SELECT IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE'), my_varbinary_1000, id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL; +WHERE select_id = 106 OR select_id IS NULL order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2055,7 +2101,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varbinary_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 102 OR select_id IS NULL); +WHERE select_id = 106 OR select_id IS NULL) order by id; IF(my_varbinary_1000, 'IS TRUE', 'IS NOT TRUE') my_varbinary_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2069,13 +2115,13 @@ CREATE VIEW v1 AS SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values; SELECT IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE'), my_binary_30, id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL; +WHERE select_id = 105 OR select_id IS NULL order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 -IS NOT TRUE 2 +IS NOT TRUE 2 IS NOT TRUE <--------30 characters-------> 3 -IS NOT TRUE ---äÖüß@µ*$-- 4 -IS TRUE -1 5 +IS NOT TRUE ---äÖüß@µ*$-- 4 +IS TRUE -1 5 Warnings: Warning 1292 Truncated incorrect DOUBLE value: '' Warning 1292 Truncated incorrect DOUBLE value: '<--------30 characters------->' @@ -2086,7 +2132,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_binary_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 101 OR select_id IS NULL); +WHERE select_id = 105 OR select_id IS NULL) order by id; IF(my_binary_30, 'IS TRUE', 'IS NOT TRUE') my_binary_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2105,7 +2151,7 @@ CREATE VIEW v1 AS SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values; SELECT IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE'), my_varchar_1000, id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL; +WHERE select_id = 104 OR select_id IS NULL order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2117,7 +2163,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_varchar_1000`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 100 OR select_id IS NULL); +WHERE select_id = 104 OR select_id IS NULL) order by id; IF(my_varchar_1000, 'IS TRUE', 'IS NOT TRUE') my_varchar_1000 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2131,7 +2177,7 @@ CREATE VIEW v1 AS SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values; SELECT IF(my_char_30, 'IS TRUE', 'IS NOT TRUE'), my_char_30, id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL; +WHERE select_id = 103 OR select_id IS NULL order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2146,7 +2192,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select if(`t1_values`.`my_char_30`,_latin1'IS TRUE',_latin1'IS NOT TRUE') AS `IF(my_char_30, 'IS TRUE', 'IS NOT TRUE')`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 99 OR select_id IS NULL); +WHERE select_id = 103 OR select_id IS NULL) order by id; IF(my_char_30, 'IS TRUE', 'IS NOT TRUE') my_char_30 id IS NOT TRUE NULL 1 IS NOT TRUE 2 @@ -2159,11 +2205,11 @@ Warning 1292 Truncated incorrect DOUBLE value: ' --- DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING koi8r), +SELECT CONVERT(my_varbinary_1000 USING koi8r), my_varbinary_1000, id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL; +WHERE select_id = 102 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2175,7 +2221,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using koi8r) AS `CONVERT(my_varbinary_1000 USING koi8r)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 98 OR select_id IS NULL); +WHERE select_id = 102 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING koi8r) my_varbinary_1000 id NULL NULL 1 2 @@ -2185,23 +2231,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING koi8r), +SELECT CONVERT(my_binary_30 USING koi8r), my_binary_30, id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL; +WHERE select_id = 101 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---???????@??*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---???????@??*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using koi8r) AS `CONVERT(my_binary_30 USING koi8r)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 97 OR select_id IS NULL); +WHERE select_id = 101 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING koi8r) my_binary_30 id NULL NULL 1 2 @@ -2211,11 +2257,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING koi8r), +SELECT CONVERT(my_varchar_1000 USING koi8r), my_varchar_1000, id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL; +WHERE select_id = 100 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2227,7 +2273,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using koi8r) AS `CONVERT(my_varchar_1000 USING koi8r)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 96 OR select_id IS NULL); +WHERE select_id = 100 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING koi8r) my_varchar_1000 id NULL NULL 1 2 @@ -2237,11 +2283,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING koi8r), +SELECT CONVERT(my_char_30 USING koi8r), my_char_30, id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL; +WHERE select_id = 99 OR select_id IS NULL order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2253,7 +2299,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using koi8r) AS `CONVERT(my_char_30 USING koi8r)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 95 OR select_id IS NULL); +WHERE select_id = 99 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING koi8r) my_char_30 id NULL NULL 1 2 @@ -2263,11 +2309,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values; -SELECT CONVERT(my_varbinary_1000 USING utf8), +SELECT CONVERT(my_varbinary_1000 USING utf8), my_varbinary_1000, id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL; +WHERE select_id = 98 OR select_id IS NULL order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2279,7 +2325,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varbinary_1000` using utf8) AS `CONVERT(my_varbinary_1000 USING utf8)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 94 OR select_id IS NULL); +WHERE select_id = 98 OR select_id IS NULL) order by id; CONVERT(my_varbinary_1000 USING utf8) my_varbinary_1000 id NULL NULL 1 2 @@ -2289,23 +2335,23 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values; -SELECT CONVERT(my_binary_30 USING utf8), +SELECT CONVERT(my_binary_30 USING utf8), my_binary_30, id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL; +WHERE select_id = 97 OR select_id IS NULL order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---@*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---@*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_binary_30` using utf8) AS `CONVERT(my_binary_30 USING utf8)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 93 OR select_id IS NULL); +WHERE select_id = 97 OR select_id IS NULL) order by id; CONVERT(my_binary_30 USING utf8) my_binary_30 id NULL NULL 1 2 @@ -2315,11 +2361,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values; -SELECT CONVERT(my_varchar_1000 USING utf8), +SELECT CONVERT(my_varchar_1000 USING utf8), my_varchar_1000, id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL; +WHERE select_id = 96 OR select_id IS NULL order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2331,7 +2377,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_varchar_1000` using utf8) AS `CONVERT(my_varchar_1000 USING utf8)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 92 OR select_id IS NULL); +WHERE select_id = 96 OR select_id IS NULL) order by id; CONVERT(my_varchar_1000 USING utf8) my_varchar_1000 id NULL NULL 1 2 @@ -2341,11 +2387,11 @@ NULL NULL 1 DROP VIEW v1; -CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), +CREATE VIEW v1 AS SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values; -SELECT CONVERT(my_char_30 USING utf8), +SELECT CONVERT(my_char_30 USING utf8), my_char_30, id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL; +WHERE select_id = 95 OR select_id IS NULL order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2357,7 +2403,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select convert(`t1_values`.`my_char_30` using utf8) AS `CONVERT(my_char_30 USING utf8)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 91 OR select_id IS NULL); +WHERE select_id = 95 OR select_id IS NULL) order by id; CONVERT(my_char_30 USING utf8) my_char_30 id NULL NULL 1 2 @@ -2371,7 +2417,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS UNSIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL; +WHERE select_id = 94 OR select_id IS NULL order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2383,7 +2429,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as unsigned) AS `CAST(my_year AS UNSIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 90 OR select_id IS NULL); +WHERE select_id = 94 OR select_id IS NULL) order by id; CAST(my_year AS UNSIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2397,7 +2443,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS UNSIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL; +WHERE select_id = 93 OR select_id IS NULL order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2409,7 +2455,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as unsigned) AS `CAST(my_time AS UNSIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 89 OR select_id IS NULL); +WHERE select_id = 93 OR select_id IS NULL) order by id; CAST(my_time AS UNSIGNED INTEGER) my_time id NULL NULL 1 18446744073701165657 -838:59:59 2 @@ -2423,7 +2469,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS UNSIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL; +WHERE select_id = 92 OR select_id IS NULL order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2435,7 +2481,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as unsigned) AS `CAST(my_timestamp AS UNSIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 88 OR select_id IS NULL); +WHERE select_id = 92 OR select_id IS NULL) order by id; CAST(my_timestamp AS UNSIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2449,7 +2495,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS UNSIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL; +WHERE select_id = 91 OR select_id IS NULL order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2461,7 +2507,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as unsigned) AS `CAST(my_date AS UNSIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 87 OR select_id IS NULL); +WHERE select_id = 91 OR select_id IS NULL) order by id; CAST(my_date AS UNSIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2475,7 +2521,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS UNSIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL; +WHERE select_id = 90 OR select_id IS NULL order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2487,7 +2533,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as unsigned) AS `CAST(my_datetime AS UNSIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 86 OR select_id IS NULL); +WHERE select_id = 90 OR select_id IS NULL) order by id; CAST(my_datetime AS UNSIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2497,11 +2543,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS UNSIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as unsigned) AS `CAST(my_double AS UNSIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 89 OR select_id IS NULL) order by id; +CAST(my_double AS UNSIGNED INTEGER) my_double id +NULL NULL 1 +9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +18446744073709551615 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS UNSIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL; +WHERE select_id = 88 OR select_id IS NULL order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2517,7 +2595,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as unsigned) AS `CAST(my_decimal AS UNSIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 85 OR select_id IS NULL); +WHERE select_id = 88 OR select_id IS NULL) order by id; CAST(my_decimal AS UNSIGNED INTEGER) my_decimal id NULL NULL 1 0 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2535,7 +2613,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS UNSIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL; +WHERE select_id = 87 OR select_id IS NULL order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2547,7 +2625,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as unsigned) AS `CAST(my_bigint AS UNSIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 84 OR select_id IS NULL); +WHERE select_id = 87 OR select_id IS NULL) order by id; CAST(my_bigint AS UNSIGNED INTEGER) my_bigint id NULL NULL 1 9223372036854775808 -9223372036854775808 2 @@ -2561,7 +2639,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS UNSIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL; +WHERE select_id = 86 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2578,7 +2656,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as unsigned) AS `CAST(my_varbinary_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 83 OR select_id IS NULL); +WHERE select_id = 86 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS UNSIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2597,13 +2675,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS UNSIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL; +WHERE select_id = 85 OR select_id IS NULL order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 -18446744073709551615 -1 5 +0 ---äÖüß@µ*$-- 4 +18446744073709551615 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2615,7 +2693,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as unsigned) AS `CAST(my_binary_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 82 OR select_id IS NULL); +WHERE select_id = 85 OR select_id IS NULL) order by id; CAST(my_binary_30 AS UNSIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2635,7 +2713,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS UNSIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL; +WHERE select_id = 84 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2652,7 +2730,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as unsigned) AS `CAST(my_varchar_1000 AS UNSIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 81 OR select_id IS NULL); +WHERE select_id = 84 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS UNSIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2671,7 +2749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS UNSIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL; +WHERE select_id = 83 OR select_id IS NULL order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2688,7 +2766,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as unsigned) AS `CAST(my_char_30 AS UNSIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 80 OR select_id IS NULL); +WHERE select_id = 83 OR select_id IS NULL) order by id; CAST(my_char_30 AS UNSIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -2707,7 +2785,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values; SELECT CAST(my_year AS SIGNED INTEGER), my_year, id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL; +WHERE select_id = 82 OR select_id IS NULL order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2719,7 +2797,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as signed) AS `CAST(my_year AS SIGNED INTEGER)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 79 OR select_id IS NULL); +WHERE select_id = 82 OR select_id IS NULL) order by id; CAST(my_year AS SIGNED INTEGER) my_year id NULL NULL 1 1901 1901 2 @@ -2733,7 +2811,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values; SELECT CAST(my_time AS SIGNED INTEGER), my_time, id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL; +WHERE select_id = 81 OR select_id IS NULL order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2745,7 +2823,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as signed) AS `CAST(my_time AS SIGNED INTEGER)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 78 OR select_id IS NULL); +WHERE select_id = 81 OR select_id IS NULL) order by id; CAST(my_time AS SIGNED INTEGER) my_time id NULL NULL 1 -8385959 -838:59:59 2 @@ -2759,7 +2837,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS SIGNED INTEGER), my_timestamp, id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL; +WHERE select_id = 80 OR select_id IS NULL order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2771,7 +2849,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as signed) AS `CAST(my_timestamp AS SIGNED INTEGER)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 77 OR select_id IS NULL); +WHERE select_id = 80 OR select_id IS NULL) order by id; CAST(my_timestamp AS SIGNED INTEGER) my_timestamp id 0 0000-00-00 00:00:00 1 19700101030001 1970-01-01 03:00:01 2 @@ -2785,7 +2863,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values; SELECT CAST(my_date AS SIGNED INTEGER), my_date, id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL; +WHERE select_id = 79 OR select_id IS NULL order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2797,7 +2875,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as signed) AS `CAST(my_date AS SIGNED INTEGER)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 76 OR select_id IS NULL); +WHERE select_id = 79 OR select_id IS NULL) order by id; CAST(my_date AS SIGNED INTEGER) my_date id NULL NULL 1 10101 0001-01-01 2 @@ -2811,7 +2889,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS SIGNED INTEGER), my_datetime, id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL; +WHERE select_id = 78 OR select_id IS NULL order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2823,7 +2901,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as signed) AS `CAST(my_datetime AS SIGNED INTEGER)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 75 OR select_id IS NULL); +WHERE select_id = 78 OR select_id IS NULL) order by id; CAST(my_datetime AS SIGNED INTEGER) my_datetime id NULL NULL 1 10101000000 0001-01-01 00:00:00 2 @@ -2833,11 +2911,43 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values; +SELECT CAST(my_double AS SIGNED INTEGER), +my_double, id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as signed) AS `CAST(my_double AS SIGNED INTEGER)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 77 OR select_id IS NULL) order by id; +CAST(my_double AS SIGNED INTEGER) my_double id +NULL NULL 1 +-9223372036854775808 -1.7976931348623e+308 2 +9223372036854775807 1.7976931348623e+308 3 +0 0 4 +-1 -1 5 +Warnings: +Warning 1292 Truncated incorrect INTEGER value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect INTEGER value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS SIGNED INTEGER), my_decimal, id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL; +WHERE select_id = 76 OR select_id IS NULL order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2852,7 +2962,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as signed) AS `CAST(my_decimal AS SIGNED INTEGER)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 74 OR select_id IS NULL); +WHERE select_id = 76 OR select_id IS NULL) order by id; CAST(my_decimal AS SIGNED INTEGER) my_decimal id NULL NULL 1 -9223372036854775808 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -2869,7 +2979,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS SIGNED INTEGER), my_bigint, id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL; +WHERE select_id = 75 OR select_id IS NULL order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2881,7 +2991,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as signed) AS `CAST(my_bigint AS SIGNED INTEGER)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 73 OR select_id IS NULL); +WHERE select_id = 75 OR select_id IS NULL) order by id; CAST(my_bigint AS SIGNED INTEGER) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -2895,7 +3005,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS SIGNED INTEGER), my_varbinary_1000, id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL; +WHERE select_id = 74 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2911,7 +3021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as signed) AS `CAST(my_varbinary_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 72 OR select_id IS NULL); +WHERE select_id = 74 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS SIGNED INTEGER) my_varbinary_1000 id NULL NULL 1 0 2 @@ -2929,13 +3039,13 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS SIGNED INTEGER), my_binary_30, id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL; +WHERE select_id = 73 OR select_id IS NULL order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 -0 2 +0 2 0 <--------30 characters-------> 3 -0 ---äÖüß@µ*$-- 4 --1 -1 5 +0 ---äÖüß@µ*$-- 4 +-1 -1 5 Warnings: Warning 1292 Truncated incorrect INTEGER value: '' Warning 1292 Truncated incorrect INTEGER value: '<--------30 characters------->' @@ -2946,7 +3056,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as signed) AS `CAST(my_binary_30 AS SIGNED INTEGER)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 71 OR select_id IS NULL); +WHERE select_id = 73 OR select_id IS NULL) order by id; CAST(my_binary_30 AS SIGNED INTEGER) my_binary_30 id NULL NULL 1 0 2 @@ -2965,7 +3075,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS SIGNED INTEGER), my_varchar_1000, id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL; +WHERE select_id = 72 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2981,7 +3091,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as signed) AS `CAST(my_varchar_1000 AS SIGNED INTEGER)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 70 OR select_id IS NULL); +WHERE select_id = 72 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS SIGNED INTEGER) my_varchar_1000 id NULL NULL 1 0 2 @@ -2999,7 +3109,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS SIGNED INTEGER), my_char_30, id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL; +WHERE select_id = 71 OR select_id IS NULL order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3015,7 +3125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as signed) AS `CAST(my_char_30 AS SIGNED INTEGER)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 69 OR select_id IS NULL); +WHERE select_id = 71 OR select_id IS NULL) order by id; CAST(my_char_30 AS SIGNED INTEGER) my_char_30 id NULL NULL 1 0 2 @@ -3033,7 +3143,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values; SELECT CAST(my_year AS DECIMAL(37,2)), my_year, id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL; +WHERE select_id = 70 OR select_id IS NULL order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3045,7 +3155,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as decimal(37,2)) AS `CAST(my_year AS DECIMAL(37,2))`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 68 OR select_id IS NULL); +WHERE select_id = 70 OR select_id IS NULL) order by id; CAST(my_year AS DECIMAL(37,2)) my_year id NULL NULL 1 1901.00 1901 2 @@ -3059,7 +3169,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values; SELECT CAST(my_time AS DECIMAL(37,2)), my_time, id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL; +WHERE select_id = 69 OR select_id IS NULL order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3071,7 +3181,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as decimal(37,2)) AS `CAST(my_time AS DECIMAL(37,2))`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 67 OR select_id IS NULL); +WHERE select_id = 69 OR select_id IS NULL) order by id; CAST(my_time AS DECIMAL(37,2)) my_time id NULL NULL 1 -8385959.00 -838:59:59 2 @@ -3085,7 +3195,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DECIMAL(37,2)), my_timestamp, id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL; +WHERE select_id = 68 OR select_id IS NULL order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3097,7 +3207,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as decimal(37,2)) AS `CAST(my_timestamp AS DECIMAL(37,2))`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 66 OR select_id IS NULL); +WHERE select_id = 68 OR select_id IS NULL) order by id; CAST(my_timestamp AS DECIMAL(37,2)) my_timestamp id 0.00 0000-00-00 00:00:00 1 19700101030001.00 1970-01-01 03:00:01 2 @@ -3111,7 +3221,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values; SELECT CAST(my_date AS DECIMAL(37,2)), my_date, id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL; +WHERE select_id = 67 OR select_id IS NULL order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3123,7 +3233,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as decimal(37,2)) AS `CAST(my_date AS DECIMAL(37,2))`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 65 OR select_id IS NULL); +WHERE select_id = 67 OR select_id IS NULL) order by id; CAST(my_date AS DECIMAL(37,2)) my_date id NULL NULL 1 10101.00 0001-01-01 2 @@ -3137,7 +3247,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DECIMAL(37,2)), my_datetime, id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL; +WHERE select_id = 66 OR select_id IS NULL order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3149,7 +3259,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as decimal(37,2)) AS `CAST(my_datetime AS DECIMAL(37,2))`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 64 OR select_id IS NULL); +WHERE select_id = 66 OR select_id IS NULL) order by id; CAST(my_datetime AS DECIMAL(37,2)) my_datetime id NULL NULL 1 10101000000.00 0001-01-01 00:00:00 2 @@ -3159,11 +3269,49 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values; +SELECT CAST(my_double AS DECIMAL(37,2)), +my_double, id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as decimal(37,2)) AS `CAST(my_double AS DECIMAL(37,2))`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 65 OR select_id IS NULL) order by id; +CAST(my_double AS DECIMAL(37,2)) my_double id +NULL NULL 1 +-99999999999999999999999999999999999.99 -1.7976931348623e+308 2 +99999999999999999999999999999999999.99 1.7976931348623e+308 3 +0.00 0 4 +-1.00 -1 5 +-3333.33 -3333.3333 30 +Warnings: +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +Error 1292 Truncated incorrect DECIMAL value: '' +Error 1264 Out of range value adjusted for column 'CAST(my_double AS DECIMAL(37,2))' at row 1 +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS DECIMAL(37,2)), my_decimal, id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL; +WHERE select_id = 64 OR select_id IS NULL order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3175,7 +3323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as decimal(37,2)) AS `CAST(my_decimal AS DECIMAL(37,2))`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 63 OR select_id IS NULL); +WHERE select_id = 64 OR select_id IS NULL) order by id; CAST(my_decimal AS DECIMAL(37,2)) my_decimal id NULL NULL 1 -10000000000000000000000000000000000.00 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -3189,7 +3337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DECIMAL(37,2)), my_bigint, id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL; +WHERE select_id = 63 OR select_id IS NULL order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3201,7 +3349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as decimal(37,2)) AS `CAST(my_bigint AS DECIMAL(37,2))`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 62 OR select_id IS NULL); +WHERE select_id = 63 OR select_id IS NULL) order by id; CAST(my_bigint AS DECIMAL(37,2)) my_bigint id NULL NULL 1 -9223372036854775808.00 -9223372036854775808 2 @@ -3215,14 +3363,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DECIMAL(37,2)), my_varbinary_1000, id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL; +WHERE select_id = 62 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3232,14 +3380,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as decimal(37,2)) AS `CAST(my_varbinary_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 61 OR select_id IS NULL); +WHERE select_id = 62 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DECIMAL(37,2)) my_varbinary_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 28 +-3333.33 -3333.3333 29 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3251,14 +3399,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DECIMAL(37,2)), my_binary_30, id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL; +WHERE select_id = 61 OR select_id IS NULL order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 -0.00 2 +0.00 2 0.00 <--------30 characters-------> 3 -0.00 ---äÖüß@µ*$-- 4 --1.00 -1 5 --3333.33 -3333.3333 27 +0.00 ---äÖüß@µ*$-- 4 +-1.00 -1 5 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3273,14 +3421,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as decimal(37,2)) AS `CAST(my_binary_30 AS DECIMAL(37,2))`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 60 OR select_id IS NULL); +WHERE select_id = 61 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DECIMAL(37,2)) my_binary_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 27 +-3333.33 -3333.3333 28 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: '' @@ -3297,14 +3445,14 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DECIMAL(37,2)), my_varchar_1000, id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL; +WHERE select_id = 60 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3314,14 +3462,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as decimal(37,2)) AS `CAST(my_varchar_1000 AS DECIMAL(37,2))`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 59 OR select_id IS NULL); +WHERE select_id = 60 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DECIMAL(37,2)) my_varchar_1000 id NULL NULL 1 0.00 2 0.00 <---------1000 characters--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 26 +-3333.33 -3333.3333 27 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Error 1366 Incorrect decimal value: '' for column '' at row -1 @@ -3333,14 +3481,14 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DECIMAL(37,2)), my_char_30, id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL; +WHERE select_id = 59 OR select_id IS NULL order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3353,14 +3501,14 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as decimal(37,2)) AS `CAST(my_char_30 AS DECIMAL(37,2))`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 58 OR select_id IS NULL); +WHERE select_id = 59 OR select_id IS NULL) order by id; CAST(my_char_30 AS DECIMAL(37,2)) my_char_30 id NULL NULL 1 0.00 2 0.00 <--------30 characters-------> 3 0.00 ---äÖüß@µ*$-- 4 -1.00 -1 5 --3333.33 -3333.3333 25 +-3333.33 -3333.3333 26 Warnings: Error 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1292 Truncated incorrect DECIMAL value: ' ' @@ -3375,7 +3523,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS TIME), my_year, id FROM t1_values; SELECT CAST(my_year AS TIME), my_year, id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL; +WHERE select_id = 58 OR select_id IS NULL order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3387,7 +3535,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as time) AS `CAST(my_year AS TIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 57 OR select_id IS NULL); +WHERE select_id = 58 OR select_id IS NULL) order by id; CAST(my_year AS TIME) my_year id NULL NULL 1 00:19:01 1901 2 @@ -3401,7 +3549,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS TIME), my_time, id FROM t1_values; SELECT CAST(my_time AS TIME), my_time, id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL; +WHERE select_id = 57 OR select_id IS NULL order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3413,7 +3561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as time) AS `CAST(my_time AS TIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 56 OR select_id IS NULL); +WHERE select_id = 57 OR select_id IS NULL) order by id; CAST(my_time AS TIME) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -3427,7 +3575,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS TIME), my_timestamp, id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL; +WHERE select_id = 56 OR select_id IS NULL order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3439,7 +3587,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as time) AS `CAST(my_timestamp AS TIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 55 OR select_id IS NULL); +WHERE select_id = 56 OR select_id IS NULL) order by id; CAST(my_timestamp AS TIME) my_timestamp id 00:00:00 0000-00-00 00:00:00 1 03:00:01 1970-01-01 03:00:01 2 @@ -3453,7 +3601,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS TIME), my_date, id FROM t1_values; SELECT CAST(my_date AS TIME), my_date, id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL; +WHERE select_id = 55 OR select_id IS NULL order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3465,7 +3613,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as time) AS `CAST(my_date AS TIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 54 OR select_id IS NULL); +WHERE select_id = 55 OR select_id IS NULL) order by id; CAST(my_date AS TIME) my_date id NULL NULL 1 00:00:00 0001-01-01 2 @@ -3479,7 +3627,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS TIME), my_datetime, id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL; +WHERE select_id = 54 OR select_id IS NULL order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3491,7 +3639,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as time) AS `CAST(my_datetime AS TIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 53 OR select_id IS NULL); +WHERE select_id = 54 OR select_id IS NULL) order by id; CAST(my_datetime AS TIME) my_datetime id NULL NULL 1 00:00:00 0001-01-01 00:00:00 2 @@ -3501,11 +3649,45 @@ NULL NULL 1 DROP VIEW v1; +CREATE VIEW v1 AS SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values; +SELECT CAST(my_double AS TIME), +my_double, id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +SHOW CREATE VIEW v1; +View Create View +v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as time) AS `CAST(my_double AS TIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` +SELECT v1.* FROM v1 +WHERE v1.id IN (SELECT id FROM t1_values +WHERE select_id = 53 OR select_id IS NULL) order by id; +CAST(my_double AS TIME) my_double id +NULL NULL 1 +NULL -1.7976931348623e+308 2 +NULL 1.7976931348623e+308 3 +00:00:00 0 4 +-00:00:01 -1 5 +00:17:58 1758 25 +Warnings: +Warning 1292 Truncated incorrect time value: '-1.7976931348623e+308' +Warning 1292 Truncated incorrect time value: '1.7976931348623e+308' +DROP VIEW v1; + + CREATE VIEW v1 AS SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS TIME), my_bigint, id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL; +WHERE select_id = 52 OR select_id IS NULL order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3521,7 +3703,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as time) AS `CAST(my_bigint AS TIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 52 OR select_id IS NULL); +WHERE select_id = 52 OR select_id IS NULL) order by id; CAST(my_bigint AS TIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3539,7 +3721,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS TIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL; +WHERE select_id = 51 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3556,7 +3738,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as time) AS `CAST(my_varbinary_1000 AS TIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 51 OR select_id IS NULL); +WHERE select_id = 51 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS TIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3575,14 +3757,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS TIME), my_binary_30, id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL; +WHERE select_id = 50 OR select_id IS NULL order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 -00:00:00 2 +00:00:00 2 00:00:00 <--------30 characters-------> 3 --00:00:00 ---äÖüß@µ*$-- 4 -NULL -1 5 -41:58:00 1 17:58 22 +-00:00:00 ---äÖüß@µ*$-- 4 +NULL -1 5 +41:58:00 1 17:58 22 Warnings: Warning 1292 Truncated incorrect time value: '' Warning 1292 Truncated incorrect time value: '<--------30 characters------->' @@ -3594,7 +3776,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as time) AS `CAST(my_binary_30 AS TIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 50 OR select_id IS NULL); +WHERE select_id = 50 OR select_id IS NULL) order by id; CAST(my_binary_30 AS TIME) my_binary_30 id NULL NULL 1 00:00:00 2 @@ -3615,7 +3797,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS TIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL; +WHERE select_id = 49 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3632,7 +3814,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as time) AS `CAST(my_varchar_1000 AS TIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 49 OR select_id IS NULL); +WHERE select_id = 49 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS TIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -3651,7 +3833,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS TIME), my_char_30, id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL; +WHERE select_id = 48 OR select_id IS NULL order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3668,7 +3850,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as time) AS `CAST(my_char_30 AS TIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 48 OR select_id IS NULL); +WHERE select_id = 48 OR select_id IS NULL) order by id; CAST(my_char_30 AS TIME) my_char_30 id NULL NULL 1 NULL 2 @@ -3687,7 +3869,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values; SELECT CAST(my_year AS DATETIME), my_year, id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL; +WHERE select_id = 47 OR select_id IS NULL order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3704,7 +3886,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as datetime) AS `CAST(my_year AS DATETIME)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 47 OR select_id IS NULL); +WHERE select_id = 47 OR select_id IS NULL) order by id; CAST(my_year AS DATETIME) my_year id NULL NULL 1 NULL 1901 2 @@ -3723,7 +3905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values; SELECT CAST(my_time AS DATETIME), my_time, id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL; +WHERE select_id = 46 OR select_id IS NULL order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3738,7 +3920,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as datetime) AS `CAST(my_time AS DATETIME)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 46 OR select_id IS NULL); +WHERE select_id = 46 OR select_id IS NULL) order by id; CAST(my_time AS DATETIME) my_time id NULL NULL 1 0000-00-00 00:00:00 -838:59:59 2 @@ -3755,7 +3937,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATETIME), my_timestamp, id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL; +WHERE select_id = 45 OR select_id IS NULL order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3767,7 +3949,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as datetime) AS `CAST(my_timestamp AS DATETIME)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 45 OR select_id IS NULL); +WHERE select_id = 45 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATETIME) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -3781,7 +3963,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values; SELECT CAST(my_date AS DATETIME), my_date, id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL; +WHERE select_id = 44 OR select_id IS NULL order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3793,7 +3975,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as datetime) AS `CAST(my_date AS DATETIME)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 44 OR select_id IS NULL); +WHERE select_id = 44 OR select_id IS NULL) order by id; CAST(my_date AS DATETIME) my_date id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 2 @@ -3807,7 +3989,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATETIME), my_datetime, id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL; +WHERE select_id = 43 OR select_id IS NULL order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3819,7 +4001,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as datetime) AS `CAST(my_datetime AS DATETIME)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 43 OR select_id IS NULL); +WHERE select_id = 43 OR select_id IS NULL) order by id; CAST(my_datetime AS DATETIME) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -3833,7 +4015,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values; SELECT CAST(my_double AS DATETIME), my_double, id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL; +WHERE select_id = 42 OR select_id IS NULL order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3852,7 +4034,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as datetime) AS `CAST(my_double AS DATETIME)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 42 OR select_id IS NULL); +WHERE select_id = 42 OR select_id IS NULL) order by id; CAST(my_double AS DATETIME) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -3873,7 +4055,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATETIME), my_bigint, id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL; +WHERE select_id = 41 OR select_id IS NULL order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3892,7 +4074,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as datetime) AS `CAST(my_bigint AS DATETIME)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 41 OR select_id IS NULL); +WHERE select_id = 41 OR select_id IS NULL) order by id; CAST(my_bigint AS DATETIME) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -3913,7 +4095,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATETIME), my_varbinary_1000, id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL; +WHERE select_id = 40 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3931,7 +4113,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as datetime) AS `CAST(my_varbinary_1000 AS DATETIME)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 40 OR select_id IS NULL); +WHERE select_id = 40 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATETIME) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -3951,14 +4133,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATETIME), my_binary_30, id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL; +WHERE select_id = 39 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 17:58:00 2005-06-27 17:58 16 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 17:58:00 2005-06-27 17:58 16 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -3970,7 +4152,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as datetime) AS `CAST(my_binary_30 AS DATETIME)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 39 OR select_id IS NULL); +WHERE select_id = 39 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATETIME) my_binary_30 id NULL NULL 1 NULL 2 @@ -3991,7 +4173,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATETIME), my_varchar_1000, id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL; +WHERE select_id = 38 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4009,7 +4191,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as datetime) AS `CAST(my_varchar_1000 AS DATETIME)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 38 OR select_id IS NULL); +WHERE select_id = 38 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATETIME) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4029,7 +4211,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATETIME), my_char_30, id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL; +WHERE select_id = 37 OR select_id IS NULL order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4047,7 +4229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as datetime) AS `CAST(my_char_30 AS DATETIME)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 37 OR select_id IS NULL); +WHERE select_id = 37 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATETIME) my_char_30 id NULL NULL 1 NULL 2 @@ -4067,7 +4249,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS DATE), my_year, id FROM t1_values; SELECT CAST(my_year AS DATE), my_year, id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL; +WHERE select_id = 36 OR select_id IS NULL order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4084,7 +4266,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as date) AS `CAST(my_year AS DATE)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 36 OR select_id IS NULL); +WHERE select_id = 36 OR select_id IS NULL) order by id; CAST(my_year AS DATE) my_year id NULL NULL 1 NULL 1901 2 @@ -4103,7 +4285,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS DATE), my_time, id FROM t1_values; SELECT CAST(my_time AS DATE), my_time, id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL; +WHERE select_id = 35 OR select_id IS NULL order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4115,7 +4297,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as date) AS `CAST(my_time AS DATE)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 35 OR select_id IS NULL); +WHERE select_id = 35 OR select_id IS NULL) order by id; CAST(my_time AS DATE) my_time id NULL NULL 1 0000-00-00 -838:59:59 2 @@ -4129,7 +4311,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS DATE), my_timestamp, id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL; +WHERE select_id = 34 OR select_id IS NULL order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4141,7 +4323,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as date) AS `CAST(my_timestamp AS DATE)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 34 OR select_id IS NULL); +WHERE select_id = 34 OR select_id IS NULL) order by id; CAST(my_timestamp AS DATE) my_timestamp id 0000-00-00 0000-00-00 00:00:00 1 1970-01-01 1970-01-01 03:00:01 2 @@ -4155,7 +4337,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS DATE), my_date, id FROM t1_values; SELECT CAST(my_date AS DATE), my_date, id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL; +WHERE select_id = 33 OR select_id IS NULL order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4167,7 +4349,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as date) AS `CAST(my_date AS DATE)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 33 OR select_id IS NULL); +WHERE select_id = 33 OR select_id IS NULL) order by id; CAST(my_date AS DATE) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4181,7 +4363,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS DATE), my_datetime, id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL; +WHERE select_id = 32 OR select_id IS NULL order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4193,7 +4375,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as date) AS `CAST(my_datetime AS DATE)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 32 OR select_id IS NULL); +WHERE select_id = 32 OR select_id IS NULL) order by id; CAST(my_datetime AS DATE) my_datetime id NULL NULL 1 0001-01-01 0001-01-01 00:00:00 2 @@ -4207,7 +4389,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS DATE), my_double, id FROM t1_values; SELECT CAST(my_double AS DATE), my_double, id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL; +WHERE select_id = 31 OR select_id IS NULL order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4225,7 +4407,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as date) AS `CAST(my_double AS DATE)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 31 OR select_id IS NULL); +WHERE select_id = 31 OR select_id IS NULL) order by id; CAST(my_double AS DATE) my_double id NULL NULL 1 NULL -1.7976931348623e+308 2 @@ -4245,7 +4427,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS DATE), my_bigint, id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL; +WHERE select_id = 30 OR select_id IS NULL order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4263,7 +4445,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as date) AS `CAST(my_bigint AS DATE)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 30 OR select_id IS NULL); +WHERE select_id = 30 OR select_id IS NULL) order by id; CAST(my_bigint AS DATE) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -4283,7 +4465,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS DATE), my_varbinary_1000, id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL; +WHERE select_id = 29 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4301,7 +4483,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as date) AS `CAST(my_varbinary_1000 AS DATE)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 29 OR select_id IS NULL); +WHERE select_id = 29 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS DATE) my_varbinary_1000 id NULL NULL 1 NULL 2 @@ -4321,14 +4503,14 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS DATE), my_binary_30, id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL; +WHERE select_id = 28 OR select_id IS NULL order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 -NULL 2 +NULL 2 NULL <--------30 characters-------> 3 -NULL ---äÖüß@µ*$-- 4 -NULL -1 5 -2005-06-27 2005-06-27 10 +NULL ---äÖüß@µ*$-- 4 +NULL -1 5 +2005-06-27 2005-06-27 10 Warnings: Warning 1292 Truncated incorrect datetime value: '' Warning 1292 Truncated incorrect datetime value: '<--------30 characters------->' @@ -4340,7 +4522,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as date) AS `CAST(my_binary_30 AS DATE)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 28 OR select_id IS NULL); +WHERE select_id = 28 OR select_id IS NULL) order by id; CAST(my_binary_30 AS DATE) my_binary_30 id NULL NULL 1 NULL 2 @@ -4361,7 +4543,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS DATE), my_varchar_1000, id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL; +WHERE select_id = 27 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4379,7 +4561,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as date) AS `CAST(my_varchar_1000 AS DATE)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 27 OR select_id IS NULL); +WHERE select_id = 27 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS DATE) my_varchar_1000 id NULL NULL 1 NULL 2 @@ -4399,7 +4581,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS DATE), my_char_30, id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL; +WHERE select_id = 26 OR select_id IS NULL order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4417,7 +4599,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as date) AS `CAST(my_char_30 AS DATE)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 26 OR select_id IS NULL); +WHERE select_id = 26 OR select_id IS NULL) order by id; CAST(my_char_30 AS DATE) my_char_30 id NULL NULL 1 NULL 2 @@ -4437,7 +4619,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values; SELECT CAST(my_year AS CHAR), my_year, id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL; +WHERE select_id = 25 OR select_id IS NULL order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4449,7 +4631,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset latin1) AS `CAST(my_year AS CHAR)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 25 OR select_id IS NULL); +WHERE select_id = 25 OR select_id IS NULL) order by id; CAST(my_year AS CHAR) my_year id NULL NULL 1 1901 1901 2 @@ -4463,7 +4645,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values; SELECT CAST(my_time AS CHAR), my_time, id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL; +WHERE select_id = 24 OR select_id IS NULL order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4475,7 +4657,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset latin1) AS `CAST(my_time AS CHAR)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 24 OR select_id IS NULL); +WHERE select_id = 24 OR select_id IS NULL) order by id; CAST(my_time AS CHAR) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4489,7 +4671,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS CHAR), my_timestamp, id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL; +WHERE select_id = 23 OR select_id IS NULL order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4501,7 +4683,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset latin1) AS `CAST(my_timestamp AS CHAR)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 23 OR select_id IS NULL); +WHERE select_id = 23 OR select_id IS NULL) order by id; CAST(my_timestamp AS CHAR) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4515,7 +4697,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values; SELECT CAST(my_date AS CHAR), my_date, id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL; +WHERE select_id = 22 OR select_id IS NULL order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4527,7 +4709,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset latin1) AS `CAST(my_date AS CHAR)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 22 OR select_id IS NULL); +WHERE select_id = 22 OR select_id IS NULL) order by id; CAST(my_date AS CHAR) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4541,7 +4723,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS CHAR), my_datetime, id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL; +WHERE select_id = 21 OR select_id IS NULL order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4553,7 +4735,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset latin1) AS `CAST(my_datetime AS CHAR)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 21 OR select_id IS NULL); +WHERE select_id = 21 OR select_id IS NULL) order by id; CAST(my_datetime AS CHAR) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4567,7 +4749,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values; SELECT CAST(my_double AS CHAR), my_double, id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL; +WHERE select_id = 20 OR select_id IS NULL order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4579,7 +4761,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset latin1) AS `CAST(my_double AS CHAR)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 20 OR select_id IS NULL); +WHERE select_id = 20 OR select_id IS NULL) order by id; CAST(my_double AS CHAR) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4593,7 +4775,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS CHAR), my_decimal, id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL; +WHERE select_id = 19 OR select_id IS NULL order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4605,7 +4787,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset latin1) AS `CAST(my_decimal AS CHAR)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 19 OR select_id IS NULL); +WHERE select_id = 19 OR select_id IS NULL) order by id; CAST(my_decimal AS CHAR) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4619,7 +4801,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS CHAR), my_bigint, id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL; +WHERE select_id = 18 OR select_id IS NULL order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4631,7 +4813,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset latin1) AS `CAST(my_bigint AS CHAR)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 18 OR select_id IS NULL); +WHERE select_id = 18 OR select_id IS NULL) order by id; CAST(my_bigint AS CHAR) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4645,7 +4827,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS CHAR), my_varbinary_1000, id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL; +WHERE select_id = 17 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4657,7 +4839,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset latin1) AS `CAST(my_varbinary_1000 AS CHAR)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 17 OR select_id IS NULL); +WHERE select_id = 17 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS CHAR) my_varbinary_1000 id NULL NULL 1 2 @@ -4671,19 +4853,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS CHAR), my_binary_30, id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL; +WHERE select_id = 16 OR select_id IS NULL order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset latin1) AS `CAST(my_binary_30 AS CHAR)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 16 OR select_id IS NULL); +WHERE select_id = 16 OR select_id IS NULL) order by id; CAST(my_binary_30 AS CHAR) my_binary_30 id NULL NULL 1 2 @@ -4697,7 +4879,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS CHAR), my_varchar_1000, id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL; +WHERE select_id = 15 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4709,7 +4891,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset latin1) AS `CAST(my_varchar_1000 AS CHAR)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 15 OR select_id IS NULL); +WHERE select_id = 15 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS CHAR) my_varchar_1000 id NULL NULL 1 2 @@ -4723,7 +4905,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS CHAR), my_char_30, id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL; +WHERE select_id = 14 OR select_id IS NULL order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4735,7 +4917,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset latin1) AS `CAST(my_char_30 AS CHAR)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 14 OR select_id IS NULL); +WHERE select_id = 14 OR select_id IS NULL) order by id; CAST(my_char_30 AS CHAR) my_char_30 id NULL NULL 1 2 @@ -4749,7 +4931,7 @@ CREATE VIEW v1 AS SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values; SELECT CAST(my_year AS BINARY), my_year, id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL; +WHERE select_id = 13 OR select_id IS NULL order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4761,7 +4943,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_year` as char charset binary) AS `CAST(my_year AS BINARY)`,`t1_values`.`my_year` AS `my_year`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 13 OR select_id IS NULL); +WHERE select_id = 13 OR select_id IS NULL) order by id; CAST(my_year AS BINARY) my_year id NULL NULL 1 1901 1901 2 @@ -4775,7 +4957,7 @@ CREATE VIEW v1 AS SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values; SELECT CAST(my_time AS BINARY), my_time, id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL; +WHERE select_id = 12 OR select_id IS NULL order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4787,7 +4969,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_time` as char charset binary) AS `CAST(my_time AS BINARY)`,`t1_values`.`my_time` AS `my_time`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 12 OR select_id IS NULL); +WHERE select_id = 12 OR select_id IS NULL) order by id; CAST(my_time AS BINARY) my_time id NULL NULL 1 -838:59:59 -838:59:59 2 @@ -4801,7 +4983,7 @@ CREATE VIEW v1 AS SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values; SELECT CAST(my_timestamp AS BINARY), my_timestamp, id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL; +WHERE select_id = 11 OR select_id IS NULL order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4813,7 +4995,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_timestamp` as char charset binary) AS `CAST(my_timestamp AS BINARY)`,`t1_values`.`my_timestamp` AS `my_timestamp`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 11 OR select_id IS NULL); +WHERE select_id = 11 OR select_id IS NULL) order by id; CAST(my_timestamp AS BINARY) my_timestamp id 0000-00-00 00:00:00 0000-00-00 00:00:00 1 1970-01-01 03:00:01 1970-01-01 03:00:01 2 @@ -4827,7 +5009,7 @@ CREATE VIEW v1 AS SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values; SELECT CAST(my_date AS BINARY), my_date, id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL; +WHERE select_id = 10 OR select_id IS NULL order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4839,7 +5021,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_date` as char charset binary) AS `CAST(my_date AS BINARY)`,`t1_values`.`my_date` AS `my_date`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 10 OR select_id IS NULL); +WHERE select_id = 10 OR select_id IS NULL) order by id; CAST(my_date AS BINARY) my_date id NULL NULL 1 0001-01-01 0001-01-01 2 @@ -4853,7 +5035,7 @@ CREATE VIEW v1 AS SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values; SELECT CAST(my_datetime AS BINARY), my_datetime, id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL; +WHERE select_id = 9 OR select_id IS NULL order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4865,7 +5047,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_datetime` as char charset binary) AS `CAST(my_datetime AS BINARY)`,`t1_values`.`my_datetime` AS `my_datetime`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 9 OR select_id IS NULL); +WHERE select_id = 9 OR select_id IS NULL) order by id; CAST(my_datetime AS BINARY) my_datetime id NULL NULL 1 0001-01-01 00:00:00 0001-01-01 00:00:00 2 @@ -4879,7 +5061,7 @@ CREATE VIEW v1 AS SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values; SELECT CAST(my_double AS BINARY), my_double, id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL; +WHERE select_id = 8 OR select_id IS NULL order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4891,7 +5073,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_double` as char charset binary) AS `CAST(my_double AS BINARY)`,`t1_values`.`my_double` AS `my_double`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 8 OR select_id IS NULL); +WHERE select_id = 8 OR select_id IS NULL) order by id; CAST(my_double AS BINARY) my_double id NULL NULL 1 -1.7976931348623e+308 -1.7976931348623e+308 2 @@ -4905,7 +5087,7 @@ CREATE VIEW v1 AS SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values; SELECT CAST(my_decimal AS BINARY), my_decimal, id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL; +WHERE select_id = 7 OR select_id IS NULL order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4917,7 +5099,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_decimal` as char charset binary) AS `CAST(my_decimal AS BINARY)`,`t1_values`.`my_decimal` AS `my_decimal`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 7 OR select_id IS NULL); +WHERE select_id = 7 OR select_id IS NULL) order by id; CAST(my_decimal AS BINARY) my_decimal id NULL NULL 1 -9999999999999999999999999999999999.999999999999999999999999999999 -9999999999999999999999999999999999.999999999999999999999999999999 2 @@ -4931,7 +5113,7 @@ CREATE VIEW v1 AS SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values; SELECT CAST(my_bigint AS BINARY), my_bigint, id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL; +WHERE select_id = 6 OR select_id IS NULL order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4943,7 +5125,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_bigint` as char charset binary) AS `CAST(my_bigint AS BINARY)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 6 OR select_id IS NULL); +WHERE select_id = 6 OR select_id IS NULL) order by id; CAST(my_bigint AS BINARY) my_bigint id NULL NULL 1 -9223372036854775808 -9223372036854775808 2 @@ -4957,7 +5139,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values; SELECT CAST(my_varbinary_1000 AS BINARY), my_varbinary_1000, id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL; +WHERE select_id = 5 OR select_id IS NULL order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4969,7 +5151,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varbinary_1000` as char charset binary) AS `CAST(my_varbinary_1000 AS BINARY)`,`t1_values`.`my_varbinary_1000` AS `my_varbinary_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 5 OR select_id IS NULL); +WHERE select_id = 5 OR select_id IS NULL) order by id; CAST(my_varbinary_1000 AS BINARY) my_varbinary_1000 id NULL NULL 1 2 @@ -4983,19 +5165,19 @@ CREATE VIEW v1 AS SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values; SELECT CAST(my_binary_30 AS BINARY), my_binary_30, id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL; +WHERE select_id = 4 OR select_id IS NULL order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 - 2 + 2 <--------30 characters-------> <--------30 characters-------> 3 - ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 --1 -1 5 + ---äÖüß@µ*$-- ---äÖüß@µ*$-- 4 +-1 -1 5 SHOW CREATE VIEW v1; View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_binary_30` as char charset binary) AS `CAST(my_binary_30 AS BINARY)`,`t1_values`.`my_binary_30` AS `my_binary_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 4 OR select_id IS NULL); +WHERE select_id = 4 OR select_id IS NULL) order by id; CAST(my_binary_30 AS BINARY) my_binary_30 id NULL NULL 1 2 @@ -5009,7 +5191,7 @@ CREATE VIEW v1 AS SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values; SELECT CAST(my_varchar_1000 AS BINARY), my_varchar_1000, id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL; +WHERE select_id = 3 OR select_id IS NULL order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5021,7 +5203,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_varchar_1000` as char charset binary) AS `CAST(my_varchar_1000 AS BINARY)`,`t1_values`.`my_varchar_1000` AS `my_varchar_1000`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 3 OR select_id IS NULL); +WHERE select_id = 3 OR select_id IS NULL) order by id; CAST(my_varchar_1000 AS BINARY) my_varchar_1000 id NULL NULL 1 2 @@ -5035,7 +5217,7 @@ CREATE VIEW v1 AS SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values; SELECT CAST(my_char_30 AS BINARY), my_char_30, id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL; +WHERE select_id = 2 OR select_id IS NULL order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5047,7 +5229,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select cast(`t1_values`.`my_char_30` as char charset binary) AS `CAST(my_char_30 AS BINARY)`,`t1_values`.`my_char_30` AS `my_char_30`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 2 OR select_id IS NULL); +WHERE select_id = 2 OR select_id IS NULL) order by id; CAST(my_char_30 AS BINARY) my_char_30 id NULL NULL 1 2 @@ -5059,7 +5241,7 @@ DROP VIEW v1; CREATE VIEW v1 AS SELECT sqrt(my_bigint), my_bigint, id FROM t1_values; SELECT sqrt(my_bigint), my_bigint, id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL; +WHERE select_id = 1 OR select_id IS NULL order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 @@ -5073,7 +5255,7 @@ View Create View v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sqrt(`t1_values`.`my_bigint`) AS `sqrt(my_bigint)`,`t1_values`.`my_bigint` AS `my_bigint`,`t1_values`.`id` AS `id` from `t1_values` SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values -WHERE select_id = 1 OR select_id IS NULL); +WHERE select_id = 1 OR select_id IS NULL) order by id; sqrt(my_bigint) my_bigint id NULL NULL 1 NULL -9223372036854775808 2 diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result index aff27fbabc4..6ba95c9fa63 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_02.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.2 - Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: @@ -164,7 +172,7 @@ declare y integer default 1; set @x = x; set @y = y; set @z = 234; -SELECT f1, f2 into @x, @y from t2 limit 1; +SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -207,7 +215,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; -SELECT f4, f3 into @x, @y from t2 limit 1; +SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// CALL sp1(); @@ -695,7 +703,7 @@ Testcase 3.1.2.54: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -794,7 +802,7 @@ Testcase 3.1.2.56: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -902,7 +910,7 @@ Testcase 3.1.2.58: ------------------ Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. -------------------------------------------------------------------------------- DROP PROCEDURE IF EXISTS sp0; @@ -1082,7 +1090,8 @@ declare f2_value char(20); declare f5_value char(20); declare f4_value integer; declare f6_value integer; -declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 +where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1165,7 +1174,7 @@ of a compound statement ends. DROP TABLE IF EXISTS temp1; DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; f1 f2 f4 f5 a` a` -5000 a` aaa aaa -4999 aaa @@ -1185,8 +1194,8 @@ declare newf1 char(20); declare newf2 char(20); declare newf5 char(20); declare newf4 integer; -declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; -declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; +declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; +declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1268,8 +1277,10 @@ declare i_newf11 char(20); declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; -declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; -declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; +declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 4; +declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 +where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1300,8 +1311,10 @@ DECLARE o_newf11 CHAR(20); DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; -DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; -DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; +DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; +DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 +WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result index 0057b7ef229..53e25441e2e 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_03.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.3 - Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result index a85c4347962..88bddf68e24 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_06.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.6 - Privilege Checks: -------------------------------------------------------------------------------- @@ -79,6 +87,7 @@ BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// ERROR 42000: Access denied for user 'user_1'@'localhost' to database 'db_storedproc_1' +USE db_storedproc_1; root@localhost db_storedproc_1 GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -90,6 +99,7 @@ CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; END// +USE db_storedproc_1; root@localhost db_storedproc_1 DROP USER 'user_1'@'localhost'; @@ -115,6 +125,7 @@ CREATE FUNCTION fn1(v1 int) returns int BEGIN return v1; END// +USE db_storedproc_1; root@localhost db_storedproc_1 drop user 'user_1'@'localhost'; diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result index 0865d77e4f0..cbe0a18435a 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_07.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.7 - SQL mode checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result index 3e612817200..40ebc1e51e4 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_08.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.8 - SHOW statement checks: -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result b/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result index b24e222fc4b..163bae36bed 100644 --- a/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result +++ b/mysql-test/suite/funcs_1/r/myisam_storedproc_10.result @@ -9,20 +9,25 @@ DROP DATABASE IF EXISTS db_storedproc_1; CREATE DATABASE db_storedproc; CREATE DATABASE db_storedproc_1; USE db_storedproc; -create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; -create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; -create table t3(f1 char(20),f2 char(20),f3 integer) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; -create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t1; +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t2; +create table t3(f1 char(20),f2 char(20),f3 integer) engine = ; +load data infile '/std_data_ln/funcs_1/t3.txt' into table t3; +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t7; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -34,8 +39,9 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t7.txt' into table t8; Warnings: Warning 1265 Data truncated for column 'f3' at row 1 Warning 1265 Data truncated for column 'f3' at row 2 @@ -47,12 +53,14 @@ Warning 1265 Data truncated for column 'f3' at row 7 Warning 1265 Data truncated for column 'f3' at row 8 Warning 1265 Data truncated for column 'f3' at row 9 Warning 1265 Data truncated for column 'f3' at row 10 -create table t9(f1 int, f2 char(25), f3 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; -create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; -create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +create table t9(f1 int, f2 char(25), f3 int) engine = ; +load data infile '/std_data_ln/funcs_1/t9.txt' into table t9; +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t10; +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = ; +load data infile '/std_data_ln/funcs_1/t4.txt' into table t11; Section 3.1.10 - CALL checks: -------------------------------------------------------------------------------- @@ -78,7 +86,7 @@ connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK); user_1@localhost db_storedproc CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN -SELECT * FROM db_storedproc.t1 LIMIT 1; +SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// CREATE FUNCTION fn31105(n INT) RETURNS INT BEGIN @@ -93,6 +101,8 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +connection default; +USE db_storedproc; root@localhost db_storedproc CALL sp31102(); @@ -112,6 +122,8 @@ a` a` 1000-01-01 -5000 a` -5000 SELECT fn31105( 9 ); fn31105( 9 ) 81 +connection default; +USE db_storedproc; root@localhost db_storedproc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; @@ -129,6 +141,7 @@ CALL sp31102(); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.sp31102' SELECT fn31105( 9 ); ERROR 42000: execute command denied to user 'user_2'@'localhost' for routine 'db_storedproc.fn31105' +USE db_storedproc; root@localhost db_storedproc DROP PROCEDURE sp31102; @@ -176,6 +189,8 @@ DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; CREATE PROCEDURE sp_ins_1() @@ -203,49 +218,72 @@ END; SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// +CREATE PROCEDURE sp_del() +BEGIN +DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// +CREATE PROCEDURE sp_with_rowcount() +BEGIN +BEGIN +INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), +('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), +('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); +END; +SELECT row_count() AS 'row_count() after insert'; +SELECT row_count() AS 'row_count() after select row_count()'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; +SELECT row_count() AS 'row_count() after update'; +SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; +DELETE FROM temp WHERE temp.f1 = 'updated_2'; +SELECT row_count() AS 'row_count() after delete'; +END// CALL sp_ins_1(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 CALL sp_ins_3(); SELECT row_count(); row_count() 1 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 +abc abc 2005-10-03 100 uvw 1000 +abc xyz 1949-05-23 100 uvw 1000 +abc xyz 1989-11-09 100 uvw 1000 +abc xyz 2005-10-24 100 uvw 1000 acaaa acaaa 1000-01-04 -4997 acaaa -4997 adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 -abc abc 2005-10-03 100 uvw 1000 -abc xyz 1949-05-23 100 uvw 1000 -abc xyz 1989-11-09 100 uvw 1000 -abc xyz 2005-10-24 100 uvw 1000 CALL sp_upd(); SELECT row_count(); row_count() 4 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -254,8 +292,6 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 @@ -279,6 +315,8 @@ row_count() 3 SELECT * FROM temp; f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 a` a` 1000-01-01 -5000 a` -5000 aaa aaa 1000-01-02 -4999 aaa -4999 abaa abaa 1000-01-03 -4998 abaa -4998 @@ -287,26 +325,73 @@ adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 -a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 -a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +qwe xyz 1998-03-26 100 uvw 1000 updated abc 2005-10-03 100 uvw 1000 updated xyz 1949-05-23 100 uvw 1000 updated xyz 1989-11-09 100 uvw 1000 updated xyz 2005-10-24 100 uvw 1000 updated_2 abc 1989-11-09 100 uvw 1000 -qwe xyz 1998-03-26 100 uvw 1000 updated_2 abc 2000-11-09 100 uvw 1000 updated_2 abc 2005-11-07 100 uvw 1000 +CALL sp_del(); +SELECT row_count(); +row_count() +4 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +a^aaaaaaaa a^aaaaaaaa 1000-01-09 -4992 a^aaaaaaaa -4992 +a_aaaaaaaaa a_aaaaaaaaa 1000-01-10 -4991 a_aaaaaaaaa -4991 +a` a` 1000-01-01 -5000 a` -5000 +aaa aaa 1000-01-02 -4999 aaa -4999 +abaa abaa 1000-01-03 -4998 abaa -4998 +acaaa acaaa 1000-01-04 -4997 acaaa -4997 +adaaaa adaaaa 1000-01-05 -4996 adaaaa -4996 +aeaaaaa aeaaaaa 1000-01-06 -4995 aeaaaaa -4995 +afaaaaaa afaaaaaa 1000-01-07 -4994 afaaaaaa -4994 +agaaaaaaa agaaaaaaa 1000-01-08 -4993 agaaaaaaa -4993 +updated abc 2005-10-03 100 uvw 1000 +updated xyz 1949-05-23 100 uvw 1000 +updated xyz 1989-11-09 100 uvw 1000 +updated xyz 2005-10-24 100 uvw 1000 +DELETE FROM temp; +CALL sp_with_rowcount(); +row_count() after insert +4 +row_count() after select row_count() +-1 +f1 f2 f3 +qwe abc 1989-11-09 +qwe abc 2000-11-09 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +row_count() after update +2 +f1 f2 f3 +qwe xyz 1998-03-26 +qwe xyz 2005-11-07 +updated_2 abc 1989-11-09 +updated_2 abc 2000-11-09 +row_count() after delete +2 +SELECT row_count(); +row_count() +-1 +SELECT * FROM temp; +f1 f2 f3 f4 f5 f6 +qwe xyz 1998-03-26 100 uvw 1000 +qwe xyz 2005-11-07 100 uvw 1000 DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; Testcase 3.1.10.8: ------------------ -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. -------------------------------------------------------------------------------- diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_0102.result b/mysql-test/suite/funcs_1/r/myisam_trig_0102.result index 08ad956b167..b49fe114791 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_0102.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_0102.result @@ -1,96 +1,97 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5.1.1: ------------------ use test; -Create trigger trg1_1 BEFORE INSERT +Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; -Create trigger trg1_2 AFTER INSERT +Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; -Create trigger trg1_4 BEFORE UPDATE -on tb3 for each row set @test_before = 27, -new.f142 = @test_before, +Create trigger trg1_4 BEFORE UPDATE +on tb3 for each row set @test_before = 27, +new.f142 = @test_before, new.f122 = 'Before Update Trigger'; -Create trigger trg1_3 AFTER UPDATE +Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; -Create trigger trg1_5 BEFORE DELETE on tb3 for each row -select count(*) into @test_before from tb3 as tr_tb3 +Create trigger trg1_5 BEFORE DELETE on tb3 for each row +select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; -Create trigger trg1_6 AFTER DELETE on tb3 for each row -select count(*) into @test_after from tb3 as tr_tb3 +Create trigger trg1_6 AFTER DELETE on tb3 for each row +select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; set @test_before = 1; set @test_after = 5; select @test_before, @test_after; @test_before @test_after 1 5 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -103,9 +104,9 @@ set @test_after = 8; select @test_before, @test_after; @test_before @test_after 18 8 -Update tb3 set tb3.f122 = 'Update', -tb3.f142 = @test_before, -tb3.f144 = @test_after +Update tb3 set tb3.f122 = 'Update', +tb3.f142 = @test_before, +tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; f121 f122 f142 f144 f134 @@ -113,7 +114,7 @@ Test 3.5.1.1 Before Update Trigger 27 0000000008 1 select @test_before, @test_after; @test_before @test_after 27 15 -Insert into tb3 (f121, f122, f142, f144, f134) +Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -141,7 +142,7 @@ delete from tb3 where f121='Test 3.5.1.1'; Testcase: 3.5.1.2: ------------------ -Create trigger trg_1 after insert +Create trigger trg_1 after insert on tb3 for each statement set @x= 1; 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 'statement set @x= 1' at line 2 drop trigger trg_1; @@ -194,7 +195,7 @@ drop table if exists t1; Warnings: Note 1051 Unknown table 't1' create table t1 (f1 int, f2 char(25),f3 int) engine=myisam; -CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 +CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -206,7 +207,7 @@ update t1 set f2='update 3.5.1.7'; select * from t1; f1 f2 f3 NULL update 3.5.1.7 42 -select trigger_name from information_schema.triggers; +select trigger_name from information_schema.triggers order by trigger_name; trigger_name trg5_1 trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWX @@ -226,7 +227,7 @@ CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; 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 '@@view before insert on tb3 for each row set new.f120 = 't'' at line 1 CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; 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 '@name before insert on tb3 for each row set new.f120 = 't'' at line 1 -CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 +CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; ERROR HY000: Trigger in wrong schema drop database if exists trig_db; @@ -234,11 +235,11 @@ create database trig_db; use trig_db; create table t1 (f1 integer) engine = myisam; use test; -CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 +CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; ERROR 42S02: Table 'trig_db.tb3' doesn't exist use trig_db; -CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 +CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; ERROR HY000: Trigger in wrong schema use test; @@ -262,9 +263,9 @@ drop table if exists t1; drop table if exists t2; create table t1 (f1 char(50), f2 integer) engine = myisam; create table t2 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; -create trigger trig before update on t2 +create trigger trig before update on t2 for each row set new.f1 ='trig t2'; ERROR HY000: Trigger already exists insert into t1 value ('insert to t1',1); @@ -294,15 +295,15 @@ create database trig_db2; create database trig_db3; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; create table t2 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t2 +create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; create table t1 (f1 char(50), f2 integer) engine = myisam; -create trigger trig before insert on t1 +create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; use trig_db1; @@ -313,7 +314,7 @@ insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; @test_var1 @test_var2 @test_var3 trig1 trig2 trig3 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -323,7 +324,7 @@ trig2 3 select * from trig_db3.t1; f1 f2 trig3 4 -select * from t1; +select * from t1 order by f2; f1 f2 trig1 1 trig1 2 @@ -341,17 +342,17 @@ create database trig_db2; use trig_db1; create table t1 (f1 char(50), f2 integer) engine = myisam; create table trig_db2.t1 (f1 char(50), f2 integer) engine = myisam; -create trigger trig1_b before insert on t1 +create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; -create trigger trig_db1.trig1_a after insert on t1 +create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; -create trigger trig_db2.trig2 before insert on trig_db2.t1 +create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table -trig_db1 trig1_b t1 trig_db1 trig1_a t1 +trig_db1 trig1_b t1 trig_db2 trig2 t1 set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_03.result b/mysql-test/suite/funcs_1/r/myisam_trig_03.result index 42e984245e3..ae003721cb4 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_03.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_03.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.3: --------------- @@ -106,7 +107,7 @@ set new.f1 = 'trig 3.5.3.2_1-no'; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no select current_user; @@ -121,15 +122,12 @@ root@localhost use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-yes'); ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for column 'f1' in table 't1' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - -note: once 15166 is fixed a similar case for SELECT needs to be added ---------------------------------------------------------------------- insert into t1 (f1) values ('insert 3.5.3.2-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -141,7 +139,7 @@ drop trigger trg1_2; ERROR 42000: Access denied; you need the SUPER privilege for this operation use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no trig 3.5.3.2_2-yes @@ -150,12 +148,12 @@ use priv_db; drop trigger trg1_2; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg1_2; Testcase 3.5.3.7a: @@ -180,23 +178,22 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT SELECT, INSERT, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +create trigger trg4a_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1a'; insert into t1 (f1) values ('insert 3.5.3.7-1a'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes drop trigger trg4a_1; use priv_db; select current_user; @@ -207,18 +204,13 @@ Grants for test_yesprivs@localhost GRANT UPDATE, SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' create trigger trg4a_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2a'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a drop trigger trg4a_2; @@ -245,30 +237,29 @@ Grants for test_noprivs@localhost GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4b_1 before UPDATE on t1 for each row +set new.f1 = 'trig 3.5.3.7-1b'; +ERROR 42000: Access denied; you need the SUPER privilege for this operation insert into t1 (f1) values ('insert 3.5.3.7-1b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a insert 3.5.3.7-1b +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a update 3.5.3.7-1b drop trigger trg4b_1; +ERROR HY000: Trigger does not exist show grants; Grants for test_yesprivs@localhost GRANT SUPER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' @@ -276,32 +267,26 @@ GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4b_2 before UPDATE on t1 for each row set new.f1 = 'trig 3.5.3.7-2b'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2b'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a -trig 3.5.3.7-2a -update 3.5.3.7-1b insert 3.5.3.7-2b -update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; -select f1 from t1; -f1 -insert 3.5.3.2-no trig 3.5.3.2_2-yes trig 3.5.3.2_2-yes -insert 3.5.3.6-no -insert 3.5.3.7-1a trig 3.5.3.7-2a update 3.5.3.7-1b +update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; +select f1 from t1 order by f1; +f1 +insert 3.5.3.2-no +insert 3.5.3.6-no +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes +trig 3.5.3.7-2a trig 3.5.3.7-2b +update 3.5.3.7-1b drop trigger trg4b_2; Testcase 3.5.3.7c @@ -327,21 +312,19 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT, INSERT, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4c_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1c'; insert into t1 (f1) values ('insert 3.5.3.7-1c'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c +update 3.5.3.7-1b drop trigger trg4c_1; show grants; Grants for test_yesprivs@localhost @@ -350,23 +333,17 @@ GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4c_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2c'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2c'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c +update 3.5.3.7-1b drop trigger trg4c_2; Testcase 3.5.3.7d: @@ -390,23 +367,20 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT SELECT (f1), INSERT (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8884 ------------------------------------------------- +create trigger trg4d_1 before INSERT on t1 for each row +set new.f1 = 'trig 3.5.3.7-1d'; insert into t1 (f1) values ('insert 3.5.3.7-1d'); -select f1 from t1; +ERROR 42000: UPDATE command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d +update 3.5.3.7-1b drop trigger trg4d_1; show grants; Grants for test_yesprivs@localhost @@ -415,25 +389,18 @@ GRANT UPDATE (f1) ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost' use priv_db; create trigger trg4d_2 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.7-2d'; - -SELECT priv added to bypass bug 15166 -------------------------------------- -grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.7-2d'); -select f1 from t1; +select f1 from t1 order by f1; f1 insert 3.5.3.2-no -trig 3.5.3.2_2-yes -trig 3.5.3.2_2-yes insert 3.5.3.6-no -insert 3.5.3.7-1a +trig 3.5.3.2_2-yes +trig 3.5.3.2_2-yes trig 3.5.3.7-2a -update 3.5.3.7-1b trig 3.5.3.7-2b -insert 3.5.3.7-1c trig 3.5.3.7-2c -insert 3.5.3.7-1d trig 3.5.3.7-2d +update 3.5.3.7-1b drop trigger trg4d_2; Testcase 3.5.3.8a: @@ -458,14 +425,14 @@ use priv_db; show grants; Grants for test_noprivs@localhost GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5a_1 before INSERT on t1 for each row +set @test_var = new.f1; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; @test_var before trig 3.5.3.8-1a insert into t1 (f1) values ('insert 3.5.3.8-1a'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1a @@ -483,10 +450,6 @@ set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; @test_var before trig 3.5.3.8-2a - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on *.* to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @test_var @@ -517,15 +480,15 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE ON `priv_db`.* TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5b_1 before UPDATE on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1b'; insert into t1 (f1) values ('insert 3.5.3.8-1b'); select @test_var; @test_var before trig 3.5.3.8-1b update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1b @@ -542,10 +505,6 @@ insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; @test_var before trig 3.5.3.8-2b - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.* to test_yesprivs@localhost; update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; @test_var @@ -576,11 +535,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE VIEW, SHOW VIEW ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5c_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1c @@ -593,10 +552,6 @@ use priv_db; create trigger trg5c_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2c'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; @test_var @@ -626,11 +581,11 @@ Grants for test_noprivs@localhost GRANT SUPER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576' GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost' use priv_db; - -Trigger create disabled - should fail - Bug 8887 ------------------------------------------------- +create trigger trg5d_1 before INSERT on t1 for each row +set @test_var= new.f1; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); +ERROR 42000: SELECT command denied to user 'test_noprivs'@'localhost' for column 'f1' in table 't1' select @test_var; @test_var before trig 3.5.3.8-1d @@ -643,10 +598,6 @@ use priv_db; create trigger trg5d_2 before INSERT on t1 for each row set @test_var= new.f1; set @test_var='before trig 3.5.3.8-2d'; - -UPDATE priv added to bypass bug 15166 -------------------------------------- -grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @test_var @@ -682,10 +633,10 @@ ERROR 42000: INSERT command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); -select f1 from t1; +select f1 from t1 order by f1; f1 4 -select f2 from t2; +select f2 from t2 order by f2; f2 4 use priv_db; @@ -698,11 +649,11 @@ ERROR 42000: UPDATE command denied to user 'test_yesprivs'@'localhost' for table revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 2 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 1 use priv_db; @@ -715,12 +666,12 @@ ERROR 42000: SELECT command denied to user 'test_yesprivs'@'localhost' for table revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 -2 1 -select f2 from t2; +2 +4 +select f2 from t2 order by f2; f2 1 select @aaa; @@ -736,13 +687,13 @@ ERROR 42000: DELETE command denied to user 'test_yesprivs'@'localhost' for table revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); -select f1 from t1; +select f1 from t1 order by f1; f1 -4 +1 +1 2 -1 -1 -select f2 from t2; +4 +select f2 from t2 order by f2; f2 drop database if exists priv_db; drop user test_yesprivs@localhost; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_0407.result b/mysql-test/suite/funcs_1/r/myisam_trig_0407.result index 4e578888fe5..ade033fa852 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_0407.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_0407.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -88,22 +89,22 @@ Use db_drop; create table t1 (f1 char(30)) engine=myisam; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; -Create trigger trg1 BEFORE INSERT on t1 +Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 Trigger 3.5.4.1 drop trigger trg1; select trigger_schema, trigger_name, event_object_table -from information_schema.triggers; +from information_schema.triggers order by trigger_name; trigger_schema trigger_name event_object_table Insert into t1 values ('Insert no trigger 3.5.4.1'); -Select * from t1; +Select * from t1 order by f1; f1 -Trigger 3.5.4.1 Insert no trigger 3.5.4.1 +Trigger 3.5.4.1 drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -127,7 +128,7 @@ drop table if exists t1_433 ; drop table if exists t1_433a ; create table t1_433 (f1 char (30)) engine=myisam; create table t1_433a (f1a char (5)) engine=myisam; -CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row +CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; Drop trigger t1.433.trg3; 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 '.trg3' at line 1 @@ -148,7 +149,7 @@ create database db_drop4; Use db_drop4; create table t1 (f1 char(30)) engine=myisam; grant INSERT, SELECT on db_drop4.t1 to test_general; -Create trigger trg4 BEFORE INSERT on t1 +Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; Use db_drop4; Insert into t1 values ('Insert 3.5.4.4'); @@ -184,7 +185,7 @@ create database db_drop5; Use db_drop5; create table t1 (f1 char(50)) engine=myisam; grant INSERT, SELECT on t1 to test_general; -Create trigger trg5 BEFORE INSERT on t1 +Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; Use db_drop5; Insert into t1 values ('Insert 3.5.4.5'); @@ -221,7 +222,7 @@ ERROR 42S02: Table 'test.t100' doesn't exist Testcase 3.5.5.2: ----------------- Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); -Create trigger trg2 before INSERT +Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; ERROR HY000: Trigger's 't1_temp' is view or temporary table drop table t1_temp; @@ -229,7 +230,7 @@ drop table t1_temp; Testcase 3.5.5.3: ----------------- Create view vw3 as select f118 from tb3; -Create trigger trg3 before INSERT +Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; ERROR HY000: 'test.vw3' is not BASE TABLE drop view vw3; @@ -257,7 +258,7 @@ use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); Warnings: Warning 1265 Data truncated for column 'f1' at row 1 -Select * from dbtest_two.t2; +Select * from dbtest_two.t2 order by f1; f1 1st Insert 3.5. 2nd Insert 3.5. @@ -310,9 +311,9 @@ drop trigger tb3.trg4_2; Testcase 3.5.7.5 / 3.5.7.6: --------------------------- -Create trigger trg5_1 BEFORE INSERT +Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; -Create trigger trg5_2 BEFORE INSERT +Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -330,9 +331,9 @@ delete from tb3 where f121='Test 3.5.7.5/6'; Testcase 3.5.7.7 / 3.5.7.8: --------------------------- set @test_var='Before trig 3.5.7.7'; -Create trigger trg6_1 AFTER INSERT +Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; -Create trigger trg6_2 AFTER INSERT +Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -358,9 +359,9 @@ delete from tb3 where f121='Test 3.5.7.7/8'; Testcase 3.5.7.9/10: -------------------- -Create trigger trg7_1 BEFORE UPDATE +Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; -Create trigger trg7_2 BEFORE UPDATE +Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -378,9 +379,9 @@ delete from tb3 where f121='Test 3.5.7.9/10'; Testcase 3.5.7.11/12: --------------------- set @test_var='Before trig 3.5.7.11'; -Create trigger trg8_1 AFTER UPDATE +Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; -Create trigger trg8_2 AFTER UPDATE +Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -408,9 +409,9 @@ delete from tb3 where f121='Test 3.5.7.11/12'; Testcase 3.5.7.13/14: --------------------- set @test_var=1; -Create trigger trg9_1 BEFORE DELETE +Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; -Create trigger trg9_2 BEFORE DELETE +Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' select @test_var; @@ -440,12 +441,12 @@ delete from tb3 where f121='Test 3.5.7.13/14'; Testcase 3.5.7.15/16: --------------------- set @test_var=1; -Create trigger trg_3_406010_1 AFTER DELETE +Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; -Create trigger trg_3_406010_2 AFTER DELETE +Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; ERROR 42000: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' -Create trigger trg_3_406010_1 AFTER INSERT +Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; ERROR HY000: Trigger already exists select @test_var; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_08.result b/mysql-test/suite/funcs_1/r/myisam_trig_08.result index bab8d0f2ddd..dcfa0aa7ddf 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_08.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_08.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase: 3.5: -------------- @@ -89,17 +90,17 @@ create database db_test; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; -create table t1_i ( +create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=myisam; -create table t1_u ( +create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=myisam; -create table t1_d ( +create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -122,18 +123,18 @@ Insert into t1_d values ('f',222,99999,999.99); use test; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN -insert into db_test.t1_i +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); -update db_test.t1_u +update db_test.t1_u set u144=new.f144, u163=new.f163 -where u136=new.f136; +where u136=new.f136; delete from db_test.t1_d where d136= new.f136; -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u -where u136= new.f136; +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +where u136= new.f136; END// Use test; set @test_var=0; -Insert into tb3 (f120, f122, f136, f144, f163) +Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; f120 f122 f136 f144 f163 @@ -161,14 +162,22 @@ select @test_var; 3.5.8.4 - single SQL - insert ----------------------------- Create trigger trg2 BEFORE UPDATE on tb3 for each row -insert into db_test.t1_i +BEGIN +insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); +END// +Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; +f120 f122 f136 f144 f163 +1 Test 3.5.8.4 00222 0000023456 1.050000000000000000000000000000 +select * from db_test.t1_i order by i120; +i120 i136 i144 i163 +1 00222 0000023456 1.050000000000000000000000000000 update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 I Test 3.5.8.4-Single Insert 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_i; +select * from db_test.t1_i order by i120; i120 i136 i144 i163 1 00222 0000023456 1.050000000000000000000000000000 I 00222 0000023456 1.050000000000000000000000000000 @@ -177,7 +186,7 @@ I 00222 0000023456 1.050000000000000000000000000000 ----------------------------- drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row -update db_test.t1_u +update db_test.t1_u set u120=new.f120 where u136=new.f136; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' @@ -185,27 +194,27 @@ update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 U Test 3.5.8.4-Single Update 00222 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_u; +select * from db_test.t1_u order by u120; u120 u136 u144 u163 a 00111 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 -U 00222 0000023456 1.050000000000000000000000000000 f 00333 0000099999 999.990000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 +U 00222 0000023456 1.050000000000000000000000000000 3.5.8.3/4 - single SQL - delete ------------------------------- drop trigger trg3; Create trigger trg4 AFTER UPDATE on tb3 for each row delete from db_test.t1_d where d136= new.f136; -update tb3 set f120='D', f136=444, +update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; f120 f122 f136 f144 f163 D Test 3.5.8.4-Single Delete 00444 0000023456 1.050000000000000000000000000000 -select * from db_test.t1_d; +select * from db_test.t1_d order by d120; d120 d136 d144 d163 a 00111 0000099999 999.990000000000000000000000000000 c 00333 0000099999 999.990000000000000000000000000000 @@ -214,10 +223,10 @@ c 00333 0000099999 999.990000000000000000000000000000 ------------------------------- drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row -select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u +select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u where u136= new.f136; set @test_var=0; -update tb3 set f120='S', f136=111, +update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -245,36 +254,36 @@ set @test_var='three', new.f120='4'; END IF; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 one 2nd else Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 D Test 3.5.8.5-if 00101 two 2nd else D Test 3.5.8.5-if 00102 two 2nd else Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd if D Test 3.5.8.5-if 00101 three 2nd if D Test 3.5.8.5-if 00102 three 2nd if -d Test 3.5.8.5-if 00010 three 2nd if Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); -select f120, f122, f136, @test_var, @test_var2 -from tb3 where f122 = 'Test 3.5.8.5-if'; +select f120, f122, f136, @test_var, @test_var2 +from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; f120 f122 f136 @test_var @test_var2 +d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00101 three 2nd else D Test 3.5.8.5-if 00102 three 2nd else -d Test 3.5.8.5-if 00010 three 2nd else D Test 3.5.8.5-if 00103 three 2nd else create trigger trg3 before update on tb3 for each row BEGIN @@ -289,7 +298,7 @@ create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; -ELSE +ELSE set @test_var2='2nd else', new.f120='D'; END// 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 7 @@ -331,60 +340,60 @@ ELSE set @test_var=CONCAT(new.f120, '*', new.f144); END case; END// set @test_var='Empty'; -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 A*seven -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 B*0000000016 B Test 3.5.8.5-case 00191 0000000016 B*0000000016 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var A Test 3.5.8.5-case 00125 0000000007 C=one B Test 3.5.8.5-case 00191 0000000016 C=one C Test 3.5.8.5-case 00200 0000000001 C=one -Insert into tb3 (f120, f122, f136) +Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 A Test 3.5.8.5-case 00125 0000000007 1*0000099999 B Test 3.5.8.5-case 00191 0000000016 1*0000099999 C Test 3.5.8.5-case 00200 0000000001 1*0000099999 -1 Test 3.5.8.5-case 00152 0000099999 1*0000099999 -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); Warnings: Warning 1265 Data truncated for column 'f120' at row 1 -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight -Insert into tb3 (f120, f122, f136, f144) +Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); -select f120, f122, f136, f144, @test_var -from tb3 where f122 = 'Test 3.5.8.5-case'; +select f120, f122, f136, f144, @test_var +from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; f120 f122 f136 f144 @test_var +1 Test 3.5.8.5-case 00152 0000099999 1=eight +1 Test 3.5.8.5-case 00200 0000000008 1=eight A Test 3.5.8.5-case 00125 0000000007 1=eight B Test 3.5.8.5-case 00191 0000000016 1=eight C Test 3.5.8.5-case 00200 0000000001 1=eight -1 Test 3.5.8.5-case 00152 0000099999 1=eight -1 Test 3.5.8.5-case 00200 0000000008 1=eight create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -398,40 +407,40 @@ delete from tb3 where f121='Test 3.5.8.5-case'; Testcase 3.5.8.5-loop/leave: ---------------------------- Create trigger trg4 after insert on tb3 for each row -BEGIN +BEGIN set @counter=0, @flag='Initial'; -Label1: loop +Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; @counter1 @counter2 15 8 Create trigger trg6_2 after update on tb3 for each row BEGIN -REPEAT -SET @counter2 = @counter2 + 1; +REPEAT +SET @counter2 = @counter2 + 1; END// 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 'END' at line 5 drop trigger trg6; @@ -466,33 +475,62 @@ delete from tb3 where f122='Test 3.5.8.5-repeat'; Testcase 3.5.8.5-while: ----------------------- Create trigger trg7 after insert on tb3 for each row -wl_label: WHILE @counter1 < new.f136 DO -SET @counter1 = @counter1 + 1; +wl_label: WHILE @counter1 < new.f136 DO +SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; -SET @counter2 = @counter2 + 1; +SET @counter2 = @counter2 + 1; END WHILE wl_label// set @counter1= 0, @counter2= 0; -Insert into tb3 (f122, f136) +Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; @counter1 @counter2 7 4 Create trigger trg7_2 after update on tb3 for each row BEGIN -WHILE @counter1 < new.f136 -SET @counter1 = @counter1 + 1; +WHILE @counter1 < new.f136 +SET @counter1 = @counter1 + 1; END// -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 'SET @counter1 = @counter1 + 1; +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 'SET @counter1 = @counter1 + 1; END' at line 4 delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; Testcase 3.5.8.6: (requirement void) ------------------------------------ +CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// +CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW +BEGIN +CALL sp_01 (); +END// +Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); +update tb3 set f120='S', f136=111, +f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; +select f120, f122 +from tb3 where f122 like 'Test 3.5.8.6%' order by f120; +f120 f122 +S Test 3.5.8.6-tr8_1 +DROP TRIGGER trg8_1; +DROP PROCEDURE sp_01; -Testcase 3.5.8.7: (Disabled as a result of bug _____) ------------------------------------------------------ +Testcase 3.5.8.7 +---------------- +Create trigger trg9_1 before update on tb3 for each row +BEGIN +Start transaction; +Set new.f120='U'; +Commit; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. +Create trigger trg9_2 before delete on tb3 for each row +BEGIN +Start transaction; +Set @var2=old.f120; +Rollback; +END// +ERROR HY000: Explicit or implicit commit is not allowed in stored function or trigger. drop user test_general@localhost; drop user test_general; drop user test_super@localhost; diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_09.result b/mysql-test/suite/funcs_1/r/myisam_trig_09.result index 7cbcd8a6862..3d89bc6d3c5 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_09.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_09.result @@ -1,74 +1,75 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.9.1/2: ------------------- -Create trigger trg1 BEFORE UPDATE on tb3 for each row +Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; TotalRows 10 @@ -80,15 +81,15 @@ NewValuew 0 set @counter=0; Update tb3 Set f142='1' where f130<100; -select count(*) as ExpectedChanged, @counter as TrigCounter +select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; ExpectedChanged TrigCounter 8 8 -select count(*) as ExpectedNotChange from tb3 +select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; ExpectedNotChange 0 -select count(*) as NonExpectedChanged from tb3 +select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; NonExpectedChanged 0 @@ -116,17 +117,17 @@ set @tr_var_af_118=old.f118, @tr_var_af_121=old.f121, 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 -Insert into tb3 (f122, f136, f163) +Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 a NULL Test 3.5.9.3 00008 123.170000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @@ -135,13 +136,13 @@ a NULL Test 3.5.9.3 7 123.170000000000000000000000000000 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 0 0 0 0 0 delete from tb3 where f122='Test 3.5.9.3'; -select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; +select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; f118 f121 f122 f136 f163 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_163 a NULL Test 3.5.9.3 8 123.170000000000000000000000000000 @@ -172,17 +173,17 @@ set @tr_var_af_118=new.f118, @tr_var_af_121=new.f121, 0 0 0 0 0 0 @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 0 0 0 0 0 0 -Insert into tb3 (f122, f136, f151, f163) +Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4%'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4%' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4 00007 999 995.240000000000000000000000000000 -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4 7 999 995.240000000000000000000000000000 @@ -194,15 +195,15 @@ Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; Warnings: Warning 1048 Column 'f136' cannot be null -select f118, f121, f122, f136, f151, f163 from tb3 -where f122 like 'Test 3.5.9.4-trig'; +select f118, f121, f122, f136, f151, f163 from tb3 +where f122 like 'Test 3.5.9.4-trig' order by f163; f118 f121 f122 f136 f151 f163 a NULL Test 3.5.9.4-trig 00000 999 NULL -select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, +select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; @tr_var_b4_118 @tr_var_b4_121 @tr_var_b4_122 @tr_var_b4_136 @tr_var_b4_151 @tr_var_b4_163 a NULL Test 3.5.9.4-trig 0 999 NULL -select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, +select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; @tr_var_af_118 @tr_var_af_121 @tr_var_af_122 @tr_var_af_136 @tr_var_af_151 @tr_var_af_163 a NULL Test 3.5.9.4-trig 0 999 NULL @@ -240,6 +241,7 @@ ERROR HY000: There is no NEW row in on DELETE trigger create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; ERROR HY000: There is no NEW row in on DELETE trigger +drop trigger trg5a; drop trigger trg5b; Testcase 3.5.9.10: (implied in previous tests) diff --git a/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result b/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result index c991fb67ec1..fe8fdd29446 100644 --- a/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result +++ b/mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result @@ -1,70 +1,71 @@ USE test; drop table if exists tb3 ; create table tb3 ( -f118 char not null DEFAULT 'a', -f119 char binary not null DEFAULT b'101', -f120 char ascii not null DEFAULT b'101', -f121 tinytext, -f122 text, -f123 mediumtext, -f124 longtext unicode, -f125 tinyblob, -f126 blob, -f127 mediumblob, -f128 longblob, -f129 binary not null DEFAULT b'101', -f130 tinyint not null DEFAULT 99, -f131 tinyint unsigned not null DEFAULT 99, -f132 tinyint zerofill not null DEFAULT 99, -f133 tinyint unsigned zerofill not null DEFAULT 99, -f134 smallint not null DEFAULT 999, -f135 smallint unsigned not null DEFAULT 999, -f136 smallint zerofill not null DEFAULT 999, -f137 smallint unsigned zerofill not null DEFAULT 999, -f138 mediumint not null DEFAULT 9999, -f139 mediumint unsigned not null DEFAULT 9999, -f140 mediumint zerofill not null DEFAULT 9999, -f141 mediumint unsigned zerofill not null DEFAULT 9999, -f142 int not null DEFAULT 99999, -f143 int unsigned not null DEFAULT 99999, -f144 int zerofill not null DEFAULT 99999, -f145 int unsigned zerofill not null DEFAULT 99999, -f146 bigint not null DEFAULT 999999, -f147 bigint unsigned not null DEFAULT 999999, -f148 bigint zerofill not null DEFAULT 999999, -f149 bigint unsigned zerofill not null DEFAULT 999999, -f150 decimal not null DEFAULT 999.999, -f151 decimal unsigned not null DEFAULT 999.17, -f152 decimal zerofill not null DEFAULT 999.999, -f153 decimal unsigned zerofill, -f154 decimal (0), -f155 decimal (64), -f156 decimal (0) unsigned, -f157 decimal (64) unsigned, -f158 decimal (0) zerofill, -f159 decimal (64) zerofill, -f160 decimal (0) unsigned zerofill, -f161 decimal (64) unsigned zerofill, -f162 decimal (0,0), -f163 decimal (63,30), -f164 decimal (0,0) unsigned, -f165 decimal (63,30) unsigned, -f166 decimal (0,0) zerofill, -f167 decimal (63,30) zerofill, -f168 decimal (0,0) unsigned zerofill, -f169 decimal (63,30) unsigned zerofill, -f170 numeric, -f171 numeric unsigned, -f172 numeric zerofill, -f173 numeric unsigned zerofill, -f174 numeric (0), -f175 numeric (64) +f118 char not null DEFAULT 'a', +f119 char binary not null DEFAULT b'101', +f120 char ascii not null DEFAULT b'101', +f121 tinytext, +f122 text, +f123 mediumtext, +f124 longtext unicode, +f125 tinyblob, +f126 blob, +f127 mediumblob, +f128 longblob, +f129 binary not null DEFAULT b'101', +f130 tinyint not null DEFAULT 99, +f131 tinyint unsigned not null DEFAULT 99, +f132 tinyint zerofill not null DEFAULT 99, +f133 tinyint unsigned zerofill not null DEFAULT 99, +f134 smallint not null DEFAULT 999, +f135 smallint unsigned not null DEFAULT 999, +f136 smallint zerofill not null DEFAULT 999, +f137 smallint unsigned zerofill not null DEFAULT 999, +f138 mediumint not null DEFAULT 9999, +f139 mediumint unsigned not null DEFAULT 9999, +f140 mediumint zerofill not null DEFAULT 9999, +f141 mediumint unsigned zerofill not null DEFAULT 9999, +f142 int not null DEFAULT 99999, +f143 int unsigned not null DEFAULT 99999, +f144 int zerofill not null DEFAULT 99999, +f145 int unsigned zerofill not null DEFAULT 99999, +f146 bigint not null DEFAULT 999999, +f147 bigint unsigned not null DEFAULT 999999, +f148 bigint zerofill not null DEFAULT 999999, +f149 bigint unsigned zerofill not null DEFAULT 999999, +f150 decimal not null DEFAULT 999.999, +f151 decimal unsigned not null DEFAULT 999.17, +f152 decimal zerofill not null DEFAULT 999.999, +f153 decimal unsigned zerofill, +f154 decimal (0), +f155 decimal (64), +f156 decimal (0) unsigned, +f157 decimal (64) unsigned, +f158 decimal (0) zerofill, +f159 decimal (64) zerofill, +f160 decimal (0) unsigned zerofill, +f161 decimal (64) unsigned zerofill, +f162 decimal (0,0), +f163 decimal (63,30), +f164 decimal (0,0) unsigned, +f165 decimal (63,30) unsigned, +f166 decimal (0,0) zerofill, +f167 decimal (63,30) zerofill, +f168 decimal (0,0) unsigned zerofill, +f169 decimal (63,30) unsigned zerofill, +f170 numeric, +f171 numeric unsigned, +f172 numeric zerofill, +f173 numeric unsigned zerofill, +f174 numeric (0), +f175 numeric (64) ) Engine = myisam; Warnings: Note 1265 Data truncated for column 'f150' at row 1 Note 1265 Data truncated for column 'f151' at row 1 Note 1265 Data truncated for column 'f152' at row 1 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb3.txt' into table tb3 ; +load data infile '/std_data_ln/funcs_1/myisam_tb3.txt' +into table tb3; Testcase 3.5.10.1/2/3: ---------------------- @@ -86,7 +87,7 @@ Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 1); Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 -from tb3 where f122 like 'Test 3.5.10.1/2/3%'; +from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 NULL Test 3.5.10.1/2/3 1 111.110000000000000000000000000000 NULL Test 3.5.10.1/2/3 2 111.110000000000000000000000000000 @@ -100,7 +101,7 @@ f121 f122 f151 f163 NULL Not in View 3 111.110000000000000000000000000000 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 1 1.000000000000000000000000000000 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 @@ -114,7 +115,7 @@ before delete 0 delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 -where f122 like 'Test 3.5.10.1/2/3%'; +where f122 like 'Test 3.5.10.1/2/3%' order by f151; f121 f122 f151 f163 Y Test 3.5.10.1/2/3-Update 2 1.000000000000000000000000000000 select f121, f122, f151, f163 from vw11; @@ -141,11 +142,11 @@ set @counter= 0; select @counter as 'Rows Loaded Before'; Rows Loaded Before 0 -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; +load data infile '/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; Rows Loaded After 10 -Select * from tb_load limit 10; +Select * from tb_load order by f1 limit 10; f1 f2 f3 -5000 a` 1000 -4999 aaa 999 @@ -240,7 +241,7 @@ insert into t3 (f1) values (new.f1+1000); create trigger tr2_4 after insert on t2_4 for each row insert into t3 (f1) values (new.f1+10000); insert into t1 values (1); -select * from t3; +select * from t3 order by f1; f1 12 102 @@ -275,17 +276,17 @@ create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); insert into t1 values (1); ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. -select * from t1; +select * from t1 order by f1; f1 0 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 -select * from t4; +select * from t4 order by f4; f4 4 drop trigger tr1; @@ -297,8 +298,8 @@ drop table t2; drop table t3; drop table t4; -Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889) ----------------------------------------------------------------------- +Testcase y.y.y.4: Recursive trigger/SP references +------------------------------------------------- set @sql_mode='traditional'; create table t1_sp ( count integer, @@ -386,14 +387,14 @@ start transaction; insert into t1 values (1); ERROR 22003: Out of range value adjusted for column 'f4' at row 1 commit; -select * from t1; +select * from t1 order by f1; f1 1 1 -select * from t2; +select * from t2 order by f2; f2 2 -select * from t3; +select * from t3 order by f3; f3 3 drop trigger tr1; diff --git a/mysql-test/suite/funcs_1/r/myisam_views.result b/mysql-test/suite/funcs_1/r/myisam_views.result index a9c4d4c7f43..bde591c13bf 100644 --- a/mysql-test/suite/funcs_1/r/myisam_views.result +++ b/mysql-test/suite/funcs_1/r/myisam_views.result @@ -1,133 +1,135 @@ USE test; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; DROP DATABASE IF EXISTS test1; CREATE DATABASE test1; USE test1; drop table if exists tb2 ; create table tb2 ( -f59 numeric (0) unsigned, -f60 numeric (64) unsigned, -f61 numeric (0) zerofill, -f62 numeric (64) zerofill, -f63 numeric (0) unsigned zerofill, -f64 numeric (64) unsigned zerofill, -f65 numeric (0,0), -f66 numeric (63,30), -f67 numeric (0,0) unsigned, -f68 numeric (63,30) unsigned, -f69 numeric (0,0) zerofill, -f70 numeric (63,30) zerofill, -f71 numeric (0,0) unsigned zerofill, -f72 numeric (63,30) unsigned zerofill, -f73 real, -f74 real unsigned, -f75 real zerofill, -f76 real unsigned zerofill, -f77 double default 7.7, -f78 double unsigned default 7.7, -f79 double zerofill default 7.7, -f80 double unsigned zerofill default 8.8, -f81 float not null default 8.8, -f82 float unsigned not null default 8.8, -f83 float zerofill not null default 8.8, -f84 float unsigned zerofill not null default 8.8, -f85 float(0) not null default 8.8, -f86 float(23) not null default 8.8, -f87 float(0) unsigned not null default 8.8, -f88 float(23) unsigned not null default 8.8, -f89 float(0) zerofill not null default 8.8, -f90 float(23) zerofill not null default 8.8, -f91 float(0) unsigned zerofill not null default 8.8, -f92 float(23) unsigned zerofill not null default 8.8, -f93 float(24) not null default 8.8, -f94 float(53) not null default 8.8, -f95 float(24) unsigned not null default 8.8, -f96 float(53) unsigned not null default 8.8, -f97 float(24) zerofill not null default 8.8, -f98 float(53) zerofill not null default 8.8, -f99 float(24) unsigned zerofill not null default 8.8, -f100 float(53) unsigned zerofill not null default 8.8, -f101 date not null default '2000-01-01', -f102 time not null default 20, -f103 datetime not null default '2/2/2', -f104 timestamp not null default 20001231235959, -f105 year not null default 2000, -f106 year(3) not null default 2000, -f107 year(4) not null default 2000, -f108 enum("1enum","2enum") not null default "1enum", +f59 numeric (0) unsigned, +f60 numeric (64) unsigned, +f61 numeric (0) zerofill, +f62 numeric (64) zerofill, +f63 numeric (0) unsigned zerofill, +f64 numeric (64) unsigned zerofill, +f65 numeric (0,0), +f66 numeric (63,30), +f67 numeric (0,0) unsigned, +f68 numeric (63,30) unsigned, +f69 numeric (0,0) zerofill, +f70 numeric (63,30) zerofill, +f71 numeric (0,0) unsigned zerofill, +f72 numeric (63,30) unsigned zerofill, +f73 real, +f74 real unsigned, +f75 real zerofill, +f76 real unsigned zerofill, +f77 double default 7.7, +f78 double unsigned default 7.7, +f79 double zerofill default 7.7, +f80 double unsigned zerofill default 8.8, +f81 float not null default 8.8, +f82 float unsigned not null default 8.8, +f83 float zerofill not null default 8.8, +f84 float unsigned zerofill not null default 8.8, +f85 float(0) not null default 8.8, +f86 float(23) not null default 8.8, +f87 float(0) unsigned not null default 8.8, +f88 float(23) unsigned not null default 8.8, +f89 float(0) zerofill not null default 8.8, +f90 float(23) zerofill not null default 8.8, +f91 float(0) unsigned zerofill not null default 8.8, +f92 float(23) unsigned zerofill not null default 8.8, +f93 float(24) not null default 8.8, +f94 float(53) not null default 8.8, +f95 float(24) unsigned not null default 8.8, +f96 float(53) unsigned not null default 8.8, +f97 float(24) zerofill not null default 8.8, +f98 float(53) zerofill not null default 8.8, +f99 float(24) unsigned zerofill not null default 8.8, +f100 float(53) unsigned zerofill not null default 8.8, +f101 date not null default '2000-01-01', +f102 time not null default 20, +f103 datetime not null default '2/2/2', +f104 timestamp not null default 20001231235959, +f105 year not null default 2000, +f106 year(3) not null default 2000, +f107 year(4) not null default 2000, +f108 enum("1enum","2enum") not null default "1enum", f109 set("1set","2set") not null default "1set", -f110 VARBINARY(64) null, -f111 VARBINARY(27) null , -f112 VARBINARY(64) null , -f113 VARBINARY(192) null , -f114 VARBINARY(192) , -f115 VARBINARY(27) null , -f116 VARBINARY(64) null, -f117 VARBINARY(192) null +f110 VARBINARY(64) null, +f111 VARBINARY(27) null , +f112 VARBINARY(64) null , +f113 VARBINARY(192) null , +f114 VARBINARY(192) , +f115 VARBINARY(27) null , +f116 VARBINARY(64) null, +f117 VARBINARY(192) null ) engine = myisam; -load data infile 'MYSQL_TEST_DIR/suite/funcs_1/data/myisam_tb2.txt' into table tb2 ; +load data infile '/std_data_ln/funcs_1/myisam_tb2.txt' +into table tb2; USE test; Attention: The nesting level @max_level in Testcase 3.3.1.A6 diff --git a/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc b/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc index 493c4373d20..bd41f2dcb16 100644 --- a/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc +++ b/mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc @@ -1,5 +1,6 @@ -let $message= --source suite/funcs_1/storedproc/cleanup_sp_tb.inc; ---source include/show_msg80.inc +--echo +--echo --source suite/funcs_1/storedproc/cleanup_sp_tb.inc +--echo -------------------------------------------------------------------------------- # called both to cleanup possibly existing data before and after the SP tests diff --git a/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc b/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc index b7f7b2cae02..5224860925c 100644 --- a/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc +++ b/mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc @@ -1,11 +1,12 @@ -let $message= --source suite/funcs_1/storedproc/load_sp_tb.inc; ---source include/show_msg80.inc +--echo +--echo --source suite/funcs_1/storedproc/load_sp_tb.inc +--echo -------------------------------------------------------------------------------- # ============================================================================== # -# this load script can be called multiple times inside a test script because it +# This load script can be called multiple times inside a test script because it # first cleans up all objects that will be created. -# therefore the same script is used as it will be used at the end of a test. +# Therefore the same script is used as it will be used at the end of a test. # # ============================================================================== @@ -20,46 +21,84 @@ CREATE DATABASE db_storedproc_1; USE db_storedproc; -eval create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t1; +--replace_result $engine_type +eval +create table t1(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t1; -eval create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t2; +--replace_result $engine_type +eval +create table t2(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t2; -eval create table t3(f1 char(20),f2 char(20),f3 integer) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t3.txt' into table t3; +--replace_result $engine_type +eval +create table t3(f1 char(20),f2 char(20),f3 integer) engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t3.txt' into table t3; -eval create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t4; +--replace_result $engine_type +eval +create table t4(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t4; USE db_storedproc_1; -eval create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t6; +--replace_result $engine_type +eval +create table t6(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t6; USE db_storedproc; -eval create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t7; +--replace_result $engine_type +eval +create table t7 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' into table t7; -eval create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t7.txt' into table t8; +--replace_result $engine_type +eval +create table t8 (f1 char(20), f2 char(25), f3 date, f4 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t7.txt' into table t8; -eval create table t9(f1 int, f2 char(25), f3 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table t9; +--replace_result $engine_type +eval +create table t9(f1 int, f2 char(25), f3 int) engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t9.txt' into table t9; -eval create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t10; +--replace_result $engine_type +eval +create table t10(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t10; -eval create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) engine = $engine_type; ---replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR -eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t4.txt' into table t11; +--replace_result $engine_type +eval +create table t11(f1 char(20),f2 char(25),f3 date,f4 int,f5 char(25),f6 int) +engine = $engine_type; +--replace_result $MYSQLTEST_VARDIR +eval +load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t4.txt' into table t11; diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc index a8d52fee0b5..0f62a559985 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_02.inc @@ -5,85 +5,192 @@ # ============================================================================== # (numbering from requirement document TP v1.0, Last updated: 25 Jan 2005 01:00) # -# 3.1.2 Syntax checks for the stored procedure-specific programming statements BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: +# 3.1.2 Syntax checks for the stored procedure-specific programming statements +# BEGIN/END, DECLARE, SET, SELECT/INTO, OPEN, FETCH, CLOSE: # #- 1. Ensure that all subclauses that should be supported are supported. -#- 2. Ensure that all subclauses that should not be supported are disallowed with an appropriate error message. -#- 3. Ensure that all supported subclauses are supported only in the correct order. -#- 4. Ensure that an appropriate error message is returned if a subclause is out-of-order in a stored procedure definition. -#- 5. Ensure that all subclauses that are defined to be mandatory are indeed required to be mandatory by the MySQL server and tools. -#- 6. Ensure that any subclauses that are defined to be optional are indeed treated as optional by the MySQL server and tools. -#- 7. Ensure that every BEGIN statement is coupled with a terminating END statement. -## 8. Ensure that the scope of each BEGIN/END compound statement within a stored procedure definition is properly applied. -#- 9. Ensure that the labels enclosing each BEGIN/END compound statement must match. -#- 10. Ensure that it is possible to put a beginning label at the start of a BEGIN/END compound statement without also requiring an ending label at the end of the same statement. -#- 11. Ensure that it is not possible to put an ending label at the end of a BEGIN/END compound statement without also requiring a matching beginning label at the start of the same statement. +#- 2. Ensure that all subclauses that should not be supported are disallowed +# with an appropriate error message. +#- 3. Ensure that all supported subclauses are supported only in the +# correct order. +#- 4. Ensure that an appropriate error message is returned if a subclause is +# out-of-order in a stored procedure definition. +#- 5. Ensure that all subclauses that are defined to be mandatory are indeed +# required to be mandatory by the MySQL server and tools. +#- 6. Ensure that any subclauses that are defined to be optional are indeed +# treated as optional by the MySQL server and tools. +#- 7. Ensure that every BEGIN statement is coupled with a terminating +# END statement. +## 8. Ensure that the scope of each BEGIN/END compound statement within a +# stored procedure definition is properly applied. +#- 9. Ensure that the labels enclosing each BEGIN/END compound statement +# must match. +#- 10. Ensure that it is possible to put a beginning label at the start of +# a BEGIN/END compound statement without also requiring an ending label +# at the end of the same statement. +#- 11. Ensure that it is not possible to put an ending label at the end of +# a BEGIN/END compound statement without also requiring a matching +# beginning label at the start of the same statement. #- 12. Ensure that every beginning label must end with a colon (:). #- 13. Ensure that every beginning label with the same scope must be unique. -#- 14. Ensure that the variables, cursors, conditions, and handlers declared for a stored procedure (with the DECLARE statement) may only be properly defined. -#- 15. Ensure that the variables, cursors, conditions, and handlers declared for a stored procedure (with the DECLARE statement) may only be defined in the correct order. -#- 16. Ensure that every possible type of variable -- utilizing every data type definition supported by the MySQL server in combination with both no DEFAULT subclause and with DEFAULT subclauses that set the variables default value to a range of appropriate values -- may be declared for a stored procedure. -#- 17. Ensure that the DECLARE statement can declare multiple variables both separately and all at once from a variable list. -#- 18. Ensure that invalid variable declarations are rejected, with an appropriate error message. -#- 19. Ensure that every possible type of cursor may be declared for a stored procedure. -#- 20. Ensure that invalid cursor declarations are rejected, with an appropriate error message. -#- 21. Ensure that every possible type of condition may be declared for a stored procedure. -# -22. Ensure that invalid condition declarations are rejected, with an appropriate error message. -#- 23. Ensure that every possible type of handler may be declared for a stored procedure. -#- 24. Ensure that invalid handler declarations are rejected, with an appropriate error message. -#- 25. Ensure that the scope of every variable, cursor, condition, and handler declared for a stored procedure (with the DECLARE statement) is properly applied. -## 26. Ensure that the initial value of every variable declared for a stored procedure is either NULL or its DEFAULT value, as appropriate. -#- 27. Ensure that the SET statement can assign a value to every local variable declared within a stored procedures definition, as well as to every appropriate global server variable. -#- 28. Ensure that the SET statement can assign values to variables either separately or to multiple variables in a list. -#- 29. Ensure that the SET statement may assign only those values to a variable that are appropriate for that variables data type definition. -## 30. Ensure that, when a stored procedure is called/executed, every variable always uses the correct value: either the value with which it is initialized or the value to which it is subsequently SET or otherwise assigned, as appropriate. -## 31. Ensure that the SELECT ... INTO statement properly assigns values to the variables in its variable list. -## 32. Ensure that a SELECT ... INTO statement that retrieves multiple rows is rejected, with an appropriate error message. -## 33. Ensure that a SELECT ... INTO statement that retrieves too many columns for the number of variables in its variable list is rejected, with an appropriate error message. -## 34. Ensure that a SELECT ... INTO statement that retrieves too few columns for the number of variables in its variable list is rejected, with an appropriate error message. -#- 35. Ensure that a SELECT ... INTO statement that retrieves column values with inappropriate data types for the matching variables in its variable list is rejected, with an appropriate error message. -#- 36. Ensure that the DECLARE ... CONDITION FOR statement can declare a properly-named condition for every possible SQLSTATE and MySQL-specific error code. -#- 37. Ensure that no two conditions declared with the same scope may have the same condition name. +#- 14. Ensure that the variables, cursors, conditions, and handlers declared +# for a stored procedure (with the DECLARE statement) may only be +# properly defined. +#- 15. Ensure that the variables, cursors, conditions, and handlers declared for +# a stored procedure (with the DECLARE statement) may only be defined in +# the correct order. +#- 16. Ensure that every possible type of variable -- utilizing every data type +# definition supported by the MySQL server in combination with both no +# DEFAULT subclause and with DEFAULT subclauses that set the variable’s +# default value to a range of appropriate values -- may be declared for +# a stored procedure. +#- 17. Ensure that the DECLARE statement can declare multiple variables both +# separately and all at once from a variable list. +#- 18. Ensure that invalid variable declarations are rejected, with an +# appropriate error message. +#- 19. Ensure that every possible type of cursor may be declared for a +# stored procedure. +#- 20. Ensure that invalid cursor declarations are rejected, with an appropriate +# error message. +#- 21. Ensure that every possible type of condition may be declared for +# a stored procedure. +# -22. Ensure that invalid condition declarations are rejected, with an +# appropriate error message. +#- 23. Ensure that every possible type of handler may be declared for a +# stored procedure. +#- 24. Ensure that invalid handler declarations are rejected, with an +# appropriate error message. +#- 25. Ensure that the scope of every variable, cursor, condition, and handler +# declared for a stored procedure (with the DECLARE statement) is +# properly applied. +## 26. Ensure that the initial value of every variable declared for a stored +# procedure is either NULL or its DEFAULT value, as appropriate. +#- 27. Ensure that the SET statement can assign a value to every local variable +# declared within a stored procedure’s definition, as well as to every +# appropriate global server variable. +#- 28. Ensure that the SET statement can assign values to variables either +# separately or to multiple variables in a list. +#- 29. Ensure that the SET statement may assign only those values to a variable +# that are appropriate for that variable’s data type definition. +## 30. Ensure that, when a stored procedure is called/executed, every variable +# always uses the correct value: either the value with which it is +# initialized or the value to which it is subsequently SET or otherwise +# assigned, as appropriate. +## 31. Ensure that the SELECT ... INTO statement properly assigns values to the +# variables in its variable list. +## 32. Ensure that a SELECT ... INTO statement that retrieves multiple rows is +# rejected, with an appropriate error message. +## 33. Ensure that a SELECT ... INTO statement that retrieves too many columns +# for the number of variables in its variable list is rejected, with an +# appropriate error message. +## 34. Ensure that a SELECT ... INTO statement that retrieves too few columns +# for the number of variables in its variable list is rejected, with an +# appropriate error message. +#- 35. Ensure that a SELECT ... INTO statement that retrieves column values +# with inappropriate data types for the matching variables in its variable +# list is rejected, with an appropriate error message. +#- 36. Ensure that the DECLARE ... CONDITION FOR statement can declare a +# properly-named condition for every possible SQLSTATE and MySQL-specific +# error code. +#- 37. Ensure that no two conditions declared with the same scope may have the +# same condition name. ## 38. Ensure that the scope of every condition declared is properly applied. -#- 39. Ensure that every SQLSTATE value declared with a DECLARE ... CONDITION FOR statement is a character string that is 5 characters long. -#- 40. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a condition for an invalid SQLSTATE. -#- 41. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a condition for the successful completion SQLSTATE: 00000. -#- 42. Ensure that the DECLARE ... HANDLER FOR statement can declare a CONTINUE, EXIT, and UNDO handler for every condition declared (with a DECLARE ... CONDITION FOR statement), within the scope of the handler, for a stored procedure, as well as for every possible SQLSTATE and MySQL-specific error code, as well as for the predefined conditions SQLWARNING, NOT FOUND, and SQLEXCEPTION. -## 43. Ensure that the DECLARE ... HANDLER FOR statement can not declare any handler for a condition declared outside of the scope of the handler. -## 44. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a handler for any invalid, or undeclared, condition. +#- 39. Ensure that every SQLSTATE value declared with a DECLARE ... CONDITION +# FOR statement is a character string that is 5 characters long. +#- 40. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a +# condition for an invalid SQLSTATE. +#- 41. Ensure that the DECLARE ... CONDITION FOR statement cannot declare a +# condition for the “successful completion SQLSTATE: “00000“. +#- 42. Ensure that the DECLARE ... HANDLER FOR statement can declare a CONTINUE, +# EXIT, and UNDO handler for every condition declared (with a DECLARE ... +# CONDITION FOR statement), within the scope of the handler, for a stored +# procedure, as well as for every possible SQLSTATE and MySQL-specific +# error code, as well as for the predefined conditions SQLWARNING, +# NOT FOUND, and SQLEXCEPTION. +## 43. Ensure that the DECLARE ... HANDLER FOR statement can not declare any +# handler for a condition declared outside of the scope of the handler. +## 44. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a +# handler for any invalid, or undeclared, condition. ## 45. Ensure that the scope of every handler declared is properly applied. -#- 46. Ensure that, within the same scope, no two handlers may be declared for the same condition. -#- 47. Ensure that every SQLSTATE value declared with a DECLARE ... HANDLER FOR statement is a character string that is 5 characters long. -#- 48. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a condition for an invalid SQLSTATE. -#- 49. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a condition for the successful completion SQLSTATE: 00000. -## 50. Ensure that a CONTINUE handler allows the execution of the stored procedure to continue once the handler statement has completed its own execution (that is, once the handler action statement has been executed). -## 51. Ensure that an EXIT handler causes the execution of the stored procedure to terminate, within its scope, once the handler action statement has been executed. -## 52. Ensure that an EXIT handler does not cause the execution of the stored procedure to terminate outside of its scope. -#- 53. Ensure that a handler condition of SQLWARNING takes the same action as a handler condition defined with an SQLSTATE that begins with 01. -## 54. Ensure that a handler with a condition defined with an SQLSTATE that begins with 01 is always exactly equivalent in action to a handler with an SQLWARNING condition. -#- 55. Ensure that a handler condition of NOT FOUND takes the same action as a handler condition defined with an SQLSTATE that begins with 02. -## 56. Ensure that a handler with a condition defined with an SQLSTATE that begins with 02 is always exactly equivalent in action to a handler with a NOT FOUND condition. -#- 57. Ensure that a handler condition of SQLEXCEPTION takes the same action as a handler condition defined with an SQLSTATE that begins with anything other that 01 or 02. -## 58. Ensure that a handler with a condition defined with an SQLSTATE that begins with anything other that 01 or 02 is always exactly equivalent in action to a handler with an SQLEXCEPTION condition. +#- 46. Ensure that, within the same scope, no two handlers may be declared for +# the same condition. +#- 47. Ensure that every SQLSTATE value declared with a DECLARE ... HANDLER FOR +# statement is a character string that is 5 characters long. +#- 48. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a +# condition for an invalid SQLSTATE. +#- 49. Ensure that the DECLARE ... HANDLER FOR statement cannot declare a +# condition for the “successful completion SQLSTATE: “00000“. +## 50. Ensure that a CONTINUE handler allows the execution of the stored +# procedure to continue once the handler statement has completed its +# own execution (that is, once the handler action statement has been +# executed). +## 51. Ensure that an EXIT handler causes the execution of the stored procedure +# to terminate, within its scope, once the handler action statement has +# been executed. +## 52. Ensure that an EXIT handler does not cause the execution of the stored +# procedure to terminate outside of its scope. +#- 53. Ensure that a handler condition of SQLWARNING takes the same action as +# a handler condition defined with an SQLSTATE that begins with “01“. +## 54. Ensure that a handler with a condition defined with an SQLSTATE that +# begins with “01“ is always exactly equivalent in action to a +# handler with an SQLWARNING condition. +#- 55. Ensure that a handler condition of NOT FOUND takes the same action as a +# handler condition defined with an SQLSTATE that begins with “02“. +## 56. Ensure that a handler with a condition defined with an SQLSTATE that +# begins with “02“ is always exactly equivalent in action to a +# handler with a NOT FOUND condition. +#- 57. Ensure that a handler condition of SQLEXCEPTION takes the same action +# as a handler condition defined with an SQLSTATE that begins with +# anything other that “01“ or “02“. +## 58. Ensure that a handler with a condition defined with an SQLSTATE that +# begins with anything other that “01“ or “02“ is always +# exactly equivalent in action to a handler with an SQLEXCEPTION condition. #- 59. Ensure that no two cursors in a stored procedure can have the same name. -#- 60. Ensure that a cursor declaration may not include a SELECT ... INTO statement. -#- 61. Ensure that a cursor declaration that includes an ORDER BY clause may not be an updatable cursor. -#- 62. Ensure that OPEN fails unless a cursor with the same name has already been declared. -#- 63. Ensure that OPEN fails if the same cursor is currently already open. -#- 64. Ensure that FETCH fails unless a cursor with the same name is already open. -## 65. Ensure that FETCH returns the first row of the cursors result set the first time FETCH is executed, that it returns each subsequent row of the cursors result set each of the subsequent times FETCH is executed, and that it returns a NOT FOUND warning if it is executed after the last row of the cursors result set has already been fetched. -#- 66. Ensure that FETCH fails with an appropriate error message if it is executed before the cursor has been opened. -#- 67. Ensure that FETCH fails with an appropriate error message if it is executed after the cursor has been closed. -## 68. Ensure that FETCH fails with an appropriate error message if the number of columns to be fetched does not match the number of variables specified by the FETCH statement. -#- 69. Ensure that FETCH fails with an appropriate error message if the data type of the column values being fetched are not appropriate for the matching FETCH variables to which the data is being assigned. -#- 70. Ensure that CLOSE fails unless a cursor with the same name is already open. -#- 71. Ensure that all cursors are closed when a transaction terminates with a COMMIT statement. -#- 72. Ensure that all cursors are closed when a transaction terminates with a ROLLBACK statement. -#- 73. Ensure that the result set of a cursor that has been closed is not longer available to the FETCH statement. -#- 74. Ensure that every cursor declared within a compound statement is closed when that compound statement ends. -## 75. Ensure that, for nested compound statements, a cursor that was declared and opened during an outer level of the statement is not closed when an inner level of a compound statement ends. -## 76. Ensure that all cursors operate asensitively, so that there is no concurrency conflict between cursors operating on the same, or similar, sets of results during execution of one or more stored procedures. -# 77. Ensure that multiple cursors, nested within multiple compound statements within a stored procedure, always act correctly and return the expected result. +#- 60. Ensure that a cursor declaration may not include a SELECT ... INTO +# statement. +#- 61. Ensure that a cursor declaration that includes an ORDER BY clause may +# not be an updatable cursor. +#- 62. Ensure that OPEN fails unless a cursor with the same name +# has already been declared. +#- 63. Ensure that OPEN fails if the same cursor is currently +# already open. +#- 64. Ensure that FETCH fails unless a cursor with the same name +# is already open. +## 65. Ensure that FETCH returns the first row of the cursor’s +# result set the first time FETCH is executed, that it returns each +# subsequent row of the cursor’s result set each of the subsequent +# times FETCH is executed, and that it returns a NOT FOUND warning if it +# is executed after the last row of the cursor’s result set has already +# been fetched. +#- 66. Ensure that FETCH fails with an appropriate error message +# if it is executed before the cursor has been opened. +#- 67. Ensure that FETCH fails with an appropriate error message +# if it is executed after the cursor has been closed. +## 68. Ensure that FETCH fails with an appropriate error message +# if the number of columns to be fetched does not match the number of +# variables specified by the FETCH statement. +#- 69. Ensure that FETCH fails with an appropriate error message +# if the data type of the column values being fetched are not appropriate +# for the matching FETCH variables to which the data is being assigned. +#- 70. Ensure that CLOSE fails unless a cursor with the same name +# is already open. +#- 71. Ensure that all cursors are closed when a transaction terminates with +# a COMMIT statement. +#- 72. Ensure that all cursors are closed when a transaction terminates with +# a ROLLBACK statement. +#- 73. Ensure that the result set of a cursor that has been closed is not +# longer available to the FETCH statement. +#- 74. Ensure that every cursor declared within a compound statement is closed +# when that compound statement ends. +## 75. Ensure that, for nested compound statements, a cursor that was declared +# and opened during an outer level of the statement is not closed when an +# inner level of a compound statement ends. +## 76. Ensure that all cursors operate asensitively, so that there is no +# concurrency conflict between cursors operating on the same, or similar, +# sets of results during execution of one or more stored procedures. +# 77. Ensure that multiple cursors, nested within multiple compound statements +# within a stored procedure, always act correctly and return the +# expected result. # # ============================================================================== let $message= Section 3.1.2 - Syntax checks for the stored procedure-specific @@ -209,7 +316,7 @@ BEGIN set @x = x; set @y = y; set @z = 234; - SELECT f1, f2 into @x, @y from t2 limit 1; + SELECT f1, f2 into @x, @y from t2 where f1='a`' and f2='a`' limit 1; SELECT @x, @y, @z, invar; BEGIN set @x = 2; @@ -257,7 +364,7 @@ BEGIN declare x integer; declare y integer; set @x=x; set @y=y; - SELECT f4, f3 into @x, @y from t2 limit 1; + SELECT f4, f3 into @x, @y from t2 where f4=-5000 and f3='1000-01-01' limit 1; SELECT @x, @y; END// delimiter ;// @@ -290,8 +397,9 @@ BEGIN END// delimiter ;// -#Error: 1172 SQLSTATE: 42000 (ER_TOO_MANY_ROWS) Message: Result consisted of more than one row ---error 1172 +# Error: SQLSTATE: 42000 (ER_TOO_MANY_ROWS) +# Message: Result consisted of more than one row +--error ER_TOO_MANY_ROWS CALL sp1(); # cleanup 3.1.2.32 @@ -321,7 +429,7 @@ BEGIN END// delimiter ;// ---error 1222 +--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT CALL sp1(); # cleanup 3.1.2.33 @@ -352,7 +460,7 @@ BEGIN END// delimiter ;// ---error 1222 +--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT CALL sp1(); # cleanup 3.1.2.34 @@ -375,8 +483,10 @@ create table res_t1(w char unique, x char); insert into res_t1 values('a', 'b'); -# Error: 1339 SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) Message: Case not found for CASE statement -# Error: 1022 SQLSTATE: 23000 (ER_DUP_KEY) Message: Can't write; duplicate key in table '%s' +# Error: SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) +# Message: Case not found for CASE statement +# Error: SQLSTATE: 23000 (ER_DUP_KEY) +# Message: Can't write; duplicate key in table '%s' delimiter //; CREATE PROCEDURE h1 () @@ -472,7 +582,7 @@ create table res_t1(w char unique, x char); insert into res_t1 values ('a', 'b'); delimiter //; ---error 1319 +--error ER_SP_COND_MISMATCH CREATE PROCEDURE h1 () BEGIN declare x1, x2, x3, x4, x5, x6 int default 0; @@ -561,8 +671,9 @@ DROP PROCEDURE IF EXISTS h1; --enable_warnings delimiter //; -#Error: 1319 SQLSTATE: 42000 (ER_SP_COND_MISMATCH) Message: Undefined CONDITION: %s ---error 1319 +# Error: SQLSTATE: 42000 (ER_SP_COND_MISMATCH) +# Message: Undefined CONDITION: %s +--error ER_SP_COND_MISMATCH CREATE PROCEDURE h1 () BEGIN declare x1, x2, x3, x4, x5, x6 int default 0; @@ -582,8 +693,9 @@ BEGIN END; END// -#Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR) Message: %s near '%s' at line %d ---error 1064 +# Error: SQLSTATE: 42000 (ER_PARSE_ERROR) +# Message: %s near '%s' at line %d +--error ER_PARSE_ERROR CREATE PROCEDURE h1 () BEGIN DECLARE x1 INT DEFAULT 0; @@ -593,8 +705,9 @@ BEGIN DECLARE CONTINUE HANDLER FOR condname1 SET x1 = 1; END// -#Error: 1407 SQLSTATE: 42000 (ER_SP_BAD_SQLSTATE) Message: Bad SQLSTATE: '%s' ---error 1407 +# Error: SQLSTATE: 42000 (ER_SP_BAD_SQLSTATE) +# Message: Bad SQLSTATE: '%s' +--error ER_SP_BAD_SQLSTATE CREATE PROCEDURE h1 () BEGIN DECLARE x1 INT DEFAULT 0; @@ -632,7 +745,7 @@ drop table IF EXISTS res_t1; --echo ==> 'UNDO' is still not supported. delimiter //; ---error 1064 +--error ER_PARSE_ERROR create procedure p1undo () begin declare undo handler for sqlexception select '1'; @@ -723,7 +836,7 @@ DROP TABLE res_t1; let $message= Testcase 3.1.2.50:; --source include/show_msg.inc -# testcase: ensure that a continue handler allows the execution of the stored procedure +# Testcase: Ensure that a continue handler allows the execution of the stored procedure # to continue once the handler statement has completed its own execution # (that is, once the handler action statement has been executed). @@ -794,8 +907,9 @@ BEGIN END// delimiter ;// -# Error: 1318 SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) Message: Incorrect number of arguments for %s %s; expected %u, got %u ---error 1318 +# Error: SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) +# Message: Incorrect number of arguments for %s %s; expected %u, got %u +--error ER_SP_WRONG_NO_OF_ARGS CALL sp1(1); CALL sp2(); SELECT '-3-', @x2, @x; @@ -858,7 +972,7 @@ let $message= Testcase 3.1.2.54:; --source include/show_msg.inc let $message= Ensure that a handler with a condition defined with an SQLSTATE that begins with -01 is always exactly equivalent in action to a handler with an SQLWARNING +“01“ is always exactly equivalent in action to a handler with an SQLWARNING condition.; --source include/show_msg80.inc @@ -959,7 +1073,7 @@ let $message= Testcase 3.1.2.56:; --source include/show_msg.inc let $message= Ensure that a handler with a condition defined with an SQLSTATE that begins with -02 is always exactly equivalent in action to a handler with a NOT FOUND +“02“ is always exactly equivalent in action to a handler with a NOT FOUND condition.; --source include/show_msg80.inc @@ -1052,7 +1166,7 @@ BEGIN END// delimiter ;// ---error 1329 +--error ER_SP_FETCH_NO_DATA CALL sp0(); SELECT @done, @x; @@ -1081,13 +1195,16 @@ let $message= Testcase 3.1.2.58:; --source include/show_msg.inc let $message= Ensure that a handler with a condition defined with an SQLSTATE that begins with -anything other that 01 or 02 is always exactly equivalent in action to a +anything other that “01“ or “02“ is always exactly equivalent in action to a handler with an SQLEXCEPTION condition.; --source include/show_msg80.inc -# Error: 1339 SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) Message: Case not found for CASE statement -# Error: 1222 SQLSTATE: 21000 (ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT) Message: The used SELECT statements have a different number of columns -# Error: 1326 SQLSTATE: 24000 (ER_SP_CURSOR_NOT_OPEN) Message: Cursor is not open +# Error: SQLSTATE: 20000 (ER_SP_CASE_NOT_FOUND) +# Message: Case not found for CASE statement +# Error: SQLSTATE: 21000 (ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT) +# Message: The used SELECT statements have a different number of columns +# Error: SQLSTATE: 24000 (ER_SP_CURSOR_NOT_OPEN) +# Message: Cursor is not open --disable_warnings DROP PROCEDURE IF EXISTS sp0; @@ -1271,7 +1388,8 @@ BEGIN declare f5_value char(20); declare f4_value integer; declare f6_value integer; - declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 limit 3; + declare cur1 cursor for SELECT f1, f2, f4, f5, f6 from t2 + where f4 >=-5000 order by f4 limit 3; open cur1; while proceed do SELECT count AS 'loop'; @@ -1282,7 +1400,7 @@ BEGIN END// delimiter ;// ---error 1329 +--error ER_SP_FETCH_NO_DATA CALL sp1(); SELECT * FROM temp; @@ -1338,11 +1456,11 @@ END// delimiter ;// --echo --> not enough columns in FETCH statement ---error 1328 +--error ER_SP_WRONG_NO_OF_FETCH_ARGS CALL sp1(); --echo --> too many columns in FETCH statement ---error 1328 +--error ER_SP_WRONG_NO_OF_FETCH_ARGS CALL sp2(); # cleanup 3.1.2.68 @@ -1366,9 +1484,10 @@ DROP PROCEDURE IF EXISTS sp1; create table temp1( f0 char(20), f1 char(20), f2 char(20), f3 int, f4 char(20) ); -#Error: 1329 SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA) Message: No data to FETCH +# Error: SQLSTATE: 02000 (ER_SP_FETCH_NO_DATA) +# Message: No data to FETCH -SELECT f1, f2, f4, f5 from t2; +SELECT f1, f2, f4, f5 from t2 order by f4; delimiter //; CREATE PROCEDURE sp1( ) @@ -1379,8 +1498,8 @@ BEGIN declare newf2 char(20); declare newf5 char(20); declare newf4 integer; - declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; - declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 limit 5; + declare cur1 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; + declare cur2 cursor for SELECT f1, f2, f4, f5 from t2 where f4 >= -5000 order by f4 limit 5; open cur1; open cur2; BEGIN @@ -1453,8 +1572,10 @@ BEGIN declare i_newf12 char(20); declare i_newf13 date; declare i_newf14 integer; - declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 limit 4; - declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 limit 3; + declare cur1 cursor for SELECT f1, f2, f3, f4 from t2 + where f4>=-5000 order by f4 limit 4; + declare cur2 cursor for SELECT f1, f2, f3, f4 from t2 + where f4>=-5000 order by f4 limit 3; declare continue handler for sqlstate '02000' set proceed=0; open cur1; open cur2; @@ -1486,8 +1607,10 @@ BEGIN DECLARE o_newf12 CHAR(20); DECLARE o_newf13 DATE; DECLARE o_newf14 INTEGER; - DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; - DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 LIMIT 5; + DECLARE cur1 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 + WHERE f4>=-5000 ORDER BY f4 LIMIT 5; + DECLARE cur2 CURSOR FOR SELECT f1, f2, f3, f4 FROM t2 + WHERE f4>=-5000 ORDER BY f4 LIMIT 5; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET proceed=0; OPEN cur1; OPEN cur2; @@ -1526,6 +1649,7 @@ DROP TABLE temp2; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc index 9ffa7d7f66c..01810390a92 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_03.inc @@ -5,38 +5,67 @@ # ============================================================================== # (numbering from requirement document TP v1.0, Last updated: 25 Jan 2005 01:00) # -# 3.1.3 Syntax checks for the stored procedure-specific flow control statements IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: +# 3.1.3 Syntax checks for the stored procedure-specific flow control statements +# IF, CASE, LOOP, LEAVE, ITERATE, REPEAT, WHILE: # #- 1. Ensure that all subclauses that should be supported are supported. -#- 2. Ensure that all subclauses that should not be supported are disallowed with an appropriate error message. -#- 3. Ensure that all supported subclauses are supported only in the correct order. -#- 4. Ensure that an appropriate error message is returned if a subclause is out-of-order in a stored procedure definition. -#- 5. Ensure that all subclauses that are defined to be mandatory are indeed required to be mandatory by the MySQL server and tools. -#- 6. Ensure that any subclauses that are defined to be optional are indeed treated as optional by the MySQL server and tools. -## 7. Ensure that the IF statement acts correctly for all variants, including cases where statements are nested. -## 8. Ensure that the CASE statement acts correctly for all variants, including cases where statements are nested. -## 9. Ensure that the LOOP statement acts correctly for all variants, including cases where statements are nested. +#- 2. Ensure that all subclauses that should not be supported are disallowed +# with an appropriate error message. +#- 3. Ensure that all supported subclauses are supported only in the +# correct order. +#- 4. Ensure that an appropriate error message is returned if a subclause is +# out-of-order in a stored procedure definition. +#- 5. Ensure that all subclauses that are defined to be mandatory are indeed +# required to be mandatory by the MySQL server and tools. +#- 6. Ensure that any subclauses that are defined to be optional are indeed +# treated as optional by the MySQL server and tools. +## 7. Ensure that the IF statement acts correctly for all variants, including +# cases where statements are nested. +## 8. Ensure that the CASE statement acts correctly for all variants, +# including cases where statements are nested. +## 9. Ensure that the LOOP statement acts correctly for all variants, +# including cases where statements are nested. #- 10. Ensure that the labels enclosing each LOOP statement must match. -#- 11. Ensure that it is possible to put a beginning label at the start of a LOOP statement without also requiring an ending label at the end of the same statement. -#- 12. Ensure that it is not possible to put an ending label at the end of a LOOP statement without also requiring a matching beginning label at the start of the same statement. +#- 11. Ensure that it is possible to put a beginning label at the start of +# a LOOP statement without also requiring an ending label at the end of +# the same statement. +#- 12. Ensure that it is not possible to put an ending label at the end of +# a LOOP statement without also requiring a matching beginning label +# at the start of the same statement. #- 13. Ensure that every beginning label must end with a colon (:). #- 14. Ensure that every beginning label with the same scope must be unique. -## 15. Ensure that the LEAVE statement acts correctly for all variants, including cases where statements are nested. -## 16. Ensure that the ITERATE statement acts correctly for all variants, including cases where statements are nested. -#- 17. Ensure that the ITERATE statement fails, with an appropriate error message, if it appears in any context other than within LOOP, REPEAT, or WHILE statements. -## 18. Ensure that the REPEAT statement acts correctly for all variants, including cases where statements are nested. +## 15. Ensure that the LEAVE statement acts correctly for all variants, +# including cases where statements are nested. +## 16. Ensure that the ITERATE statement acts correctly for all variants, +# including cases where statements are nested. +#- 17. Ensure that the ITERATE statement fails, with an appropriate error +# message, if it appears in any context other than within LOOP, REPEAT, +# or WHILE statements. +## 18. Ensure that the REPEAT statement acts correctly for all variants, +# including cases where statements are nested. #- 19. Ensure that the labels enclosing each REPEAT statement must match. -#- 20. Ensure that it is possible to put a beginning label at the start of a REPEAT statement without also requiring an ending label at the end of the same statement. -#- 21. Ensure that it is not possible to put an ending label at the end of a REPEAT statement without also requiring a matching beginning label at the start of the same statement. +#- 20. Ensure that it is possible to put a beginning label at the start of +# a REPEAT statement without also requiring an ending label at the end +# of the same statement. +#- 21. Ensure that it is not possible to put an ending label at the end of +# a REPEAT statement without also requiring a matching beginning label +# at the start of the same statement. #- 22. Ensure that every beginning label must end with a colon (:). #- 23. Ensure that every beginning label with the same scope must be unique. -## 24. Ensure that the WHILE statement acts correctly for all variants, including cases where statements are nested. +## 24. Ensure that the WHILE statement acts correctly for all variants, +# including cases where statements are nested. #- 25. Ensure that the labels enclosing each WHILE statement must match. -#- 26. Ensure that it is possible to put a beginning label at the start of a WHILE statement without also requiring an ending label at the end of the same statement. -#- 27. Ensure that it is not possible to put an ending label at the end of a WHILE statement without also requiring a matching beginning label at the start of the same statement. +#- 26. Ensure that it is possible to put a beginning label at the start of +# a WHILE statement without also requiring an ending label at the end +# of the same statement. +#- 27. Ensure that it is not possible to put an ending label at the end of +# a WHILE statement without also requiring a matching beginning label +# at the start of the same statement. #- 28. Ensure that every beginning label must end with a colon (:). #- 29. Ensure that every beginning label with the same scope must be unique. -## 30. Ensure that multiple cases of all possible combinations of the control flow statements, nested within multiple compound statements within a stored procedure, always act correctly and return the expected result. +## 30. Ensure that multiple cases of all possible combinations of the control +# flow statements, nested within multiple compound statements within +# a stored procedure, always act correctly and return the expected result. # # ============================================================================== let $message= Section 3.1.3 - Syntax checks for the stored procedure-specific flow @@ -237,8 +266,9 @@ DROP PROCEDURE IF EXISTS sp31316; delimiter //; # wrong label at iterate -#Error: 1308 SQLSTATE: 42000 (ER_SP_LILABEL_MISMATCH) Message: %s with no matching label: %s ---error 1308 +# Error: SQLSTATE: 42000 (ER_SP_LILABEL_MISMATCH) +# Message: %s with no matching label: %s +--error ER_SP_LILABEL_MISMATCH CREATE PROCEDURE sp31316( ) BEGIN declare count1 integer default 1; @@ -436,8 +466,9 @@ BEGIN END// delimiter ;// -#Error: 1318 SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) Message: Incorrect number of arguments for %s %s; expected %u, got %u ---error 1318 +# Error: SQLSTATE: 42000 (ER_SP_WRONG_NO_OF_ARGS) +# Message: Incorrect number of arguments for %s %s; expected %u, got %u +--error ER_SP_WRONG_NO_OF_ARGS CALL sp31330(); CALL sp31330(1); @@ -459,6 +490,7 @@ drop table res_tbl; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc index e2b9e846b97..1a4dd9ff327 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_06.inc @@ -7,20 +7,29 @@ # # 3.1.6 Privilege checks: # -# 1. Ensure that no user may create a stored procedure without the GRANT CREATE ROUTINE privilege. +# 1. Ensure that no user may create a stored procedure without the +# GRANT CREATE ROUTINE privilege. # 2. Ensure that root always has the GRANT CREATE ROUTINE privilege. -# 3. Ensure that a user with the GRANT CREATE ROUTINE privilege can always create both a procedure and a function, on any appropriate database. -# 4. Ensure that the default security provision of a stored procedure is SQL SECURITY DEFINER. -# 5. Ensure that a stored procedure defined with SQL SECURITY DEFINER can be called/executed by any user, using only the privileges (including database access privileges) associated with the user who created the stored procedure. -# 6. Ensure that a stored procedure defined with SQL SECURITY INVOKER can be called/executed by any user, using only the privileges (including database access privileges) associated with the user executing the stored procedure. +# 3. Ensure that a user with the GRANT CREATE ROUTINE privilege can always +# create both a procedure and a function, on any appropriate database. +# 4. Ensure that the default security provision of a stored procedure is +# SQL SECURITY DEFINER. +# 5. Ensure that a stored procedure defined with SQL SECURITY DEFINER can be +# called/executed by any user, using only the privileges (including +# database access privileges) associated with the user who created +# the stored procedure. +# 6. Ensure that a stored procedure defined with SQL SECURITY INVOKER can be +# called/executed by any user, using only the privileges (including +# database access privileges) associated with the user executing +# the stored procedure. # # ============================================================================== let $message= Section 3.1.6 - Privilege Checks:; --source include/show_msg80.inc -USE db_storedproc_1; connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc # ------------------------------------------------------------------------------ @@ -47,7 +56,7 @@ connect (user1a, localhost, user_1, , db_storedproc_1); USE db_storedproc_1; delimiter //; ---error 1044 +--error ER_DBACCESS_DENIED_ERROR CREATE PROCEDURE sp1(v1 char(20)) BEGIN SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz'; @@ -58,6 +67,7 @@ disconnect user1a; # add privilege again and check connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost'; @@ -77,6 +87,7 @@ disconnect user1b; # cleanup connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc DROP USER 'user_1'@'localhost'; @@ -132,6 +143,7 @@ disconnect user2; # cleanup connection default; +USE db_storedproc_1; --source suite/funcs_1/include/show_connection.inc drop user 'user_1'@'localhost'; @@ -242,33 +254,33 @@ disconnect user5_1; connect (user5_2, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); # now 'add' INSERT to DEFINER connection default; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); grant insert on db_storedproc_1.* to 'user_1'@'localhost'; flush privileges; connection user5_2; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); CALL sp5_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); # now 'add' SELECT to DEFINER connection default; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); grant SELECT on db_storedproc_1.* to 'user_1'@'localhost'; #grant execute on db_storedproc_1.* to 'user_2'@'localhost'; @@ -288,9 +300,9 @@ flush privileges; connection user5_2; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_ins(); CALL sp5_sel(); @@ -302,11 +314,11 @@ flush privileges; connection user5_2; --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp5_sel(); # cleanup @@ -373,9 +385,9 @@ disconnect user6_1; connect (user6_2, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_s_i(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_ins(); CALL sp3166_sel(); @@ -405,10 +417,10 @@ FLUSH PRIVILEGES; --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (user6_4, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_s_i(); CALL sp3166_ins(); ---error 1142 +--error ER_TABLEACCESS_DENIED_ERROR CALL sp3166_sel(); disconnect user6_4; @@ -422,11 +434,11 @@ FLUSH PRIVILEGES; --replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK connect (user6_5, localhost, user_2, , db_storedproc_1); --source suite/funcs_1/include/show_connection.inc ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp3166_s_i(); ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp3166_ins(); ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp3166_sel(); disconnect user6_5; @@ -447,6 +459,7 @@ DROP USER 'user_2'@'localhost'; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc b/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc index d7b0a370a82..8e32a43e18f 100644 --- a/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc +++ b/mysql-test/suite/funcs_1/storedproc/storedproc_10.inc @@ -7,14 +7,21 @@ # # 3.1.10 CALL checks: # -## 1. Ensure that a properly defined procedure can always be called, assuming the appropriate privileges exist. -#- 2. Ensure that a procedure cannot be called if the appropriate privileges do not exist. +## 1. Ensure that a properly defined procedure can always be called, assuming +# the appropriate privileges exist. +#- 2. Ensure that a procedure cannot be called if the appropriate privileges +# do not exist. ## 3. Ensure that a function can never be called. -## 4. Ensure that a properly defined function can always be executed, assuming the appropriate privileges exist. -#- 5. Ensure that a function cannot be executed if the appropriate privileges do not exist. +## 4. Ensure that a properly defined function can always be executed, assuming +# the appropriate privileges exist. +#- 5. Ensure that a function cannot be executed if the appropriate privileges +# do not exist. ## 6. Ensure that a procedure can never be executed. -## 7. Ensure that the ROW_COUNT() SQL function always returns the correct number of rows affected by the execution of a stored procedure. -## 8. Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure. +## 7. Ensure that the ROW_COUNT() SQL function always returns the correct +# number of rows affected by the execution of a stored procedure. +## 8. Ensure that the mysql_affected_rows() C API function always returns +# the correct number of rows affected by the execution of a +# stored procedure. # # ============================================================================== let $message= Section 3.1.10 - CALL checks:; @@ -54,7 +61,7 @@ connect (user2_1, localhost, user_1, , db_storedproc); delimiter //; CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER BEGIN - SELECT * FROM db_storedproc.t1 LIMIT 1; + SELECT * FROM db_storedproc.t1 WHERE f4=-5000 LIMIT 1; END// delimiter ;// @@ -74,12 +81,14 @@ connect (user2_2, localhost, user_2, , db_storedproc); --source suite/funcs_1/include/show_connection.inc # no privileges exist ---error 1370 +--error ER_PROCACCESS_DENIED_ERROR CALL sp31102(); SELECT fn31105( 9 ); # now 'add' EXECUTE to INVOKER +--echo connection default; connection default; +USE db_storedproc; --source suite/funcs_1/include/show_connection.inc # root can execute ... CALL sp31102(); @@ -97,7 +106,9 @@ SELECT fn31105( 9 ); disconnect user2_3; # now 'remove' SELECT from INVOKER +--echo connection default; connection default; +USE db_storedproc; --source suite/funcs_1/include/show_connection.inc REVOKE EXECUTE ON db_storedproc.* FROM 'user_2'@'localhost'; FLUSH PRIVILEGES; @@ -115,6 +126,7 @@ disconnect user2_4; # cleanup connection default; +USE db_storedproc; --source suite/funcs_1/include/show_connection.inc DROP PROCEDURE sp31102; @@ -142,7 +154,7 @@ BEGIN END// delimiter ;// ---error 1305 +--error ER_SP_DOES_NOT_EXIST CALL fn1(); # cleanup @@ -168,7 +180,7 @@ BEGIN END// delimiter ;// ---error 1305 +--error ER_SP_DOES_NOT_EXIST SELECT sp1(); # cleanup @@ -182,26 +194,32 @@ let $message= Ensure that the ROW_COUNT() SQL function always returns the correct number of rows affected by the execution of a stored procedure.; --source include/show_msg80.inc +# Note(mleich): Information taken from a comments in +# Bug#21818 Return value of ROW_COUNT() is incorrect for +# ALTER TABLE, LOAD DATA +# ROW_COUNT() is -1 following any statement which is not DELETE, INSERT +# or UPDATE. +# Also, after a CALL statement, ROW_COUNT() will return the value of the +# last statement in the stored procedure. --disable_warnings DROP PROCEDURE IF EXISTS sp_ins_1; DROP PROCEDURE IF EXISTS sp_ins_3; DROP PROCEDURE IF EXISTS sp_upd; DROP PROCEDURE IF EXISTS sp_ins_upd; +DROP PROCEDURE IF EXISTS sp_del; +DROP PROCEDURE IF EXISTS sp_with_rowcount; --enable_warnings CREATE TABLE temp(f1 CHAR(20),f2 CHAR(25),f3 DATE,f4 INT,f5 CHAR(25),f6 INT); INSERT INTO temp SELECT * FROM t10; delimiter //; -#FIXME: add to proc: SELECT row_count() 'ins'; CREATE PROCEDURE sp_ins_1() BEGIN INSERT INTO temp VALUES ('abc', 'abc', '20051003', 100, 'uvw', 1000); END// - -#FIXME: add to proc: SELECT row_count() 'ins_3'; CREATE PROCEDURE sp_ins_3() BEGIN INSERT INTO temp VALUES ('abc', 'xyz', '19490523', 100, 'uvw', 1000); @@ -209,26 +227,11 @@ BEGIN INSERT INTO temp VALUES ('abc', 'xyz', '2005-10-24', 100, 'uvw', 1000); END// -# FIXME: add to proc: SELECT row_count() AS 'updated'; CREATE PROCEDURE sp_upd() BEGIN UPDATE temp SET temp.f1 = 'updated' WHERE temp.f1 ='abc'; END// -# FIXME: use commented proc -# CREATE PROCEDURE sp_ins_upd() -# BEGIN -# BEGIN -# INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000); -# INSERT INTO temp VALUES ('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000); -# INSERT INTO temp VALUES ('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000); -# INSERT INTO temp VALUES ('qwe', 'abc', '2005-11-07', 100, 'uvw', 1000); -# END; -# SELECT row_count() AS 'insert "qwe"'; -# SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; -# UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; -# SELECT row_count() AS 'update "qwe" AND "abc"'; -# END// CREATE PROCEDURE sp_ins_upd() BEGIN BEGIN @@ -240,31 +243,70 @@ BEGIN SELECT COUNT( f1 ), f1 FROM temp GROUP BY f1; UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f1 ='qwe' AND temp.f2 = 'abc'; END// + +CREATE PROCEDURE sp_del() +BEGIN + DELETE FROM temp WHERE temp.f1 ='qwe' OR temp.f1 = 'updated_2'; +END// + +CREATE PROCEDURE sp_with_rowcount() +BEGIN + BEGIN + INSERT INTO temp VALUES ('qwe', 'abc', '1989-11-09', 100, 'uvw', 1000), + ('qwe', 'xyz', '1998-03-26', 100, 'uvw', 1000), + ('qwe', 'abc', '2000-11-09', 100, 'uvw', 1000), + ('qwe', 'xyz', '2005-11-07', 100, 'uvw', 1000); + END; + SELECT row_count() AS 'row_count() after insert'; + SELECT row_count() AS 'row_count() after select row_count()'; + SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; + UPDATE temp SET temp.f1 = 'updated_2' WHERE temp.f2 = 'abc'; + SELECT row_count() AS 'row_count() after update'; + SELECT f1,f2,f3 FROM temp ORDER BY f1,f2,f3; + DELETE FROM temp WHERE temp.f1 = 'updated_2'; + SELECT row_count() AS 'row_count() after delete'; +END// delimiter ;// CALL sp_ins_1(); SELECT row_count(); +--sorted_result SELECT * FROM temp; CALL sp_ins_3(); -#FIXME: check is 1 correct here? I expect 3 for 3 inserted rows inside the procedure SELECT row_count(); +--sorted_result SELECT * FROM temp; CALL sp_upd(); SELECT row_count(); +--sorted_result SELECT * FROM temp; -#FIXME: check is 3 correct here? I expect 7 for 4 inserted and then 3 updated rows inside the procedure CALL sp_ins_upd(); SELECT row_count(); +--sorted_result SELECT * FROM temp; +CALL sp_del(); +SELECT row_count(); +--sorted_result +SELECT * FROM temp; + +DELETE FROM temp; +CALL sp_with_rowcount(); +SELECT row_count(); +--sorted_result +SELECT * FROM temp; + + # cleanup DROP PROCEDURE sp_ins_1; DROP PROCEDURE sp_ins_3; DROP PROCEDURE sp_upd; DROP PROCEDURE sp_ins_upd; +DROP PROCEDURE sp_del; +DROP PROCEDURE sp_with_rowcount; DROP TABLE temp; @@ -272,7 +314,7 @@ DROP TABLE temp; let $message= Testcase 3.1.10.8:; --source include/show_msg.inc let $message= -Ensure that the mysql_affected_rows() C API function always returns the correct +Ensure that the mysql_affected_rows() C API function always returns the correct number of rows affected by the execution of a stored procedure.; --source include/show_msg80.inc @@ -283,6 +325,7 @@ number of rows affected by the execution of a stored procedure.; --source suite/funcs_1/storedproc/cleanup_sp_tb.inc # ============================================================================== -let $message= . +++ END OF SCRIPT +++; ---source include/show_msg80.inc +--echo +--echo . +++ END OF SCRIPT +++ +--echo -------------------------------------------------------------------------------- # ============================================================================== diff --git a/mysql-test/suite/funcs_1/t/innodb_trig_0407.test b/mysql-test/suite/funcs_1/t/innodb_trig_0407.test index d6b7d4a9942..1a0689847b1 100644 --- a/mysql-test/suite/funcs_1/t/innodb_trig_0407.test +++ b/mysql-test/suite/funcs_1/t/innodb_trig_0407.test @@ -10,7 +10,7 @@ let $engine_type= innodb; # Create some objects needed in many testcases USE test; --source suite/funcs_1/include/innodb_tb3.inc - + --source suite/funcs_1/triggers/triggers_0407.inc DROP TABLE test.tb3; diff --git a/mysql-test/suite/funcs_1/t/is_basics_mixed.test b/mysql-test/suite/funcs_1/t/is_basics_mixed.test index 8097c3ab3b1..30aeba12915 100644 --- a/mysql-test/suite/funcs_1/t/is_basics_mixed.test +++ b/mysql-test/suite/funcs_1/t/is_basics_mixed.test @@ -174,7 +174,7 @@ WHERE table_schema = 'db_datadict' ORDER BY table_name LIMIT 1; SELECT @table_name,@table_schema; # # SELECT INTO OUTFILE -let $OUTFILE = $MYSQL_TMP_DIR/datadict.out; +let $OUTFILE = $MYSQLTEST_VARDIR/tmp/datadict.out; --error 0,1 remove_file $OUTFILE; --replace_result $OUTFILE diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_02.test b/mysql-test/suite/funcs_1/t/memory_storedproc_02.test index f92657ee665..5b5e0b52932 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_02.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_02.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_02.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_02.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_03.test b/mysql-test/suite/funcs_1/t/memory_storedproc_03.test index 8a839b255e1..61a601c8c66 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_03.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_03.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_03.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_03.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_06.test b/mysql-test/suite/funcs_1/t/memory_storedproc_06.test index 059528590b9..ac4b1173553 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_06.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_06.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_06.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_06.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_07.test b/mysql-test/suite/funcs_1/t/memory_storedproc_07.test index 1d7cee3dbd6..be74d5c9c38 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_07.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_07.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_07.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_07.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_08.test b/mysql-test/suite/funcs_1/t/memory_storedproc_08.test index 304be8c477a..d898f288f29 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_08.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_08.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_08.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_08.inc diff --git a/mysql-test/suite/funcs_1/t/memory_storedproc_10.test b/mysql-test/suite/funcs_1/t/memory_storedproc_10.test index 13fbe99fabf..753e5d0bfc7 100644 --- a/mysql-test/suite/funcs_1/t/memory_storedproc_10.test +++ b/mysql-test/suite/funcs_1/t/memory_storedproc_10.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/memory_storedproc_10.test # - + let $engine_type= memory; - + --source suite/funcs_1/storedproc/storedproc_10.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test index 108b0fe5611..be3e0e9685f 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_02.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_02.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_02.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test index b181e3ce7ab..740db774552 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_03.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_03.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_03.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test index 81d3d24a01f..1038a40b57d 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_06.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_06.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_06.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test index a02f2f544ee..674c3ef3fb6 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_07.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_07.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_07.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test index 24e574fa9e2..a27d593bd92 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_08.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_08.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_08.inc diff --git a/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test b/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test index 6b4f6c21b62..bfa83c01a57 100644 --- a/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test +++ b/mysql-test/suite/funcs_1/t/myisam_storedproc_10.test @@ -1,6 +1,6 @@ #### suite/funcs_1/t/myisam_storedproc_10.test # - + let $engine_type= myisam; - + --source suite/funcs_1/storedproc/storedproc_10.inc diff --git a/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc b/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc index 51cc2a81d18..c3de88a28f7 100644 --- a/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc +++ b/mysql-test/suite/funcs_1/triggers/trig_frkey2.inc @@ -1,17 +1,17 @@ ################################################################# -# This file inclde tests that address the foreign key cases of -# the following requirements since they are specific to innodb. -# Other test cases for these requirements are included in the +# This file inclde tests that address the foreign key cases of +# the following requirements since they are specific to innodb. +# Other test cases for these requirements are included in the # triggers_master.test file. ################################################################# --disable_abort_on_error # OBN - The following tests are disabled until triggers are supported with forign -# keys in innodb (foreign keys tests dispabled - bug 11472) +# keys in innodb (foreign keys tests dispabled - bug 11472) ################################################################################# #Section x.x.x.3 -# Test case: Similar to 3.5.10.5 but with ten tables to see if multiple triggers +# Test case: Similar to 3.5.10.5 but with ten tables to see if multiple triggers # can be executed at once let $message= Testcase x.x.x.3:; --source include/show_msg.inc @@ -21,58 +21,58 @@ let $message= Testcase x.x.x.3:; --enable_warnings eval CREATE TABLE t0 (col1 char(50)) ENGINE=$engine_type; - eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), + eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), PRIMARY KEY (id)) ENGINE=$engine_type; - eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL) ENGINE=$engine_type; - eval CREATE TABLE t3 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t3 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t4 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t4 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t5 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t5 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t6 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t6 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t7 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t7 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t8 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t8 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t9 (id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t9 (id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t10(id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t10(id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - eval CREATE TABLE t11(id INT PRIMARY KEY, f_id INT, INDEX par_ind - (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t11(id INT PRIMARY KEY, f_id INT, INDEX par_ind + (f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; - create trigger tr1 after update on t2 for each row + create trigger tr1 after update on t2 for each row insert into t0 values ('tr_t2'); - create trigger tr2 after update on t3 for each row + create trigger tr2 after update on t3 for each row insert into t0 values ('tr_t3'); - create trigger tr3 after update on t4 for each row + create trigger tr3 after update on t4 for each row insert into t0 values ('tr_t4'); - create trigger tr3 after update on t5 for each row + create trigger tr3 after update on t5 for each row insert into t0 values ('tr_t5'); - create trigger tr4 after update on t6 for each row + create trigger tr4 after update on t6 for each row insert into t0 values ('tr_t6'); - create trigger tr5 after update on t7 for each row + create trigger tr5 after update on t7 for each row insert into t0 values ('tr_t7'); - create trigger tr5 after update on t8 for each row + create trigger tr5 after update on t8 for each row insert into t0 values ('tr_t8'); - create trigger tr6 after update on t9 for each row + create trigger tr6 after update on t9 for each row insert into t0 values ('tr_t9'); - create trigger tr7 after update on t10 for each row + create trigger tr7 after update on t10 for each row insert into t0 values ('tr_t10'); - create trigger tr8 after update on t11 for each row + create trigger tr8 after update on t11 for each row insert into t0 values ('tr_t11'); insert into t1 values (1,'Department A'); @@ -134,10 +134,10 @@ let $message= Testcase x.x.x.3:; #Section 3.5.10.5 -# Test case: Ensure that every trigger that should be activated by every possible -# type of implicit update of its subject table (e.g. a FOREIGN KEY SET -# DEFAULT action or an UPDATE of a view based on the subject table) -# is indeed activated correctly. +# Test case: Ensure that every trigger that should be activated by every possible +# type of implicit update of its subject table (e.g. a FOREIGN KEY SET +# DEFAULT action or an UPDATE of a view based on the subject table) +# is indeed activated correctly. let $message= Testcase 3.5.10.5 (foreign keys):; --source include/show_msg.inc @@ -146,11 +146,11 @@ let $message= Testcase 3.5.10.5 (foreign keys):; DROP TABLE IF EXISTS t1, t2; --enable_warnings - eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), + eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), PRIMARY KEY (id)) ENGINE=$engine_type; - eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, - INDEX par_ind (f_id), col1 char(50), - FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, + INDEX par_ind (f_id), col1 char(50), + FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type; create trigger tr_t2 after update on t2 for each row set @counter=@counter+1; @@ -191,9 +191,9 @@ let $message= Testcase 3.5.10.5 (foreign keys):; #Section 3.5.10.6 -# Test case: Ensure that every trigger that should be activated by every possible -# type of implicit deletion from its subject table (e.g. a FOREIGN KEY -# CASCADE action or a DELETE from a view based on the subject table) +# Test case: Ensure that every trigger that should be activated by every possible +# type of implicit deletion from its subject table (e.g. a FOREIGN KEY +# CASCADE action or a DELETE from a view based on the subject table) # is indeed activated correctly. let $message= Testcase 3.5.10.6 (foreign keys):; --source include/show_msg.inc @@ -202,11 +202,11 @@ let $message= Testcase 3.5.10.6 (foreign keys):; DROP TABLE IF EXISTS t1, t2; --enable_warnings - eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), + eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50), PRIMARY KEY (id)) ENGINE=$engine_type; - eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, - INDEX par_ind (f_id), col1 char(50), - FOREIGN KEY (f_id) REFERENCES t1(id) + eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, + INDEX par_ind (f_id), col1 char(50), + FOREIGN KEY (f_id) REFERENCES t1(id) ON DELETE CASCADE) ENGINE=$engine_type; create trigger tr_t2 before delete on t2 diff --git a/mysql-test/suite/funcs_1/triggers/triggers_0102.inc b/mysql-test/suite/funcs_1/triggers/triggers_0102.inc index b11455c07d3..cadfb9ec9be 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_0102.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_0102.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== # OBM - ToDo @@ -20,37 +20,37 @@ # Testcase: Ensure that all clauses that should be supported are supported. let $message= Testcase: 3.5.1.1:; --source include/show_msg.inc -# OBN - This test case tests basic trigger definition and execution +# OBN - This test case tests basic trigger definition and execution # of INSERT/UPDATE/DELETE actions and BEFORE/AFTER timings. -# As such it covers the equirements in sections 3.5.6.1, 3.5.6.2, +# As such it covers the equirements in sections 3.5.6.1, 3.5.6.2, # 3.5.6.4, 3.5.6.5, 3.5.7.1, 3.5.7.2, 3.5.7.3, 3.5.7.17 below. -# - Note currently as a result of limitations with locking tables in +# - Note currently as a result of limitations with locking tables in # triggers, a specifc lockingof the tables is done. # Once fixed, the locking and alias referances should be removed use test; # Trigger Definition - Create trigger trg1_1 BEFORE INSERT + Create trigger trg1_1 BEFORE INSERT on tb3 for each row set @test_before = 2, new.f142 = @test_before; - Create trigger trg1_2 AFTER INSERT + Create trigger trg1_2 AFTER INSERT on tb3 for each row set @test_after = 6; - Create trigger trg1_4 BEFORE UPDATE - on tb3 for each row set @test_before = 27, - new.f142 = @test_before, + Create trigger trg1_4 BEFORE UPDATE + on tb3 for each row set @test_before = 27, + new.f142 = @test_before, new.f122 = 'Before Update Trigger'; - Create trigger trg1_3 AFTER UPDATE + Create trigger trg1_3 AFTER UPDATE on tb3 for each row set @test_after = '15'; - Create trigger trg1_5 BEFORE DELETE on tb3 for each row - select count(*) into @test_before from tb3 as tr_tb3 + Create trigger trg1_5 BEFORE DELETE on tb3 for each row + select count(*) into @test_before from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; - Create trigger trg1_6 AFTER DELETE on tb3 for each row - select count(*) into @test_after from tb3 as tr_tb3 + Create trigger trg1_6 AFTER DELETE on tb3 for each row + select count(*) into @test_after from tb3 as tr_tb3 where f121 = 'Test 3.5.1.1'; # Trigger Execution Insert (before and after) set @test_before = 1; set @test_after = 5; select @test_before, @test_after; - Insert into tb3 (f121, f122, f142, f144, f134) + Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'First Row', @test_before, @test_after, 1); select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; select @test_before, @test_after; @@ -59,15 +59,15 @@ use test; set @test_before = 18; set @test_after = 8; select @test_before, @test_after; - Update tb3 set tb3.f122 = 'Update', - tb3.f142 = @test_before, - tb3.f144 = @test_after + Update tb3 set tb3.f122 = 'Update', + tb3.f142 = @test_before, + tb3.f144 = @test_after where tb3.f121 = 'Test 3.5.1.1'; select f121, f122, f142, f144, f134 from tb3 where f121 = 'Test 3.5.1.1'; select @test_before, @test_after; # Trigger Execution Delete (before and after) - Insert into tb3 (f121, f122, f142, f144, f134) + Insert into tb3 (f121, f122, f142, f144, f134) values ('Test 3.5.1.1', 'Second Row', 5, 6, 2); set @test_before = 0; set @test_after = 0; @@ -79,35 +79,35 @@ use test; #Cleanup --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_3; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_4; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_5; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_6; --enable_warnings delete from tb3 where f121='Test 3.5.1.1'; --enable_warnings #Section 3.5.1.2 -# Testcase: Ensure that all clauses that should not be supported are disallowed -# with an appropriate error message. +# Testcase: Ensure that all clauses that should not be supported are disallowed +# with an appropriate error message. let $message= Testcase: 3.5.1.2:; --source include/show_msg.inc - --error 1064 - Create trigger trg_1 after insert + --error ER_PARSE_ERROR + Create trigger trg_1 after insert on tb3 for each statement set @x= 1; -#Cleanup - --disable_warnings - --error 0, 1360 +#Cleanup + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg_1; --enable_warnings @@ -116,66 +116,66 @@ let $message= Testcase: 3.5.1.2:; # Testcase: Ensure that all supported clauses are supported only in the correct order. let $message= Testcase 3.5.1.3:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg3_1 on tb3 BEFORE INSERT for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE trg3_2 TRIGGER AFTER INSERT on tb3 for each row set new.f120 = 's'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg3_3 Before DELETE on tb3 set @ret1 = 'test' for each row; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg3_4 DELETE AFTER on tb3 set @ret1 = 'test' for each row; - --error 1064 - CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'; + --error ER_PARSE_ERROR + CREATE for each row TRIGGER trg3_5 AFTER UPDATE on tb3 set @ret1 = 'test'; #Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_3; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_4; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3_5; --enable_warnings #Section 3.5.1.4 -# Testcase: Ensure that an appropriate error message is returned if a clause +# Testcase: Ensure that an appropriate error message is returned if a clause # is out-of-order in an SQL statement. # OBN - FIXME - Missing 3.5.1.4 need to add #Section 3.5.1.5 -# Testcase: Ensure that all clauses that are defined to be mandatory are indeed +# Testcase: Ensure that all clauses that are defined to be mandatory are indeed # required to be mandatory by the MySQL server and tools let $message= Testcase: 3.5.1.5:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_1 AFTER on tb3 for each row set new.f120 = 'e'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_2 INSERT on tb3 for each set row new.f120 = 'f'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_3 BEFORE INSERT tb3 for each row set new.f120 = 'g'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_4 AFTER UPDATE on tb3 for each set new.f120 = 'g'; - --error 1064 + --error ER_PARSE_ERROR CREATE trg4_5 AFTER DELETE on tb3 for each set new.f120 = 'g'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg4_6 BEFORE DELETE for each row set new.f120 = 'g'; #Cleanup @@ -183,19 +183,19 @@ let $message= Testcase: 3.5.1.5:; # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_3; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_4; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_5; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4_6; - --enable_warnings + --enable_warnings #Section 3.5.1.6 # Testcase: Ensure that any clauses that are defined to be optional are indeed @@ -204,15 +204,15 @@ let $message= Testcase 3.5.1.6: - Need to fix; --source include/show_msg.inc # OBN - FIXME - Missing 3.5.1.6 need to add -#Section 3.5.1.7 -# Testcase: Ensure that all valid, fully-qualified, and non-qualified, +#Section 3.5.1.7 +# Testcase: Ensure that all valid, fully-qualified, and non-qualified, # trigger names are accepted, at creation time. let $message= Testcase 3.5.1.7: - need to fix; --source include/show_msg.inc drop table if exists t1; eval create table t1 (f1 int, f2 char(25),f3 int) engine=$engine_type; - CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 + CREATE TRIGGER trg5_1 BEFORE INSERT on test.t1 for each row set new.f3 = '14'; CREATE TRIGGER trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ BEFORE UPDATE on test.t1 for each row set new.f3 = '42'; @@ -221,39 +221,39 @@ let $message= Testcase 3.5.1.7: - need to fix; select * from t1; update t1 set f2='update 3.5.1.7'; select * from t1; - select trigger_name from information_schema.triggers; + select trigger_name from information_schema.triggers order by trigger_name; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5_1; # The above trigger should be dropped since the name was trimmed. drop trigger trg_abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ; drop table t1; #Section 3.5.1.8 -# Testcase: Ensure that any invalid trigger name is never accepted, and that an +# Testcase: Ensure that any invalid trigger name is never accepted, and that an # appropriate error message is returned when the name is rejected. let $message= Testcase 3.5.1.8:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trg12* before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER trigger before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER 100 before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER @@view before insert on tb3 for each row set new.f120 = 't'; - --error 1064 + --error ER_PARSE_ERROR CREATE TRIGGER @name before insert on tb3 for each row set new.f120 = 't'; - --error 1435 - CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 + --error ER_TRG_IN_WRONG_SCHEMA + CREATE TRIGGER tb3.trg6_1 BEFORE INSERT on test.tb3 for each row set new.f120 ='X'; --disable_warnings @@ -265,29 +265,29 @@ let $message= Testcase 3.5.1.8:; # Can't create a trigger in a different database use test; - --error 1146 - CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 + --error ER_NO_SUCH_TABLE + CREATE TRIGGER trig_db.trg6_2 AFTER INSERT on tb3 for each row set @ret_trg6_2 = 5; # Can't create a trigger refrencing a table in a different db use trig_db; - --error 1435 - CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 + --error ER_TRG_IN_WRONG_SCHEMA + CREATE TRIGGER trg6_3 AFTER INSERT on test.tb3 for each row set @ret_trg6_3 = 18; use test; #Cleanup - --disable_warnings + --disable_warnings drop database trig_db; # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_3; - --enable_warnings + --enable_warnings #Section 3.5.1.9 #Testcase: Ensure that a reference to a non-existent trigger is rejected with @@ -297,41 +297,41 @@ let $message= Testcase 3.5.1.9:(cannot be inplemented at this point); #Section 3.5.1.10 -#Testcase: Ensure that it is not possible to create two triggers with the same name on +#Testcase: Ensure that it is not possible to create two triggers with the same name on # the same table let $message= Testcase 3.5.1.10:; --source include/show_msg.inc CREATE TRIGGER trg7_1 BEFORE UPDATE on tb3 for each row set new.f120 ='X'; - --error 1359 + --error ER_TRG_ALREADY_EXISTS CREATE TRIGGER trg7_1 AFTER INSERT on tb3 for each row set @x ='Y'; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg7_1; --enable_warnings -#Section 3.5.1.? -# Testcase: Ensure that it is not possible to create two or more triggers with +#Section 3.5.1.? +# Testcase: Ensure that it is not possible to create two or more triggers with # the same name, provided each is associated with a different table. let $message= Testcase 3.5.1.?:; --source include/show_msg.inc - --disable_warnings + --disable_warnings drop table if exists t1; drop table if exists t2; --enable_warnings eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; eval create table t2 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 + create trigger trig before insert on t1 for each row set new.f1 ='trig t1'; - --error 1359 - create trigger trig before update on t2 + --error ER_TRG_ALREADY_EXISTS + create trigger trig before update on t2 for each row set new.f1 ='trig t2'; insert into t1 value ('insert to t1',1); @@ -343,16 +343,16 @@ let $message= Testcase 3.5.1.?:; select * from t2; #Cleanup - --disable_warnings + --disable_warnings drop table t1; drop table t2; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trig; --enable_warnings -#Section 3.5.1.11 -# Testcase: Ensure that it is possible to create two or more triggers with +#Section 3.5.1.11 +# Testcase: Ensure that it is possible to create two or more triggers with # the same name, provided each resides in a different database let $message= Testcase 3.5.1.11:; --source include/show_msg.inc @@ -367,15 +367,15 @@ let $message= Testcase 3.5.1.11:; create database trig_db3; use trig_db1; eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 + create trigger trig before insert on t1 for each row set new.f1 ='trig1', @test_var1='trig1'; use trig_db2; eval create table t2 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t2 + create trigger trig before insert on t2 for each row set new.f1 ='trig2', @test_var2='trig2'; use trig_db3; eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig before insert on t1 + create trigger trig before insert on t1 for each row set new.f1 ='trig3', @test_var3='trig3'; set @test_var1= '', @test_var2= '', @test_var3= ''; @@ -385,14 +385,14 @@ let $message= Testcase 3.5.1.11:; insert into trig_db2.t2 (f1,f2) values ('insert to db2 t2 from db1',3); insert into trig_db3.t1 (f1,f2) values ('insert to db3 t1 from db1',4); select @test_var1, @test_var2, @test_var3; - select * from t1; + select * from t1 order by f2; select * from trig_db2.t2; select * from trig_db3.t1; - select * from t1; + select * from t1 order by f2; use test; #Cleanup - --disable_warnings + --disable_warnings drop database trig_db1; drop database trig_db2; drop database trig_db3; @@ -403,16 +403,16 @@ let $message= Testcase 3.5.1.11:; # Check for the global nature of Triggers # ########################################### -#Section 3.5.2.1 -# Test case: Ensure that if a trigger created without a qualifying database +#Section 3.5.2.1 +# Test case: Ensure that if a trigger created without a qualifying database # name belongs to the database in use at creation time. -#Section 3.5.2.2 -# Test case: Ensure that if a trigger created with a qualifying database name +#Section 3.5.2.2 +# Test case: Ensure that if a trigger created with a qualifying database name # belongs to the database specified. -#Section 3.5.2.3 -# Test case: Ensure that if a trigger created with a qualifying database name -# does not belong to the database in use at creation time unless -# the qualifying database name identifies the database that is +#Section 3.5.2.3 +# Test case: Ensure that if a trigger created with a qualifying database name +# does not belong to the database in use at creation time unless +# the qualifying database name identifies the database that is # also in use at creation time. let $message= Testcase 3.5.2.1/2/3:; --source include/show_msg.inc @@ -427,14 +427,14 @@ let $message= Testcase 3.5.2.1/2/3:; use trig_db1; eval create table t1 (f1 char(50), f2 integer) engine = $engine_type; eval create table trig_db2.t1 (f1 char(50), f2 integer) engine = $engine_type; - create trigger trig1_b before insert on t1 + create trigger trig1_b before insert on t1 for each row set @test_var1='trig1_b'; - create trigger trig_db1.trig1_a after insert on t1 + create trigger trig_db1.trig1_a after insert on t1 for each row set @test_var2='trig1_a'; - create trigger trig_db2.trig2 before insert on trig_db2.t1 + create trigger trig_db2.trig2 before insert on trig_db2.t1 for each row set @test_var3='trig2'; select trigger_schema, trigger_name, event_object_table - from information_schema.triggers; + from information_schema.triggers order by trigger_name; set @test_var1= '', @test_var2= '', @test_var3= ''; insert into t1 (f1,f2) values ('insert to db1 t1 from db1',352); @@ -442,6 +442,6 @@ let $message= Testcase 3.5.2.1/2/3:; select @test_var1, @test_var2, @test_var3; #Cleanup - --disable_warnings + --disable_warnings drop database trig_db1; drop database trig_db2; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03.inc b/mysql-test/suite/funcs_1/triggers/triggers_03.inc index 764fccec734..ac76dc83062 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03.inc @@ -63,14 +63,14 @@ let $message= Testcase 3.5.3.2:; select current_user; use priv_db; - --error 1227 + --error ER_SPECIFIC_ACCESS_DENIED_ERROR create trigger trg1_1 before INSERT on t1 for each row set new.f1 = 'trig 3.5.3.2_1-no'; connection default; use priv_db; insert into t1 (f1) values ('insert 3.5.3.2-no'); - select f1 from t1; + select f1 from t1 order by f1; connection yes_privs; select current_user; @@ -83,29 +83,27 @@ let $message= Testcase 3.5.3.2:; select current_user; use priv_db; - # Added following the fix to bug 5861 - --error 1143 + --error ER_COLUMNACCESS_DENIED_ERROR insert into t1 (f1) values ('insert 3.5.3.2-yes'); - select f1 from t1; - grant UPDATE on priv_db.t1 to test_yesprivs@localhost; -let $message= note: once 15166 is fixed a similar case for SELECT needs to be added; ---source include/show_msg.inc + select f1 from t1 order by f1; + + grant UPDATE on priv_db.t1 to test_yesprivs@localhost; + insert into t1 (f1) values ('insert 3.5.3.2-yes'); + select f1 from t1 order by f1; - insert into t1 (f1) values ('insert 3.5.3.2-yes'); - select f1 from t1; let $message= Testcase 3.5.3.6:; --source include/show_msg.inc connection no_privs; use priv_db; - --error 1227 + --error ER_SPECIFIC_ACCESS_DENIED_ERROR drop trigger trg1_2; connection default; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-yes'); - select f1 from t1; + select f1 from t1 order by f1; connection yes_privs; use priv_db; @@ -115,12 +113,12 @@ let $message= Testcase 3.5.3.6:; connection default; use priv_db; insert into t1 (f1) values ('insert 3.5.3.6-no'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings connection default; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg1_2; disconnect no_privs; disconnect yes_privs; @@ -131,8 +129,6 @@ let $message= Testcase 3.5.3.6:; # Test case: Ensure that use of the construct "SET NEW. = " # fails at CREATE TRIGGER time, if the current user does not have the # UPDATE privilege on the column specified -# Note: As a result of bug 8884 the triggers are actually created. -# Disabled because of bug 8884 # --- 3.5.3.7a - Privs set on a global level let $message=Testcase 3.5.3.7a:; @@ -156,18 +152,15 @@ let $message=Testcase 3.5.3.7a:; select current_user; use priv_db; show grants; - select f1 from t1; + select f1 from t1 order by f1; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4a_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1a'; + create trigger trg4a_1 before INSERT on t1 for each row + set new.f1 = 'trig 3.5.3.7-1a'; connection default; + --error ER_COLUMNACCESS_DENIED_ERROR insert into t1 (f1) values ('insert 3.5.3.7-1a'); - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4a_1; connection yes_privs_424a; @@ -179,14 +172,8 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT on *.* to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2b'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings @@ -220,18 +207,14 @@ let $message= Testcase 3.5.3.7b:; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4b_1 before UPDATE on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1b'; + create trigger trg4b_1 before UPDATE on t1 for each row + set new.f1 = 'trig 3.5.3.7-1b'; connection default; insert into t1 (f1) values ('insert 3.5.3.7-1b'); - select f1 from t1; + select f1 from t1 order by f1; update t1 set f1 = 'update 3.5.3.7-1b' where f1 = 'insert 3.5.3.7-1b'; - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4b_1; connection yes_privs_424b; @@ -242,15 +225,10 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT on priv_db.* to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2b'); - select f1 from t1; + select f1 from t1 order by f1; update t1 set f1 = 'update 3.5.3.7-2b' where f1 = 'insert 3.5.3.7-2b'; - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings drop trigger trg4b_2; @@ -283,16 +261,12 @@ let $message= Testcase 3.5.3.7c; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4c_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1c'; + create trigger trg4c_1 before INSERT on t1 for each row + set new.f1 = 'trig 3.5.3.7-1c'; connection default; insert into t1 (f1) values ('insert 3.5.3.7-1c'); - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4c_1; connection yes_privs_424c; @@ -303,13 +277,8 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2c'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings @@ -344,16 +313,12 @@ let $message= Testcase 3.5.3.7d:; connection no_privs_424d; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8884; ---source include/show_msg.inc -# --error 1227 -# create trigger trg4d_1 before INSERT on t1 for each row -# set new.f1 = 'trig 3.5.3.7-1d'; + create trigger trg4d_1 before INSERT on t1 for each row + set new.f1 = 'trig 3.5.3.7-1d'; connection default; insert into t1 (f1) values ('insert 3.5.3.7-1d'); - select f1 from t1; - --error 0, 1360 + select f1 from t1 order by f1; drop trigger trg4d_1; connection yes_privs_424d; @@ -364,13 +329,8 @@ let $message= Trigger create disabled - should fail - Bug 8884; connection default; - # Added to bypass bug 15166 -let $message= SELECT priv added to bypass bug 15166; ---source include/show_msg.inc - grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.7-2d'); - select f1 from t1; + select f1 from t1 order by f1; # Cleanup --disable_warnings @@ -408,18 +368,14 @@ let $message= Testcase 3.5.3.8a:; use priv_db; show grants; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5a_1 before INSERT on t1 for each row -# set @test_var = new.f1; + create trigger trg5a_1 before INSERT on t1 for each row + set @test_var = new.f1; connection default; set @test_var = 'before trig 3.5.3.8-1a'; select @test_var; insert into t1 (f1) values ('insert 3.5.3.8-1a'); select @test_var; - --error 0, 1360 drop trigger trg5a_1; connection yes_privs_425a; @@ -433,11 +389,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; set @test_var= 'before trig 3.5.3.8-2a'; select @test_var; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE on *.* to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.8-2a'); select @test_var; @@ -473,11 +424,8 @@ let $message= Testcase: 3.5.3.8b; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5b_1 before UPDATE on t1 for each row -# set @test_var= new.f1; + create trigger trg5b_1 before UPDATE on t1 for each row + set @test_var= new.f1; connection default; set @test_var= 'before trig 3.5.3.8-1b'; @@ -485,7 +433,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; select @test_var; update t1 set f1= 'update 3.5.3.8-1b' where f1 = 'insert 3.5.3.8-1b'; select @test_var; - --error 0, 1360 drop trigger trg5b_1; connection yes_privs_425b; @@ -499,11 +446,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; insert into t1 (f1) values ('insert 3.5.3.8-2b'); select @test_var; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE on priv_db.* to test_yesprivs@localhost; - update t1 set f1= 'update 3.5.3.8-2b' where f1 = 'insert 3.5.3.8-2b'; select @test_var; # Cleanup @@ -538,17 +480,13 @@ let $message= Testcase 3.5.3.8c:; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5c_1 before INSERT on t1 for each row -# set @test_var= new.f1; + create trigger trg5c_1 before INSERT on t1 for each row + set @test_var= new.f1; connection default; set @test_var= 'before trig 3.5.3.8-1c'; insert into t1 (f1) values ('insert 3.5.3.8-1c'); select @test_var; - --error 0, 1360 drop trigger trg5c_1; connection yes_privs_425c; @@ -560,11 +498,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; connection default; set @test_var='before trig 3.5.3.8-2c'; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.8-2c'); select @test_var; # Cleanup @@ -598,17 +531,13 @@ let $message=Testcase: 3.5.3.8d:; connection no_privs_425d; show grants; use priv_db; -let $message= Trigger create disabled - should fail - Bug 8887; ---source include/show_msg.inc -# --error 1227 -# create trigger trg5d_1 before INSERT on t1 for each row -# set @test_var= new.f1; + create trigger trg5d_1 before INSERT on t1 for each row + set @test_var= new.f1; connection default; set @test_var='before trig 3.5.3.8-1d'; insert into t1 (f1) values ('insert 3.5.3.8-1d'); select @test_var; - --error 0, 1360 drop trigger trg5d_1; connection yes_privs_425d; @@ -620,11 +549,6 @@ let $message= Trigger create disabled - should fail - Bug 8887; connection default; set @test_var='before trig 3.5.3.8-2d'; - # Added to bypass bug 15166 -let $message= UPDATE priv added to bypass bug 15166; ---source include/show_msg.inc - grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost; - insert into t1 (f1) values ('insert 3.5.3.8-2d'); select @test_var; @@ -633,8 +557,7 @@ let $message= UPDATE priv added to bypass bug 15166; drop trigger trg5d_2; --enable_warnings -# --- 3.5.3.x - additional tests following the fix to bug 5861 / WL 2818 -# to test for trigger definer privs in the case of trigger +# --- 3.5.3.x to test for trigger definer privs in the case of trigger # actions (insert/update/delete/select) performed on other # tables. let $message=Testcase: 3.5.3.x:; @@ -671,8 +594,8 @@ let $message=Testcase: 3.5.3.x:; revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant INSERT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (4); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; connection yes_353x; use priv_db; @@ -687,8 +610,8 @@ let $message=Testcase: 3.5.3.x:; revoke INSERT on priv_db.t2 from test_yesprivs@localhost; grant UPDATE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (2); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; connection yes_353x; use priv_db; @@ -703,8 +626,8 @@ let $message=Testcase: 3.5.3.x:; revoke UPDATE on priv_db.t2 from test_yesprivs@localhost; grant SELECT on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; select @aaa; connection yes_353x; @@ -720,8 +643,8 @@ let $message=Testcase: 3.5.3.x:; revoke SELECT on priv_db.t2 from test_yesprivs@localhost; grant DELETE on priv_db.t2 to test_yesprivs@localhost; insert into t1 (f1) values (1); - select f1 from t1; - select f2 from t2; + select f1 from t1 order by f1; + select f2 from t2 order by f2; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_0407.inc b/mysql-test/suite/funcs_1/triggers/triggers_0407.inc index 15c94ada975..a05bdb45bac 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_0407.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_0407.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== --disable_abort_on_error @@ -46,32 +46,32 @@ let $message= Testcase 3.5.4.1:; eval create table t1 (f1 char(30)) engine=$engine_type; grant INSERT, SELECT on db_drop.t1 to test_general; Use db_drop; - Create trigger trg1 BEFORE INSERT on t1 + Create trigger trg1 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.1'; connection con1_general; Use db_drop; Insert into t1 values ('Insert error 3.5.4.1'); - Select * from t1; + Select * from t1 order by f1; connection con1_super; drop trigger trg1; select trigger_schema, trigger_name, event_object_table - from information_schema.triggers; + from information_schema.triggers order by trigger_name; connection con1_general; Insert into t1 values ('Insert no trigger 3.5.4.1'); - Select * from t1; + Select * from t1 order by f1; #Cleanup - --disable_warnings + --disable_warnings connection con1_super; --disable_warnings - --error 0,1360 - drop trigger trg1; + --error 0,ER_TRG_DOES_NOT_EXIST + drop trigger trg1; drop database if exists db_drop; revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; --enable_warnings #Section 3.5.4.2 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate error +# Test case: Ensure that DROP TRIGGER fails, with an appropriate error # message, if the trigger name does not exist. let $message= Testcase 3.5.4.2:; --source include/show_msg.inc @@ -83,16 +83,16 @@ let $message= Testcase 3.5.4.2:; drop table if exists t1_432 ; --enable_warnings eval create table t1_432 (f1 char (30)) engine=$engine_type; - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger tr_does_not_exit; -#cleanup +#cleanup --disable_warnings drop table if exists t1_432 ; drop database if exists db_drop2; --enable_warnings #Section 3.5.4.3 -# Test case: Ensure that DROP TRIGGER fails, with an appropriate +# Test case: Ensure that DROP TRIGGER fails, with an appropriate # error message, if is not a qualified name. let $message= Testcase 3.5.4.3:; --source include/show_msg.inc @@ -107,33 +107,33 @@ let $message= Testcase 3.5.4.3:; eval create table t1_433 (f1 char (30)) engine=$engine_type; eval create table t1_433a (f1a char (5)) engine=$engine_type; - CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row + CREATE TRIGGER trg3 BEFORE INSERT on t1_433 for each row set new.f1 = 'Trigger 3.5.4.3'; -# Using table - --error 1064 +# Using table + --error ER_PARSE_ERROR Drop trigger t1.433.trg3; -# Using database.table - --error 1064 +# Using database.table + --error ER_PARSE_ERROR Drop trigger db_drop3.t1.433.trg3; # wrong database - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger mysql.trg3; # database does not exist - --error 1360 + --error ER_TRG_DOES_NOT_EXIST Drop trigger tbx.trg3; -#cleanup +#cleanup Drop trigger db_drop3.trg3; drop table if exists t1_433; drop table if exists t1_433a; drop database if exists db_drop3; #Section 3.5.4.4 -# Test case: Ensure that when a database is dropped, all triggers created within +# Test case: Ensure that when a database is dropped, all triggers created within # that database are also cleanly dropped. let $message= Testcase 3.5.4.4:; --source include/show_msg.inc @@ -143,7 +143,7 @@ let $message= Testcase 3.5.4.4:; Use db_drop4; eval create table t1 (f1 char(30)) engine=$engine_type; grant INSERT, SELECT on db_drop4.t1 to test_general; - Create trigger trg4 BEFORE INSERT on t1 + Create trigger trg4 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.4'; connection con1_general; Use db_drop4; @@ -166,14 +166,14 @@ let $message= Testcase 3.5.4.4:; #Cleanup connection con1_super; --disable_warnings - --error 1360 - drop trigger trg4; + --error ER_TRG_DOES_NOT_EXIST + drop trigger trg4; drop database if exists db_drop4; --enable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; #Section 3.5.4.5 -# Test case: Ensure that when a table is dropped, all triggers for which it is the +# Test case: Ensure that when a table is dropped, all triggers for which it is the # subject table are also cleanly dropped. let $message= Testcase 3.5.4.5:; --source include/show_msg.inc @@ -183,7 +183,7 @@ let $message= Testcase 3.5.4.5:; Use db_drop5; eval create table t1 (f1 char(50)) engine=$engine_type; grant INSERT, SELECT on t1 to test_general; - Create trigger trg5 BEFORE INSERT on t1 + Create trigger trg5 BEFORE INSERT on t1 for each row set new.f1='Trigger 3.5.4.5'; connection con1_general; Use db_drop5; @@ -204,8 +204,8 @@ let $message= Testcase 3.5.4.5:; #Cleanup connection con1_super; --disable_warnings - --error 1360 - drop trigger trg5; + --error ER_TRG_DOES_NOT_EXIST + drop trigger trg5; drop database if exists db_drop5; --enable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; @@ -223,55 +223,55 @@ let $message= Testcase 3.5.5:; use test; #Section 3.5.5.1 -# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent +# Test case: Ensure that, if CREATE TRIGGER is executed with a non-existent # subject table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.1:; --source include/show_msg.inc - --error 1146 + --error ER_NO_SUCH_TABLE Create trigger trg1 before INSERT on t100 for each row set new.f2=1000; #Section 3.5.5.2 -# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table +# Test case: Ensure that, if CREATE TRIGGER is executed with a temporary table # as the subject table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.2:; --source include/show_msg.inc Create temporary table t1_temp (f1 bigint signed, f2 bigint unsigned); - --error 1361 - Create trigger trg2 before INSERT + --error ER_TRG_ON_VIEW_OR_TEMP_TABLE + Create trigger trg2 before INSERT on t1_temp for each row set new.f2=9999; #Cleanup - --disable_warnings + --disable_warnings drop table t1_temp; --enable_warnings #Section 3.5.5.3 -# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject +# Test case: Ensure that, if CREATE TRIGGER is executed with a view as the subject # table, the statement fails with an appropriate error message. let $message= Testcase 3.5.5.3:; --source include/show_msg.inc Create view vw3 as select f118 from tb3; -# OBN Not sure why the server is returning error 1347 - --error 1347 - Create trigger trg3 before INSERT +# OBN Not sure why the server is returning error ER_WRONG_OBJECT + --error ER_WRONG_OBJECT + Create trigger trg3 before INSERT on vw3 for each row set new.f118='s'; #Cleanup - --disable_warnings + --disable_warnings drop view vw3; --enable_warnings #Section 3.5.5.4 -# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides -# in a different database than in which the trigger will reside, the +# Test case: Ensure that, if CREATE TRIGGER is executed with a table that resides +# in a different database than in which the trigger will reside, the # statement fails with an appropriate error message; that is, ensure that # the trigger and its subject table must reside in the same database. let $message= Testcase 3.5.5.4:; @@ -283,7 +283,7 @@ let $message= Testcase 3.5.5.4:; use dbtest_two; eval create table t2 (f1 char(15)) engine=$engine_type; use dbtest_one; - --error 1435 + --error ER_TRG_IN_WRONG_SCHEMA create trigger trg4 before INSERT on dbtest_two.t2 for each row set new.f1='trig 3.5.5.4'; grant INSERT, SELECT on dbtest_two.t2 to test_general; @@ -294,11 +294,11 @@ let $message= Testcase 3.5.5.4:; Select * from t2; use dbtest_one; Insert into dbtest_two.t2 values ('2nd Insert 3.5.5.4'); - Select * from dbtest_two.t2; + Select * from dbtest_two.t2 order by f1; #Cleanup connection con1_super; - --disable_warnings + --disable_warnings revoke ALL PRIVILEGES, GRANT OPTION FROM 'test_general'@'localhost'; DROP DATABASE if exists dbtest_one; drop database if EXISTS dbtest_two; @@ -316,7 +316,7 @@ let $message= Testcase 3.5.6:; use test; #Section 3.5.6.1 -# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. +# Test case: Ensure that a trigger definition can specify a trigger action time of BEFORE. # See section 3.5.1.1 let $message= Testcase 3.5.6.1 (see Testcase 3.5.1.1); --source include/show_msg.inc @@ -328,37 +328,37 @@ let $message= Testcase 3.5.6.2 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.6.3 -# Test case: Ensure that a trigger definition that specifies a trigger action -# time that is not either BEFORE or AFTER fails, with an appropriate +# Test case: Ensure that a trigger definition that specifies a trigger action +# time that is not either BEFORE or AFTER fails, with an appropriate # error message, at CREATE TRIGGER time. let $message= Testcase 3.5.6.3:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR Create trigger trg3_1 DURING UPDATE on tb3 for each row set new.f132=25; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg3_2 TIME INSERT on tb3 for each row set new.f132=15; -#Cleanup +#Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg3_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg3_2; --enable_warnings #Section 3.5.6.4 -# Test case: Ensure that a trigger defined with a trigger action time of BEFORE -# always executes its triggered action immediately before the trigger event. +# Test case: Ensure that a trigger defined with a trigger action time of BEFORE +# always executes its triggered action immediately before the trigger event. # See section 3.5.1.1 let $message= Testcase 3.5.6.4 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.6.5 -# Test case: Ensure that a trigger defined with a trigger action time of AFTER +# Test case: Ensure that a trigger defined with a trigger action time of AFTER # always executes its triggered action immediately after the trigger event. let $message= Testcase 3.5.6.5 (see Testcase 3.5.1.1); --source include/show_msg.inc @@ -384,40 +384,40 @@ let $message= Testcase 3.5.7.3 (see Testcase 3.5.1.1); --source include/show_msg.inc #Section 3.5.7.4 -# Test case: Ensure that a trigger definition that specifies a trigger event that -# is not either INSERT, UPDATE or DELETE fails, with an appropriate error +# Test case: Ensure that a trigger definition that specifies a trigger event that +# is not either INSERT, UPDATE or DELETE fails, with an appropriate error # message, at CREATE TRIGGER time. let $message= Testcase 3.5.7.4:; --source include/show_msg.inc - --error 1064 + --error ER_PARSE_ERROR Create trigger trg4_1 BEFORE SELECT on tb3 for each row set new.f132=5; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg4_2 AFTER VALUE on tb3 for each row set new.f132=1; -#Cleanup +#Cleanup # OBN - Although none of the above should have been created we should do a cleanup # since if they have been created, not dropping them will affect following # tests. --disable_warnings - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg4_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger tb3.trg4_2; --enable_warnings -#Section 3.5.7.5 / 3.5.7.6 -# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers +#Section 3.5.7.5 / 3.5.7.6 +# Test case: Ensure that it is not possible to create multiple BEFORE INSERT triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.5 / 3.5.7.6:; --source include/show_msg.inc - Create trigger trg5_1 BEFORE INSERT + Create trigger trg5_1 BEFORE INSERT on tb3 for each row set new.f122='Trigger1 3.5.7.5/6'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg5_2 BEFORE INSERT + --error ER_NOT_SUPPORTED_YET + Create trigger trg5_2 BEFORE INSERT on tb3 for each row set new.f122='Trigger2 3.5.7.5'; Insert into tb3 (f121,f122) values ('Test 3.5.7.5/6','Insert 3.5.7.5'); @@ -426,27 +426,27 @@ let $message= Testcase 3.5.7.5 / 3.5.7.6:; Select f121,f122 from tb3 where f121='Test 3.5.7.5/6'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg5_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5_2; delete from tb3 where f121='Test 3.5.7.5/6'; --enable_warnings -#Section 3.5.7.7 / 3.5.7.8 -# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers +#Section 3.5.7.7 / 3.5.7.8 +# Test case: Ensure that it is not possible to create multiple AFTER INSERT triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.7 / 3.5.7.8:; --source include/show_msg.inc set @test_var='Before trig 3.5.7.7'; - Create trigger trg6_1 AFTER INSERT + Create trigger trg6_1 AFTER INSERT on tb3 for each row set @test_var='Trigger1 3.5.7.7/8'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg6_2 AFTER INSERT + --error ER_NOT_SUPPORTED_YET + Create trigger trg6_2 AFTER INSERT on tb3 for each row set @test_var='Trigger2 3.5.7.7'; select @test_var; @@ -458,26 +458,26 @@ let $message= Testcase 3.5.7.7 / 3.5.7.8:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg6_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6_2; delete from tb3 where f121='Test 3.5.7.7/8'; --enable_warnings #Section 3.5.7.9 / 3.5.7.10 -# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers -# on the same table, even if the triggers have different names / different +# Test case: Ensure that it is not possible to create multiple BEFORE UPDATE triggers +# on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.9/10:; --source include/show_msg.inc - Create trigger trg7_1 BEFORE UPDATE + Create trigger trg7_1 BEFORE UPDATE on tb3 for each row set new.f122='Trigger1 3.5.7.9/10'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg7_2 BEFORE UPDATE + --error ER_NOT_SUPPORTED_YET + Create trigger trg7_2 BEFORE UPDATE on tb3 for each row set new.f122='Trigger2 3.5.7.9'; Insert into tb3 (f121,f122) values ('Test 3.5.7.9/10','Insert 3.5.7.9'); @@ -486,25 +486,25 @@ let $message= Testcase 3.5.7.9/10:; Select f121,f122 from tb3 where f121='Test 3.5.7.9/10'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg7_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg7_2; delete from tb3 where f121='Test 3.5.7.9/10'; #Section 3.5.7.11 / 3.5.7.12 -# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers +# Test case: Ensure that it is not possible to create multiple AFTER UPDATE triggers # on the same table, even if the triggers have different names / different -# triggered actions. +# triggered actions. let $message= Testcase 3.5.7.11/12:; --source include/show_msg.inc set @test_var='Before trig 3.5.7.11'; - Create trigger trg8_1 AFTER UPDATE + Create trigger trg8_1 AFTER UPDATE on tb3 for each row set @test_var='Trigger 3.5.7.11/12'; - --error ER_NOT_SUPPORTED_YET - Create trigger trg8_2 AFTER UPDATE + --error ER_NOT_SUPPORTED_YET + Create trigger trg8_2 AFTER UPDATE on tb3 for each row set @test_var='Trigger2 3.5.7.11'; @@ -518,25 +518,25 @@ let $message= Testcase 3.5.7.11/12:; delete from tb3 where f121='Test 3.5.7.11/12'; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg8_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg8_2; delete from tb3 where f121='Test 3.5.7.11/12'; #Section 3.5.7.13 / 3.5.7.14 -# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers +# Test case: Ensure that it is not possible to create multiple BEFORE DELETE triggers # on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.13/14:; --source include/show_msg.inc set @test_var=1; - Create trigger trg9_1 BEFORE DELETE + Create trigger trg9_1 BEFORE DELETE on tb3 for each row set @test_var=@test_var+1; - --error ER_NOT_SUPPORTED_YET - Create trigger trg9_2 BEFORE DELETE + --error ER_NOT_SUPPORTED_YET + Create trigger trg9_2 BEFORE DELETE on tb3 for each row set @test_var=@test_var+10; select @test_var; @@ -550,29 +550,29 @@ let $message= Testcase 3.5.7.13/14:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg9_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg9_2; delete from tb3 where f121='Test 3.5.7.13/14'; #Section 3.5.7.15 / 3.5.7.16 -# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers -# on the same table, even if the triggers have different names / different +# Test case: Ensure that it is not possible to create multiple AFTER DELETE triggers +# on the same table, even if the triggers have different names / different # triggered actions. let $message= Testcase 3.5.7.15/16:; --source include/show_msg.inc set @test_var=1; - Create trigger trg_3_406010_1 AFTER DELETE + Create trigger trg_3_406010_1 AFTER DELETE on tb3 for each row set @test_var=@test_var+5; - --error ER_NOT_SUPPORTED_YET - Create trigger trg_3_406010_2 AFTER DELETE + --error ER_NOT_SUPPORTED_YET + Create trigger trg_3_406010_2 AFTER DELETE on tb3 for each row set @test_var=@test_var+50; - --error 1359 - Create trigger trg_3_406010_1 AFTER INSERT + --error ER_TRG_ALREADY_EXISTS + Create trigger trg_3_406010_1 AFTER INSERT on tb3 for each row set @test_var=@test_var+1; select @test_var; @@ -586,18 +586,18 @@ let $message= Testcase 3.5.7.15/16:; select @test_var; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg_3_406010_1; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg_3_406010_2; delete from tb3 where f121='Test 3.5.7.15/16'; --enable_warnings #Section 3.5.7.17 -# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, -# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE -# trigger on the same table; that is, ensure that every persistent base +# Test case: Ensure that it is possible to have a BEFORE INSERT, an AFTER INSERT, +# a BEFORE UPDATE, an AFTER UPDATE, a BEFORE DELETE, and an AFTER DELETE +# trigger on the same table; that is, ensure that every persistent base # table may be the subject table for exactly six triggers let $message= Testcase 3.5.7.17 (see Testcase 3.5.1.1); --source include/show_msg.inc diff --git a/mysql-test/suite/funcs_1/triggers/triggers_08.inc b/mysql-test/suite/funcs_1/triggers/triggers_08.inc index 300080e455d..48db2cbf566 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_08.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_08.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== # General setup for Trigger tests @@ -29,22 +29,20 @@ let $message= Testcase: 3.5:; ################################# #Section 3.5.8.1 -# Testcase: Ensure that the triggered action of every trigger always executes +# Testcase: Ensure that the triggered action of every trigger always executes # correctly and the results in all expected changes made to the database let $message= Testcase 3.5.8.1: (implied in previous tests); --source include/show_msg.inc -# OBN - FIXME - Missing 3.5.8.1 need to add - #Section 3.5.8.2 -# Testcase: Ensure that the triggered actions of every trigger never results +# Testcase: Ensure that the triggered actions of every trigger never results # in an unexpected change made to the database. let $message= Testcase 3.5.8.2: (implied in previous tests); --source include/show_msg.inc #Section 3.5.8.3 / 3.5.8.4 -#Test case: Ensure that the triggered action can any valid SQL statement / set +#Test case: Ensure that the triggered action can any valid SQL statement / set # of valid SQL statements, provided the statements are written within # a BEGIN/END compound statement construct # OBN - At this point the tests focuses on the the INSERT/UPDATE/DELETE SQL statements @@ -58,17 +56,17 @@ let $message= Testcase 3.5.8.3/4:; grant SELECT, INSERT, UPDATE, DELETE on db_test.* to test_general; grant LOCK TABLES on db_test.* to test_general; Use db_test; - eval create table t1_i ( + eval create table t1_i ( i120 char ascii not null DEFAULT b'101', i136 smallint zerofill not null DEFAULT 999, i144 int zerofill not null DEFAULT 99999, i163 decimal (63,30)) engine=$engine_type; - eval create table t1_u ( + eval create table t1_u ( u120 char ascii not null DEFAULT b'101', u136 smallint zerofill not null DEFAULT 999, u144 int zerofill not null DEFAULT 99999, u163 decimal (63,30)) engine=$engine_type; - eval create table t1_d ( + eval create table t1_d ( d120 char ascii not null DEFAULT b'101', d136 smallint zerofill not null DEFAULT 999, d144 int zerofill not null DEFAULT 99999, @@ -93,26 +91,29 @@ let $message= 3.5.8.4 - multiple SQL; delimiter //; Create trigger trg1 AFTER INSERT on tb3 for each row BEGIN - insert into db_test.t1_i + insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); - update db_test.t1_u + update db_test.t1_u set u144=new.f144, u163=new.f163 - where u136=new.f136; + where u136=new.f136; delete from db_test.t1_d where d136= new.f136; - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; - END// + select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u + where u136= new.f136; + END// delimiter ;// # Test trigger execution - multiple SQL connection con2_general; Use test; set @test_var=0; - Insert into tb3 (f120, f122, f136, f144, f163) + Insert into tb3 (f120, f122, f136, f144, f163) values ('1', 'Test 3.5.8.4', 222, 23456, 1.05); Select f120, f122, f136, f144, f163 from tb3 where f122= 'Test 3.5.8.4'; + --sorted_result select * from db_test.t1_i; + --sorted_result select * from db_test.t1_u; + --sorted_result select * from db_test.t1_d; select @test_var; @@ -121,16 +122,22 @@ let $message= 3.5.8.4 - single SQL - insert; --source include/show_msg.inc # Trigger definition - single SQL Insert connection con2_super; + delimiter //; Create trigger trg2 BEFORE UPDATE on tb3 for each row - insert into db_test.t1_i + BEGIN + insert into db_test.t1_i values (new.f120, new.f136, new.f144, new.f163); + END// + delimiter ;// # Trigger exeution - single SQL Insert connection con2_general; + Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; + select * from db_test.t1_i order by i120; update tb3 set f120='I', f122='Test 3.5.8.4-Single Insert' where f122='Test 3.5.8.4'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_i; + select * from db_test.t1_i order by i120; let $message= 3.5.8.4 - single SQL - update; @@ -139,16 +146,16 @@ let $message= 3.5.8.4 - single SQL - update; connection con2_super; drop trigger trg2; Create trigger trg3 BEFORE UPDATE on tb3 for each row - update db_test.t1_u + update db_test.t1_u set u120=new.f120 - where u136=new.f136; + where u136=new.f136; # Trigger exeution - single SQL - update; connection con2_general; update tb3 set f120='U', f122='Test 3.5.8.4-Single Update' where f122='Test 3.5.8.4-Single Insert'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_u; + select * from db_test.t1_u order by u120; let $message= 3.5.8.3/4 - single SQL - delete; @@ -162,12 +169,12 @@ let $message= 3.5.8.3/4 - single SQL - delete; # Trigger exeution - single SQL delete connection con2_general; #lock tables tb3 write, db_test.t1_i write, db_test.t1_u write, db_test.t1_d write; - update tb3 set f120='D', f136=444, + update tb3 set f120='D', f136=444, f122='Test 3.5.8.4-Single Delete' where f122='Test 3.5.8.4-Single Update'; #unlock tables; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; - select * from db_test.t1_d; + select * from db_test.t1_d order by d120; let $message= 3.5.8.3/4 - single SQL - select; @@ -176,13 +183,13 @@ let $message= 3.5.8.3/4 - single SQL - select; connection con2_super; drop trigger trg4; Create trigger trg5 AFTER UPDATE on tb3 for each row - select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u - where u136= new.f136; + select sum(db_test.t1_u.u163) into @test_var from db_test.t1_u + where u136= new.f136; # Trigger exeution - single SQL select connection con2_general; set @test_var=0; - update tb3 set f120='S', f136=111, + update tb3 set f120='S', f136=111, f122='Test 3.5.8.4-Single Select' where f122='Test 3.5.8.4-Single Delete'; Select f120, f122, f136, f144, f163 from tb3 where f122 like 'Test 3.5.8.4%'; @@ -190,7 +197,7 @@ let $message= 3.5.8.3/4 - single SQL - select; #Cleanup connection default; - --disable_warnings + --disable_warnings drop trigger trg1; drop trigger trg5; drop database if exists db_test; @@ -200,8 +207,8 @@ let $message= 3.5.8.3/4 - single SQL - select; #Section 3.5.8.5 (IF) -# Test case: Ensure that the stored procedure-specific flow control statement like IF -# works correctly when it is a part of the triggered action portion of a +# Test case: Ensure that the stored procedure-specific flow control statement like IF +# works correctly when it is a part of the triggered action portion of a # trigger definition. let $message= Testcase 3.5.8.5 (IF):; --source include/show_msg.inc @@ -219,7 +226,7 @@ let $message= Testcase 3.5.8.5 (IF):; IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; - ELSE + ELSE set @test_var2='2nd else', new.f120='D'; END IF; END// @@ -227,50 +234,50 @@ let $message= Testcase 3.5.8.5 (IF):; set @test_var='Empty', @test_var2=0; Insert into tb3 (f120, f122, f136) values ('1', 'Test 3.5.8.5-if', 101); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('2', 'Test 3.5.8.5-if', 102); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 10); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; Insert into tb3 (f120, f122, f136) values ('3', 'Test 3.5.8.5-if', 103); - select f120, f122, f136, @test_var, @test_var2 - from tb3 where f122 = 'Test 3.5.8.5-if'; + select f120, f122, f136, @test_var, @test_var2 + from tb3 where f122 = 'Test 3.5.8.5-if' order by f136; delimiter //; - --error 1064 + --error ER_PARSE_ERROR create trigger trg3 before update on tb3 for each row BEGIN ELSEIF new.f120='2' then END IF; END// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3// - --error 1064 + --error ER_PARSE_ERROR create trigger trg4 before update on tb3 for each row BEGIN IF (new.f120='4') and (new.f136=10) then set @test_var2='2nd if', new.f120='d'; - ELSE + ELSE set @test_var2='2nd else', new.f120='D'; END// delimiter ;// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg2; delete from tb3 where f121='Test 3.5.8.5-if'; --enable_warnings #Section 3.5.8.5 (CASE) -# Test case: Ensure that the stored procedure-specific flow control statement -# like CASE works correctly when it is a part of the triggered action +# Test case: Ensure that the stored procedure-specific flow control statement +# like CASE works correctly when it is a part of the triggered action # portion of a trigger definition. let $message= Testcase 3.5.8.5-case:; --source include/show_msg.inc @@ -310,34 +317,34 @@ let $message= Testcase 3.5.8.5-case:; delimiter ;// set @test_var='Empty'; - Insert into tb3 (f120, f122, f136, f144) + Insert into tb3 (f120, f122, f136, f144) values ('a', 'Test 3.5.8.5-case', 5, 7); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136, f144) values ('b', 'Test 3.5.8.5-case', 71,16); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136, f144) values ('c', 'Test 3.5.8.5-case', 80,1); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136) values ('d', 'Test 3.5.8.5-case', 152); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + Insert into tb3 (f120, f122, f136, f144) values ('e', 'Test 3.5.8.5-case', 200, 8); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; - --error 0, 1339 - Insert into tb3 (f120, f122, f136, f144) + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; + --error 0, ER_SP_CASE_NOT_FOUND + Insert into tb3 (f120, f122, f136, f144) values ('f', 'Test 3.5.8.5-case', 100, 8); - select f120, f122, f136, f144, @test_var - from tb3 where f122 = 'Test 3.5.8.5-case'; + select f120, f122, f136, f144, @test_var + from tb3 where f122 = 'Test 3.5.8.5-case' order by f120,f136; delimiter //; - --error 1064 + --error ER_PARSE_ERROR create trigger trg3a before update on tb3 for each row BEGIN CASE @@ -345,11 +352,11 @@ let $message= Testcase 3.5.8.5-case:; END// delimiter ;// - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg3a; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg3; delete from tb3 where f121='Test 3.5.8.5-case'; --enable_warnings @@ -363,53 +370,53 @@ let $message= Testcase 3.5.8.5-loop/leave:; delimiter //; Create trigger trg4 after insert on tb3 for each row - BEGIN + BEGIN set @counter=0, @flag='Initial'; - Label1: loop + Label1: loop if new.f136 new.f136 END REPEAT rp_label; END// delimiter ;// set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) + Insert into tb3 (f122, f136) values ('Test 3.5.8.5-repeat', 13); select @counter1, @counter2; delimiter //; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg6_2 after update on tb3 for each row BEGIN - REPEAT - SET @counter2 = @counter2 + 1; + REPEAT + SET @counter2 = @counter2 + 1; END// delimiter ;// #Cleanup - --disable_warnings + --disable_warnings drop trigger trg6; delete from tb3 where f122='Test 3.5.8.5-repeat'; --enable_warnings #Section 3.5.8.5 (WHILE) -# Test case: Ensure that the stored procedure-specific flow control -# statements WHILE, work correctly when they are part of +# Test case: Ensure that the stored procedure-specific flow control +# statements WHILE, work correctly when they are part of # the triggered action portion of a trigger definition. let $message= Testcase 3.5.8.5-while:; --source include/show_msg.inc delimiter //; Create trigger trg7 after insert on tb3 for each row - wl_label: WHILE @counter1 < new.f136 DO - SET @counter1 = @counter1 + 1; + wl_label: WHILE @counter1 < new.f136 DO + SET @counter1 = @counter1 + 1; IF (@counter1 MOD 2 = 0) THEN ITERATE wl_label; END IF; - SET @counter2 = @counter2 + 1; + SET @counter2 = @counter2 + 1; END WHILE wl_label// delimiter ;// set @counter1= 0, @counter2= 0; - Insert into tb3 (f122, f136) + Insert into tb3 (f122, f136) values ('Test 3.5.8.5-while', 7); select @counter1, @counter2; delimiter //; - --error 1064 + --error ER_PARSE_ERROR Create trigger trg7_2 after update on tb3 for each row BEGIN - WHILE @counter1 < new.f136 - SET @counter1 = @counter1 + 1; + WHILE @counter1 < new.f136 + SET @counter1 = @counter1 + 1; END// delimiter ;// #Cleanup - --disable_warnings + --disable_warnings delete from tb3 where f122='Test 3.5.8.5-while'; drop trigger trg7; --enable_warnings #Section 3.5.8.6 -# Test case: Ensure that a trigger definition that includes a CALL to a stored -# procedure fails, at CREATE TRIGGER time, with an appropriate error -# message -# OBN - requirement void since allowed -# Fails due to Bug 9909 the bug allows the trigger to be created -# and fails in execution time +# Test case: Ensure that a trigger definition that includes a CALL to a stored +# procedure fails, at CREATE TRIGGER time, with an appropriate error +# message. Not more valid requirement. let $message= Testcase 3.5.8.6: (requirement void); --source include/show_msg.inc + delimiter //; + CREATE PROCEDURE sp_01 () BEGIN set @v1=1; END// + + CREATE TRIGGER trg8_1 BEFORE UPDATE ON tb3 FOR EACH ROW + BEGIN + CALL sp_01 (); + END// + delimiter ;// + Insert into tb3 (f120, f122, f136) values ('6', 'Test 3.5.8.6-insert', 101); + update tb3 set f120='S', f136=111, + f122='Test 3.5.8.6-tr8_1' + where f122='Test 3.5.8.6-insert'; + select f120, f122 + from tb3 where f122 like 'Test 3.5.8.6%' order by f120; + DROP TRIGGER trg8_1; + DROP PROCEDURE sp_01; #Section 3.5.8.7 -# Test case: Ensure that a trigger definition that includes a -# transaction-delimiting statement (e.g. COMMIT, -# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER +# Test case: Ensure that a trigger definition that includes a +# transaction-delimiting statement (e.g. COMMIT, +# ROLLBACK, START TRANSACTION) fails, at CREATE TRIGGER # time, with an appropriate error message. -# OBN - Fails due to Bug ____ -let $message= Testcase 3.5.8.7: (Disabled as a result of bug _____); +let $message= Testcase 3.5.8.7; --source include/show_msg.inc + + delimiter //; + --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + Create trigger trg9_1 before update on tb3 for each row + BEGIN + Start transaction; + Set new.f120='U'; + Commit; + END// -# --error 1314 -# Create trigger trg9_1 before update on tb3 for each row -# BEGIN -# Start transaction; -# Set new.f120='U'; -# Commit; -# END; - -# --error 1314 -# Create trigger trg9_2 before delete on tb3 for each row -# BEGIN -# Start transaction; -# Set @var2=old.f120; -# Rollback; -# END; + --error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + Create trigger trg9_2 before delete on tb3 for each row + BEGIN + Start transaction; + Set @var2=old.f120; + Rollback; + END// + delimiter ;// # Cleanup section 3.5 diff --git a/mysql-test/suite/funcs_1/triggers/triggers_09.inc b/mysql-test/suite/funcs_1/triggers/triggers_09.inc index 4eaaf3e35e2..c84b89fa457 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_09.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_09.inc @@ -1,7 +1,7 @@ #====================================================================== # -# Trigger Tests -# (test case numbering refer to requirement document TP v1.1) +# Trigger Tests +# (test case numbering refer to requirement document TP v1.1) #====================================================================== @@ -11,15 +11,15 @@ ################################# #Section 3.5.9.1 -#Test case: Ensure that every trigger executes its triggered action on each row +#Test case: Ensure that every trigger executes its triggered action on each row # that meets the conditions stated in the trigger definition. #Section 3.5.9.2 -#Testcase: Ensure that a trigger never executes its triggered action on any row +#Testcase: Ensure that a trigger never executes its triggered action on any row # that doesn't meet the conditions stated in the trigger definition. let $message= Testcase 3.5.9.1/2:; --source include/show_msg.inc - Create trigger trg1 BEFORE UPDATE on tb3 for each row + Create trigger trg1 BEFORE UPDATE on tb3 for each row set new.f142 = 94087, @counter=@counter+1; --disable_query_log select count(*) as TotalRows from tb3; @@ -29,22 +29,22 @@ let $message= Testcase 3.5.9.1/2:; --enable_query_log set @counter=0; Update tb3 Set f142='1' where f130<100; - select count(*) as ExpectedChanged, @counter as TrigCounter + select count(*) as ExpectedChanged, @counter as TrigCounter from tb3 where f142=94087; - select count(*) as ExpectedNotChange from tb3 + select count(*) as ExpectedNotChange from tb3 where f130<100 and f142<>94087; - select count(*) as NonExpectedChanged from tb3 + select count(*) as NonExpectedChanged from tb3 where f130>=130 and f142=94087; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg1; --enable_warnings #Section 3.5.9.3 -#Test case: Ensure that a reference to OLD. always correctly refers -# to the values of the specified column of the subject table before a +#Test case: Ensure that a reference to OLD. always correctly refers +# to the values of the specified column of the subject table before a # data row is updated or deleted. let $message= Testcase 3.5.9.3:; --source include/show_msg.inc @@ -71,46 +71,46 @@ let $message= Testcase 3.5.9.3:; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --enable_query_log - Insert into tb3 (f122, f136, f163) + Insert into tb3 (f122, f136, f163) values ('Test 3.5.9.3', 7, 123.17); Update tb3 Set f136=8 where f122='Test 3.5.9.3'; - select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; --enable_query_log delete from tb3 where f122='Test 3.5.9.3'; - select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f163 from tb3 where f122='Test 3.5.9.3' order by f136; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_163; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg2_a; drop trigger trg2_b; drop trigger trg2_c; @@ -118,8 +118,8 @@ let $message= Testcase 3.5.9.3:; --enable_warnings #Section 3.5.9.4 -#Test case: Ensure that a reference to NEW. always correctly refers -# to the values of the specified column of the subject table after an +#Test case: Ensure that a reference to NEW. always correctly refers +# to the values of the specified column of the subject table after an # existing data row has been updated or a new data row has been inserted. let $message= Testcase 3.5.9.4:; --source include/show_msg.inc @@ -145,48 +145,48 @@ let $message= Testcase 3.5.9.4:; @tr_var_af_151=new.f151, @tr_var_af_163=new.f163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --enable_query_log - Insert into tb3 (f122, f136, f151, f163) + Insert into tb3 (f122, f136, f151, f163) values ('Test 3.5.9.4', 7, DEFAULT, 995.24); - select f118, f121, f122, f136, f151, f163 from tb3 - where f122 like 'Test 3.5.9.4%'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f151, f163 from tb3 + where f122 like 'Test 3.5.9.4%' order by f163; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --disable_query_log - set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, + set @tr_var_b4_118=0, @tr_var_b4_121=0, @tr_var_b4_122=0, @tr_var_b4_136=0, @tr_var_b4_151=0, @tr_var_b4_163=0; - set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, + set @tr_var_af_118=0, @tr_var_af_121=0, @tr_var_af_122=0, @tr_var_af_136=0, @tr_var_af_151=0, @tr_var_af_163=0; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; --enable_query_log Update tb3 Set f122='Test 3.5.9.4-trig', f136=NULL, f151=DEFAULT, f163=NULL where f122='Test 3.5.9.4'; - select f118, f121, f122, f136, f151, f163 from tb3 - where f122 like 'Test 3.5.9.4-trig'; - select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, + select f118, f121, f122, f136, f151, f163 from tb3 + where f122 like 'Test 3.5.9.4-trig' order by f163; + select @tr_var_b4_118, @tr_var_b4_121, @tr_var_b4_122, @tr_var_b4_136, @tr_var_b4_151, @tr_var_b4_163; - select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, + select @tr_var_af_118, @tr_var_af_121, @tr_var_af_122, @tr_var_af_136, @tr_var_af_151, @tr_var_af_163; #Cleanup - --disable_warnings + --disable_warnings drop trigger trg3_a; drop trigger trg3_b; drop trigger trg3_c; @@ -196,121 +196,119 @@ let $message= Testcase 3.5.9.4:; #Section 3.5.9.5 -# Test case: Ensure that the definition of an INSERT trigger can include a +# Test case: Ensure that the definition of an INSERT trigger can include a # reference to NEW. . let $message= Testcase 3.5.9.5: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.6 -# Test case: Ensure that the definition of an INSERT trigger cannot include +# Test case: Ensure that the definition of an INSERT trigger cannot include # a reference to OLD. . let $message= Testcase 3.5.9.6:; --source include/show_msg.inc - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg4a before insert on tb3 for each row set @temp1= old.f120; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg4b after insert on tb3 for each row set old.f120= 'test'; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg4b; --enable_warnings #Section 3.5.9.7 -# Test case: Ensure that the definition of an UPDATE trigger can include a +# Test case: Ensure that the definition of an UPDATE trigger can include a # reference to NEW. . let $message= Testcase 3.5.9.7: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.8 -# Test case: Ensure that the definition of an UPDATE trigger cannot include a +# Test case: Ensure that the definition of an UPDATE trigger cannot include a # reference to OLD. . let $message= Testcase 3.5.9.8: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.9 -# Test case: Ensure that the definition of a DELETE trigger cannot include a +# Test case: Ensure that the definition of a DELETE trigger cannot include a # reference to NEW.. let $message= Testcase 3.5.9.9:; --source include/show_msg.inc - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg5a before DELETE on tb3 for each row set @temp1=new.f122; - --error 1363 + --error ER_TRG_NO_SUCH_ROW_IN_TRG create trigger trg5b after DELETE on tb3 for each row set new.f122='test'; -let $message= The above returns the wrong error, should be error 1362 (Bug 11648) ---source include/show_msg.inc #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg5b; --enable_warnings #Section 3.5.9.10 -# Test case: Ensure that the definition of a DELETE trigger can include a reference +# Test case: Ensure that the definition of a DELETE trigger can include a reference # to OLD.. let $message= Testcase 3.5.9.10: (implied in previous tests); --source include/show_msg.inc #Section 3.5.9.11 -# Testcase: Ensure that trigger definition that includes a referance to -# NEW. fails with an appropriate error message, +# Testcase: Ensure that trigger definition that includes a referance to +# NEW. fails with an appropriate error message, # at CREATE TRIGGER time, if the trigger event in not INSERT or UPDATE let $message= Testcase 3.5.9.11: covered by 3.5.9.9; --source include/show_msg.inc #Section 3.5.9.12 -# Testcase: Ensure that trigger definition that includes a referance to -# OLD. fails with an appropriate error message, at +# Testcase: Ensure that trigger definition that includes a referance to +# OLD. fails with an appropriate error message, at # CREATE TRIGGER time, if the trigger event is not DELETE or UPDATE let $message= Testcase 3.5.9.12: covered by 3.5.9.6; --source include/show_msg.inc #Section 3.5.9.13 -# Test case: Ensure that all references to OLD. are read-only, +# Test case: Ensure that all references to OLD. are read-only, # that is, that they cannot be used to modify a data row. let $message= Testcase 3.5.9.13:; --source include/show_msg.inc - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6a before UPDATE on tb3 for each row set old.f118='C', new.f118='U'; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6b after INSERT on tb3 for each row set old.f136=163, new.f118='U'; - --error 1362 + --error ER_TRG_CANT_CHANGE_ROW create trigger trg6c after UPDATE on tb3 for each row set old.f136=NULL; #Cleanup - --disable_warnings - --error 0, 1360 + --disable_warnings + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6a; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6b; - --error 0, 1360 + --error 0, ER_TRG_DOES_NOT_EXIST drop trigger trg6c; --enable_warnings #Section 3.5.9.14 -# Test case: Ensure that all references to NEW. may be used both to +# Test case: Ensure that all references to NEW. may be used both to # read a data row and to modify a data row let $message= Testcase 3.5.9.14: (implied in previous tests); --source include/show_msg.inc diff --git a/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc b/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc index 534c4efaa86..b568fc422e4 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc @@ -48,7 +48,7 @@ let $message= Testcase 3.5.10.1/2/3:; Insert into vw11 (f122, f151) values ('Test 3.5.10.1/2/3', 2); Insert into vw11 (f122, f151) values ('Not in View', 3); select f121, f122, f151, f163 - from tb3 where f122 like 'Test 3.5.10.1/2/3%'; + from tb3 where f122 like 'Test 3.5.10.1/2/3%' order by f151; select f121, f122, f151, f163 from vw11; select f121, f122, f151, f163 from tb3 where f122 like 'Not in View'; @@ -56,7 +56,7 @@ let $message= Testcase 3.5.10.1/2/3:; #Section 3.5.10.2 Update vw11 set f163=1; select f121, f122, f151, f163 from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; + where f122 like 'Test 3.5.10.1/2/3%' order by f151; select f121, f122, f151, f163 from vw11; #Section 3.5.10.3 @@ -64,7 +64,7 @@ let $message= Testcase 3.5.10.1/2/3:; Select @test_var as 'before delete'; delete from vw11 where f151=1; select f121, f122, f151, f163 from tb3 - where f122 like 'Test 3.5.10.1/2/3%'; + where f122 like 'Test 3.5.10.1/2/3%' order by f151; select f121, f122, f151, f163 from vw11; Select @test_var as 'after delete'; @@ -94,11 +94,11 @@ let $message= Testcase 3.5.10.4:; set @counter= 0; select @counter as 'Rows Loaded Before'; - --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR - eval load data infile '$MYSQL_TEST_DIR/suite/funcs_1/data/t9.txt' into table tb_load; + --replace_result $MYSQLTEST_VARDIR + eval load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/t9.txt' into table tb_load; select @counter as 'Rows Loaded After'; - Select * from tb_load limit 10; + Select * from tb_load order by f1 limit 10; #Cleanup --disable_warnings @@ -157,7 +157,7 @@ let $message= Testcase 3.5.10.extra:; set @counter=0; select @counter; - --error 1329 + --error ER_SP_FETCH_NO_DATA call trig_sp(); select @counter; select count(*) from tb3; @@ -233,7 +233,7 @@ let $message= Testcase y.y.y.2: Check for triggers starting triggers; #lock tables t1 write, t2_1 write, t2_2 write, t2_3 write, t2_4 write, t3 write; insert into t1 values (1); #unlock tables; - select * from t3; + select * from t3 order by f1; #Cleanup --disable_warnings @@ -271,13 +271,13 @@ let $message= Testcase y.y.y.3: Circular trigger reference; create trigger tr4 after insert on t4 for each row insert into t1 (f1) values (new.f4+1); - # OBN See bug 11896 - --error 1442 + # Bug#11896 Partial locking in case of recursive trigger definittions + --error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG insert into t1 values (1); - select * from t1; - select * from t2; - select * from t3; - select * from t4; + select * from t1 order by f1; + select * from t2 order by f2; + select * from t3 order by f3; + select * from t4 order by f4; #Cleanup --disable_warnings @@ -294,7 +294,7 @@ let $message= Testcase y.y.y.3: Circular trigger reference; #Section y.y.y.4 # Testcase: create recursive trigger/storedprocedures conditions -let $message= Testcase y.y.y.4: Recursive trigger/SP references (disabled bug 11889); +let $message= Testcase y.y.y.4: Recursive trigger/SP references; --source include/show_msg.inc set @sql_mode='traditional'; @@ -327,7 +327,7 @@ set @sql_mode='traditional'; set @counter=0; select @counter; - --error 1456 + --error ER_SP_RECURSION_LIMIT call trig_sp(); select @counter; select count(*) from tb3; @@ -337,7 +337,7 @@ set @sql_mode='traditional'; set @@max_sp_recursion_depth= 10; set @counter=0; select @counter; - --error 1442 + --error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG call trig_sp(); select @counter; select count(*) from tb3; @@ -381,12 +381,12 @@ let $message= Testcase y.y.y.5: Roleback of nested trigger references; set autocommit=0; start transaction; - --error 1264 + --error ER_WARN_DATA_OUT_OF_RANGE insert into t1 values (1); commit; - select * from t1; - select * from t2; - select * from t3; + select * from t1 order by f1; + select * from t2 order by f2; + select * from t3 order by f3; #unlock tables; #Cleanup --disable_warnings diff --git a/mysql-test/suite/funcs_1/views/func_view.inc b/mysql-test/suite/funcs_1/views/func_view.inc index c477eafc610..fee9fe190b2 100644 --- a/mysql-test/suite/funcs_1/views/func_view.inc +++ b/mysql-test/suite/funcs_1/views/func_view.inc @@ -3,11 +3,8 @@ # Functions within VIEWs # # # ################################################### -# 14.09.2005 ML +# Created 2005-09-14 mleich -let $message= ! Attention: The file with the expected results suffers from -Bug#10713: mysqldump includes database in create view and referenced tables; ---source include/show_msg80.inc # # 0. Some notes about this test: # ################################################################# @@ -15,9 +12,9 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # 0.1 This test is unfinished and incomplete, but already useful. # ----------------------------------------------------------------- # 0.1.1 There will be architectural changes in future. -# The long sequences with +# The long sequences with # let $col_type= ; -# --source suite/funcs_1/views/ # per every column type do not look very smart. # @@ -42,20 +39,13 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # which was valid during VIEW creation time. This means some variations # of the SQL mode are needed. # 0.1.3 There are much more functions to be tested. -# 0.1.4 There are problems with the option "--ps-protocol". -# Double values with 15 digit mantissa are printed with 14 digit -# mantissa (Bug#11589). -# I altered the Minimum/Maximum double values to 14 digit mantissa -# to avoid these problems. But there are some other unsolved problems -# with "--ps-protocol". ---disable_ps_protocol -# 0.1.5 The result sets of some CAST sub testcases with ugly function parameter +# 0.1.4 The result sets of some CAST sub testcases with ugly function parameter # column data type combinations must be discussed. # # # 0.2 How to valuate the test results: # --------------------------------------------------------------------------- -# Due to the extreme "greedy bug hunting" architecture (combinatorics +# Due to the extreme "greedy bug hunting" architecture (combinatorics # + heavy use of sourced scripts) of the following tests, there will be # - no abort of the test execution, when one statements gets an return # code != 0 (The sub testcases are independend.) @@ -68,13 +58,13 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # But there will be a special messages within the protocol files. # Example: # "Attention: CAST --> SIGNED INTEGER -# The file with expected results suffers from Bug 5083 5913 9809"; +# The file with expected results suffers from Bug 5913"; # means, the file with expected results contains result sets which # are known to be wrong. -# "Attention: The last failed" +# "Attention: The last failed" # means, a statement which should be successful (bugfree MySQL) # failed. -# +# # "Passed" : The behaviour of your MySQL version does not differ from the # version used to generate the files with expected results. # Known bugs affecting these tests could be retrieved by @@ -96,7 +86,7 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # with the suspicious result set or server response. # Now all t1_values records are preloaded. # 2. Start the server without the initial cleanup of databases etc. -# This preserves the content of the table t1_values, which +# This preserves the content of the table t1_values, which # might be needed for replaying the situation. # Example: # ./mysql-test-run.pl --socket=var/tmp/master.sock --start-dirty @@ -157,7 +147,7 @@ Bug#10713: mysqldump includes database in create view and referenced tables; # The script will work with the VIEWs, but omit the simple selects. # The "reject" file contains the view select result sets. # 3. Compare the "reject" files of 1. and 2. within a graphical diff tool. -# +# # --disable_warnings @@ -187,6 +177,7 @@ CREATE TABLE t1_modes --enable_query_log # The table to be used in the FROM parts of the SELECTs +--replace_result $type eval CREATE TABLE t1_values ( id BIGINT AUTO_INCREMENT, @@ -197,7 +188,7 @@ eval CREATE TABLE t1_values ##### BEGIN Basic preparations ####################################### # # 1. Extend t1_values with the columns you need -# - the column name must show the data type +# - the column name must show the data type # - do not add NOT NULL columns # - do not worry if the intended column data type is not # available for some storage engines @@ -229,7 +220,7 @@ ALTER TABLE t1_values ADD my_decimal DECIMAL(64,30); # we do not want to start with "illegal/unexpected/..." values. # Such experiments should be done in other testcases. # Please be careful -# - modifying column values of predefined rows they might change many +# - modifying column values of predefined rows they might change many # result sets # - additional predefined rows should be really useful for the majority of # all sub testcases, since they blow up all result sets. @@ -255,20 +246,18 @@ INSERT INTO t1_values SET my_bigint = -9223372036854775808, my_decimal = -9999999999999999999999999999999999.999999999999999999999999999999 , my_double = -1.7976931348623E+308; -# Note(ML): Values like -# - my_timestamp = '19700101030000' do not work -# - my_double = -1.7976931348623157E+308 cause problems with -# --ps-protocol (Bug#11589) +# shortened due to bug#32285 +# my_double = -1.7976931348623157E+308; # # 2.3 record -- everything to "maximum" # numbers, date/time types -> maximum of range # strings, blobs, binaries -> '<- full length of used data type>' # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = '<--------30 characters------->', + my_char_30 = '<--------30 characters------->', my_varchar_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), - my_binary_30 = '<--------30 characters------->', + my_binary_30 = '<--------30 characters------->', my_varbinary_1000 = CONCAT('<---------1000 characters', RPAD('',965,'-'),'--------->'), my_datetime = '9999-12-31 23:59:59', @@ -279,10 +268,8 @@ INSERT INTO t1_values SET my_bigint = 9223372036854775807, my_decimal = +9999999999999999999999999999999999.999999999999999999999999999999 , my_double = 1.7976931348623E+308; -# Note(ML): Values like -# - my_timestamp = '20380101030000' do not work -# - my_double = 1.7976931348623157E+308 cause problems with -# --ps-protocol (Bug#11589) +# shortened due to bug#32285 +# my_double = -1.7976931348623157E+308; # # 2.4 record -- everything to "magic" value if available or # other interesting value @@ -291,28 +278,28 @@ INSERT INTO t1_values SET # characters and preceeding and trailing spaces # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = ' ---äÖüß@µ*$-- ', - my_varchar_1000 = ' ---äÖüß@µ*$-- ', - my_binary_30 = ' ---äÖüß@µ*$-- ', - my_varbinary_1000 = ' ---äÖüß@µ*$-- ', + my_char_30 = ' ---äÖüß@µ*$-- ', + my_varchar_1000 = ' ---äÖüß@µ*$-- ', + my_binary_30 = ' ---äÖüß@µ*$-- ', + my_varbinary_1000 = ' ---äÖüß@µ*$-- ', my_datetime = '2004-02-29 23:59:59', my_date = '2004-02-29', my_timestamp = '2004-02-29 23:59:59', my_time = '13:00:00', my_year = 2000, - my_bigint = 0, + my_bigint = 0, my_decimal = 0.0, my_double = 0; # # 2.5 record -- everything to "harmless" value if available # numbers -> -1 (logical) -# strings, blobs, binaries -> '-1' useful for numeric functions +# strings, blobs, binaries -> '-1' useful for numeric functions # FIXME enum, set ?? INSERT INTO t1_values SET - my_char_30 = '-1', - my_varchar_1000 = '-1', - my_binary_30 = '-1', - my_varbinary_1000 = '-1', + my_char_30 = '-1', + my_varchar_1000 = '-1', + my_binary_30 = '-1', + my_varbinary_1000 = '-1', my_datetime = '2005-06-28 10:00:00', my_date = '2005-06-28', my_timestamp = '2005-06-28 10:00:00', @@ -330,11 +317,11 @@ INSERT INTO t1_values SET # records which should be used dedicated to the SELECT above # - Please avoid WHERE clauses # - Include the PRIMARY KEY ("id") of the base table t1_values into the -# select column list -# - Include the base table column used as function parameter into the -# select column list, because it is much easier to check the results +# select column list +# - Include the base table column used as function parameter into the +# select column list, because it is much easier to check the results # - Do not forget to escape single quotes -# Example: +# Example: # SET @my_select = 'SELECT sqrt(my_bigint), my_bigint, id FROM t1_values' # SET @my_select = 'SELECT CONCAT(\'A\',my_char_30), id FROM t1_values'; # - Statements, which reveal open crashing bugs MUST be disabled. @@ -347,10 +334,10 @@ INSERT INTO t1_values SET # most preferred function. # This method avoids that we forget a function and gives a better # overview. -# +# # If you have the time to check the result sets do the insert of the # SELECT with function via: -# eval SET @my_select = +# eval SET @my_select = # ''; # --source suite/funcs_1/views/fv1.inc # fv1.inc sets t1_selects.disable_result to 'No' and the effect will be, @@ -358,7 +345,7 @@ INSERT INTO t1_values SET # # If you do have the time to check the result sets do the insert of the # SELECT with function via: -# eval SET @my_select = +# eval SET @my_select = # ''; # --source suite/funcs_1/views/fv2.inc # fv2.inc sets t1_selects.disable_result to 'Yes' and the effect will be, @@ -384,7 +371,7 @@ INSERT INTO t1_values SET # # Example: # The function to be tested is "sqrt". -# The minimum, maximum, default and NULL value are covered by the +# The minimum, maximum, default and NULL value are covered by the # predefined rows. # A value where sqrt() = in strict mathematics # would be of interest. @@ -416,11 +403,11 @@ eval INSERT INTO t1_values SET select_id = @select_id, $col_type = -25; # SELECT * FROM t1_values; -# 1. Cast Functions and Operators -# 1.1. CAST +# 1. Cast Functions and Operators +# 1.1 CAST # # Note(ML): I guess the CAST routines are used in many other functions. -# Therefore check also nearly all "ugly" variants like +# Therefore check also nearly all "ugly" variants like # CAST( AS DECIMAL) here. # # suite/funcs_1/views/fv_cast.inc contains @@ -428,6 +415,7 @@ eval INSERT INTO t1_values SET select_id = @select_id, # # # 1.1.1. CAST --> BINARY +--echo ##### 1.1.1. CAST --> BINARY let $target_type= BINARY; # let $col_type= my_char_30; @@ -457,6 +445,7 @@ let $col_type= my_year; # 1.1.2. CAST --> CHAR +--echo ##### 1.1.2. CAST --> CHAR let $target_type= CHAR; # let $col_type= my_char_30; @@ -486,6 +475,7 @@ let $col_type= my_year; # 1.1.3. CAST --> DATE +--echo ##### 1.1.3. CAST --> DATE let $target_type= DATE; # let $col_type= my_char_30; @@ -525,6 +515,7 @@ let $col_type= my_year; # 1.1.4. CAST --> DATETIME +--echo ##### 1.1.4. CAST --> DATETIME let $target_type= DATETIME; # let $col_type= my_char_30; @@ -564,6 +555,7 @@ let $col_type= my_year; # 1.1.5. CAST --> TIME +--echo ##### 1.1.5. CAST --> TIME let $target_type= TIME; # let $col_type= my_char_30; @@ -587,15 +579,10 @@ let $col_type= my_bigint; eval INSERT INTO t1_values SET select_id = @select_id, $col_type = 1758; let $col_type= my_double; -let $message= some statements disabled because of -Bug#12440: CAST(data type DOUBLE AS TIME) strange results; ---source include/show_msg80.inc -if (0) -{ +# Bug#12440: CAST(data type DOUBLE AS TIME) strange results; --source suite/funcs_1/views/fv_cast.inc eval INSERT INTO t1_values SET select_id = @select_id, $col_type = +1.758E+3; -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -609,6 +596,7 @@ let $col_type= my_year; # 1.1.6. CAST --> DECIMAL +--echo ##### 1.1.6. CAST --> DECIMAL # Set the following to (37,2) since the default was changed to (10,0) - OBN let $target_type= DECIMAL(37,2); # @@ -632,16 +620,11 @@ let $col_type= my_bigint; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_decimal; --source suite/funcs_1/views/fv_cast.inc -let $message= some statements disabled because of -Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian; ---source include/show_msg80.inc -if (0) -{ +# Bug#13349: CAST(1.0E+300 TO DECIMAL) returns wrong result + diff little/big endian; let $col_type= my_double; --source suite/funcs_1/views/fv_cast.inc eval INSERT INTO t1_values SET select_id = @select_id, $col_type = -0.33333333E+4; -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -655,15 +638,13 @@ let $col_type= my_year; # 1.1.7. CAST --> SIGNED INTEGER +--echo ##### 1.1.7. CAST --> SIGNED INTEGER let $target_type= SIGNED INTEGER; # -let $message= +let $message= "Attention: CAST --> SIGNED INTEGER - The file with expected results suffers from - Bug#5083 Big integer values are inserted as negative into - decimal/string columns Bug#5913 Traditional mode: BIGINT range not correctly delimited - Both have the status: To be fixed later"; + Status: To be fixed later"; --source include/show_msg80.inc let $col_type= my_char_30; --source suite/funcs_1/views/fv_cast.inc @@ -677,14 +658,9 @@ let $col_type= my_bigint; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_decimal; --source suite/funcs_1/views/fv_cast.inc -let $message= some statements disabled because of -Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result; ---source include/show_msg80.inc -if (0) -{ +# Bug #13344: CAST(1E+300 TO signed int) on little endian CPU, wrong result; let $col_type= my_double; --source suite/funcs_1/views/fv_cast.inc -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -698,11 +674,12 @@ let $col_type= my_year; # 1.1.8. CAST --> UNSIGNED INTEGER +--echo ##### 1.1.8. CAST --> UNSIGNED INTEGER let $target_type= UNSIGNED INTEGER; # -let $message= +let $message= "Attention: CAST --> UNSIGNED INTEGER - The file with expected results suffers from Bug 5083 5913 9809"; + The file with expected results suffers from Bug 5913"; --source include/show_msg80.inc let $col_type= my_char_30; --source suite/funcs_1/views/fv_cast.inc @@ -717,13 +694,11 @@ let $col_type= my_bigint; let $col_type= my_decimal; --source suite/funcs_1/views/fv_cast.inc let $message= some statements disabled because of -Bugs#8663: cant use bgint unsigned as input to cast; +Bug#5913 Traditional mode: BIGINT range not correctly delimited; --source include/show_msg80.inc -if (0) -{ +# Bug#8663 cant use bgint unsigned as input to cast let $col_type= my_double; --source suite/funcs_1/views/fv_cast.inc -} let $col_type= my_datetime; --source suite/funcs_1/views/fv_cast.inc let $col_type= my_date; @@ -748,38 +723,38 @@ let $col_type= my_year; let $target_charset= utf8; # let $col_type= my_char_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc # # 1.3.2 CONVERT(expr USING koi8r) let $target_charset= koi8r; let $col_type= my_char_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), +eval SET @my_select = 'SELECT CONVERT($col_type USING $target_charset), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc @@ -787,7 +762,7 @@ $col_type, id FROM t1_values'; # 2. Control Flow Functions # 2.1. CASE value WHEN [compare-value] THEN result [WHEN ...] [ELSE result] # END or -# CASE WHEN [condition] THEN result [WHEN ...] [ELSE result] END +# CASE WHEN [condition] THEN result [WHEN ...] [ELSE result] END # # FIXME: to be implemented # @@ -848,11 +823,6 @@ let $col_type= my_year; # select if(isnull(`test`.`t1`.`f1`),_latin1'IS NULL', # _latin1'IS NOT NULL'),... # -let $message= -"Attention: IF($col_type IS NULL, ... - The file with expected results suffers from - Bug#11689. successful CREATE VIEW but SELECT on view fails."; ---source include/show_msg80.inc # Bug#11689 success on Create view .. IF(col1 IS NULL,...), col2 ; but SELECT fails let $col_type= my_char_30; --source suite/funcs_1/views/fv_if2.inc @@ -891,7 +861,7 @@ let $col_type= my_year; --source suite/funcs_1/views/fv_if2.inc -# 2.3. IFNULL(expr1,expr2) +# 2.3. IFNULL(expr1,expr2) # If expr1 is not NULL, IFNULL() returns expr1, else it returns expr2. # # suite/funcs_1/views/fv_ifnull.inc contains @@ -942,7 +912,7 @@ let $col_type= my_year; # 2.4. NULLIF(expr1,expr2) # Returns NULL if expr1 = expr2 is true, else returns expr1. -# This is the same as +# This is the same as # CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END. # # FIXME: to be implemented @@ -979,11 +949,11 @@ $col_type, id FROM t1_values'; # 3.5. CHAR_LENGTH(str) # 3.6 CHARACTER_LENGTH(str) # CHARACTER_LENGTH() is a synonym for CHAR_LENGTH(). -# 3.7. COMPRESS(string_to_compress) +# 3.7. COMPRESS(string_to_compress) # 3.8. CONCAT(str1,str2,...) # 3.9. CONCAT_WS(separator,str1,str2,...) # 3.10. CONV(N,from_base,to_base) -# 3.11. ELT(N,str1,str2,str3,...) +# 3.11. ELT(N,str1,str2,str3,...) # 3.12. EXPORT_SET(bits,on,off[,separator[,number_of_bits]]) # 3.13. FIELD(str,str1,str2,str3,...) # 3.14. FIND_IN_SET(str,strlist) @@ -1011,55 +981,38 @@ $col_type, id FROM t1_values'; # 3.19. LEFT(str,len) -# Returns the leftmost len characters from the string str. +# Returns the leftmost len characters from the string str. let $col_type= my_char_30; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varchar_1000; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_binary_30; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc let $col_type= my_varbinary_1000; -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT($col_type, 2), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -# -let $message= -"Attention: LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', ) - The file with expected results suffers from Bug 10963 11728" - and the testcases with length = BIGINT or DOUBLE column are deactivated, - because there are 32/64 Bit differences; ---source include/show_msg80.inc # Bug#11728 string function LEFT, strange undocumented behaviour, strict mode # Bug#10963 LEFT string function returns wrong result with large length let $col_type= my_bigint; -if (0) -{ -# Bug#10963 LEFT string function returns wrong result with large length -eval SET @my_select = +eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -} -# let $col_type= my_decimal; eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -# -if (0) -{ # Bug#10963 LEFT string function returns wrong result with large length let $col_type= my_double; eval SET @my_select = 'SELECT LEFT(''AaBbCcDdEeFfGgHhIiJjÄäÜüÖö'', $col_type), $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv1.inc -} - # 3.20. LENGTH(str) let $col_type= my_char_30; @@ -1085,8 +1038,11 @@ $col_type, id FROM t1_values'; # If the file doesn't exist or cannot be read ... , # the function returns NULL. # SELECT LOADFILE -eval SET @my_select = -'SELECT LOAD_FILE(''../log/current_test''), id FROM t1_values'; +--replace_result $MYSQLTEST_VARDIR +eval SET @my_select = +'SELECT LOAD_FILE(''$MYSQLTEST_VARDIR/std_data_ln/funcs_1/load_file.txt'') + AS my_col, + id FROM t1_values'; --source suite/funcs_1/views/fv1.inc @@ -1253,8 +1209,8 @@ $col_type, id FROM t1_values'; --source suite/funcs_1/views/fv2.inc -# 3.26. MAKE_SET(bits,str1,str2,...) -# ..... +# 3.26. MAKE_SET(bits,str1,str2,...) +# ..... # FIXME: to be implemented ################################################################################ @@ -1278,6 +1234,7 @@ SET sql_mode = ''; # let $message= "# The basic preparations end and the main test starts here"; --source include/show_msg80.inc +--disable_ps_protocol ##### The tests start here ##################################################### @@ -1306,18 +1263,18 @@ while ($select_id) if ($view_select_result) { # Create the VIEW + --replace_result $MYSQLTEST_VARDIR eval CREATE VIEW v1 AS $my_select; --disable_query_log eval set @got_errno= $mysql_errno ; let $run0= `SELECT @got_errno = 0`; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) - { - SELECT 'Attention: The last CREATE VIEW failed ' AS "" - UNION - SELECT '' ; - } --enable_query_log + if (!$run0) + { + --echo + --echo Attention: The last CREATE VIEW failed + --echo + } } # FIXME The loop over the modes will start here. @@ -1325,27 +1282,24 @@ while ($select_id) if ($simple_select_result) { # Simple SELECT on the base table of the VIEW for comparison - + if ($run_no_result) { --disable_result_log } + --replace_result $MYSQLTEST_VARDIR eval $my_select - WHERE select_id = $select_id OR select_id IS NULL; + WHERE select_id = $select_id OR select_id IS NULL order by id; if ($run_no_result) { --enable_result_log } - --disable_query_log - eval set @got_errno= $mysql_errno ; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) + if ($mysql_errno) { - SELECT 'Attention: The last SELECT on the base table failed' AS "" - UNION - SELECT '' ; + --echo + --echo Attention: The last SELECT on the base table failed + --echo } - --enable_query_log } # $run0 is 1, if CREATE VIEW was successful. @@ -1353,17 +1307,14 @@ while ($select_id) if ($run0) { # Check the CREATE VIEW statement + --replace_result $MYSQLTEST_VARDIR SHOW CREATE VIEW v1; - --disable_query_log - eval set @got_errno= $mysql_errno ; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) + if ($mysql_errno) { - SELECT 'Attention: The last SHOW CREATE VIEW failed' AS "" - UNION - SELECT '' ; + --echo + --echo Attention: The last SHOW CREATE VIEW failed + --echo } - --enable_query_log # Maybe a Join is faster if ($run_no_result) @@ -1372,21 +1323,17 @@ while ($select_id) } eval SELECT v1.* FROM v1 WHERE v1.id IN (SELECT id FROM t1_values - WHERE select_id = $select_id OR select_id IS NULL); + WHERE select_id = $select_id OR select_id IS NULL) order by id; if ($run_no_result) { --enable_result_log } - --disable_query_log - eval set @got_errno= $mysql_errno ; - let $print_warning= `SELECT @got_errno`; - if ($print_warning) + if ($mysql_errno) { - SELECT 'Attention: The last SELECT from VIEW failed' AS "" - UNION - SELECT '' ; + --echo + --echo Attention: The last SELECT from VIEW failed + --echo } - --enable_query_log DROP VIEW v1; } @@ -1395,11 +1342,12 @@ while ($select_id) # Produce two empty lines as separator between different SELECTS # to be tested. - --disable_query_log - SELECT '' AS ""; - --enable_query_log + --echo + --echo dec $select_id ; } +--enable_ps_protocol + DROP TABLE t1_selects, t1_modes, t1_values; diff --git a/mysql-test/suite/funcs_1/views/views_master.inc b/mysql-test/suite/funcs_1/views/views_master.inc index f08082676ed..b6628070705 100644 --- a/mysql-test/suite/funcs_1/views/views_master.inc +++ b/mysql-test/suite/funcs_1/views/views_master.inc @@ -4,7 +4,7 @@ # 2007-10-05 mleich # 1. Fix for Bug#31237 Test "ndb_views" fails because of differing order ... # 2. Cleanup of test -# 2007-11-15 hhunger WL#4084: Review and fix all disabled tests ... +# 2007-11-15 hhunger WL#4084: Review and fix all disabled tests ... let $message= ! Attention: The file with the expected results is not | thoroughly checked. @@ -19,7 +19,7 @@ let $message= ! Attention: The file with the expected results is not # If this bug is fixed, please # 1. set the following variable to 0 # 2. check, if the test passes -# 3. remove the workarounds +# 3. remove the workarounds let $have_bug_32285= 1; if ($have_bug_32285) { @@ -2004,7 +2004,7 @@ let $message= Testcase 3.3.1.49A ; # The annoying redundant # eval INSERT INTO t1_results VALUES (@v3_to_v1_options,@statement, # @v3_to_v1_violation,$mysql_errno); -# could not be put into a file to be sourced because of the closed +# could not be put into a file to be sourced because of the closed # Bug#10267 mysqltest, wrong number of loops when a script is sourced # within a loop # To be implemented later. From 9cb63bfbdd7c1d1e63b0dc2fb5346a500d785de5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 24 Apr 2008 16:43:08 +0500 Subject: [PATCH 082/435] Enabled rpl: rpl_view, rpl_ndb_multi, rpl_log_pos and main: user_limits, concurrent_innodb, lowercase_table3, ctype_create tests. mysql-test/suite/ndb/t/disabled.def: Removed test commented. mysql-test/suite/rpl/t/disabled.def: Enabled rpl_view, rpl_ndb_multi, rpl_log_pos tests. mysql-test/t/disabled.def: Enabled user_limits, concurrent_innodb, lowercase_table3, ctype_create tests. --- mysql-test/suite/ndb/t/disabled.def | 2 -- mysql-test/suite/rpl/t/disabled.def | 3 --- mysql-test/t/disabled.def | 5 ----- 3 files changed, 10 deletions(-) diff --git a/mysql-test/suite/ndb/t/disabled.def b/mysql-test/suite/ndb/t/disabled.def index f876039a042..c638c7b4774 100644 --- a/mysql-test/suite/ndb/t/disabled.def +++ b/mysql-test/suite/ndb/t/disabled.def @@ -14,5 +14,3 @@ partition_03ndb : BUG#16385 2006-03-24 mikael Partitions: crash when up ndb_partition_error2 : HF is not sure if the test can work as internded on all the platforms # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open -#ndb_binlog_ddl_multi : BUG#18976 2006-04-10 kent CRBR: multiple binlog, second binlog may miss schema log events -#ndb_binlog_discover : bug#21806 2006-08-24 diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 4375a2a8aa5..62acae3b15e 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -12,6 +12,3 @@ rpl_ddl : BUG#26418 2007-03-01 mleich Slave out of sync after CREATE/DROP TEMPORARY TABLE + ROLLBACK on master rpl_innodb_bug28430 : Bug #32247 2007-11-27 mats Test reports wrong value of "AUTO_INCREMENT" (on a partitioned InnoDB table) -rpl_view : Bug#32654: rpl_view.test fails randomly -rpl_ndb_multi : Bug#30751: rpl_ndb_multi missing row in output -rpl_log_pos : Bug#8693 Test 'rpl_log_pos' fails sometimes diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 89979ef8dee..2025725fbdc 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -9,13 +9,8 @@ # Do not use any TAB characters for whitespace. # ############################################################################## -user_limits : Bug#23921 random failure of user_limits.test - -concurrent_innodb : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences federated_transactions : Bug#29523 Transactions do not work -lowercase_table3 : Bug#32667 lowercase_table3.test reports to error log innodb_mysql : Bug#32724: innodb_mysql.test fails randomly -ctype_create : Bug#32965 main.ctype_create fails status : Bug#32966 main.status fails ps_ddl : Bug#12093 2007-12-14 pending WL#4165 / WL#4166 csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables From c82f8595b9bf6fb2fd12dc5fe41ce355d6b84f42 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 24 Apr 2008 17:13:35 +0200 Subject: [PATCH 083/435] Fix for funcs_1 tests which fail in 5.0.60 This is basically a backport of changes (only a few were missing) which were already pushed to 5.0-build and upmerged to 5.1-build, 6.0-build mysql-test/std_data/funcs_1/innodb_tb1.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb1.txt -> mysql-test/std_data/funcs_1/innodb_tb1.txt mysql-test/std_data/funcs_1/innodb_tb2.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb2.txt -> mysql-test/std_data/funcs_1/innodb_tb2.txt mysql-test/std_data/funcs_1/innodb_tb3.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb3.txt -> mysql-test/std_data/funcs_1/innodb_tb3.txt mysql-test/std_data/funcs_1/innodb_tb4.txt: Rename: mysql-test/suite/funcs_1/data/innodb_tb4.txt -> mysql-test/std_data/funcs_1/innodb_tb4.txt mysql-test/std_data/funcs_1/memory_tb1.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb1.txt -> mysql-test/std_data/funcs_1/memory_tb1.txt mysql-test/std_data/funcs_1/memory_tb2.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb2.txt -> mysql-test/std_data/funcs_1/memory_tb2.txt mysql-test/std_data/funcs_1/memory_tb3.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb3.txt -> mysql-test/std_data/funcs_1/memory_tb3.txt mysql-test/std_data/funcs_1/memory_tb4.txt: Rename: mysql-test/suite/funcs_1/data/memory_tb4.txt -> mysql-test/std_data/funcs_1/memory_tb4.txt mysql-test/std_data/funcs_1/myisam_tb1.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb1.txt -> mysql-test/std_data/funcs_1/myisam_tb1.txt mysql-test/std_data/funcs_1/myisam_tb2.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb2.txt -> mysql-test/std_data/funcs_1/myisam_tb2.txt mysql-test/std_data/funcs_1/myisam_tb3.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb3.txt -> mysql-test/std_data/funcs_1/myisam_tb3.txt mysql-test/std_data/funcs_1/myisam_tb4.txt: Rename: mysql-test/suite/funcs_1/data/myisam_tb4.txt -> mysql-test/std_data/funcs_1/myisam_tb4.txt mysql-test/std_data/funcs_1/t3.txt: Rename: mysql-test/suite/funcs_1/data/t3.txt -> mysql-test/std_data/funcs_1/t3.txt mysql-test/std_data/funcs_1/t4.txt: Rename: mysql-test/suite/funcs_1/data/t4.txt -> mysql-test/std_data/funcs_1/t4.txt mysql-test/std_data/funcs_1/t7.txt: Rename: mysql-test/suite/funcs_1/data/t7.txt -> mysql-test/std_data/funcs_1/t7.txt mysql-test/std_data/funcs_1/t9.txt: Rename: mysql-test/suite/funcs_1/data/t9.txt -> mysql-test/std_data/funcs_1/t9.txt mysql-test/Makefile.am: Correction for location of loadfiles mysql-test/std_data/funcs_1/load_file.txt: Missing file --- mysql-test/Makefile.am | 4 ++-- .../{suite/funcs_1/data => std_data/funcs_1}/innodb_tb1.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/innodb_tb2.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/innodb_tb3.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/innodb_tb4.txt | 0 mysql-test/std_data/funcs_1/load_file.txt | 1 + .../{suite/funcs_1/data => std_data/funcs_1}/memory_tb1.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/memory_tb2.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/memory_tb3.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/memory_tb4.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/myisam_tb1.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/myisam_tb2.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/myisam_tb3.txt | 0 .../{suite/funcs_1/data => std_data/funcs_1}/myisam_tb4.txt | 0 mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t3.txt | 0 mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t4.txt | 0 mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t7.txt | 0 mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t9.txt | 0 18 files changed, 3 insertions(+), 2 deletions(-) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/innodb_tb4.txt (100%) create mode 100644 mysql-test/std_data/funcs_1/load_file.txt rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/memory_tb4.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb1.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb2.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/myisam_tb4.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t3.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t4.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t7.txt (100%) rename mysql-test/{suite/funcs_1/data => std_data/funcs_1}/t9.txt (100%) diff --git a/mysql-test/Makefile.am b/mysql-test/Makefile.am index c65c2fd82a4..0dee970cd58 100644 --- a/mysql-test/Makefile.am +++ b/mysql-test/Makefile.am @@ -46,7 +46,7 @@ dist-hook: $(distdir)/std_data \ $(distdir)/std_data/ndb_backup50_data_be $(distdir)/std_data/ndb_backup50_data_le \ $(distdir)/lib \ - $(distdir)/funcs_1 + $(distdir)/std_data/funcs_1 -$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t -$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t @@ -80,7 +80,7 @@ install-data-local: $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be \ $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le \ $(DESTDIR)$(testdir)/lib \ - $(DESTDIR)$(testdir)/funcs_1 + $(DESTDIR)$(testdir)/std_data/funcs_1 $(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir) -$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t $(INSTALL_DATA) $(srcdir)/t/*.test $(DESTDIR)$(testdir)/t diff --git a/mysql-test/suite/funcs_1/data/innodb_tb1.txt b/mysql-test/std_data/funcs_1/innodb_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb1.txt rename to mysql-test/std_data/funcs_1/innodb_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/innodb_tb2.txt b/mysql-test/std_data/funcs_1/innodb_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb2.txt rename to mysql-test/std_data/funcs_1/innodb_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/innodb_tb3.txt b/mysql-test/std_data/funcs_1/innodb_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb3.txt rename to mysql-test/std_data/funcs_1/innodb_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/innodb_tb4.txt b/mysql-test/std_data/funcs_1/innodb_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/innodb_tb4.txt rename to mysql-test/std_data/funcs_1/innodb_tb4.txt diff --git a/mysql-test/std_data/funcs_1/load_file.txt b/mysql-test/std_data/funcs_1/load_file.txt new file mode 100644 index 00000000000..930ac1cf371 --- /dev/null +++ b/mysql-test/std_data/funcs_1/load_file.txt @@ -0,0 +1 @@ +Here is content from load_file diff --git a/mysql-test/suite/funcs_1/data/memory_tb1.txt b/mysql-test/std_data/funcs_1/memory_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb1.txt rename to mysql-test/std_data/funcs_1/memory_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/memory_tb2.txt b/mysql-test/std_data/funcs_1/memory_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb2.txt rename to mysql-test/std_data/funcs_1/memory_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/memory_tb3.txt b/mysql-test/std_data/funcs_1/memory_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb3.txt rename to mysql-test/std_data/funcs_1/memory_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/memory_tb4.txt b/mysql-test/std_data/funcs_1/memory_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/memory_tb4.txt rename to mysql-test/std_data/funcs_1/memory_tb4.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb1.txt b/mysql-test/std_data/funcs_1/myisam_tb1.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb1.txt rename to mysql-test/std_data/funcs_1/myisam_tb1.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb2.txt b/mysql-test/std_data/funcs_1/myisam_tb2.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb2.txt rename to mysql-test/std_data/funcs_1/myisam_tb2.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb3.txt b/mysql-test/std_data/funcs_1/myisam_tb3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb3.txt rename to mysql-test/std_data/funcs_1/myisam_tb3.txt diff --git a/mysql-test/suite/funcs_1/data/myisam_tb4.txt b/mysql-test/std_data/funcs_1/myisam_tb4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/myisam_tb4.txt rename to mysql-test/std_data/funcs_1/myisam_tb4.txt diff --git a/mysql-test/suite/funcs_1/data/t3.txt b/mysql-test/std_data/funcs_1/t3.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t3.txt rename to mysql-test/std_data/funcs_1/t3.txt diff --git a/mysql-test/suite/funcs_1/data/t4.txt b/mysql-test/std_data/funcs_1/t4.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t4.txt rename to mysql-test/std_data/funcs_1/t4.txt diff --git a/mysql-test/suite/funcs_1/data/t7.txt b/mysql-test/std_data/funcs_1/t7.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t7.txt rename to mysql-test/std_data/funcs_1/t7.txt diff --git a/mysql-test/suite/funcs_1/data/t9.txt b/mysql-test/std_data/funcs_1/t9.txt similarity index 100% rename from mysql-test/suite/funcs_1/data/t9.txt rename to mysql-test/std_data/funcs_1/t9.txt From 89b866e7bfc8965046626844ee22ecd5b4e5a774 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 25 Apr 2008 00:39:37 +0400 Subject: [PATCH 084/435] Bug#36023: Incorrect handling of zero length caused an assertion to fail. When a zero length is provided to the my_decimal_length_to_precision function along with unsigned_flag set to false it returns a negative value. For queries that employs temporary tables may cause failed assertion or excessive memory consumption while temporary table creation. Now the my_decimal_length_to_precision and the my_decimal_precision_to_length functions take unsigned_flag into account only if the length/precision argument is non-zero. mysql-test/t/type_decimal.test: Added a test case for the bug#36023: Incorrect handling of zero length caused an assertion to fail. mysql-test/r/type_decimal.result: Added a test case for the bug#36023: Incorrect handling of zero length caused an assertion to fail. sql/my_decimal.h: Bug#36023: Incorrect handling of zero length caused an assertion to fail. Now the my_decimal_length_to_precision and the my_decimal_precision_to_length functions take unsigned_flag into account only if the length/precision argument is non-zero. --- mysql-test/r/type_decimal.result | 7 +++++++ mysql-test/t/type_decimal.test | 8 ++++++++ sql/my_decimal.h | 13 +++++++++++-- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/type_decimal.result b/mysql-test/r/type_decimal.result index 2afd42f702e..03fbc898cc5 100644 --- a/mysql-test/r/type_decimal.result +++ b/mysql-test/r/type_decimal.result @@ -946,4 +946,11 @@ SELECT ROUND(20061108085411.000002); ROUND(20061108085411.000002) 20061108085411 DROP TABLE t1, t2, t3, t4, t5, t6; +create table t1(`c` decimal(9,2)); +insert into t1 values (300),(201.11); +select max(case 1 when 1 then c else null end) from t1 group by c; +max(case 1 when 1 then c else null end) +201.11 +300.00 +drop table t1; End of 5.0 tests diff --git a/mysql-test/t/type_decimal.test b/mysql-test/t/type_decimal.test index 6841b3cdd68..8a81908296f 100644 --- a/mysql-test/t/type_decimal.test +++ b/mysql-test/t/type_decimal.test @@ -521,4 +521,12 @@ SELECT ROUND(20061108085411.000002); DROP TABLE t1, t2, t3, t4, t5, t6; +# +# Bug#36023: Incorrect handling of zero length caused an assertion to fail. +# +create table t1(`c` decimal(9,2)); +insert into t1 values (300),(201.11); +select max(case 1 when 1 then c else null end) from t1 group by c; +drop table t1; + --echo End of 5.0 tests diff --git a/sql/my_decimal.h b/sql/my_decimal.h index c661579ea66..6a0d05921ec 100644 --- a/sql/my_decimal.h +++ b/sql/my_decimal.h @@ -164,14 +164,23 @@ inline int check_result_and_overflow(uint mask, int result, my_decimal *val) inline uint my_decimal_length_to_precision(uint length, uint scale, bool unsigned_flag) { - return (uint) (length - (scale>0 ? 1:0) - (unsigned_flag ? 0:1)); + /* Precision can't be negative thus ignore unsigned_flag when length is 0. */ + DBUG_ASSERT(length || !scale); + return (uint) (length - (scale>0 ? 1:0) - + (unsigned_flag || !length ? 0:1)); } inline uint32 my_decimal_precision_to_length(uint precision, uint8 scale, bool unsigned_flag) { + /* + When precision is 0 it means that original length was also 0. Thus + unsigned_flag is ignored in this case. + */ + DBUG_ASSERT(precision || !scale); set_if_smaller(precision, DECIMAL_MAX_PRECISION); - return (uint32)(precision + (scale>0 ? 1:0) + (unsigned_flag ? 0:1)); + return (uint32)(precision + (scale>0 ? 1:0) + + (unsigned_flag || !precision ? 0:1)); } inline From 5b8cdbf4a652e3a39aa2bd894c43293fb007a694 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 26 Apr 2008 02:45:58 +0500 Subject: [PATCH 085/435] Fixed bug#36006: Optimizer does table scan for SELECT COUNT(*) for ENGINE=MRG_MYISAM (should be optimized out). Before WL#3281 MERGE engine had the HA_NOT_EXACT_COUNT flag unset, and it worked with COUNT optimization as desired. After the removal of the HA_NOT_EXACT_COUNT flag neither HA_STATS_RECORDS_IS_EXACT (opposite to former HA_NOT_EXACT_COUNT flag) nor modern HA_HAS_RECORDS flag were not added to MERGE table flag mask. 1. The HA_HAS_RECORDS table flag has been set. 2. The ha_myisammrg::records method has been overridden to calculate total number of records in underlying tables. storage/myisammrg/myrg_records.c: Fixed bug#36006: Optimizer does table scan for select count(*). The myrg_records function has been added to calculate total number of records in underlying tables. include/myisammrg.h: Fixed bug#36006: Optimizer does table scan for select count(*). The myrg_records function declaration has been added. mysql-test/r/merge.result: Added test case for bug#36006. mysql-test/t/merge.test: Added test case for bug#36006. storage/myisammrg/CMakeLists.txt: Fixed bug#36006: Optimizer does table scan for select count(*). New myrg_records.c file has been added. storage/myisammrg/Makefile.am: Fixed bug#36006: Optimizer does table scan for select count(*). New myrg_records.c file has been added. storage/myisammrg/ha_myisammrg.cc: Fixed bug#36006: Optimizer does table scan for select count(*). The ha_myisammrg::records method has been overridden. storage/myisammrg/ha_myisammrg.h: Fixed bug#36006: Optimizer does table scan for select count(*). 1. The HA_HAS_RECORDS table flag has been set. 2. The ha_myisammrg::records method has been overridden. --- include/myisammrg.h | 1 + mysql-test/r/merge.result | 16 ++++++++++++++++ mysql-test/t/merge.test | 16 ++++++++++++++++ storage/myisammrg/CMakeLists.txt | 2 +- storage/myisammrg/Makefile.am | 2 +- storage/myisammrg/ha_myisammrg.cc | 6 ++++++ storage/myisammrg/ha_myisammrg.h | 2 ++ storage/myisammrg/myrg_records.c | 27 +++++++++++++++++++++++++++ 8 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 storage/myisammrg/myrg_records.c diff --git a/include/myisammrg.h b/include/myisammrg.h index cc6e6aac6cd..dafae157ee0 100644 --- a/include/myisammrg.h +++ b/include/myisammrg.h @@ -112,6 +112,7 @@ extern int myrg_reset(MYRG_INFO *info); extern void myrg_extrafunc(MYRG_INFO *info,invalidator_by_filename inv); extern ha_rows myrg_records_in_range(MYRG_INFO *info, int inx, key_range *min_key, key_range *max_key); +extern ha_rows myrg_records(MYRG_INFO *info); extern ulonglong myrg_position(MYRG_INFO *info); #ifdef __cplusplus diff --git a/mysql-test/r/merge.result b/mysql-test/r/merge.result index 4c05000573c..ef623b343e9 100644 --- a/mysql-test/r/merge.result +++ b/mysql-test/r/merge.result @@ -2006,3 +2006,19 @@ test.t1 optimize status OK FLUSH TABLES m1, t1; UNLOCK TABLES; DROP TABLE t1, m1; +CREATE TABLE t1(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM; +CREATE TABLE t2(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM; +CREATE TABLE t3(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM; +CREATE TABLE t4(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) +ENGINE=MRG_MYISAM UNION=(t1, t2, t3); +INSERT INTO t1 VALUES (1,1), (1,2),(1,3), (1,4); +INSERT INTO t2 VALUES (2,1), (2,2),(2,3), (2,4); +INSERT INTO t3 VALUES (3,1), (3,2),(3,3), (3,4); +EXPLAIN SELECT COUNT(*) FROM t1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away +EXPLAIN SELECT COUNT(*) FROM t4; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away +DROP TABLE t1, t2, t3, t4; +End of 5.1 tests diff --git a/mysql-test/t/merge.test b/mysql-test/t/merge.test index a4602a3b82a..76e746db037 100644 --- a/mysql-test/t/merge.test +++ b/mysql-test/t/merge.test @@ -1394,3 +1394,19 @@ FLUSH TABLES m1, t1; UNLOCK TABLES; DROP TABLE t1, m1; +# +# Bug#36006 - Optimizer does table scan for select count(*) +# +CREATE TABLE t1(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM; +CREATE TABLE t2(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM; +CREATE TABLE t3(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) ENGINE=MYISAM; +CREATE TABLE t4(C1 INT, C2 INT, KEY C1(C1), KEY C2(C2)) + ENGINE=MRG_MYISAM UNION=(t1, t2, t3); +INSERT INTO t1 VALUES (1,1), (1,2),(1,3), (1,4); +INSERT INTO t2 VALUES (2,1), (2,2),(2,3), (2,4); +INSERT INTO t3 VALUES (3,1), (3,2),(3,3), (3,4); +EXPLAIN SELECT COUNT(*) FROM t1; +EXPLAIN SELECT COUNT(*) FROM t4; +DROP TABLE t1, t2, t3, t4; + +--echo End of 5.1 tests diff --git a/storage/myisammrg/CMakeLists.txt b/storage/myisammrg/CMakeLists.txt index 403ca6c2776..1c94e2bd50c 100755 --- a/storage/myisammrg/CMakeLists.txt +++ b/storage/myisammrg/CMakeLists.txt @@ -26,7 +26,7 @@ SET(MYISAMMRG_SOURCES myrg_close.c myrg_create.c myrg_delete.c myrg_extra.c myr myrg_locking.c myrg_open.c myrg_panic.c myrg_queue.c myrg_range.c myrg_rfirst.c myrg_rkey.c myrg_rlast.c myrg_rnext.c myrg_rnext_same.c myrg_rprev.c myrg_rrnd.c myrg_rsame.c myrg_static.c myrg_update.c - myrg_write.c) + myrg_write.c myrg_records.c) IF(NOT SOURCE_SUBLIBS) ADD_LIBRARY(myisammrg ${MYISAMMRG_SOURCES}) diff --git a/storage/myisammrg/Makefile.am b/storage/myisammrg/Makefile.am index e058dfdbb5e..1ca51bc9d03 100644 --- a/storage/myisammrg/Makefile.am +++ b/storage/myisammrg/Makefile.am @@ -35,7 +35,7 @@ libmyisammrg_a_SOURCES = myrg_open.c myrg_extra.c myrg_info.c myrg_locking.c \ myrg_rkey.c myrg_rfirst.c myrg_rlast.c myrg_rnext.c \ myrg_rprev.c myrg_queue.c myrg_write.c myrg_range.c \ ha_myisammrg.cc \ - myrg_rnext_same.c + myrg_rnext_same.c myrg_records.c EXTRA_DIST = CMakeLists.txt plug.in diff --git a/storage/myisammrg/ha_myisammrg.cc b/storage/myisammrg/ha_myisammrg.cc index ea7021325e3..956f0e421cc 100644 --- a/storage/myisammrg/ha_myisammrg.cc +++ b/storage/myisammrg/ha_myisammrg.cc @@ -1154,6 +1154,12 @@ int ha_myisammrg::check(THD* thd, HA_CHECK_OPT* check_opt) } +ha_rows ha_myisammrg::records() +{ + return myrg_records(file); +} + + extern int myrg_panic(enum ha_panic_function flag); int myisammrg_panic(handlerton *hton, ha_panic_function flag) { diff --git a/storage/myisammrg/ha_myisammrg.h b/storage/myisammrg/ha_myisammrg.h index 977c45d1435..4e7ddebb836 100644 --- a/storage/myisammrg/ha_myisammrg.h +++ b/storage/myisammrg/ha_myisammrg.h @@ -42,6 +42,7 @@ class ha_myisammrg: public handler HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_NULL_IN_KEY | HA_CAN_INDEX_BLOBS | HA_FILE_BASED | HA_ANY_INDEX_MAY_BE_UNIQUE | HA_CAN_BIT_FIELD | + HA_HAS_RECORDS | HA_NO_COPY_ON_ALTER); } ulong index_flags(uint inx, uint part, bool all_parts) const @@ -94,4 +95,5 @@ class ha_myisammrg: public handler TABLE *table_ptr() { return table; } bool check_if_incompatible_data(HA_CREATE_INFO *info, uint table_changes); int check(THD* thd, HA_CHECK_OPT* check_opt); + ha_rows records(); }; diff --git a/storage/myisammrg/myrg_records.c b/storage/myisammrg/myrg_records.c new file mode 100644 index 00000000000..03815d934a8 --- /dev/null +++ b/storage/myisammrg/myrg_records.c @@ -0,0 +1,27 @@ +/* Copyright (C) 2008 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; version 2 of the License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#include "myrg_def.h" + +ha_rows myrg_records(MYRG_INFO *info) +{ + ha_rows records=0; + MYRG_TABLE *file; + DBUG_ENTER("myrg_records"); + + for (file=info->open_tables ; file != info->end_table ; file++) + records+= file->table->s->state.state.records; + DBUG_RETURN(records); +} From 92098d5d66ee4eccc7358954fd422ad680ee09f7 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 26 Apr 2008 19:52:43 -0400 Subject: [PATCH 086/435] Bug#36032 - Test funcs_1.processlist_priv_ps fails on Windows Bug#36033 - Test funcs_1.processlist_val_ps fails on Windows Bug#36034 - Test parts.part_supported_sql_func_ fails on Windows Bug#36036 - Test parts.partition_alter1_ fails on Windows Bug#36037 - Test parts.partition_alter2_ fails on Windows Bug#36038 - Test parts.partition_basic_ failing on Windows Bug#36039 - Test parts.partition_engine_ fails on Windows Bug#36040 - Test parts.partition_syntax_ fails on Windows Changeset to fix multiple 5.1.24-rc build bugs on Windows platforms. Many of these bugs had the same root causes. mysql-test/mysql-test-run.pl: Bug#36034 - Test parts.partition_supported_sql_func_ fails on Windows Kent suggested these changes to ensure all contents of mysql-test/std_data are copied to std_data_ln on Windows (no symlinks) mysql-test/suite/funcs_1/datadict/processlist_priv.inc: Bug#36032 - Test funcs_1.processlist_priv_ps fails on Windows Altered .inc file to include HOST column in the --replace_column clauses. Windows tests were failing due to use of localhost as localhost: rather than just localhost. mysql-test/suite/funcs_1/datadict/processlist_val.inc: Bug#36033 - Test funcs_1.processlist_val_ps fails on Windows Altered .inc file to include HOST column in the --replace_column clauses. Windows tests were failing due to use of localhost as localhost: rather than just localhost. mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result: Bug#36032 - Test funcs_1.processlist_priv_ps fails on Windows Altered .inc file to include HOST column in the --replace_column clauses. Windows tests were failing due to use of localhost as localhost: rather than just localhost. -reran .result file to account for change in --replace_column calls mysql-test/suite/funcs_1/r/processlist_priv_ps.result: Bug#36032 - Test funcs_1.processlist_priv_ps fails on Windows Altered .inc file to include HOST column in the --replace_column clauses. Windows tests were failing due to use of localhost as localhost: rather than just localhost. -reran .result file to account for change in --replace_column calls mysql-test/suite/funcs_1/r/processlist_val_no_prot.result: Bug#36033 - Test funcs_1.processlist_val_ps fails on Windows Altered .inc file to include HOST column in the --replace_column clauses. Windows tests were failing due to use of localhost as localhost: rather than just localhost. Reran .result file to account for changes to --replace_column clauses mysql-test/suite/funcs_1/r/processlist_val_ps.result: Bug#36033 - Test funcs_1.processlist_val_ps fails on Windows Altered .inc file to include HOST column in the --replace_column clauses. Windows tests were failing due to use of localhost as localhost: rather than just localhost. Reran .result file to account for changes to --replace_column clauses mysql-test/suite/parts/inc/partition_layout_check1.inc: Bug#36036 - Test parts.partition_alter1_ fails on Windows Bug#36037 - Test parts.partition_alter2_ fails on Windows Bug#36038 - Test parts.partition_basic_ failing on Windows Bug#36039 - Test parts.partition_engine_ fails on Windows Bug#36040 - Test parts.partition_syntax_ fails on Windows Added replace_result clause to account for Windows' use of '\r' vs. '\n' This difference was causing failures on Windows. Also, mleich added some changes to remove some -ls clauses that weren't necessary mysql-test/suite/parts/inc/partition_layout_check2.inc: Bug#36036 - Test parts.partition_alter1_ fails on Windows Bug#36037 - Test parts.partition_alter2_ fails on Windows Bug#36038 - Test parts.partition_basic_ failing on Windows Bug#36039 - Test parts.partition_engine_ fails on Windows Bug#36040 - Test parts.partition_syntax_ fails on Windows Added replace_result clause to account for Windows' use of '\r' vs. '\n' This difference was causing failures on Windows. Also, mleich added some changes to remove some -ls clauses that weren't necessary mysql-test/suite/parts/r/partition_basic_symlink_myisam.result: changes by mleich to remove unneeded use of -ls clause in .result file These clauses were removed from partition_layout_check1.inc and partition_layout_check2.inc --- mysql-test/mysql-test-run.pl | 8 +- .../funcs_1/datadict/processlist_priv.inc | 61 ++--- .../funcs_1/datadict/processlist_val.inc | 22 +- .../funcs_1/r/processlist_priv_no_prot.result | 222 +++++++++--------- .../funcs_1/r/processlist_priv_ps.result | 222 +++++++++--------- .../funcs_1/r/processlist_val_no_prot.result | 24 +- .../suite/funcs_1/r/processlist_val_ps.result | 24 +- .../parts/inc/partition_layout_check1.inc | 36 +-- .../parts/inc/partition_layout_check2.inc | 23 +- .../r/partition_basic_symlink_myisam.result | 1 - 10 files changed, 323 insertions(+), 320 deletions(-) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 9f84b49de3a..55fd70b80b7 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -2420,13 +2420,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 diff --git a/mysql-test/suite/funcs_1/datadict/processlist_priv.inc b/mysql-test/suite/funcs_1/datadict/processlist_priv.inc index 24df7ef8948..66c43c750fd 100644 --- a/mysql-test/suite/funcs_1/datadict/processlist_priv.inc +++ b/mysql-test/suite/funcs_1/datadict/processlist_priv.inc @@ -53,8 +53,9 @@ # WL#3982 Test information_schema.processlist # # # # Last update: # -# 2007-08-14 mleich Corrections # -# # +# 2008-04-14 pcrews replace HOST to account for Windows' use of # +# localhost (host: causing diffs on Windows # +# test runs # ######################################################################## # The following variables are used in "datadict_priv.inc" and here. @@ -112,11 +113,11 @@ connect (con100,localhost,ddicttestuser1,ddictpass,information_schema); --echo #################################################################################### connection default; eval SHOW CREATE TABLE $table; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME eval SHOW $table; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME eval SELECT * FROM $table $select_where ORDER BY id; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME eval SELECT $columns FROM $table $select_where ORDER BY id; --source suite/funcs_1/datadict/datadict_priv.inc --real_sleep 0.3 @@ -128,11 +129,11 @@ connection con100; --echo SHOW/SELECT shows only the processes (1) of the user. --echo #################################################################################### eval SHOW CREATE TABLE $table; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME eval SHOW $table; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME eval SELECT * FROM $table $select_where ORDER BY id; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME eval SELECT $columns FROM $table $select_where ORDER BY id; --source suite/funcs_1/datadict/datadict_priv.inc --real_sleep 0.3 @@ -154,9 +155,9 @@ GRANT PROCESS ON *.* TO ddicttestuser1@'localhost' IDENTIFIED BY 'ddictpass'; --echo #################################################################################### connection con100; SHOW GRANTS; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -166,9 +167,9 @@ SELECT * FROM information_schema.processlist; --echo #################################################################################### connect (con101,localhost,ddicttestuser1,ddictpass,information_schema); SHOW GRANTS; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -188,9 +189,9 @@ GRANT PROCESS ON *.* TO ''@'localhost'; --echo #################################################################################### connect (anonymous1,localhost,'',,information_schema); SHOW GRANTS; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -210,9 +211,9 @@ connect (con102,localhost,ddicttestuser1,ddictpass,information_schema); --echo ddicttestuser1 are visible. --echo #################################################################################### SHOW GRANTS; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -235,10 +236,10 @@ SHOW GRANTS FOR ''@'localhost'; if ($fixed_bug_30395) { # Bug#30395 strange results after REVOKE PROCESS ON *.* FROM ... ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; } ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -257,9 +258,9 @@ connect (con103,localhost,ddicttestuser1,ddictpass,information_schema); --echo Only the processes of ddicttestuser1 user are visible. --echo #################################################################################### SHOW GRANTS FOR 'ddicttestuser1'@'localhost'; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -279,9 +280,9 @@ connect (con104,localhost,ddicttestuser1,ddictpass,information_schema); --echo Only the processes of ddicttestuser1 are visible. --echo #################################################################################### SHOW GRANTS FOR 'ddicttestuser1'@'localhost'; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -326,9 +327,9 @@ connect (con200,localhost,ddicttestuser2,ddictpass,information_schema); --echo ddicttestuser2 has now the PROCESS privilege and sees all connections --echo #################################################################################### SHOW GRANTS FOR 'ddicttestuser2'@'localhost'; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -347,9 +348,9 @@ connect (con201,localhost,ddicttestuser2,ddictpass,information_schema); --echo ddicttestuser2 has no more the PROCESS privilege and can only see own connects --echo #################################################################################### SHOW GRANTS; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -370,9 +371,9 @@ connect (con107,localhost,ddicttestuser1,ddictpass,information_schema); SHOW GRANTS FOR 'ddicttestuser1'@'localhost'; --error ER_ACCESS_DENIED_ERROR GRANT PROCESS ON *.* TO 'ddicttestuser2'@'localhost'; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 @@ -394,9 +395,9 @@ connect (con108,localhost,ddicttestuser1,ddictpass,information_schema); --echo Therefore the missing SELECT privilege does not affect SELECTs on PROCESSLIST. --echo #################################################################################### SHOW GRANTS FOR 'ddicttestuser1'@'localhost'; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SHOW processlist; ---replace_column 1 ID 6 TIME +--replace_column 1 ID 3 HOST_NAME 6 TIME SELECT * FROM information_schema.processlist; --real_sleep 0.3 diff --git a/mysql-test/suite/funcs_1/datadict/processlist_val.inc b/mysql-test/suite/funcs_1/datadict/processlist_val.inc index 69a32553f65..29fbd5f616d 100644 --- a/mysql-test/suite/funcs_1/datadict/processlist_val.inc +++ b/mysql-test/suite/funcs_1/datadict/processlist_val.inc @@ -34,7 +34,11 @@ # WL#3982 Test information_schema.processlist # # 2008-01-05 HHunger Changed time test and long statement test. # # It could happen that the long statement test # -# fail due to timing problems. # # # +# fail due to timing problems. # +# 2008-04-14 pcrews Changed --replace_columns to include host # +# this is due to failure occurring on Windows # +# Win results included port number as well causing # +# test failures # ######################################################################## # Basic preparations @@ -76,9 +80,9 @@ SHOW FULL PROCESSLIST; # # Expect to see now DB = 'information_schema' USE information_schema; ---replace_column 1 6 <= c type of ranges was ignoring the DESC flag. However some engines like InnoDB have the primary key parts as a suffix for every secondary key. When such primary key suffix is used for ordering ignoring the DESC is not valid. But we generally would like to do this because it's faster. Fixed by performing only reverse scan if the primary key is used. Removed some dead code in the process. mysql-test/r/innodb_mysql.result: Bug#37830 : test case mysql-test/t/innodb_mysql.test: Bug#37830 : test case sql/opt_range.cc: Bug#37830 : - preserve and use used_key_parts to distinguish when a primary key suffix is used - removed some dead code sql/opt_range.h: Bug#37830 : - preserve used_key_parts - dead code removed sql/sql_select.cc: Bug#37830 : Do only reverse order traversal if the primary key suffix is used. --- mysql-test/r/innodb_mysql.result | 15 ++++++++ mysql-test/t/innodb_mysql.test | 18 +++++++++ sql/opt_range.cc | 66 ++++++-------------------------- sql/opt_range.h | 4 +- sql/sql_select.cc | 59 +++++++++++++++++----------- 5 files changed, 83 insertions(+), 79 deletions(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index b487cfd9a4b..47fa331c9ab 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1246,4 +1246,19 @@ set global innodb_autoextend_increment=@my_innodb_autoextend_increment; set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency; set global innodb_commit_concurrency=0; set global innodb_commit_concurrency=@my_innodb_commit_concurrency; +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b)) +ENGINE=InnoDB; +INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1); +INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1; +EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range t1_b t1_b 5 NULL 4 Using where +SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; +a b c +8 1 1 +7 1 1 +6 1 1 +5 1 1 +4 1 1 +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 59ee7c274bb..e15d1aee08a 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -996,4 +996,22 @@ set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency; set global innodb_commit_concurrency=0; set global innodb_commit_concurrency=@my_innodb_commit_concurrency; +# +# Bug #37830: ORDER BY ASC/DESC - no difference +# + +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b)) + ENGINE=InnoDB; + +INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1); +INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1; + +# should be range access +EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; + +# should produce '8 7 6 5 4' for a +SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; + +DROP TABLE t1; + --echo End of 5.0 tests diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 17a4701b515..adc5f1eb9c7 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -7094,7 +7094,8 @@ bool QUICK_RANGE_SELECT::row_in_ranges() QUICK_SELECT_DESC::QUICK_SELECT_DESC(QUICK_RANGE_SELECT *q, uint used_key_parts_arg) - : QUICK_RANGE_SELECT(*q), rev_it(rev_ranges) + : QUICK_RANGE_SELECT(*q), rev_it(rev_ranges), + used_key_parts (used_key_parts_arg) { QUICK_RANGE *r; @@ -7136,10 +7137,11 @@ int QUICK_SELECT_DESC::get_next() int result; if (last_range) { // Already read through key - result = ((last_range->flag & EQ_RANGE) - ? file->index_next_same(record, (byte*) last_range->min_key, - last_range->min_length) : - file->index_prev(record)); + result = ((last_range->flag & EQ_RANGE && + used_key_parts <= head->key_info[index].key_parts) ? + file->index_next_same(record, (byte*) last_range->min_key, + last_range->min_length) : + file->index_prev(record)); if (!result) { if (cmp_prev(*rev_it.ref()) == 0) @@ -7163,7 +7165,9 @@ int QUICK_SELECT_DESC::get_next() continue; } - if (last_range->flag & EQ_RANGE) + if (last_range->flag & EQ_RANGE && + used_key_parts <= head->key_info[index].key_parts) + { result= file->index_read(record, (byte*) last_range->max_key, last_range->max_length, HA_READ_KEY_EXACT); @@ -7171,6 +7175,8 @@ int QUICK_SELECT_DESC::get_next() else { DBUG_ASSERT(last_range->flag & NEAR_MAX || + (last_range->flag & EQ_RANGE && + used_key_parts > head->key_info[index].key_parts) || range_reads_after_key(last_range)); result=file->index_read(record, (byte*) last_range->max_key, last_range->max_length, @@ -7268,54 +7274,6 @@ bool QUICK_SELECT_DESC::range_reads_after_key(QUICK_RANGE *range_arg) } -/* TRUE if we are reading over a key that may have a NULL value */ - -#ifdef NOT_USED -bool QUICK_SELECT_DESC::test_if_null_range(QUICK_RANGE *range_arg, - uint used_key_parts) -{ - uint offset, end; - KEY_PART *key_part = key_parts, - *key_part_end= key_part+used_key_parts; - - for (offset= 0, end = min(range_arg->min_length, range_arg->max_length) ; - offset < end && key_part != key_part_end ; - offset+= key_part++->store_length) - { - if (!memcmp((char*) range_arg->min_key+offset, - (char*) range_arg->max_key+offset, - key_part->store_length)) - continue; - - if (key_part->null_bit && range_arg->min_key[offset]) - return 1; // min_key is null and max_key isn't - // Range doesn't cover NULL. This is ok if there is no more null parts - break; - } - /* - If the next min_range is > NULL, then we can use this, even if - it's a NULL key - Example: SELECT * FROM t1 WHERE a = 2 AND b >0 ORDER BY a DESC,b DESC; - - */ - if (key_part != key_part_end && key_part->null_bit) - { - if (offset >= range_arg->min_length || range_arg->min_key[offset]) - return 1; // Could be null - key_part++; - } - /* - If any of the key parts used in the ORDER BY could be NULL, we can't - use the key to sort the data. - */ - for (; key_part != key_part_end ; key_part++) - if (key_part->null_bit) - return 1; // Covers null part - return 0; -} -#endif - - void QUICK_RANGE_SELECT::add_info_string(String *str) { KEY *key_info= head->key_info + index; diff --git a/sql/opt_range.h b/sql/opt_range.h index 3a737323eb7..8856223b371 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -667,12 +667,10 @@ public: int get_type() { return QS_TYPE_RANGE_DESC; } private: bool range_reads_after_key(QUICK_RANGE *range); -#ifdef NOT_USED - bool test_if_null_range(QUICK_RANGE *range, uint used_key_parts); -#endif int reset(void) { rev_it.rewind(); return QUICK_RANGE_SELECT::reset(); } List rev_ranges; List_iterator rev_it; + uint used_key_parts; }; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index d1e5837329b..d3396de7afe 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -12088,26 +12088,25 @@ part_of_refkey(TABLE *table,Field *field) } -/***************************************************************************** - Test if one can use the key to resolve ORDER BY +/** + Test if a key can be used to resolve ORDER BY - SYNOPSIS - test_if_order_by_key() - order Sort order - table Table to sort - idx Index to check - used_key_parts Return value for used key parts. + used_key_parts is set to correct key parts used if return value != 0 + (On other cases, used_key_part may be changed). + Note that the value may actually be greater than the number of index + key parts. This can happen for storage engines that have the primary + key parts as a suffix for every secondary key. + @param order Sort order + @param table Table to sort + @param idx Index to check + @param[out] used_key_parts Return value for used key parts. - NOTES - used_key_parts is set to correct key parts used if return value != 0 - (On other cases, used_key_part may be changed) - - RETURN - 1 key is ok. - 0 Key can't be used - -1 Reverse key can be used -*****************************************************************************/ + @return indication if the key can be used for sorting + @retval 1 key can be used for reading data in order. + @retval 0 Key can't be used + @retval -1 Reverse read on the key can be used +*/ static int test_if_order_by_key(ORDER *order, TABLE *table, uint idx, uint *used_key_parts) @@ -12172,11 +12171,27 @@ static int test_if_order_by_key(ORDER *order, TABLE *table, uint idx, reverse=flag; // Remember if reverse key_part++; } - *used_key_parts= on_primary_key ? table->key_info[idx].key_parts : - (uint) (key_part - table->key_info[idx].key_part); - if (reverse == -1 && !(table->file->index_flags(idx, *used_key_parts-1, 1) & - HA_READ_PREV)) - reverse= 0; // Index can't be used + if (on_primary_key) + { + uint used_key_parts_secondary= table->key_info[idx].key_parts; + uint used_key_parts_pk= + (uint) (key_part - table->key_info[table->s->primary_key].key_part); + *used_key_parts= used_key_parts_pk + used_key_parts_secondary; + + if (reverse == -1 && + (!(table->file->index_flags(idx, used_key_parts_secondary - 1, 1) & + HA_READ_PREV) || + !(table->file->index_flags(table->s->primary_key, + used_key_parts_pk - 1, 1) & HA_READ_PREV))) + reverse= 0; // Index can't be used + } + else + { + *used_key_parts= (uint) (key_part - table->key_info[idx].key_part); + if (reverse == -1 && + !(table->file->index_flags(idx, *used_key_parts-1, 1) & HA_READ_PREV)) + reverse= 0; // Index can't be used + } DBUG_RETURN(reverse); } From 95ca2c6d96735edac951bd3b6995847e3ad03536 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Wed, 16 Jul 2008 16:29:22 -0600 Subject: [PATCH 270/435] Bug#30087 Set query_cache_size, if the value is too small, get a unclear warning Reverting the previous patch --- mysql-test/r/query_cache.result | 8 ++++---- sql/set_var.cc | 7 ++++++- sql/share/errmsg.txt | 14 +++++++------- sql/sql_cache.cc | 29 ----------------------------- sql/sql_cache.h | 2 -- 5 files changed, 17 insertions(+), 43 deletions(-) diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result index c40e75fc29b..fa80a44c177 100644 --- a/mysql-test/r/query_cache.result +++ b/mysql-test/r/query_cache.result @@ -564,7 +564,7 @@ select * from t1; a set GLOBAL query_cache_size=1024; Warnings: -Warning 1282 Query cache failed to set size 1024 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 1024; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 @@ -572,7 +572,7 @@ select * from t1; a set GLOBAL query_cache_size=10240; Warnings: -Warning 1282 Query cache failed to set size 10240 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 10240; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 @@ -580,7 +580,7 @@ select * from t1; a set GLOBAL query_cache_size=20480; Warnings: -Warning 1282 Query cache failed to set size 20480 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 20480; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 @@ -588,7 +588,7 @@ select * from t1; a set GLOBAL query_cache_size=40960; Warnings: -Warning 1282 Query cache failed to set size 40960 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 40960; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 diff --git a/sql/set_var.cc b/sql/set_var.cc index fd9beff35b7..84766e511ca 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1342,7 +1342,12 @@ static void fix_net_retry_count(THD *thd __attribute__((unused)), static void fix_query_cache_size(THD *thd, enum_var_type type) { #ifdef HAVE_QUERY_CACHE - query_cache_size= query_cache.resize(query_cache_size); + ulong requested= query_cache_size; + query_cache.resize(query_cache_size); + if (requested != query_cache_size) + push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE), + requested, query_cache_size); #endif } diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 0cb6672732c..7d345d633c6 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -4992,13 +4992,13 @@ ER_WRONG_NAME_FOR_CATALOG 42000 spa "Nombre de catalog incorrecto '%-.100s'" swe "Felaktigt katalog namn '%-.100s'" ER_WARN_QC_RESIZE - eng "Query cache failed to set size %lu (minimal value: %lu); new query cache size is %lu" - ger "nderung der Query-Cache-Gre auf %lu (Minimale Zahl: %lu) fehlgeschlagen; neue Query-Cache-Gre ist %lu" - por "Falha em Query cache para configurar tamanho %lu (Nmero mnimo: %lu), novo tamanho de query cache %lu" - rus " %lu (minimal value: %lu), - %lu" - spa "Query cache fallada para configurar tamao %lu (Nmero mnimo: %lu), nuevo tamao de query cache es %lu" - swe "Storleken av "Query cache" kunde inte sttas till %lu (minsta vrde: %lu); ny storlek r %lu" - ukr " Ԧ ͦ %lu (minimal value: %lu), ͦ Ԧ - %lu" + eng "Query cache failed to set size %lu; new query cache size is %lu" + ger "nderung der Query-Cache-Gre auf %lu fehlgeschlagen; neue Query-Cache-Gre ist %lu" + por "Falha em Query cache para configurar tamanho %lu, novo tamanho de query cache %lu" + rus " %lu, - %lu" + spa "Query cache fallada para configurar tamao %lu, nuevo tamao de query cache es %lu" + swe "Storleken av "Query cache" kunde inte sttas till %lu, ny storlek r %lu" + ukr " Ԧ ͦ %lu, ͦ Ԧ - %lu" ER_BAD_FT_COLUMN eng "Column '%-.64s' cannot be part of FULLTEXT index" ger "Feld '%-.64s' kann nicht Teil eines FULLTEXT-Index sein" diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index cce5123aef3..f8906a17c12 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -816,16 +816,6 @@ ulong Query_cache::resize(ulong query_cache_size_arg) free_cache(); query_cache_size= query_cache_size_arg; ::query_cache_size= init_cache(); - - if (::query_cache_size != query_cache_size_arg) - { - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE), - query_cache_size_arg, - get_minimal_size_limit(), - ::query_cache_size); - } - STRUCT_UNLOCK(&structure_guard_mutex); DBUG_RETURN(::query_cache_size); } @@ -1624,25 +1614,6 @@ void Query_cache::init() } -/** - Return the lowest possible query cache size. -*/ - -ulong Query_cache::get_minimal_size_limit() -{ - ulong approx_additional_data_size= (sizeof(Query_cache) + - sizeof(gptr)*(def_query_hash_size+ - def_table_hash_size)); - - ulong data_size= (min_allocation_unit << QUERY_CACHE_MEM_BIN_STEP_PWR2 << - QUERY_CACHE_MEM_BIN_FIRST_STEP_PWR2) + - ALIGN_SIZE(1) - 1 + - (1 << QUERY_CACHE_MEM_BIN_STEP_PWR2) - 1 + - (1 << QUERY_CACHE_MEM_BIN_FIRST_STEP_PWR2) - 1; - - return(data_size + approx_additional_data_size); -} - ulong Query_cache::init_cache() { uint mem_bin_count, num, step; diff --git a/sql/sql_cache.h b/sql/sql_cache.h index c5d89780af3..34fc3a5c8d5 100644 --- a/sql/sql_cache.h +++ b/sql/sql_cache.h @@ -245,8 +245,6 @@ private: void free_query_internal(Query_cache_block *point); - ulong get_minimal_size_limit(); - protected: /* The following mutex is locked when searching or changing global From aa5731dad97ec8ac95d2e4cdd43211460d546b29 Mon Sep 17 00:00:00 2001 From: Timothy Smith Date: Wed, 16 Jul 2008 16:58:45 -0600 Subject: [PATCH 271/435] Bug #38180 options are read from ~/my.cnf instead of ~/.my.cnf Pull out some of unpack_dirname() into normalize_dirname(); this new function does not expand "~" to the home directory. Use this function in unpack_dirname(), and use it during init_default_directories() to remove duplicate entries without losing track of which directory is a user's home dir. --- include/my_sys.h | 1 + mysys/default.c | 3 +- mysys/mf_pack.c | 79 +++++++++++++++++++++++++++++++++--------------- 3 files changed, 57 insertions(+), 26 deletions(-) diff --git a/include/my_sys.h b/include/my_sys.h index d656326e968..db01223602d 100644 --- a/include/my_sys.h +++ b/include/my_sys.h @@ -681,6 +681,7 @@ extern my_string fn_format(my_string to,const char *name,const char *dir, const char *form, uint flag); extern size_s strlength(const char *str); extern void pack_dirname(my_string to,const char *from); +extern uint normalize_dirname(char * to, const char *from); extern uint unpack_dirname(my_string to,const char *from); extern uint cleanup_dirname(my_string to,const char *from); extern uint system_filename(my_string to,const char *from); diff --git a/mysys/default.c b/mysys/default.c index b7eb963e395..b709b33e2f8 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -965,8 +965,7 @@ static int add_directory(MEM_ROOT *alloc, const char *dir, const char **dirs) char *p; my_bool err __attribute__((unused)); - /* Normalize directory name */ - len= unpack_dirname(buf, dir); + len= normalize_dirname(buf, dir); if (!(p= strmake_root(alloc, buf, len))) return 1; /* Failure */ /* Should never fail if DEFAULT_DIRS_SIZE is correct size */ diff --git a/mysys/mf_pack.c b/mysys/mf_pack.c index 9e8b6516f63..915c11ec51d 100644 --- a/mysys/mf_pack.c +++ b/mysys/mf_pack.c @@ -266,22 +266,64 @@ void symdirget(char *dir) #endif /* USE_SYMDIR */ -/* - Fixes a directroy name so that can be used by open() +/** + Convert a directory name to a format which can be compared as strings - SYNOPSIS - unpack_dirname() - to result-buffer, FN_REFLEN characters. may be == from - from 'Packed' directory name (may contain ~) + @param to result buffer, FN_REFLEN chars in length; may be == from + @param from 'packed' directory name, in whatever format + @returns size of the normalized name - IMPLEMENTATION - Make that last char of to is '/' if from not empty and - from doesn't end in FN_DEVCHAR - Uses cleanup_dirname and changes ~/.. to home_dir/.. + @details + - Ensures that last char is FN_LIBCHAR, unless it is FN_DEVCHAR + - Uses cleanup_dirname - Changes a UNIX filename to system filename (replaces / with \ on windows) + It does *not* expand ~/ (although, see cleanup_dirname). Nor does it do + any case folding. All case-insensitive normalization should be done by + the caller. +*/ - RETURN +uint normalize_dirname(char *to, const char *from) +{ + uint length; + char buff[FN_REFLEN]; + DBUG_ENTER("normalize_dirname"); + + /* + Despite the name, this actually converts the name to the system's + format (TODO: rip out the non-working VMS stuff and name this + properly). + */ + (void) intern_filename(buff, from); + length= (uint) strlen(buff); /* Fix that '/' is last */ + if (length && +#ifdef FN_DEVCHAR + buff[length - 1] != FN_DEVCHAR && +#endif + buff[length - 1] != FN_LIBCHAR && buff[length - 1] != '/') + { + buff[length]= FN_LIBCHAR; + buff[length + 1]= '\0'; + } + + length=cleanup_dirname(to, buff); + + DBUG_RETURN(length); +} + + +/** + Fixes a directory name so that can be used by open() + + @param to Result buffer, FN_REFLEN characters. May be == from + @param from 'Packed' directory name (may contain ~) + + @details + - Uses normalize_dirname() + - Expands ~/... to home_dir/... + - Resolves MySQL's fake "foo.sym" symbolic directory names (if USE_SYMDIR) + - Changes a UNIX filename to system filename (replaces / with \ on windows) + + @returns Length of new directory name (= length of to) */ @@ -291,19 +333,8 @@ uint unpack_dirname(my_string to, const char *from) char buff[FN_REFLEN+1+4],*suffix,*tilde_expansion; DBUG_ENTER("unpack_dirname"); - (void) intern_filename(buff,from); /* Change to intern name */ - length= (uint) strlen(buff); /* Fix that '/' is last */ - if (length && -#ifdef FN_DEVCHAR - buff[length-1] != FN_DEVCHAR && -#endif - buff[length-1] != FN_LIBCHAR && buff[length-1] != '/') - { - buff[length]=FN_LIBCHAR; - buff[length+1]= '\0'; - } + length= normalize_dirname(buff, from); - length=cleanup_dirname(buff,buff); if (buff[0] == FN_HOMELIB) { suffix=buff+1; tilde_expansion=expand_tilde(&suffix); From 49f09f136f2264824909c1bda919aa8d18a6673a Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 17 Jul 2008 01:33:45 +0200 Subject: [PATCH 272/435] Set version to 5.0.66a --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 247a17da940..a1dc9d36d82 100644 --- a/configure.in +++ b/configure.in @@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! # remember to also change ndb version below and update version.c in ndb -AM_INIT_AUTOMAKE(mysql, 5.0.66) +AM_INIT_AUTOMAKE(mysql, 5.0.66a) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 From 68a0128ce500c3018aef16c3686030e859cd06a9 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Thu, 17 Jul 2008 10:43:02 +0200 Subject: [PATCH 273/435] Null merge. From 48981e9547a50f699e981a7f627af3a0f9e0a1cf Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Thu, 17 Jul 2008 11:03:17 +0200 Subject: [PATCH 274/435] Fix for bug#38164. Removed test of values larger than max int for 32 bits. --- .../include/query_prealloc_size_basic.inc | 118 ++++++++++-------- .../r/query_prealloc_size_basic_32.result | 32 ++--- .../r/query_prealloc_size_basic_64.result | 30 ++--- 3 files changed, 81 insertions(+), 99 deletions(-) diff --git a/mysql-test/include/query_prealloc_size_basic.inc b/mysql-test/include/query_prealloc_size_basic.inc index 1793d1874af..ac005b696fa 100644 --- a/mysql-test/include/query_prealloc_size_basic.inc +++ b/mysql-test/include/query_prealloc_size_basic.inc @@ -1,32 +1,35 @@ -############## mysql-test\t\query_prealloc_size_basic.test ############### -# # -# Variable Name: query_prealloc_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 8192 # -# Range: 8192-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -# Description: Test Cases of Dynamic System Variable query_prealloc_size # -# that checks the behavior of this variable in the following ways# -# * Default Value # -# * Valid & Invalid values # -# * Scope & Access method # -# * Data Integrity # -# # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html # -# # -############################################################################### +################# mysql-test\t\query_prealloc_size_basic.test ################## +# # +# Variable Name: query_prealloc_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 8192 # +# Range: 8192-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable query_prealloc_size # +# that checks the behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # +# # +# Last Modification: # +# 2008-07-14 hhunger removed values for 64 bit platforms. # +# # +################################################################################ --source include/load_sysvars.inc ######################################################################## -# START OF query_prealloc_size TESTS # +# START OF query_prealloc_size TESTS # ######################################################################## @@ -42,7 +45,7 @@ SELECT @start_session_value; --echo '#--------------------FN_DYNVARS_005_01-------------------------#' ######################################################################## -# Display the DEFAULT value of myisam_block_size # +# Display the DEFAULT value of myisam_block_size # ######################################################################## SET @@global.query_prealloc_size = 100; @@ -56,7 +59,7 @@ SELECT @@session.query_prealloc_size ; --echo '#--------------------FN_DYNVARS_005_02-------------------------#' ######################################################################## -# Check the DEFAULT value of query_prealloc_size # +# Check the DEFAULT value of query_prealloc_size # ######################################################################## SET @@global.query_prealloc_size = DEFAULT; @@ -67,30 +70,32 @@ SELECT @@session.query_prealloc_size = 8192; --echo '#--------------------FN_DYNVARS_005_03-------------------------#' -################################################################################## -# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # -################################################################################## +################################################################################ +# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # +################################################################################ SET @@global.query_prealloc_size = 8192; SELECT @@global.query_prealloc_size ; -SET @@global.query_prealloc_size = 4294967295; -SELECT @@global.query_prealloc_size ; +# Due to problems with 64 bit machines having less than 6 GB main memory. +#SET @@global.query_prealloc_size = 4294967295; +#SELECT @@global.query_prealloc_size ; SET @@global.query_prealloc_size = 655354; SELECT @@global.query_prealloc_size ; --echo '#--------------------FN_DYNVARS_005_04-------------------------#' -################################################################################### -# Change the value of query_prealloc_size to a valid value for SESSION Scope # -################################################################################### - +################################################################################## +# Change the value of query_prealloc_size to a valid value for SESSION Scope # +################################################################################## + SET @@session.query_prealloc_size = 8192; SELECT @@session.query_prealloc_size ; -SET @@session.query_prealloc_size = 4294967295; -SELECT @@session.query_prealloc_size ; +# Due to problems with 64 bit machines having less than 6 GB main memory. +#SET @@session.query_prealloc_size = 4294967295; +#SELECT @@session.query_prealloc_size ; SET @@session.query_prealloc_size = 655345; SELECT @@session.query_prealloc_size ; @@ -100,7 +105,7 @@ SELECT @@session.query_prealloc_size ; --echo '#------------------FN_DYNVARS_005_05-----------------------#' #################################################################### -# Change the value of query_prealloc_size to an invalid value # +# Change the value of query_prealloc_size to an invalid value # #################################################################### SET @@global.query_prealloc_size = 0; @@ -109,8 +114,9 @@ SELECT @@global.query_prealloc_size ; SET @@global.query_prealloc_size = -1024; SELECT @@global.query_prealloc_size ; -SET @@global.query_prealloc_size = 429496729533; -SELECT @@global.query_prealloc_size ; +# Due to problems with 64 bit machines having less than 6 GB main memory. +#SET @@global.query_prealloc_size = 429496729533; +#SELECT @@global.query_prealloc_size ; --Error ER_PARSE_ERROR @@ -161,8 +167,8 @@ SELECT @@session.query_prealloc_size ; #################################################################### -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; --echo '#------------------FN_DYNVARS_005_07-----------------------#' @@ -170,8 +176,8 @@ WHERE VARIABLE_NAME='query_prealloc_size '; # Check if the value in SESSION Table matches value in variable # #################################################################### -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@ -188,18 +194,19 @@ SELECT @@global.query_prealloc_size ; --echo '#---------------------FN_DYNVARS_001_09----------------------#' -#################################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -#################################################################################### +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ SET @@global.query_prealloc_size = 10; SELECT @@query_prealloc_size = @@global.query_prealloc_size ; --echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to # +# to the same session variable # +############################################################################## SET @@query_prealloc_size = 100; SELECT @@query_prealloc_size = @@local.query_prealloc_size ; @@ -207,9 +214,9 @@ SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; --echo '#---------------------FN_DYNVARS_001_11----------------------#' -################################################################################### -# Check if query_prealloc_size can be accessed with and without @@ sign # -################################################################################### +################################################################################ +# Check if query_prealloc_size can be accessed with and without @@ sign # +################################################################################ SET query_prealloc_size = 1; SELECT @@query_prealloc_size ; @@ -235,5 +242,6 @@ SELECT @@session.query_prealloc_size ; ############################################################# -# END OF query_prealloc_size TESTS # +# END OF query_prealloc_size TESTS # ############################################################# + diff --git a/mysql-test/r/query_prealloc_size_basic_32.result b/mysql-test/r/query_prealloc_size_basic_32.result index 176e4fb810a..fe8aba990a7 100644 --- a/mysql-test/r/query_prealloc_size_basic_32.result +++ b/mysql-test/r/query_prealloc_size_basic_32.result @@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 8192; SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 4294967295; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -4294966272 SET @@global.query_prealloc_size = 655354; SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size @@ -48,10 +44,6 @@ SET @@session.query_prealloc_size = 8192; SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 -SET @@session.query_prealloc_size = 4294967295; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -4294966272 SET @@session.query_prealloc_size = 655345; SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size @@ -69,37 +61,31 @@ Warning 1292 Truncated incorrect query_prealloc_size value: '0' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 429496729533; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '429496729533' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -4294966272 SET @@global.query_prealloc_size = 65530.34.; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = test; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = "test"; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = 'test'; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@global.query_prealloc_size = ON; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -4294966272 +8192 SET @@session.query_prealloc_size = 0; Warnings: Warning 1292 Truncated incorrect query_prealloc_size value: '0' @@ -128,14 +114,14 @@ SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 '#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@global.query_prealloc_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@session.query_prealloc_size = VARIABLE_VALUE 1 diff --git a/mysql-test/r/query_prealloc_size_basic_64.result b/mysql-test/r/query_prealloc_size_basic_64.result index 1c4f5885676..fe8aba990a7 100644 --- a/mysql-test/r/query_prealloc_size_basic_64.result +++ b/mysql-test/r/query_prealloc_size_basic_64.result @@ -35,10 +35,6 @@ SET @@global.query_prealloc_size = 8192; SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 4294967295; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -4294966272 SET @@global.query_prealloc_size = 655354; SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size @@ -48,10 +44,6 @@ SET @@session.query_prealloc_size = 8192; SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 -SET @@session.query_prealloc_size = 4294967295; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -4294966272 SET @@session.query_prealloc_size = 655345; SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size @@ -69,35 +61,31 @@ Warning 1292 Truncated incorrect query_prealloc_size value: '0' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size 8192 -SET @@global.query_prealloc_size = 429496729533; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -429496728576 SET @@global.query_prealloc_size = 65530.34.; ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = test; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = "test"; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = 'test'; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@global.query_prealloc_size = ON; ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' SELECT @@global.query_prealloc_size ; @@global.query_prealloc_size -429496728576 +8192 SET @@session.query_prealloc_size = 0; Warnings: Warning 1292 Truncated incorrect query_prealloc_size value: '0' @@ -126,14 +114,14 @@ SELECT @@session.query_prealloc_size ; @@session.query_prealloc_size 8192 '#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@global.query_prealloc_size = VARIABLE_VALUE 1 '#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='query_prealloc_size '; @@session.query_prealloc_size = VARIABLE_VALUE 1 From 451363afdaa90b893a5f76bac6f1517a80e82a02 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Thu, 17 Jul 2008 11:31:22 +0200 Subject: [PATCH 275/435] Reverting patch for bug30087 --- mysql-test/r/query_cache.result | 8 ++++---- sql/set_var.cc | 14 ++++++++++++- sql/share/errmsg.txt | 14 ++++++------- sql/sql_cache.cc | 35 +++++---------------------------- sql/sql_cache.h | 2 -- 5 files changed, 29 insertions(+), 44 deletions(-) diff --git a/mysql-test/r/query_cache.result b/mysql-test/r/query_cache.result index d44a9cd95b1..34c86d6c8c6 100644 --- a/mysql-test/r/query_cache.result +++ b/mysql-test/r/query_cache.result @@ -566,7 +566,7 @@ select * from t1; a set GLOBAL query_cache_size=1024; Warnings: -Warning 1282 Query cache failed to set size 1024 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 1024; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 @@ -574,7 +574,7 @@ select * from t1; a set GLOBAL query_cache_size=10240; Warnings: -Warning 1282 Query cache failed to set size 10240 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 10240; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 @@ -582,7 +582,7 @@ select * from t1; a set GLOBAL query_cache_size=20480; Warnings: -Warning 1282 Query cache failed to set size 20480 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 20480; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 @@ -590,7 +590,7 @@ select * from t1; a set GLOBAL query_cache_size=40960; Warnings: -Warning 1282 Query cache failed to set size 40960 (minimal value: 41297); new query cache size is 0 +Warning 1282 Query cache failed to set size 40960; new query cache size is 0 show global variables like "query_cache_size"; Variable_name Value query_cache_size 0 diff --git a/sql/set_var.cc b/sql/set_var.cc index 134a8564145..7d9d88f0281 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1046,7 +1046,19 @@ static void fix_net_retry_count(THD *thd __attribute__((unused)), static void fix_query_cache_size(THD *thd, enum_var_type type) { #ifdef HAVE_QUERY_CACHE - query_cache_size= query_cache.resize(query_cache_size); + ulong new_cache_size= query_cache.resize(query_cache_size); + + /* + Note: query_cache_size is a global variable reflecting the + requested cache size. See also query_cache_size_arg + */ + + if (query_cache_size != new_cache_size) + push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, + ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE), + query_cache_size, new_cache_size); + + query_cache_size= new_cache_size; #endif } diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 04fa1c57cd1..426290714eb 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -4995,13 +4995,13 @@ ER_WRONG_NAME_FOR_CATALOG 42000 spa "Nombre de catalog incorrecto '%-.100s'" swe "Felaktigt katalog namn '%-.100s'" ER_WARN_QC_RESIZE - eng "Query cache failed to set size %lu (minimal value: %lu); new query cache size is %lu" - ger "nderung der Query-Cache-Gre auf %lu (Minimale Zahl: %lu) fehlgeschlagen; neue Query-Cache-Gre ist %lu" - por "Falha em Query cache para configurar tamanho %lu (Nmero mnimo: %lu), novo tamanho de query cache %lu" - rus " %lu (minimal value: %lu), - %lu" - spa "Query cache fallada para configurar tamao %lu (Nmero mnimo: %lu), nuevo tamao de query cache es %lu" - swe "Storleken av "Query cache" kunde inte sttas till %lu (minsta vrde: %lu); ny storlek r %lu" - ukr " Ԧ ͦ %lu (minimal value: %lu), ͦ Ԧ - %lu" + eng "Query cache failed to set size %lu; new query cache size is %lu" + ger "nderung der Query-Cache-Gre auf %lu fehlgeschlagen; neue Query-Cache-Gre ist %lu" + por "Falha em Query cache para configurar tamanho %lu, novo tamanho de query cache %lu" + rus " %lu, - %lu" + spa "Query cache fallada para configurar tamao %lu, nuevo tamao de query cache es %lu" + swe "Storleken av "Query cache" kunde inte sttas till %lu, ny storlek r %lu" + ukr " Ԧ ͦ %lu, ͦ Ԧ - %lu" ER_BAD_FT_COLUMN eng "Column '%-.192s' cannot be part of FULLTEXT index" ger "Feld '%-.192s' kann nicht Teil eines FULLTEXT-Index sein" diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index 38c429a56a4..375ffc882b4 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -942,25 +942,18 @@ ulong Query_cache::resize(ulong query_cache_size_arg) } while (block != queries_blocks); } free_cache(); - query_cache_size= query_cache_size_arg; - ::query_cache_size= init_cache(); - if (::query_cache_size != query_cache_size_arg) - { - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_WARN_QC_RESIZE, ER(ER_WARN_QC_RESIZE), - query_cache_size_arg, - get_minimal_size_limit(), - ::query_cache_size); - } + query_cache_size= query_cache_size_arg; + new_query_cache_size= init_cache(); STRUCT_LOCK(&structure_guard_mutex); m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS; pthread_cond_signal(&COND_cache_status_changed); - + if (new_query_cache_size) + DBUG_EXECUTE("check_querycache",check_integrity(1);); STRUCT_UNLOCK(&structure_guard_mutex); - DBUG_RETURN(::query_cache_size); + DBUG_RETURN(new_query_cache_size); } @@ -1823,24 +1816,6 @@ void Query_cache::init() DBUG_VOID_RETURN; } -/** - Return the lowest possible query cache size. -*/ - -ulong Query_cache::get_minimal_size_limit() -{ - ulong approx_additional_data_size= (sizeof(Query_cache) + - sizeof(void*)*(def_query_hash_size+ - def_table_hash_size)); - - ulong data_size= (min_allocation_unit << QUERY_CACHE_MEM_BIN_STEP_PWR2 << - QUERY_CACHE_MEM_BIN_FIRST_STEP_PWR2) + - ALIGN_SIZE(1) - 1 + - (1 << QUERY_CACHE_MEM_BIN_STEP_PWR2) - 1 + - (1 << QUERY_CACHE_MEM_BIN_FIRST_STEP_PWR2) - 1; - - return(data_size + approx_additional_data_size); -} ulong Query_cache::init_cache() { diff --git a/sql/sql_cache.h b/sql/sql_cache.h index 6af1998a73e..f2c33eff614 100644 --- a/sql/sql_cache.h +++ b/sql/sql_cache.h @@ -282,8 +282,6 @@ private: void free_query_internal(Query_cache_block *point); void invalidate_table_internal(THD *thd, uchar *key, uint32 key_length); - ulong get_minimal_size_limit(); - protected: /* The following mutex is locked when searching or changing global From 430aaacdaf7405946c3b447e58316a9871113c14 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 17 Jul 2008 17:33:41 +0300 Subject: [PATCH 276/435] Folow-up on Bug#37069: fix a valgrind warning Don't initalize federated if it's disabled by a command line option. sql/ha_federated.cc: Folow-up on Bug#37069: Don't initalize federated if it's disabled by a command line option. --- sql/ha_federated.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sql/ha_federated.cc b/sql/ha_federated.cc index 2ccfeba74cb..9ce5d44534e 100644 --- a/sql/ha_federated.cc +++ b/sql/ha_federated.cc @@ -405,6 +405,9 @@ static byte *federated_get_key(FEDERATED_SHARE *share, uint *length, bool federated_db_init() { DBUG_ENTER("federated_db_init"); + /* the federated engine can be disabled by a command line option */ + if (have_federated_db == SHOW_OPTION_DISABLED) + DBUG_RETURN(TRUE); if (pthread_mutex_init(&federated_mutex, MY_MUTEX_INIT_FAST)) goto error; if (hash_init(&federated_open_tables, &my_charset_bin, 32, 0, 0, From ca505ca2bd0cffa742cb44453b96be46832b2c2f Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Thu, 17 Jul 2008 18:26:59 +0200 Subject: [PATCH 277/435] BUG#38170: rpl_variables failed on pushbuild: could not sync with master Problem: the test set @@global.init_slave to garbage at a time which was not guaranteed to be after the time when the slave's SQL thread used it. That would cause the slave's SQL thread to stop in rare cases. Fix: The test does not care about the value of @@global.init_slave, except that it should be different on master and slave. Hence, we set @@global.init_slave to something that is valid SQL. mysql-test/suite/rpl/r/rpl_variables.result: updated result file. mysql-test/suite/rpl/t/rpl_variables.test: Set @@global.init_slave to something that is valid SQL. --- mysql-test/suite/rpl/r/rpl_variables.result | 26 ++++++++++----------- mysql-test/suite/rpl/t/rpl_variables.test | 22 ++++++++--------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_variables.result b/mysql-test/suite/rpl/r/rpl_variables.result index 73354666b7a..902340f0219 100644 --- a/mysql-test/suite/rpl/r/rpl_variables.result +++ b/mysql-test/suite/rpl/r/rpl_variables.result @@ -45,7 +45,7 @@ RESET SLAVE; RESET MASTER; START SLAVE; [on slave] -SET @@global.init_slave = 'ant'; +SET @@global.init_slave = 'SELECT 1'; [on master] CREATE TABLE tstmt (id INT AUTO_INCREMENT PRIMARY KEY, truth BOOLEAN, @@ -66,9 +66,9 @@ SET @@global.sync_binlog = 2000000; INSERT INTO tstmt(num) VALUES (@@global.sync_binlog); SET @@global.sync_binlog = 3000000; INSERT INTO tstmt(num) VALUES (@@global.sync_binlog); -SET @@global.init_slave = 'bison'; +SET @@global.init_slave = 'SELECT 2'; INSERT INTO tstmt(text) VALUES (@@global.init_slave); -SET @@global.init_slave = 'cat'; +SET @@global.init_slave = 'SELECT 3'; INSERT INTO tstmt(text) VALUES (@@global.init_slave); SET @@global.slave_exec_mode = 'IDEMPOTENT'; INSERT INTO tstmt(text) VALUES (@@global.slave_exec_mode); @@ -140,9 +140,9 @@ INSERT INTO tproc(num) VALUES (@@global.sync_binlog); SET @@global.sync_binlog = 3000000; INSERT INTO tproc(num) VALUES (@@global.sync_binlog); # string -SET @@global.init_slave = 'bison'; +SET @@global.init_slave = 'SELECT 2'; INSERT INTO tproc(text) VALUES (@@global.init_slave); -SET @@global.init_slave = 'cat'; +SET @@global.init_slave = 'SELECT 3'; INSERT INTO tproc(text) VALUES (@@global.init_slave); # enumeration SET @@global.slave_exec_mode = 'IDEMPOTENT'; @@ -226,9 +226,9 @@ INSERT INTO tfunc(num) VALUES (@@global.sync_binlog); SET @@global.sync_binlog = 3000000; INSERT INTO tfunc(num) VALUES (@@global.sync_binlog); # string -SET @@global.init_slave = 'bison'; +SET @@global.init_slave = 'SELECT 2'; INSERT INTO tfunc(text) VALUES (@@global.init_slave); -SET @@global.init_slave = 'cat'; +SET @@global.init_slave = 'SELECT 3'; INSERT INTO tfunc(text) VALUES (@@global.init_slave); # enumeration SET @@global.slave_exec_mode = 'IDEMPOTENT'; @@ -316,9 +316,9 @@ INSERT INTO ttrig(num) VALUES (@@global.sync_binlog); SET @@global.sync_binlog = 3000000; INSERT INTO ttrig(num) VALUES (@@global.sync_binlog); # string -SET @@global.init_slave = 'bison'; +SET @@global.init_slave = 'SELECT 2'; INSERT INTO ttrig(text) VALUES (@@global.init_slave); -SET @@global.init_slave = 'cat'; +SET @@global.init_slave = 'SELECT 3'; INSERT INTO ttrig(text) VALUES (@@global.init_slave); # enumeration SET @@global.slave_exec_mode = 'IDEMPOTENT'; @@ -395,9 +395,9 @@ PREPARE p5 FROM 'SET @@global.sync_binlog = 2000000'; PREPARE p6 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)'; PREPARE p7 FROM 'SET @@global.sync_binlog = 3000000'; PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)'; -PREPARE p9 FROM 'SET @@global.init_slave = \'bison\''; +PREPARE p9 FROM 'SET @@global.init_slave = \'SELECT 2\''; PREPARE p10 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)'; -PREPARE p11 FROM 'SET @@global.init_slave = \'cat\''; +PREPARE p11 FROM 'SET @@global.init_slave = \'SELECT 3\''; PREPARE p12 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)'; PREPARE p13 FROM 'SET @@global.slave_exec_mode = \'IDEMPOTENT\''; PREPARE p14 FROM 'INSERT INTO tprep(text) VALUES (@@global.slave_exec_mode)'; @@ -522,8 +522,8 @@ id truth num text 2 0 NULL NULL 3 NULL 2000000 NULL 4 NULL 3000000 NULL -5 NULL NULL bison -6 NULL NULL cat +5 NULL NULL SELECT 2 +6 NULL NULL SELECT 3 7 NULL NULL IDEMPOTENT 8 NULL NULL STRICT 9 1 NULL NULL diff --git a/mysql-test/suite/rpl/t/rpl_variables.test b/mysql-test/suite/rpl/t/rpl_variables.test index 3669e14c5df..6c3b3ab6d8a 100644 --- a/mysql-test/suite/rpl/t/rpl_variables.test +++ b/mysql-test/suite/rpl/t/rpl_variables.test @@ -117,7 +117,7 @@ source include/reset_master_and_slave.inc; # above, but can't because it affects how the slave works. --echo [on slave] connection slave; -SET @@global.init_slave = 'ant'; +SET @@global.init_slave = 'SELECT 1'; --echo [on master] @@ -154,9 +154,9 @@ SET @@global.sync_binlog = 3000000; INSERT INTO tstmt(num) VALUES (@@global.sync_binlog); # string -SET @@global.init_slave = 'bison'; +SET @@global.init_slave = 'SELECT 2'; INSERT INTO tstmt(text) VALUES (@@global.init_slave); -SET @@global.init_slave = 'cat'; +SET @@global.init_slave = 'SELECT 3'; INSERT INTO tstmt(text) VALUES (@@global.init_slave); # enumeration @@ -258,9 +258,9 @@ BEGIN INSERT INTO tproc(num) VALUES (@@global.sync_binlog); # string - SET @@global.init_slave = 'bison'; + SET @@global.init_slave = 'SELECT 2'; INSERT INTO tproc(text) VALUES (@@global.init_slave); - SET @@global.init_slave = 'cat'; + SET @@global.init_slave = 'SELECT 3'; INSERT INTO tproc(text) VALUES (@@global.init_slave); # enumeration @@ -367,9 +367,9 @@ BEGIN INSERT INTO tfunc(num) VALUES (@@global.sync_binlog); # string - SET @@global.init_slave = 'bison'; + SET @@global.init_slave = 'SELECT 2'; INSERT INTO tfunc(text) VALUES (@@global.init_slave); - SET @@global.init_slave = 'cat'; + SET @@global.init_slave = 'SELECT 3'; INSERT INTO tfunc(text) VALUES (@@global.init_slave); # enumeration @@ -478,9 +478,9 @@ BEGIN INSERT INTO ttrig(num) VALUES (@@global.sync_binlog); # string - SET @@global.init_slave = 'bison'; + SET @@global.init_slave = 'SELECT 2'; INSERT INTO ttrig(text) VALUES (@@global.init_slave); - SET @@global.init_slave = 'cat'; + SET @@global.init_slave = 'SELECT 3'; INSERT INTO ttrig(text) VALUES (@@global.init_slave); # enumeration @@ -581,9 +581,9 @@ PREPARE p7 FROM 'SET @@global.sync_binlog = 3000000'; PREPARE p8 FROM 'INSERT INTO tprep(num) VALUES (@@global.sync_binlog)'; # string -PREPARE p9 FROM 'SET @@global.init_slave = \'bison\''; +PREPARE p9 FROM 'SET @@global.init_slave = \'SELECT 2\''; PREPARE p10 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)'; -PREPARE p11 FROM 'SET @@global.init_slave = \'cat\''; +PREPARE p11 FROM 'SET @@global.init_slave = \'SELECT 3\''; PREPARE p12 FROM 'INSERT INTO tprep(text) VALUES (@@global.init_slave)'; # enumeration From c313a5afc53a1b502831a99cd6d9f990780d496e Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Thu, 17 Jul 2008 15:20:01 -0300 Subject: [PATCH 278/435] Bug#33812: mysql client incorrectly parsing DELIMITER Revert fix for this bug as it introduced a regression reported in Bug#38158. client/mysql.cc: Revert changes introduced by fix for Bug#33812 mysql-test/r/mysql.result: Revert changes introduced by fix for Bug#33812 mysql-test/t/mysql_delimiter.sql: Revert changes introduced by fix for Bug#33812 --- client/mysql.cc | 31 +++++++++++++++++++++++++++++++ mysql-test/r/mysql.result | 2 -- mysql-test/t/mysql_delimiter.sql | 6 ------ 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index 20ad769e9b4..2ef987492b7 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2101,6 +2101,37 @@ 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 diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result index 6fe35d5c9f9..a4d96c1c243 100644 --- a/mysql-test/r/mysql.result +++ b/mysql-test/r/mysql.result @@ -38,8 +38,6 @@ t2 t3 Tables_in_test t1 -delimiter -1 _ Test delimiter : from command line a diff --git a/mysql-test/t/mysql_delimiter.sql b/mysql-test/t/mysql_delimiter.sql index 8caa7cebc2f..db679c3b06b 100644 --- a/mysql-test/t/mysql_delimiter.sql +++ b/mysql-test/t/mysql_delimiter.sql @@ -59,9 +59,3 @@ source t/mysql_delimiter_19799.sql use test// show tables// delimiter ; # Reset delimiter - -# -# Bug #33812: mysql client incorrectly parsing DELIMITER -# -select a as delimiter from t1 -delimiter ; # Reset delimiter From f8e83321003c7cebe147561728199a6695162f6f Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 18 Jul 2008 11:20:55 +0300 Subject: [PATCH 279/435] Bug #34647 rpl_temporary discovers more than one dump thread and fails to select Many dump threads can exist due to a way the new version of mtr governs suites. For this immediate problem the test is refined not to use I_S but rather to reconnect explicitly with preserving logics of a an old target bug fixes verification. mysql-test/suite/rpl/r/rpl_temporary.result: results changed mysql-test/suite/rpl/t/rpl_temporary.test: refining the bug#17284 test to avoid counting dump threads in favor to reconnect explicitly with preserving the orig logics. --- mysql-test/suite/rpl/r/rpl_temporary.result | 4 ++-- mysql-test/suite/rpl/t/rpl_temporary.test | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_temporary.result b/mysql-test/suite/rpl/r/rpl_temporary.result index 7e7d0cebe1d..03d2ca660dc 100644 --- a/mysql-test/suite/rpl/r/rpl_temporary.result +++ b/mysql-test/suite/rpl/r/rpl_temporary.result @@ -76,9 +76,9 @@ drop table t1,t2; create temporary table t3 (f int); create temporary table t4 (f int); create table t5 (f int); -select id from information_schema.processlist where command='Binlog Dump' into @id; -kill @id; +stop slave; insert into t5 select * from t4; +start slave; select * from t5 /* must be 1 after reconnection */; f drop temporary table t4; diff --git a/mysql-test/suite/rpl/t/rpl_temporary.test b/mysql-test/suite/rpl/t/rpl_temporary.test index 44f901bdae7..51b38ed4837 100644 --- a/mysql-test/suite/rpl/t/rpl_temporary.test +++ b/mysql-test/suite/rpl/t/rpl_temporary.test @@ -138,20 +138,21 @@ sync_slave_with_master; # # Bug#17284 erroneous temp table cleanup on slave +# The test targets at verifying that reconnected slave +# retained the former session's temporary tables # - connection master; create temporary table t4 (f int); create table t5 (f int); sync_slave_with_master; +# connection slave +stop slave; # to prepare for reconnecting w/o waiting for timeout connection master; -# find dumper's $id -select id from information_schema.processlist where command='Binlog Dump' into @id; -kill @id; # to stimulate reconnection by slave w/o timeout insert into t5 select * from t4; save_master_pos; connection slave; +start slave; sync_with_master; select * from t5 /* must be 1 after reconnection */; From 6a42c35fa74103c8706ffd223a22dd25df7faa63 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Fri, 18 Jul 2008 14:07:16 +0500 Subject: [PATCH 280/435] Bug#27934 test client_xml misssing initialization Problem: missing initialization, if the previous test fails leaving table t1, client_xml fails as well. Fix: adding initialization. --- mysql-test/r/client_xml.result | 1 + mysql-test/t/client_xml.test | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/mysql-test/r/client_xml.result b/mysql-test/r/client_xml.result index ed5e8f2c1b8..b7bca426e65 100644 --- a/mysql-test/r/client_xml.result +++ b/mysql-test/r/client_xml.result @@ -1,3 +1,4 @@ +drop table if exists t1; create table t1 ( `a&b` int, `a Date: Fri, 18 Jul 2008 13:24:59 +0300 Subject: [PATCH 281/435] Bug 38158: mysql client regression, can't read dump files - Revert the fix for bug 33812 - fixed a win32 warning client/mysql.cc: revert the fix for bug 33812 mysql-test/r/mysql.result: revert the fix for bug 33812 mysql-test/t/mysql_delimiter.sql: revert the fix for bug 33812 mysys/default.c: fixed a win32 warning --- client/mysql.cc | 31 +++++++++++++++++++++++++++++++ mysql-test/r/mysql.result | 2 -- mysql-test/t/mysql_delimiter.sql | 6 ------ mysys/default.c | 2 +- 4 files changed, 32 insertions(+), 9 deletions(-) diff --git a/client/mysql.cc b/client/mysql.cc index c8d5522628d..9b14f9fb3ef 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -2081,6 +2081,37 @@ 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 diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result index bc50c686ac6..eded1a3fc3b 100644 --- a/mysql-test/r/mysql.result +++ b/mysql-test/r/mysql.result @@ -38,8 +38,6 @@ t2 t3 Tables_in_test t1 -delimiter -1 _ Test delimiter : from command line a diff --git a/mysql-test/t/mysql_delimiter.sql b/mysql-test/t/mysql_delimiter.sql index 917401275a2..533ac2ce093 100644 --- a/mysql-test/t/mysql_delimiter.sql +++ b/mysql-test/t/mysql_delimiter.sql @@ -60,12 +60,6 @@ use test// show tables// delimiter ; # Reset delimiter -# -# Bug #33812: mysql client incorrectly parsing DELIMITER -# -select a as delimiter from t1 -delimiter ; # Reset delimiter - # # Bug #36244: MySQL CLI doesn't recognize standalone -- as comment # before DELIMITER statement diff --git a/mysys/default.c b/mysys/default.c index bf32261129b..b7eb963e395 100644 --- a/mysys/default.c +++ b/mysys/default.c @@ -1017,7 +1017,7 @@ static const char *my_get_module_parent(char *buf, size_t size) { char *last= NULL; char *end; - if (!GetModuleFileName(NULL, buf, size)) + if (!GetModuleFileName(NULL, buf, (DWORD) size)) return NULL; end= strend(buf); From 620c4878b31273e83c0f4494f3c8e5be608e8a3b Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Fri, 18 Jul 2008 13:34:19 +0200 Subject: [PATCH 282/435] BUG#38178: rpl_loaddata_map fails sporadically in pushbuild Problem: master binlog has 'create table t1'. Master binlog was removed before slave could replicate it. In test's cleanup code, master did 'drop table t1', which caused slave sql thread to stop with an error since slave sql thread did not know about t1. Fix: t1 is just an auxiliary construction, only needed on master. Hence, we turn off binlogging before t1 is created, drop t1 as soon as we don't need it anymore, and then turn on binlogging again. mysql-test/include/show_binlog_events.inc: Filter out directories and block_len from LOAD DATA INFILE events. mysql-test/suite/rpl/r/rpl_loaddata_map.result: updated result file mysql-test/suite/rpl/t/rpl_loaddata_map.test: Turn off binlogging while t1 is used, drop t1 as soon as we don't need it anymore, and turn on binlogging again. Also added some comments and replaced 'show binlog events' by 'source include/show_binlog_events.inc'. --- mysql-test/include/show_binlog_events.inc | 4 +- .../suite/rpl/r/rpl_loaddata_map.result | 21 +++++---- mysql-test/suite/rpl/t/rpl_loaddata_map.test | 47 +++++++++++++------ 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/mysql-test/include/show_binlog_events.inc b/mysql-test/include/show_binlog_events.inc index a80dc75df7d..68f913a16a3 100644 --- a/mysql-test/include/show_binlog_events.inc +++ b/mysql-test/include/show_binlog_events.inc @@ -4,7 +4,7 @@ if (!$binlog_start) { let $binlog_start=106; } ---replace_result $binlog_start +--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $binlog_start --replace_column 2 # 4 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ +--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ --eval show binlog events from $binlog_start diff --git a/mysql-test/suite/rpl/r/rpl_loaddata_map.result b/mysql-test/suite/rpl/r/rpl_loaddata_map.result index 7078389c987..901f3352b44 100644 --- a/mysql-test/suite/rpl/r/rpl_loaddata_map.result +++ b/mysql-test/suite/rpl/r/rpl_loaddata_map.result @@ -4,6 +4,8 @@ reset master; reset slave; drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; start slave; +==== Create a big file ==== +==== Load our big file into a table ==== create table t2 (id int not null primary key auto_increment); select @@session.read_buffer_size - @@session.max_allowed_packet > 0 ; @@session.read_buffer_size - @@session.max_allowed_packet > 0 @@ -12,15 +14,18 @@ load data infile 'MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' into table t2; select count(*) from t2 /* 5 000 */; count(*) 5000 -show binlog events in 'master-bin.000002' from ; +show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000002 # Query # # use `test`; create table t2 (id int not null primary key auto_increment) -master-bin.000002 # Begin_load_query # # ;file_id=#;block_len=# -master-bin.000002 # Append_block # # ;file_id=#;block_len=# -master-bin.000002 # Append_block # # ;file_id=#;block_len=# -master-bin.000002 # Execute_load_query # # use `test`; load data infile 'MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' into table t2 ;file_id=# +master-bin.000001 # Query # # use `test`; create table t2 (id int not null primary key auto_increment) +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# +master-bin.000001 # Append_block # # ;file_id=#;block_len=# +master-bin.000001 # Append_block # # ;file_id=#;block_len=# +master-bin.000001 # Execute_load_query # # use `test`; load data infile 'MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' into table t2 ;file_id=# +==== Verify results on slave ==== +[on slave] select count(*) from t2 /* 5 000 */; count(*) 5000 -drop table t1, t2; -end of the tests +==== Clean up ==== +[on master] +drop table t2; diff --git a/mysql-test/suite/rpl/t/rpl_loaddata_map.test b/mysql-test/suite/rpl/t/rpl_loaddata_map.test index 6a8378c8fdc..ddee9e7e989 100644 --- a/mysql-test/suite/rpl/t/rpl_loaddata_map.test +++ b/mysql-test/suite/rpl/t/rpl_loaddata_map.test @@ -1,7 +1,16 @@ +# ==== Purpose ==== # # check replication of load data with the server parameters subjected to # read_buffer_size > max_allowed_packet # +# ==== Implementation ==== +# +# Insert many rows into t1, write t1 to file. +# Load the file into t2. +# See that t2 came out as expected on slave. +# +# ==== Related Bugs ==== +# # BUG#30435 loading large LOAD DATA INFILE breaks slave with # read_buffer_size set on master # BUG#33413 show binlog events fails if binlog has event size of close @@ -9,10 +18,17 @@ source include/have_binlog_format_mixed_or_statement.inc; source include/master-slave.inc; -source include/have_innodb.inc; -source include/have_binlog_format_mixed_or_statement.inc; + + +--echo ==== Create a big file ==== + +# We turn off binlogging to avoid too much noise in the binlog. t1 is +# just an auxiliary construction anyways, it is not needed on the +# slave. --disable_query_log +SET @@sql_log_bin= 0; + let $rows= 5000; create table t1 (id int not null primary key auto_increment); @@ -22,10 +38,13 @@ while($rows) dec $rows; } eval select * into outfile '$MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' from t1; -flush logs; + +DROP TABLE t1; +SET @@sql_log_bin= 1; --enable_query_log -connection master; + +--echo ==== Load our big file into a table ==== create table t2 (id int not null primary key auto_increment); select @@session.read_buffer_size - @@session.max_allowed_packet > 0 ; @@ -34,21 +53,21 @@ select @@session.read_buffer_size - @@session.max_allowed_packet > 0 ; eval load data infile '$MYSQLTEST_VARDIR/tmp/bug30435_5k.txt' into table t2; select count(*) from t2 /* 5 000 */; -# the binglog will show fragmented Append_block events ---let $binlog_start=106 ---replace_column 2 # 4 # 5 # ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /file_id=[0-9]+/file_id=#/ /block_len=[0-9]+/block_len=#/ ---replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR $binlog_start ---eval show binlog events in 'master-bin.000002' from $binlog_start +# the binlog will show fragmented Append_block events +source include/show_binlog_events.inc; +--echo ==== Verify results on slave ==== + +--echo [on slave] sync_slave_with_master; -#connection slave; select count(*) from t2 /* 5 000 */; + +--echo ==== Clean up ==== + +--echo [on master] connection master; -drop table t1, t2; +drop table t2; sync_slave_with_master; remove_file $MYSQLTEST_VARDIR/tmp/bug30435_5k.txt; - ---echo end of the tests From 7d1bc0a4f9a697f164d8bac0b038c01cb3429b68 Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 18 Jul 2008 14:53:16 +0300 Subject: [PATCH 283/435] Bug #36818 rpl_server_id1 fails expecting slave has stopped the reason for the failure is that io thread passes through a sequence of state changes before it eventually got stuck at the expect running state as NO. It's unreasonble to wait for the running status while the whole idea of the test is to get to the IO thread error. Fixed with changing the waiting condition. mysql-test/suite/rpl/r/rpl_server_id1.result: results changed mysql-test/suite/rpl/t/disabled.def: re-enabling rpl_server_id1 mysql-test/suite/rpl/t/rpl_server_id1.test: deploying the exact waiting condition i.e to wait for the slave io error. --- mysql-test/suite/rpl/r/rpl_server_id1.result | 41 +------------------- mysql-test/suite/rpl/t/disabled.def | 2 +- mysql-test/suite/rpl/t/rpl_server_id1.test | 16 ++++---- 3 files changed, 10 insertions(+), 49 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_server_id1.result b/mysql-test/suite/rpl/r/rpl_server_id1.result index 6a5c86d84bd..724f0071e07 100644 --- a/mysql-test/suite/rpl/r/rpl_server_id1.result +++ b/mysql-test/suite/rpl/r/rpl_server_id1.result @@ -9,42 +9,5 @@ stop slave; change master to master_port=SLAVE_PORT; start slave; *** must be having the replicate-same-server-id IO thread error *** -show slave status; -Slave_IO_State -Master_Host 127.0.0.1 -Master_User root -Master_Port SLAVE_PORT -Connect_Retry 1 -Master_Log_File -Read_Master_Log_Pos 4 -Relay_Log_File slave-relay-bin.000001 -Relay_Log_Pos 4 -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running # -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table # -Last_Errno # -Last_Error # -Skip_Counter 0 -Exec_Master_Log_Pos 0 -Relay_Log_Space 106 -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master NULL -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 1593 -Last_IO_Error Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). -Last_SQL_Errno # -Last_SQL_Error # +Slave_IO_Errno= 1593 +Slave_IO_Error= Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it). diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index a356d45c2cc..094919c81b5 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -12,4 +12,4 @@ rpl_redirect : Failure is sporadic and and the test is superfluous (mats) rpl_innodb_bug28430 : Failure on Solaris Bug #36793 -rpl_server_id1 : Bug #36818 rpl_server_id1 fails expecting slave has stopped (azundris) + diff --git a/mysql-test/suite/rpl/t/rpl_server_id1.test b/mysql-test/suite/rpl/t/rpl_server_id1.test index 5838fe98de4..a0467d93543 100644 --- a/mysql-test/suite/rpl/t/rpl_server_id1.test +++ b/mysql-test/suite/rpl/t/rpl_server_id1.test @@ -10,17 +10,15 @@ reset master; # replicate ourselves stop slave; -source include/wait_for_slave_to_stop.inc; --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_port=$SLAVE_MYPORT; start slave; +let $slave_param= Last_IO_Errno; +let $slave_param_value= 1593; +source include/wait_for_slave_param.inc; --echo *** must be having the replicate-same-server-id IO thread error *** - -source include/wait_for_slave_io_to_stop.inc; - ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 12 # 16 # 19 # 20 # 18 # 37 # 38 # -query_vertical show slave status; - -# End of 4.1 tests +let $last_io_errno= query_get_value("show slave status", Last_IO_Errno, 1); +let $last_io_error= query_get_value("show slave status", Last_IO_Error, 1); +echo Slave_IO_Errno= $last_io_errno; +echo Slave_IO_Error= $last_io_error; From b51c2eb3aa610d21e23c57c4c6b8aff2dd18095c Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Fri, 18 Jul 2008 15:07:14 +0200 Subject: [PATCH 284/435] BUG#38077: rpl_incident At line 22: query 'SELECT * ...' Table 'test.t1' doesn't exist This is not a fix to the bug. It only adds debug info, so that we can analyze the bug better next time it happens. Please revert the patch after the bug is fixed. mysql-test/suite/rpl/t/rpl_incident.test: Added debug info. This will only be printed if the test fails. --- mysql-test/suite/rpl/t/rpl_incident.test | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mysql-test/suite/rpl/t/rpl_incident.test b/mysql-test/suite/rpl/t/rpl_incident.test index 507cd0e0798..e99b88899bf 100644 --- a/mysql-test/suite/rpl/t/rpl_incident.test +++ b/mysql-test/suite/rpl/t/rpl_incident.test @@ -19,6 +19,37 @@ connection slave; # The 4 should not be inserted into the table, since the incident log # event should have stop the slave. --echo **** On Slave **** +#### BEGIN DEBUG INFO ADDED BY SVEN 2008-07-18 -- SEE BUG#38077 #### +let $tables= query_get_value(SHOW TABLES, Tables_in_test, 1); +if (`SELECT '$tables' != 't1'`) +{ + --echo **** TEST CASE BUG! PRINTING DEBUG INFO! **** + --echo **** Dear developer, if you see this in the output of a test + --echo **** case run, please add all the information below as a + --echo **** comment to BUG#38077. If it's a pushbuild failure, please + --echo **** include a link to the push page. + --echo **** Thank you! /Sven + SHOW BINLOG EVENTS; + --echo **** master binlog **** + --error 0,1 + --exec $MYSQL_BINLOG --hexdump $MYSQLTEST_VARDIR/log/master-bin.000001 + --echo **** slave binlog **** + --error 0,1 + --exec $MYSQL_BINLOG --hexdump $MYSQLTEST_VARDIR/log/slave-bin.000001 + --echo **** slave status **** + query_vertical SHOW SLAVE STATUS; + --echo **** slave's master status **** + SHOW MASTER STATUS; + --echo **** slave binlog events **** + --echo [on master] + connection master; + --echo **** master status **** + SHOW MASTER STATUS; + --echo **** master binlog events **** + SHOW BINLOG EVENTS; + exit; +} +#### END DEBUG INFO #### SELECT * FROM t1; --replace_result $MASTER_MYPORT MASTER_PORT From d7f06f6ebfd1a7a2f98aff447b1a853ef3704c47 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Fri, 18 Jul 2008 19:21:54 +0530 Subject: [PATCH 285/435] WL#4380 1) Modified abi_check rule to not write into the distribution directory. 2) Added the .pp files to EXTRA_DIST so that it will be included in the distribution Makefile.am: Modified the abi_check rule to not generate the .out files in the distribution directory. include/Makefile.am: Added the EXTRA_DIST entry for plugin.h.pp and mysql.h.pp so that they will be included while creating the distribution. --- Makefile.am | 13 ++++++++----- include/Makefile.am | 2 ++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index 6ea03a6d55e..35d9212d669 100644 --- a/Makefile.am +++ b/Makefile.am @@ -273,10 +273,10 @@ TEST_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \ # be replaced as the new .pp files. # # e.g. If include/mysql/plugin.h has an ABI change then this rule would -# leave a include/mysql/plugin.out file. +# leave a /abi_check.out file. # # A developer with a justified API change will then do a -# mv include/mysql/plugin.out include/mysql/plugin.pp +# mv /abi_check.out include/mysql/plugin.pp # to replace the old canons with the new ones. # @@ -293,11 +293,14 @@ do_abi_check: -I$(top_srcdir)/include \ -I$(top_srcdir)/include/mysql \ -I$(top_srcdir)/sql \ + -I$(top_builddir)/include \ + -I$(top_builddir)/include/mysql \ + -I$(top_builddir)/sql \ $$file 2>/dev/null | \ @SED@ -e '/^# /d' \ - -e '/^[ ]*$$/d' > $$file.out; \ - @DIFF@ $$file.pp $$file.out; \ - @RM@ $$file.out; \ + -e '/^[ ]*$$/d' > $(top_builddir)/abi_check.out; \ + @DIFF@ $$file.pp $(top_builddir)/abi_check.out; \ + @RM@ $(top_builddir)/abi_check.out; \ done # Don't update the files from bitkeeper diff --git a/include/Makefile.am b/include/Makefile.am index c6ee5163c7a..9438f0d0f25 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -38,6 +38,8 @@ noinst_HEADERS = config-win.h config-netware.h my_bit.h \ atomic/rwlock.h atomic/x86-gcc.h atomic/x86-msvc.h \ atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h +EXTRA_DIST = mysql.h.pp mysql/plugin.h.pp + # Remove built files and the symlinked directories CLEANFILES = $(BUILT_SOURCES) readline openssl From 6077ebea1c084ea57031ec94cb3ef9ec7a687306 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 21 Jul 2008 12:01:22 +0200 Subject: [PATCH 286/435] Bug#34409 LOCK_plugin contention via ha_release_temporary_latches/plugin_foreach use thread-local data structures in ha_release_temporary_latches() --- sql/handler.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/sql/handler.cc b/sql/handler.cc index ebe5ea5d4fa..fe4944ed836 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -1618,23 +1618,23 @@ bool mysql_xa_recover(THD *thd) @return always 0 */ -static my_bool release_temporary_latches(THD *thd, plugin_ref plugin, - void *unused) -{ - handlerton *hton= plugin_data(plugin, handlerton *); - - if (hton->state == SHOW_OPTION_YES && hton->release_temporary_latches) - hton->release_temporary_latches(hton, thd); - - return FALSE; -} - int ha_release_temporary_latches(THD *thd) { - plugin_foreach(thd, release_temporary_latches, MYSQL_STORAGE_ENGINE_PLUGIN, - NULL); + Ha_trx_info *info; + /* + Note that below we assume that only transactional storage engines + may need release_temporary_latches(). If this will ever become false, + we could iterate on thd->open_tables instead (and remove duplicates + as if (!seen[hton->slot]) { seen[hton->slot]=1; ... }). + */ + for (info= thd->transaction.stmt.ha_list; info; info= info->next()) + { + handlerton *hton= info->ht(); + if (hton && hton->release_temporary_latches) + hton->release_temporary_latches(hton, thd); + } return 0; } From b7d4c76a54876f5e2aac4d30e171db2cff91dd04 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Thu, 24 Jul 2008 14:28:21 +0200 Subject: [PATCH 287/435] Bug#37027 expire_logs_days and missing binlogs cause a crash ! If the server failed to expired log files during start up it could crash. sql/log.cc: Added predicate to protect againt cases when current_thd might be NULL. --- sql/log.cc | 142 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 97 insertions(+), 45 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index 9e112e46c65..5a1cfe46686 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1193,6 +1193,7 @@ int MYSQL_LOG::purge_logs(const char *to_log, int error; bool exit_loop= 0; LOG_INFO log_info; + THD *thd= current_thd; DBUG_ENTER("purge_logs"); DBUG_PRINT("info",("to_log= %s",to_log)); @@ -1218,10 +1219,13 @@ int MYSQL_LOG::purge_logs(const char *to_log, /* It's not fatal if we can't stat a log file that does not exist; If we could not stat, we won't delete. - */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + */ + 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 execute my_stat on file '%s'", log_info.log_file_name); my_errno= 0; @@ -1231,13 +1235,24 @@ int MYSQL_LOG::purge_logs(const char *to_log, /* Other than ENOENT are fatal */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, - ER_BINLOG_PURGE_FATAL_ERR, - "a problem with getting info on being purged %s; " - "consider examining correspondence " - "of your binlog index file " - "to the actual binlog files", - log_info.log_file_name); + if (thd) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_BINLOG_PURGE_FATAL_ERR, + "a problem with getting info on being purged %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'; " + "consider examining correspondence " + "of your binlog index file " + "to the actual binlog files", + log_info.log_file_name); + } error= LOG_INFO_FATAL; goto err; } @@ -1254,22 +1269,36 @@ int MYSQL_LOG::purge_logs(const char *to_log, { if (my_errno == ENOENT) { - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + 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 { - push_warning_printf(current_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); + 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 file '%s'; " + "consider examining correspondence " + "of your binlog index file " + "to the actual binlog files", + log_info.log_file_name); + } error= LOG_INFO_FATAL; goto err; } @@ -1316,7 +1345,8 @@ int MYSQL_LOG::purge_logs_before_date(time_t purge_time) int error; LOG_INFO log_info; MY_STAT stat_area; - + THD *thd= current_thd; + DBUG_ENTER("purge_logs_before_date"); pthread_mutex_lock(&LOCK_index); @@ -1338,12 +1368,15 @@ int MYSQL_LOG::purge_logs_before_date(time_t purge_time) { /* It's not fatal if we can't stat a log file that does not exist. - */ - push_warning_printf(current_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 execute my_stat on file '%s'", - log_info.log_file_name); + */ + 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 execute my_stat on file '%s'", + log_info.log_file_name); my_errno= 0; } else @@ -1351,13 +1384,21 @@ int MYSQL_LOG::purge_logs_before_date(time_t purge_time) /* Other than ENOENT are fatal */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, - ER_BINLOG_PURGE_FATAL_ERR, - "a problem with getting info on being purged %s; " - "consider examining correspondence " - "of your binlog index file " - "to the actual binlog files", - log_info.log_file_name); + if (thd) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_BINLOG_PURGE_FATAL_ERR, + "a problem with getting info on being purged %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; } @@ -1371,22 +1412,33 @@ int MYSQL_LOG::purge_logs_before_date(time_t purge_time) if (my_errno == ENOENT) { /* It's not fatal even if we can't delete a log file */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + 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 { - push_warning_printf(current_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); + 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; } From fcce5bb46457ddfeeb3d6298a28b366e93360856 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Mon, 21 Jul 2008 16:09:08 +0530 Subject: [PATCH 288/435] WL#4380 Modified the abi_check command to ignore space differences between the .pp and the .out files. Makefile.am: Modified the abi_check command to ignore space differences between the .pp and the .out files. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 35d9212d669..82f7d2ab20f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -299,7 +299,7 @@ do_abi_check: $$file 2>/dev/null | \ @SED@ -e '/^# /d' \ -e '/^[ ]*$$/d' > $(top_builddir)/abi_check.out; \ - @DIFF@ $$file.pp $(top_builddir)/abi_check.out; \ + @DIFF@ -b $$file.pp $(top_builddir)/abi_check.out; \ @RM@ $(top_builddir)/abi_check.out; \ done From 8544ee54e2242dd5edf5d53b99f88ab4b15c1f71 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Mon, 21 Jul 2008 16:41:17 +0200 Subject: [PATCH 289/435] Corrected merge misstake. --- sql/log.cc | 111 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 75 insertions(+), 36 deletions(-) diff --git a/sql/log.cc b/sql/log.cc index 0466fe3c948..a56be801d2b 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -3070,7 +3070,7 @@ int MYSQL_BIN_LOG::purge_logs(const char *to_log, int ret = 0; bool exit_loop= 0; LOG_INFO log_info; - THD *thd =current_thd; + THD *thd= current_thd; DBUG_ENTER("purge_logs"); DBUG_PRINT("info",("to_log= %s",to_log)); @@ -3097,9 +3097,12 @@ int MYSQL_BIN_LOG::purge_logs(const char *to_log, It's not fatal if we can't stat a log file that does not exist; If we could not stat, we won't delete. */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + 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 execute my_stat on file '%s'", log_info.log_file_name); my_errno= 0; @@ -3109,13 +3112,24 @@ int MYSQL_BIN_LOG::purge_logs(const char *to_log, /* Other than ENOENT are fatal */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, - ER_BINLOG_PURGE_FATAL_ERR, - "a problem with getting info on being purged %s; " - "consider examining correspondence " - "of your binlog index file " - "to the actual binlog files", - log_info.log_file_name); + if (thd) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_BINLOG_PURGE_FATAL_ERR, + "a problem with getting info on being purged %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'; " + "consider examining correspondence " + "of your binlog index file " + "to the actual binlog files", + log_info.log_file_name); + } error= LOG_INFO_FATAL; goto err; } @@ -3132,9 +3146,12 @@ int MYSQL_BIN_LOG::purge_logs(const char *to_log, { if (my_errno == ENOENT) { - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + 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; @@ -3217,7 +3234,7 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time) int error; LOG_INFO log_info; MY_STAT stat_area; - + THD *thd= current_thd; DBUG_ENTER("purge_logs_before_date"); pthread_mutex_lock(&LOCK_index); @@ -3239,10 +3256,13 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time) { /* It's not fatal if we can't stat a log file that does not exist. - */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + */ + 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 execute my_stat on file '%s'", log_info.log_file_name); my_errno= 0; @@ -3252,13 +3272,21 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time) /* Other than ENOENT are fatal */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_ERROR, - ER_BINLOG_PURGE_FATAL_ERR, - "a problem with getting info on being purged %s; " - "consider examining correspondence " - "of your binlog index file " - "to the actual binlog files", - log_info.log_file_name); + if (thd) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_ERROR, + ER_BINLOG_PURGE_FATAL_ERR, + "a problem with getting info on being purged %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; } @@ -3272,22 +3300,33 @@ int MYSQL_BIN_LOG::purge_logs_before_date(time_t purge_time) if (my_errno == ENOENT) { /* It's not fatal even if we can't delete a log file */ - push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN, - ER_LOG_PURGE_NO_FILE, ER(ER_LOG_PURGE_NO_FILE), - log_info.log_file_name); + 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 { - push_warning_printf(current_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); + 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; } From 6334196bd785ad53a3962785fcb0535f12e1c9ba Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Mon, 21 Jul 2008 21:05:06 +0200 Subject: [PATCH 290/435] BUG#38269: pushbuild gives valgrind error in ha_statistic_increment for rpl_temporary This does not fix the bug. It only disables the failing test. mysql-test/suite/rpl/t/disabled.def: disable rpl_temporary --- mysql-test/suite/rpl/t/disabled.def | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 094919c81b5..43a379dbe03 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -12,4 +12,4 @@ rpl_redirect : Failure is sporadic and and the test is superfluous (mats) rpl_innodb_bug28430 : Failure on Solaris Bug #36793 - +rpl_temporary : BUG#38269 2008-07-21 Sven valgrind error in pushbuild From 3a3894d2ca2e07b010985e9d27226709a4046e3b Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Tue, 22 Jul 2008 13:04:32 +0200 Subject: [PATCH 291/435] Disabled two test cases in 5.1 because of random failures. --- mysql-test/t/disabled.def | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 5c37e8333a7..c058992d795 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -94,3 +94,6 @@ tmp_table_size_basic_64 : Bug #36522: Some tests of system variabl transaction_alloc_block_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms transaction_prealloc_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms wait_timeout_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms +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 + From b9764000b1f45fd603bce799666d1492eb548c25 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Tue, 22 Jul 2008 18:05:22 +0530 Subject: [PATCH 292/435] WL#4380 1) When gcc -E is run in the Mac OS it introduces a line of output that results in showing up as a difference between the .pp and .out files. Removed this OS specific preprocessor text inserted by the preprocessor in the MAC OS. Added a sed regular expression to remove MAC OS specific pre-processor text. 2) Added the -w option to diff to remove the differences in output being caused in solaris. Makefile.am: 1) When gcc -E is run in the Mac OS it introduces a line of output that results in showing up as a difference between the .pp and .out files. Removed this OS specific preprocessor text inserted by the preprocessor in the MAC OS. Added a sed regular expression to remove MAC OS specific pre-processor text. 2) Added the -w option to diff to remove the differences in output being caused in solaris. --- Makefile.am | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index 82f7d2ab20f..222785ea3b1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -257,9 +257,14 @@ TEST_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \ # results in messages in stderr saying that these headers # were not found. Redirect the stderr output to /dev/null # to prevent seeing these messages. -# 2) sed the output to remove blank lines and lines that begin -# with # (The header information is retained to enable easy -# analysis of abi diffs at a later stage). +# 2) sed the output to +# 2.1) remove blank lines and lines that begin with "# " +# (The header information is retained to enable easy +# analysis of abi diffs at a later stage). +# 2.2) When gcc -E is run in the Mac OS it introduces a line of output +# that results in showing up as a difference between the .pp and +# .out files. Remove this OS specific preprocessor text inserted by +# the preprocessor in the MAC OS. # 3) diff the generated file and the canons (.pp files already in # the repository). # 4) delete the .out file that is generated. @@ -298,8 +303,10 @@ do_abi_check: -I$(top_builddir)/sql \ $$file 2>/dev/null | \ @SED@ -e '/^# /d' \ - -e '/^[ ]*$$/d' > $(top_builddir)/abi_check.out; \ - @DIFF@ -b $$file.pp $(top_builddir)/abi_check.out; \ + -e '/^[ ]*$$/d' \ + -e '/^#pragma GCC set_debug_pwd/d' > \ + $(top_builddir)/abi_check.out; \ + @DIFF@ -wB $$file.pp $(top_builddir)/abi_check.out; \ @RM@ $(top_builddir)/abi_check.out; \ done From 2d83978f133ad072debac472ce1bf80554140f3e Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 22 Jul 2008 15:58:21 +0200 Subject: [PATCH 293/435] Fix for bug#37708:The allocation of very large buffer must not be done in the pushbuild. --- mysql-test/t/binlog_cache_size_basic_64.test | 9 --------- mysql-test/t/bulk_insert_buffer_size_basic_64.test | 9 --------- mysql-test/t/delayed_insert_limit_basic_64.test | 9 --------- mysql-test/t/delayed_queue_size_basic_64.test | 9 --------- mysql-test/t/innodb_concurrency_tickets_basic_64.test | 9 --------- mysql-test/t/innodb_max_purge_lag_basic_64.test | 9 --------- mysql-test/t/innodb_sync_spin_loops_basic_64.test | 9 --------- mysql-test/t/join_buffer_size_basic_64.test | 9 --------- mysql-test/t/key_buffer_size_basic_64.test | 9 --------- mysql-test/t/key_cache_age_threshold_basic_64.test | 9 --------- mysql-test/t/key_cache_block_size_basic_64.test | 9 --------- mysql-test/t/key_cache_division_limit_basic_64.test | 9 --------- mysql-test/t/log_warnings_basic_64.test | 9 --------- mysql-test/t/max_binlog_cache_size_basic_64.test | 9 --------- mysql-test/t/max_connect_errors_basic_64.test | 9 --------- mysql-test/t/max_heap_table_size_basic_64.test | 9 --------- mysql-test/t/max_seeks_for_key_basic_64.test | 9 --------- mysql-test/t/max_tmp_tables_basic_64.test | 9 --------- mysql-test/t/max_write_lock_count_basic_64.test | 9 --------- mysql-test/t/min_examined_row_limit_basic_64.test | 9 --------- mysql-test/t/multi_range_count_basic_64.test | 9 --------- mysql-test/t/myisam_max_sort_file_size_basic_64.test | 9 --------- mysql-test/t/myisam_repair_threads_basic_64.test | 9 --------- mysql-test/t/myisam_sort_buffer_size_basic_64.test | 9 --------- mysql-test/t/net_retry_count_basic_64.test | 9 --------- mysql-test/t/query_alloc_block_size_basic_64.test | 9 --------- mysql-test/t/query_cache_limit_basic_64.test | 9 --------- mysql-test/t/query_cache_min_res_unit_basic_64.test | 9 --------- mysql-test/t/query_cache_size_basic_64.test | 9 --------- mysql-test/t/query_prealloc_size_basic_64.test | 9 --------- mysql-test/t/range_alloc_block_size_basic_64.test | 9 --------- mysql-test/t/rpl_recovery_rank_basic_64.test | 9 --------- mysql-test/t/server_id_basic_64.test | 9 --------- mysql-test/t/slave_transaction_retries_basic_64.test | 9 --------- mysql-test/t/sort_buffer_size_basic_64.test | 9 --------- mysql-test/t/sync_binlog_basic_64.test | 9 --------- mysql-test/t/timestamp_basic_64.test | 9 --------- mysql-test/t/tmp_table_size_basic_64.test | 9 --------- mysql-test/t/transaction_alloc_block_size_basic_64.test | 9 --------- mysql-test/t/transaction_prealloc_size_basic_64.test | 9 --------- mysql-test/t/wait_timeout_basic_64.test | 9 --------- 41 files changed, 369 deletions(-) delete mode 100644 mysql-test/t/binlog_cache_size_basic_64.test delete mode 100644 mysql-test/t/bulk_insert_buffer_size_basic_64.test delete mode 100644 mysql-test/t/delayed_insert_limit_basic_64.test delete mode 100644 mysql-test/t/delayed_queue_size_basic_64.test delete mode 100644 mysql-test/t/innodb_concurrency_tickets_basic_64.test delete mode 100644 mysql-test/t/innodb_max_purge_lag_basic_64.test delete mode 100644 mysql-test/t/innodb_sync_spin_loops_basic_64.test delete mode 100644 mysql-test/t/join_buffer_size_basic_64.test delete mode 100644 mysql-test/t/key_buffer_size_basic_64.test delete mode 100644 mysql-test/t/key_cache_age_threshold_basic_64.test delete mode 100644 mysql-test/t/key_cache_block_size_basic_64.test delete mode 100644 mysql-test/t/key_cache_division_limit_basic_64.test delete mode 100644 mysql-test/t/log_warnings_basic_64.test delete mode 100644 mysql-test/t/max_binlog_cache_size_basic_64.test delete mode 100644 mysql-test/t/max_connect_errors_basic_64.test delete mode 100644 mysql-test/t/max_heap_table_size_basic_64.test delete mode 100644 mysql-test/t/max_seeks_for_key_basic_64.test delete mode 100644 mysql-test/t/max_tmp_tables_basic_64.test delete mode 100644 mysql-test/t/max_write_lock_count_basic_64.test delete mode 100644 mysql-test/t/min_examined_row_limit_basic_64.test delete mode 100644 mysql-test/t/multi_range_count_basic_64.test delete mode 100644 mysql-test/t/myisam_max_sort_file_size_basic_64.test delete mode 100644 mysql-test/t/myisam_repair_threads_basic_64.test delete mode 100644 mysql-test/t/myisam_sort_buffer_size_basic_64.test delete mode 100644 mysql-test/t/net_retry_count_basic_64.test delete mode 100644 mysql-test/t/query_alloc_block_size_basic_64.test delete mode 100644 mysql-test/t/query_cache_limit_basic_64.test delete mode 100644 mysql-test/t/query_cache_min_res_unit_basic_64.test delete mode 100644 mysql-test/t/query_cache_size_basic_64.test delete mode 100644 mysql-test/t/query_prealloc_size_basic_64.test delete mode 100644 mysql-test/t/range_alloc_block_size_basic_64.test delete mode 100644 mysql-test/t/rpl_recovery_rank_basic_64.test delete mode 100644 mysql-test/t/server_id_basic_64.test delete mode 100644 mysql-test/t/slave_transaction_retries_basic_64.test delete mode 100644 mysql-test/t/sort_buffer_size_basic_64.test delete mode 100644 mysql-test/t/sync_binlog_basic_64.test delete mode 100644 mysql-test/t/timestamp_basic_64.test delete mode 100644 mysql-test/t/tmp_table_size_basic_64.test delete mode 100644 mysql-test/t/transaction_alloc_block_size_basic_64.test delete mode 100644 mysql-test/t/transaction_prealloc_size_basic_64.test delete mode 100644 mysql-test/t/wait_timeout_basic_64.test diff --git a/mysql-test/t/binlog_cache_size_basic_64.test b/mysql-test/t/binlog_cache_size_basic_64.test deleted file mode 100644 index f4fdf8c2129..00000000000 --- a/mysql-test/t/binlog_cache_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 include/binlog_cache_size_basic.inc - diff --git a/mysql-test/t/bulk_insert_buffer_size_basic_64.test b/mysql-test/t/bulk_insert_buffer_size_basic_64.test deleted file mode 100644 index 6363cfc12d1..00000000000 --- a/mysql-test/t/bulk_insert_buffer_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 include/bulk_insert_buffer_size_basic.inc - diff --git a/mysql-test/t/delayed_insert_limit_basic_64.test b/mysql-test/t/delayed_insert_limit_basic_64.test deleted file mode 100644 index c1d628bbb34..00000000000 --- a/mysql-test/t/delayed_insert_limit_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 include/delayed_insert_limit_basic.inc - diff --git a/mysql-test/t/delayed_queue_size_basic_64.test b/mysql-test/t/delayed_queue_size_basic_64.test deleted file mode 100644 index a9a929ae07b..00000000000 --- a/mysql-test/t/delayed_queue_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 include/delayed_queue_size_basic.inc - diff --git a/mysql-test/t/innodb_concurrency_tickets_basic_64.test b/mysql-test/t/innodb_concurrency_tickets_basic_64.test deleted file mode 100644 index bec46df3d9a..00000000000 --- a/mysql-test/t/innodb_concurrency_tickets_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 include/innodb_concurrency_tickets_basic.inc - diff --git a/mysql-test/t/innodb_max_purge_lag_basic_64.test b/mysql-test/t/innodb_max_purge_lag_basic_64.test deleted file mode 100644 index 5980e8ed12e..00000000000 --- a/mysql-test/t/innodb_max_purge_lag_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 include/innodb_max_purge_lag_basic.inc - diff --git a/mysql-test/t/innodb_sync_spin_loops_basic_64.test b/mysql-test/t/innodb_sync_spin_loops_basic_64.test deleted file mode 100644 index f854bf475d6..00000000000 --- a/mysql-test/t/innodb_sync_spin_loops_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 include/innodb_sync_spin_loops_basic.inc - diff --git a/mysql-test/t/join_buffer_size_basic_64.test b/mysql-test/t/join_buffer_size_basic_64.test deleted file mode 100644 index 6de911be04c..00000000000 --- a/mysql-test/t/join_buffer_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 include/join_buffer_size_basic.inc - diff --git a/mysql-test/t/key_buffer_size_basic_64.test b/mysql-test/t/key_buffer_size_basic_64.test deleted file mode 100644 index ed8409fa70c..00000000000 --- a/mysql-test/t/key_buffer_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 include/key_buffer_size_basic.inc - diff --git a/mysql-test/t/key_cache_age_threshold_basic_64.test b/mysql-test/t/key_cache_age_threshold_basic_64.test deleted file mode 100644 index 6524ec89127..00000000000 --- a/mysql-test/t/key_cache_age_threshold_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 include/key_cache_age_threshold_basic.inc - diff --git a/mysql-test/t/key_cache_block_size_basic_64.test b/mysql-test/t/key_cache_block_size_basic_64.test deleted file mode 100644 index 0b6fb16238e..00000000000 --- a/mysql-test/t/key_cache_block_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 include/key_cache_block_size_basic.inc - diff --git a/mysql-test/t/key_cache_division_limit_basic_64.test b/mysql-test/t/key_cache_division_limit_basic_64.test deleted file mode 100644 index 3b4e3ccaa99..00000000000 --- a/mysql-test/t/key_cache_division_limit_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 include/key_cache_division_limit_basic.inc - diff --git a/mysql-test/t/log_warnings_basic_64.test b/mysql-test/t/log_warnings_basic_64.test deleted file mode 100644 index c11381735be..00000000000 --- a/mysql-test/t/log_warnings_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 include/log_warnings_basic.inc - diff --git a/mysql-test/t/max_binlog_cache_size_basic_64.test b/mysql-test/t/max_binlog_cache_size_basic_64.test deleted file mode 100644 index ba3949ba90c..00000000000 --- a/mysql-test/t/max_binlog_cache_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 include/max_binlog_cache_size_basic.inc - diff --git a/mysql-test/t/max_connect_errors_basic_64.test b/mysql-test/t/max_connect_errors_basic_64.test deleted file mode 100644 index 6a3d1be6978..00000000000 --- a/mysql-test/t/max_connect_errors_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 include/max_connect_errors_basic.inc - diff --git a/mysql-test/t/max_heap_table_size_basic_64.test b/mysql-test/t/max_heap_table_size_basic_64.test deleted file mode 100644 index 76f1b658da1..00000000000 --- a/mysql-test/t/max_heap_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 include/max_heap_table_size_basic.inc - diff --git a/mysql-test/t/max_seeks_for_key_basic_64.test b/mysql-test/t/max_seeks_for_key_basic_64.test deleted file mode 100644 index f700aafa044..00000000000 --- a/mysql-test/t/max_seeks_for_key_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 include/max_seeks_for_key_basic.inc - diff --git a/mysql-test/t/max_tmp_tables_basic_64.test b/mysql-test/t/max_tmp_tables_basic_64.test deleted file mode 100644 index 81aa478b7af..00000000000 --- a/mysql-test/t/max_tmp_tables_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 include/max_tmp_tables_basic.inc - diff --git a/mysql-test/t/max_write_lock_count_basic_64.test b/mysql-test/t/max_write_lock_count_basic_64.test deleted file mode 100644 index de1d2194c33..00000000000 --- a/mysql-test/t/max_write_lock_count_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 include/max_write_lock_count_basic.inc - diff --git a/mysql-test/t/min_examined_row_limit_basic_64.test b/mysql-test/t/min_examined_row_limit_basic_64.test deleted file mode 100644 index 93cc4eda99d..00000000000 --- a/mysql-test/t/min_examined_row_limit_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 include/min_examined_row_limit_basic.inc - diff --git a/mysql-test/t/multi_range_count_basic_64.test b/mysql-test/t/multi_range_count_basic_64.test deleted file mode 100644 index 0dd1ab50e4b..00000000000 --- a/mysql-test/t/multi_range_count_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 include/multi_range_count_basic.inc - diff --git a/mysql-test/t/myisam_max_sort_file_size_basic_64.test b/mysql-test/t/myisam_max_sort_file_size_basic_64.test deleted file mode 100644 index e3846e2ccdc..00000000000 --- a/mysql-test/t/myisam_max_sort_file_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 include/myisam_max_sort_file_size_basic.inc - diff --git a/mysql-test/t/myisam_repair_threads_basic_64.test b/mysql-test/t/myisam_repair_threads_basic_64.test deleted file mode 100644 index f1870409c28..00000000000 --- a/mysql-test/t/myisam_repair_threads_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 include/myisam_repair_threads_basic.inc - diff --git a/mysql-test/t/myisam_sort_buffer_size_basic_64.test b/mysql-test/t/myisam_sort_buffer_size_basic_64.test deleted file mode 100644 index fd1c3c30e7d..00000000000 --- a/mysql-test/t/myisam_sort_buffer_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 include/myisam_sort_buffer_size_basic.inc - diff --git a/mysql-test/t/net_retry_count_basic_64.test b/mysql-test/t/net_retry_count_basic_64.test deleted file mode 100644 index 08839b673f2..00000000000 --- a/mysql-test/t/net_retry_count_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 include/net_retry_count_basic.inc - diff --git a/mysql-test/t/query_alloc_block_size_basic_64.test b/mysql-test/t/query_alloc_block_size_basic_64.test deleted file mode 100644 index 70f2f37d36b..00000000000 --- a/mysql-test/t/query_alloc_block_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 include/query_alloc_block_size_basic.inc - diff --git a/mysql-test/t/query_cache_limit_basic_64.test b/mysql-test/t/query_cache_limit_basic_64.test deleted file mode 100644 index a3ebae0b244..00000000000 --- a/mysql-test/t/query_cache_limit_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 include/query_cache_limit_basic.inc - diff --git a/mysql-test/t/query_cache_min_res_unit_basic_64.test b/mysql-test/t/query_cache_min_res_unit_basic_64.test deleted file mode 100644 index b35b07d4f1e..00000000000 --- a/mysql-test/t/query_cache_min_res_unit_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 include/query_cache_min_res_unit_basic.inc - diff --git a/mysql-test/t/query_cache_size_basic_64.test b/mysql-test/t/query_cache_size_basic_64.test deleted file mode 100644 index d53be96a28b..00000000000 --- a/mysql-test/t/query_cache_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 include/query_cache_size_basic.inc - diff --git a/mysql-test/t/query_prealloc_size_basic_64.test b/mysql-test/t/query_prealloc_size_basic_64.test deleted file mode 100644 index 532336e225e..00000000000 --- a/mysql-test/t/query_prealloc_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 include/query_prealloc_size_basic.inc - diff --git a/mysql-test/t/range_alloc_block_size_basic_64.test b/mysql-test/t/range_alloc_block_size_basic_64.test deleted file mode 100644 index a9601d770c0..00000000000 --- a/mysql-test/t/range_alloc_block_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 include/range_alloc_block_size_basic.inc - diff --git a/mysql-test/t/rpl_recovery_rank_basic_64.test b/mysql-test/t/rpl_recovery_rank_basic_64.test deleted file mode 100644 index 6fe04f26442..00000000000 --- a/mysql-test/t/rpl_recovery_rank_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 include/rpl_recovery_rank_basic.inc - diff --git a/mysql-test/t/server_id_basic_64.test b/mysql-test/t/server_id_basic_64.test deleted file mode 100644 index 67653e0503e..00000000000 --- a/mysql-test/t/server_id_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 include/server_id_basic.inc - diff --git a/mysql-test/t/slave_transaction_retries_basic_64.test b/mysql-test/t/slave_transaction_retries_basic_64.test deleted file mode 100644 index e07f96edf3f..00000000000 --- a/mysql-test/t/slave_transaction_retries_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 include/slave_transaction_retries_basic.inc - diff --git a/mysql-test/t/sort_buffer_size_basic_64.test b/mysql-test/t/sort_buffer_size_basic_64.test deleted file mode 100644 index 86081b3820b..00000000000 --- a/mysql-test/t/sort_buffer_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 include/sort_buffer_size_basic.inc - diff --git a/mysql-test/t/sync_binlog_basic_64.test b/mysql-test/t/sync_binlog_basic_64.test deleted file mode 100644 index 9f605445ded..00000000000 --- a/mysql-test/t/sync_binlog_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 include/sync_binlog_basic.inc - diff --git a/mysql-test/t/timestamp_basic_64.test b/mysql-test/t/timestamp_basic_64.test deleted file mode 100644 index 4614e470a4c..00000000000 --- a/mysql-test/t/timestamp_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 include/timestamp_basic.inc - diff --git a/mysql-test/t/tmp_table_size_basic_64.test b/mysql-test/t/tmp_table_size_basic_64.test deleted file mode 100644 index ddd865f6383..00000000000 --- a/mysql-test/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 include/tmp_table_size_basic.inc - diff --git a/mysql-test/t/transaction_alloc_block_size_basic_64.test b/mysql-test/t/transaction_alloc_block_size_basic_64.test deleted file mode 100644 index b6ebe36c35f..00000000000 --- a/mysql-test/t/transaction_alloc_block_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 include/transaction_alloc_block_size_basic.inc - diff --git a/mysql-test/t/transaction_prealloc_size_basic_64.test b/mysql-test/t/transaction_prealloc_size_basic_64.test deleted file mode 100644 index 5487d06f521..00000000000 --- a/mysql-test/t/transaction_prealloc_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 include/transaction_prealloc_size_basic.inc - diff --git a/mysql-test/t/wait_timeout_basic_64.test b/mysql-test/t/wait_timeout_basic_64.test deleted file mode 100644 index 76dcd6fcc91..00000000000 --- a/mysql-test/t/wait_timeout_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 include/wait_timeout_basic.inc - From 235f9bb6c277c33613e21e90936dc3a82955c7b5 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 22 Jul 2008 18:45:55 +0200 Subject: [PATCH 294/435] Fix for bug#37708:The allocation of very large buffer must not be done in the pushbuild. hhunger. --- mysql-test/t/binlog_cache_size_basic_32.test | 9 --------- mysql-test/t/bulk_insert_buffer_size_basic_32.test | 9 --------- mysql-test/t/delayed_insert_limit_basic_32.test | 9 --------- mysql-test/t/delayed_queue_size_basic_32.test | 9 --------- mysql-test/t/innodb_concurrency_tickets_basic_32.test | 9 --------- mysql-test/t/innodb_max_purge_lag_basic_32.test | 9 --------- mysql-test/t/innodb_sync_spin_loops_basic_32.test | 9 --------- mysql-test/t/join_buffer_size_basic_32.test | 9 --------- mysql-test/t/key_buffer_size_basic_32.test | 9 --------- mysql-test/t/key_cache_age_threshold_basic_32.test | 9 --------- mysql-test/t/key_cache_block_size_basic_32.test | 9 --------- mysql-test/t/key_cache_division_limit_basic_32.test | 9 --------- mysql-test/t/log_warnings_basic_32.test | 9 --------- mysql-test/t/max_binlog_cache_size_basic_32.test | 9 --------- mysql-test/t/max_connect_errors_basic_32.test | 9 --------- mysql-test/t/max_heap_table_size_basic_32.test | 9 --------- mysql-test/t/max_seeks_for_key_basic_32.test | 9 --------- mysql-test/t/max_tmp_tables_basic_32.test | 9 --------- mysql-test/t/max_write_lock_count_basic_32.test | 9 --------- mysql-test/t/min_examined_row_limit_basic_32.test | 9 --------- mysql-test/t/multi_range_count_basic_32.test | 9 --------- mysql-test/t/myisam_max_sort_file_size_basic_32.test | 9 --------- mysql-test/t/myisam_repair_threads_basic_32.test | 9 --------- mysql-test/t/myisam_sort_buffer_size_basic_32.test | 9 --------- mysql-test/t/net_retry_count_basic_32.test | 9 --------- mysql-test/t/query_alloc_block_size_basic_32.test | 9 --------- mysql-test/t/query_cache_limit_basic_32.test | 9 --------- mysql-test/t/query_cache_min_res_unit_basic_32.test | 9 --------- mysql-test/t/query_cache_size_basic_32.test | 9 --------- mysql-test/t/query_prealloc_size_basic_32.test | 9 --------- mysql-test/t/range_alloc_block_size_basic_32.test | 9 --------- mysql-test/t/rpl_recovery_rank_basic_32.test | 9 --------- mysql-test/t/server_id_basic_32.test | 9 --------- mysql-test/t/slave_transaction_retries_basic_32.test | 9 --------- mysql-test/t/sort_buffer_size_basic_32.test | 9 --------- mysql-test/t/sync_binlog_basic_32.test | 9 --------- mysql-test/t/timestamp_basic_32.test | 9 --------- mysql-test/t/tmp_table_size_basic_32.test | 9 --------- mysql-test/t/transaction_alloc_block_size_basic_32.test | 9 --------- mysql-test/t/transaction_prealloc_size_basic_32.test | 9 --------- mysql-test/t/wait_timeout_basic_32.test | 9 --------- 41 files changed, 369 deletions(-) delete mode 100644 mysql-test/t/binlog_cache_size_basic_32.test delete mode 100644 mysql-test/t/bulk_insert_buffer_size_basic_32.test delete mode 100644 mysql-test/t/delayed_insert_limit_basic_32.test delete mode 100644 mysql-test/t/delayed_queue_size_basic_32.test delete mode 100644 mysql-test/t/innodb_concurrency_tickets_basic_32.test delete mode 100644 mysql-test/t/innodb_max_purge_lag_basic_32.test delete mode 100644 mysql-test/t/innodb_sync_spin_loops_basic_32.test delete mode 100644 mysql-test/t/join_buffer_size_basic_32.test delete mode 100644 mysql-test/t/key_buffer_size_basic_32.test delete mode 100644 mysql-test/t/key_cache_age_threshold_basic_32.test delete mode 100644 mysql-test/t/key_cache_block_size_basic_32.test delete mode 100644 mysql-test/t/key_cache_division_limit_basic_32.test delete mode 100644 mysql-test/t/log_warnings_basic_32.test delete mode 100644 mysql-test/t/max_binlog_cache_size_basic_32.test delete mode 100644 mysql-test/t/max_connect_errors_basic_32.test delete mode 100644 mysql-test/t/max_heap_table_size_basic_32.test delete mode 100644 mysql-test/t/max_seeks_for_key_basic_32.test delete mode 100644 mysql-test/t/max_tmp_tables_basic_32.test delete mode 100644 mysql-test/t/max_write_lock_count_basic_32.test delete mode 100644 mysql-test/t/min_examined_row_limit_basic_32.test delete mode 100644 mysql-test/t/multi_range_count_basic_32.test delete mode 100644 mysql-test/t/myisam_max_sort_file_size_basic_32.test delete mode 100644 mysql-test/t/myisam_repair_threads_basic_32.test delete mode 100644 mysql-test/t/myisam_sort_buffer_size_basic_32.test delete mode 100644 mysql-test/t/net_retry_count_basic_32.test delete mode 100644 mysql-test/t/query_alloc_block_size_basic_32.test delete mode 100644 mysql-test/t/query_cache_limit_basic_32.test delete mode 100644 mysql-test/t/query_cache_min_res_unit_basic_32.test delete mode 100644 mysql-test/t/query_cache_size_basic_32.test delete mode 100644 mysql-test/t/query_prealloc_size_basic_32.test delete mode 100644 mysql-test/t/range_alloc_block_size_basic_32.test delete mode 100644 mysql-test/t/rpl_recovery_rank_basic_32.test delete mode 100644 mysql-test/t/server_id_basic_32.test delete mode 100644 mysql-test/t/slave_transaction_retries_basic_32.test delete mode 100644 mysql-test/t/sort_buffer_size_basic_32.test delete mode 100644 mysql-test/t/sync_binlog_basic_32.test delete mode 100644 mysql-test/t/timestamp_basic_32.test delete mode 100644 mysql-test/t/tmp_table_size_basic_32.test delete mode 100644 mysql-test/t/transaction_alloc_block_size_basic_32.test delete mode 100644 mysql-test/t/transaction_prealloc_size_basic_32.test delete mode 100644 mysql-test/t/wait_timeout_basic_32.test diff --git a/mysql-test/t/binlog_cache_size_basic_32.test b/mysql-test/t/binlog_cache_size_basic_32.test deleted file mode 100644 index a809c00f987..00000000000 --- a/mysql-test/t/binlog_cache_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 include/binlog_cache_size_basic.inc - diff --git a/mysql-test/t/bulk_insert_buffer_size_basic_32.test b/mysql-test/t/bulk_insert_buffer_size_basic_32.test deleted file mode 100644 index 76a418323bc..00000000000 --- a/mysql-test/t/bulk_insert_buffer_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 include/bulk_insert_buffer_size_basic.inc - diff --git a/mysql-test/t/delayed_insert_limit_basic_32.test b/mysql-test/t/delayed_insert_limit_basic_32.test deleted file mode 100644 index d7a4a81542f..00000000000 --- a/mysql-test/t/delayed_insert_limit_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 include/delayed_insert_limit_basic.inc - diff --git a/mysql-test/t/delayed_queue_size_basic_32.test b/mysql-test/t/delayed_queue_size_basic_32.test deleted file mode 100644 index 06e0cf48dac..00000000000 --- a/mysql-test/t/delayed_queue_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 include/delayed_queue_size_basic.inc - diff --git a/mysql-test/t/innodb_concurrency_tickets_basic_32.test b/mysql-test/t/innodb_concurrency_tickets_basic_32.test deleted file mode 100644 index e587d1870bf..00000000000 --- a/mysql-test/t/innodb_concurrency_tickets_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 include/innodb_concurrency_tickets_basic.inc - diff --git a/mysql-test/t/innodb_max_purge_lag_basic_32.test b/mysql-test/t/innodb_max_purge_lag_basic_32.test deleted file mode 100644 index 4e5b019b151..00000000000 --- a/mysql-test/t/innodb_max_purge_lag_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 include/innodb_max_purge_lag_basic.inc - diff --git a/mysql-test/t/innodb_sync_spin_loops_basic_32.test b/mysql-test/t/innodb_sync_spin_loops_basic_32.test deleted file mode 100644 index ffb766b3ec8..00000000000 --- a/mysql-test/t/innodb_sync_spin_loops_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 include/innodb_sync_spin_loops_basic.inc - diff --git a/mysql-test/t/join_buffer_size_basic_32.test b/mysql-test/t/join_buffer_size_basic_32.test deleted file mode 100644 index e904f2de426..00000000000 --- a/mysql-test/t/join_buffer_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 include/join_buffer_size_basic.inc - diff --git a/mysql-test/t/key_buffer_size_basic_32.test b/mysql-test/t/key_buffer_size_basic_32.test deleted file mode 100644 index 78051382f73..00000000000 --- a/mysql-test/t/key_buffer_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 include/key_buffer_size_basic.inc - diff --git a/mysql-test/t/key_cache_age_threshold_basic_32.test b/mysql-test/t/key_cache_age_threshold_basic_32.test deleted file mode 100644 index 13e7367f2ed..00000000000 --- a/mysql-test/t/key_cache_age_threshold_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 include/key_cache_age_threshold_basic.inc - diff --git a/mysql-test/t/key_cache_block_size_basic_32.test b/mysql-test/t/key_cache_block_size_basic_32.test deleted file mode 100644 index 63d71016657..00000000000 --- a/mysql-test/t/key_cache_block_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 include/key_cache_block_size_basic.inc - diff --git a/mysql-test/t/key_cache_division_limit_basic_32.test b/mysql-test/t/key_cache_division_limit_basic_32.test deleted file mode 100644 index c8ec6cca3a3..00000000000 --- a/mysql-test/t/key_cache_division_limit_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 include/key_cache_division_limit_basic.inc - diff --git a/mysql-test/t/log_warnings_basic_32.test b/mysql-test/t/log_warnings_basic_32.test deleted file mode 100644 index b6d1d0d6382..00000000000 --- a/mysql-test/t/log_warnings_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 include/log_warnings_basic.inc - diff --git a/mysql-test/t/max_binlog_cache_size_basic_32.test b/mysql-test/t/max_binlog_cache_size_basic_32.test deleted file mode 100644 index ba9c4d5136a..00000000000 --- a/mysql-test/t/max_binlog_cache_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 include/max_binlog_cache_size_basic.inc - diff --git a/mysql-test/t/max_connect_errors_basic_32.test b/mysql-test/t/max_connect_errors_basic_32.test deleted file mode 100644 index 9f6e1dad6a8..00000000000 --- a/mysql-test/t/max_connect_errors_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 include/max_connect_errors_basic.inc - diff --git a/mysql-test/t/max_heap_table_size_basic_32.test b/mysql-test/t/max_heap_table_size_basic_32.test deleted file mode 100644 index 38684f307c2..00000000000 --- a/mysql-test/t/max_heap_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 include/max_heap_table_size_basic.inc - diff --git a/mysql-test/t/max_seeks_for_key_basic_32.test b/mysql-test/t/max_seeks_for_key_basic_32.test deleted file mode 100644 index d7b9ce7f834..00000000000 --- a/mysql-test/t/max_seeks_for_key_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 include/max_seeks_for_key_basic.inc - diff --git a/mysql-test/t/max_tmp_tables_basic_32.test b/mysql-test/t/max_tmp_tables_basic_32.test deleted file mode 100644 index 98da87421b7..00000000000 --- a/mysql-test/t/max_tmp_tables_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 include/max_tmp_tables_basic.inc - diff --git a/mysql-test/t/max_write_lock_count_basic_32.test b/mysql-test/t/max_write_lock_count_basic_32.test deleted file mode 100644 index c33ffc53d6c..00000000000 --- a/mysql-test/t/max_write_lock_count_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 include/max_write_lock_count_basic.inc - diff --git a/mysql-test/t/min_examined_row_limit_basic_32.test b/mysql-test/t/min_examined_row_limit_basic_32.test deleted file mode 100644 index bbc3b6029d8..00000000000 --- a/mysql-test/t/min_examined_row_limit_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 include/min_examined_row_limit_basic.inc - diff --git a/mysql-test/t/multi_range_count_basic_32.test b/mysql-test/t/multi_range_count_basic_32.test deleted file mode 100644 index a2487ebc154..00000000000 --- a/mysql-test/t/multi_range_count_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 include/multi_range_count_basic.inc - diff --git a/mysql-test/t/myisam_max_sort_file_size_basic_32.test b/mysql-test/t/myisam_max_sort_file_size_basic_32.test deleted file mode 100644 index 5ff3a35a61f..00000000000 --- a/mysql-test/t/myisam_max_sort_file_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 include/myisam_max_sort_file_size_basic.inc - diff --git a/mysql-test/t/myisam_repair_threads_basic_32.test b/mysql-test/t/myisam_repair_threads_basic_32.test deleted file mode 100644 index 7f0f0785f09..00000000000 --- a/mysql-test/t/myisam_repair_threads_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 include/myisam_repair_threads_basic.inc - diff --git a/mysql-test/t/myisam_sort_buffer_size_basic_32.test b/mysql-test/t/myisam_sort_buffer_size_basic_32.test deleted file mode 100644 index d87a2015407..00000000000 --- a/mysql-test/t/myisam_sort_buffer_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 include/myisam_sort_buffer_size_basic.inc - diff --git a/mysql-test/t/net_retry_count_basic_32.test b/mysql-test/t/net_retry_count_basic_32.test deleted file mode 100644 index 1f7a4f1cb80..00000000000 --- a/mysql-test/t/net_retry_count_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 include/net_retry_count_basic.inc - diff --git a/mysql-test/t/query_alloc_block_size_basic_32.test b/mysql-test/t/query_alloc_block_size_basic_32.test deleted file mode 100644 index 281698c4179..00000000000 --- a/mysql-test/t/query_alloc_block_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 include/query_alloc_block_size_basic.inc - diff --git a/mysql-test/t/query_cache_limit_basic_32.test b/mysql-test/t/query_cache_limit_basic_32.test deleted file mode 100644 index cd5f94112a0..00000000000 --- a/mysql-test/t/query_cache_limit_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 include/query_cache_limit_basic.inc - diff --git a/mysql-test/t/query_cache_min_res_unit_basic_32.test b/mysql-test/t/query_cache_min_res_unit_basic_32.test deleted file mode 100644 index 4f3740ea872..00000000000 --- a/mysql-test/t/query_cache_min_res_unit_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 include/query_cache_min_res_unit_basic.inc - diff --git a/mysql-test/t/query_cache_size_basic_32.test b/mysql-test/t/query_cache_size_basic_32.test deleted file mode 100644 index 500bdbda5dd..00000000000 --- a/mysql-test/t/query_cache_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 include/query_cache_size_basic.inc - diff --git a/mysql-test/t/query_prealloc_size_basic_32.test b/mysql-test/t/query_prealloc_size_basic_32.test deleted file mode 100644 index ae919cd8d9e..00000000000 --- a/mysql-test/t/query_prealloc_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 include/query_prealloc_size_basic.inc - diff --git a/mysql-test/t/range_alloc_block_size_basic_32.test b/mysql-test/t/range_alloc_block_size_basic_32.test deleted file mode 100644 index 247e92cd362..00000000000 --- a/mysql-test/t/range_alloc_block_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 include/range_alloc_block_size_basic.inc - diff --git a/mysql-test/t/rpl_recovery_rank_basic_32.test b/mysql-test/t/rpl_recovery_rank_basic_32.test deleted file mode 100644 index d35878e153c..00000000000 --- a/mysql-test/t/rpl_recovery_rank_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 include/rpl_recovery_rank_basic.inc - diff --git a/mysql-test/t/server_id_basic_32.test b/mysql-test/t/server_id_basic_32.test deleted file mode 100644 index b7c4c603803..00000000000 --- a/mysql-test/t/server_id_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 include/server_id_basic.inc - diff --git a/mysql-test/t/slave_transaction_retries_basic_32.test b/mysql-test/t/slave_transaction_retries_basic_32.test deleted file mode 100644 index c19297ba72f..00000000000 --- a/mysql-test/t/slave_transaction_retries_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 include/slave_transaction_retries_basic.inc - diff --git a/mysql-test/t/sort_buffer_size_basic_32.test b/mysql-test/t/sort_buffer_size_basic_32.test deleted file mode 100644 index 8c86fe7786a..00000000000 --- a/mysql-test/t/sort_buffer_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 include/sort_buffer_size_basic.inc - diff --git a/mysql-test/t/sync_binlog_basic_32.test b/mysql-test/t/sync_binlog_basic_32.test deleted file mode 100644 index 3acd76b7e72..00000000000 --- a/mysql-test/t/sync_binlog_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 include/sync_binlog_basic.inc - diff --git a/mysql-test/t/timestamp_basic_32.test b/mysql-test/t/timestamp_basic_32.test deleted file mode 100644 index 72371c154fc..00000000000 --- a/mysql-test/t/timestamp_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 include/timestamp_basic.inc - diff --git a/mysql-test/t/tmp_table_size_basic_32.test b/mysql-test/t/tmp_table_size_basic_32.test deleted file mode 100644 index 19d54251c5e..00000000000 --- a/mysql-test/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 include/tmp_table_size_basic.inc - diff --git a/mysql-test/t/transaction_alloc_block_size_basic_32.test b/mysql-test/t/transaction_alloc_block_size_basic_32.test deleted file mode 100644 index a714a4f5a30..00000000000 --- a/mysql-test/t/transaction_alloc_block_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 include/transaction_alloc_block_size_basic.inc - diff --git a/mysql-test/t/transaction_prealloc_size_basic_32.test b/mysql-test/t/transaction_prealloc_size_basic_32.test deleted file mode 100644 index 868e281d30e..00000000000 --- a/mysql-test/t/transaction_prealloc_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 include/transaction_prealloc_size_basic.inc - diff --git a/mysql-test/t/wait_timeout_basic_32.test b/mysql-test/t/wait_timeout_basic_32.test deleted file mode 100644 index 88d60333138..00000000000 --- a/mysql-test/t/wait_timeout_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 include/wait_timeout_basic.inc - From 5d938a8dbe922062d6e823abd0a73cbe2efb76f8 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 22 Jul 2008 18:48:47 +0200 Subject: [PATCH 295/435] Fix for bug#37708: Result files of removed 32 bit tests. --- .../r/binlog_cache_size_basic_32.result | 102 --------- .../r/bulk_insert_buffer_size_basic_32.result | 154 ------------- .../r/delayed_insert_limit_basic_32.result | 112 ---------- .../r/delayed_queue_size_basic_32.result | 110 ---------- ...innodb_concurrency_tickets_basic_32.result | 100 --------- .../r/innodb_max_purge_lag_basic_32.result | 94 -------- .../r/innodb_sync_spin_loops_basic_32.result | 94 -------- mysql-test/r/join_buffer_size_basic_32.result | 198 ----------------- mysql-test/r/key_buffer_size_basic_32.result | 111 ---------- .../r/key_cache_age_threshold_basic_32.result | 126 ----------- .../r/key_cache_block_size_basic_32.result | 142 ------------ .../key_cache_division_limit_basic_32.result | 139 ------------ mysql-test/r/log_warnings_basic_32.result | 162 -------------- .../r/max_binlog_cache_size_basic_32.result | 145 ------------- .../r/max_connect_errors_basic_32.result | 137 ------------ .../r/max_heap_table_size_basic_32.result | 196 ----------------- .../r/max_seeks_for_key_basic_32.result | 180 ---------------- mysql-test/r/max_tmp_tables_basic_32.result | 197 ----------------- .../r/max_write_lock_count_basic_32.result | 108 ---------- .../r/min_examined_row_limit_basic_32.result | 180 ---------------- .../r/multi_range_count_basic_32.result | 192 ----------------- .../myisam_max_sort_file_size_basic_32.result | 114 ---------- .../r/myisam_repair_threads_basic_32.result | 180 ---------------- .../r/myisam_sort_buffer_size_basic_32.result | 184 ---------------- mysql-test/r/net_retry_count_basic_32.result | 192 ----------------- .../r/query_alloc_block_size_basic_32.result | 203 ------------------ .../r/query_cache_limit_basic_32.result | 126 ----------- .../query_cache_min_res_unit_basic_32.result | 134 ------------ mysql-test/r/query_cache_size_basic_32.result | 138 ------------ .../r/query_prealloc_size_basic_32.result | 178 --------------- .../r/range_alloc_block_size_basic_32.result | 182 ---------------- .../r/rpl_recovery_rank_basic_32.result | 110 ---------- mysql-test/r/server_id_basic_32.result | 117 ---------- .../slave_transaction_retries_basic_32.result | 119 ---------- mysql-test/r/sort_buffer_size_basic_32.result | 193 ----------------- mysql-test/r/sync_binlog_basic_32.result | 105 --------- mysql-test/r/timestamp_basic_32.result | 73 ------- mysql-test/r/tmp_table_size_basic_32.result | 172 --------------- ...ansaction_alloc_block_size_basic_32.result | 180 ---------------- .../transaction_prealloc_size_basic_32.result | 172 --------------- mysql-test/r/wait_timeout_basic_32.result | 129 ----------- 41 files changed, 5980 deletions(-) delete mode 100644 mysql-test/r/binlog_cache_size_basic_32.result delete mode 100644 mysql-test/r/bulk_insert_buffer_size_basic_32.result delete mode 100644 mysql-test/r/delayed_insert_limit_basic_32.result delete mode 100644 mysql-test/r/delayed_queue_size_basic_32.result delete mode 100644 mysql-test/r/innodb_concurrency_tickets_basic_32.result delete mode 100644 mysql-test/r/innodb_max_purge_lag_basic_32.result delete mode 100644 mysql-test/r/innodb_sync_spin_loops_basic_32.result delete mode 100644 mysql-test/r/join_buffer_size_basic_32.result delete mode 100644 mysql-test/r/key_buffer_size_basic_32.result delete mode 100644 mysql-test/r/key_cache_age_threshold_basic_32.result delete mode 100644 mysql-test/r/key_cache_block_size_basic_32.result delete mode 100644 mysql-test/r/key_cache_division_limit_basic_32.result delete mode 100644 mysql-test/r/log_warnings_basic_32.result delete mode 100644 mysql-test/r/max_binlog_cache_size_basic_32.result delete mode 100644 mysql-test/r/max_connect_errors_basic_32.result delete mode 100644 mysql-test/r/max_heap_table_size_basic_32.result delete mode 100644 mysql-test/r/max_seeks_for_key_basic_32.result delete mode 100644 mysql-test/r/max_tmp_tables_basic_32.result delete mode 100644 mysql-test/r/max_write_lock_count_basic_32.result delete mode 100644 mysql-test/r/min_examined_row_limit_basic_32.result delete mode 100644 mysql-test/r/multi_range_count_basic_32.result delete mode 100644 mysql-test/r/myisam_max_sort_file_size_basic_32.result delete mode 100644 mysql-test/r/myisam_repair_threads_basic_32.result delete mode 100644 mysql-test/r/myisam_sort_buffer_size_basic_32.result delete mode 100644 mysql-test/r/net_retry_count_basic_32.result delete mode 100644 mysql-test/r/query_alloc_block_size_basic_32.result delete mode 100644 mysql-test/r/query_cache_limit_basic_32.result delete mode 100644 mysql-test/r/query_cache_min_res_unit_basic_32.result delete mode 100644 mysql-test/r/query_cache_size_basic_32.result delete mode 100644 mysql-test/r/query_prealloc_size_basic_32.result delete mode 100644 mysql-test/r/range_alloc_block_size_basic_32.result delete mode 100644 mysql-test/r/rpl_recovery_rank_basic_32.result delete mode 100644 mysql-test/r/server_id_basic_32.result delete mode 100644 mysql-test/r/slave_transaction_retries_basic_32.result delete mode 100644 mysql-test/r/sort_buffer_size_basic_32.result delete mode 100644 mysql-test/r/sync_binlog_basic_32.result delete mode 100644 mysql-test/r/timestamp_basic_32.result delete mode 100644 mysql-test/r/tmp_table_size_basic_32.result delete mode 100644 mysql-test/r/transaction_alloc_block_size_basic_32.result delete mode 100644 mysql-test/r/transaction_prealloc_size_basic_32.result delete mode 100644 mysql-test/r/wait_timeout_basic_32.result diff --git a/mysql-test/r/binlog_cache_size_basic_32.result b/mysql-test/r/binlog_cache_size_basic_32.result deleted file mode 100644 index 6267c5493da..00000000000 --- a/mysql-test/r/binlog_cache_size_basic_32.result +++ /dev/null @@ -1,102 +0,0 @@ -SET @start_value = @@global.binlog_cache_size; -SELECT @start_value; -@start_value -32768 -'#--------------------FN_DYNVARS_006_01------------------------#' -SET @@global.binlog_cache_size = 100; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '100' -SET @@global.binlog_cache_size = DEFAULT; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -32768 -'#---------------------FN_DYNVARS_006_02-------------------------#' -SET @@global.binlog_cache_size = @start_value; -SELECT @@global.binlog_cache_size = 32768; -@@global.binlog_cache_size = 32768 -1 -'#--------------------FN_DYNVARS_006_03------------------------#' -SET @@global.binlog_cache_size = 4096; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = 4294967295; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4294963200 -SET @@global.binlog_cache_size = 10000; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -8192 -SET @@global.binlog_cache_size = 21221204; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -21217280 -'Bug: Invalid values are coming in variable on assigning valid values' -'#--------------------FN_DYNVARS_006_04-------------------------#' -SET @@global.binlog_cache_size = 1024; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '1024' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' -SET @@global.binlog_cache_size = -1024; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '0' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = 42949672950; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '42949672950' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4294963200 -'Bug: Errors are not coming on assigning invalid values to variable' -SET @@global.binlog_cache_size = ON; -ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' -SET @@global.binlog_cache_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' -'#-------------------FN_DYNVARS_006_05----------------------------#' -SET @@session.binlog_cache_size = 0; -ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -'#----------------------FN_DYNVARS_006_06------------------------#' -SELECT @@global.binlog_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_cache_size'; -@@global.binlog_cache_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_006_07----------------------#' -SET @@global.binlog_cache_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '1' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '0' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -'Bug: Errors are not coming on assigning TRUE/FALSE to variable' -'#---------------------FN_DYNVARS_006_08----------------------#' -SET @@global.binlog_cache_size = 1; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '1' -SELECT @@binlog_cache_size = @@global.binlog_cache_size; -@@binlog_cache_size = @@global.binlog_cache_size -1 -'#---------------------FN_DYNVARS_006_09----------------------#' -SET binlog_cache_size = 1; -ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SET global.binlog_cache_size = 1; -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 'binlog_cache_size = 1' at line 1 -SELECT global.binlog_cache_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT binlog_cache_size = @@session.binlog_cache_size; -ERROR 42S22: Unknown column 'binlog_cache_size' in 'field list' -SET @@global.binlog_cache_size = @start_value; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -32768 diff --git a/mysql-test/r/bulk_insert_buffer_size_basic_32.result b/mysql-test/r/bulk_insert_buffer_size_basic_32.result deleted file mode 100644 index 1194a0e7ce7..00000000000 --- a/mysql-test/r/bulk_insert_buffer_size_basic_32.result +++ /dev/null @@ -1,154 +0,0 @@ -SET @start_global_value = @@global.bulk_insert_buffer_size; -SELECT @start_global_value; -@start_global_value -8388608 -SET @start_session_value = @@session.bulk_insert_buffer_size; -SELECT @start_session_value; -@start_session_value -8388608 -'#--------------------FN_DYNVARS_007_01-------------------------#' -SET @@global.bulk_insert_buffer_size = 100; -SET @@global.bulk_insert_buffer_size = DEFAULT; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -8388608 -SET @@session.bulk_insert_buffer_size = 200; -SET @@session.bulk_insert_buffer_size = DEFAULT; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -8388608 -'#--------------------FN_DYNVARS_007_02-------------------------#' -SET @@global.bulk_insert_buffer_size = @start_global_value; -SELECT @@global.bulk_insert_buffer_size = 8388608; -@@global.bulk_insert_buffer_size = 8388608 -1 -SET @@session.bulk_insert_buffer_size = @start_session_value; -SELECT @@session.bulk_insert_buffer_size = 8388608; -@@session.bulk_insert_buffer_size = 8388608 -1 -'#--------------------FN_DYNVARS_007_03-------------------------#' -SET @@global.bulk_insert_buffer_size = 0; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -0 -SET @@global.bulk_insert_buffer_size = 1; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -1 -SET @@global.bulk_insert_buffer_size = 4294967295; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -4294967295 -SET @@global.bulk_insert_buffer_size = 429496; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -429496 -'#--------------------FN_DYNVARS_007_04-------------------------#' -SET @@session.bulk_insert_buffer_size = 0; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -0 -SET @@session.bulk_insert_buffer_size = 1; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -1 -SET @@session.bulk_insert_buffer_size = 4294967295; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -4294967295 -SET @@session.bulk_insert_buffer_size = 429496; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -429496 -'#------------------FN_DYNVARS_007_05-----------------------#' -SET @@global.bulk_insert_buffer_size = 42949672950; -Warnings: -Warning 1292 Truncated incorrect bulk_insert_buffer_size value: '42949672950' -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -4294967295 -SET @@global.bulk_insert_buffer_size = -1024; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -0 -SET @@global.bulk_insert_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@global.bulk_insert_buffer_size = ON; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@global.bulk_insert_buffer_size = 429496.10; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@session.bulk_insert_buffer_size = 42949672950; -Warnings: -Warning 1292 Truncated incorrect bulk_insert_buffer_size value: '42949672950' -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -4294967295 -SET @@session.bulk_insert_buffer_size = -2; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -0 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@session.bulk_insert_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@session.bulk_insert_buffer_size = 429496.10; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -'#------------------FN_DYNVARS_007_06-----------------------#' -SELECT @@global.bulk_insert_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='bulk_insert_buffer_size'; -@@global.bulk_insert_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_007_07-----------------------#' -SELECT @@session.bulk_insert_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='bulk_insert_buffer_size'; -@@session.bulk_insert_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_007_08-----------------------#' -SET @@global.bulk_insert_buffer_size = TRUE; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -1 -SET @@global.bulk_insert_buffer_size = FALSE; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -0 -SET @@session.bulk_insert_buffer_size = TRUE; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -1 -SET @@session.bulk_insert_buffer_size = FALSE; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -0 -'#---------------------FN_DYNVARS_007_09----------------------#' -SET @@bulk_insert_buffer_size = 100; -SELECT @@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size; -@@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size -1 -SELECT @@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; -@@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size -1 -'#---------------------FN_DYNVARS_007_10----------------------#' -SET bulk_insert_buffer_size = 1; -SELECT @@bulk_insert_buffer_size; -@@bulk_insert_buffer_size -1 -SET local.bulk_insert_buffer_size = 1; -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 'bulk_insert_buffer_size = 1' at line 1 -SELECT local.bulk_insert_buffer_size; -ERROR 42S02: Unknown table 'local' in field list -SET session.bulk_insert_buffer_size = 1; -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 'bulk_insert_buffer_size = 1' at line 1 -SELECT session.bulk_insert_buffer_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; -ERROR 42S22: Unknown column 'bulk_insert_buffer_size' in 'field list' -SET @@global.bulk_insert_buffer_size = @start_global_value; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -8388608 -SET @@session.bulk_insert_buffer_size = @start_session_value; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -8388608 diff --git a/mysql-test/r/delayed_insert_limit_basic_32.result b/mysql-test/r/delayed_insert_limit_basic_32.result deleted file mode 100644 index cb6820b2941..00000000000 --- a/mysql-test/r/delayed_insert_limit_basic_32.result +++ /dev/null @@ -1,112 +0,0 @@ -SET @start_value = @@global.delayed_insert_limit; -SELECT @start_value; -@start_value -100 -'#--------------------FN_DYNVARS_024_01------------------------#' -SET @@global.delayed_insert_limit = 100; -SET @@global.delayed_insert_limit = DEFAULT; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -100 -'#---------------------FN_DYNVARS_024_02-------------------------#' -SET @@global.delayed_insert_limit = @start_value; -SELECT @@global.delayed_insert_limit = 100; -@@global.delayed_insert_limit = 100 -1 -'#--------------------FN_DYNVARS_024_03------------------------#' -SET @@global.delayed_insert_limit = 10000; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -10000 -SET @@global.delayed_insert_limit = 4294967295; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -4294967295 -SET @@global.delayed_insert_limit = 1; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -'#--------------------FN_DYNVARS_024_04-------------------------#' -SET @@global.delayed_insert_limit = 0; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '0' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -SET @@global.delayed_insert_limit = -1024; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '0' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -SET @@global.delayed_insert_limit = 42949672950; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '42949672950' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.delayed_insert_limit = 429496729.5; -ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -4294967295 -SET @@global.delayed_insert_limit = ON; -ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -4294967295 -'#-------------------FN_DYNVARS_024_05----------------------------#' -SET @@session.delayed_insert_limit = 0; -ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@Session.delayed_insert_limit; -ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable -'#----------------------FN_DYNVARS_024_06------------------------#' -SELECT @@global.delayed_insert_limit = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='delayed_insert_limit'; -@@global.delayed_insert_limit = -VARIABLE_VALUE -1 -SELECT @@delayed_insert_limit = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='delayed_insert_limit'; -@@delayed_insert_limit = -VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_024_07----------------------#' -SET @@global.delayed_insert_limit = TRUE; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -SET @@global.delayed_insert_limit = FALSE; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '0' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -'#---------------------FN_DYNVARS_024_08----------------------#' -SET @@global.delayed_insert_limit = 1; -SELECT @@delayed_insert_limit = @@global.delayed_insert_limit; -@@delayed_insert_limit = @@global.delayed_insert_limit -1 -'#---------------------FN_DYNVARS_024_09----------------------#' -SET delayed_insert_limit = 1; -ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@delayed_insert_limit; -@@delayed_insert_limit -1 -SET local.delayed_insert_limit = 1; -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 'delayed_insert_limit = 1' at line 1 -SELECT local.delayed_insert_limit; -ERROR 42S02: Unknown table 'local' in field list -SET global.delayed_insert_limit = 1; -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 'delayed_insert_limit = 1' at line 1 -SELECT global.delayed_insert_limit; -ERROR 42S02: Unknown table 'global' in field list -SELECT delayed_insert_limit = @@session.delayed_insert_limit; -ERROR 42S22: Unknown column 'delayed_insert_limit' in 'field list' -SET @@global.delayed_insert_limit = @start_value; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -100 diff --git a/mysql-test/r/delayed_queue_size_basic_32.result b/mysql-test/r/delayed_queue_size_basic_32.result deleted file mode 100644 index 6bfa6f0de40..00000000000 --- a/mysql-test/r/delayed_queue_size_basic_32.result +++ /dev/null @@ -1,110 +0,0 @@ -SET @start_value = @@global.delayed_queue_size; -SELECT @start_value; -@start_value -1000 -'#--------------------FN_DYNVARS_026_01------------------------#' -SET @@global.delayed_queue_size = 100; -SET @@global.delayed_queue_size = DEFAULT; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1000 -'#---------------------FN_DYNVARS_026_02-------------------------#' -SET @@global.delayed_queue_size = @start_value; -SELECT @@global.delayed_queue_size = 1000; -@@global.delayed_queue_size = 1000 -1 -'#--------------------FN_DYNVARS_026_03------------------------#' -SET @@global.delayed_queue_size = 10000; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -10000 -SET @@global.delayed_queue_size = 4294967295; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -4294967295 -SET @@global.delayed_queue_size = 1; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -'#--------------------FN_DYNVARS_026_04-------------------------#' -SET @@global.delayed_queue_size = 0; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '0' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -SET @@global.delayed_queue_size = -1024; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '0' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -SET @@global.delayed_queue_size = 42949672950; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '42949672950' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.delayed_queue_size = 429496729.5; -ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -4294967295 -SET @@global.delayed_queue_size = ON; -ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' -SELECT @@delayed_queue_size; -@@delayed_queue_size -4294967295 -'#-------------------FN_DYNVARS_026_05----------------------------#' -SET @@session.delayed_queue_size = 0; -ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.delayed_queue_size; -ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable -'#----------------------FN_DYNVARS_026_06------------------------#' -SELECT @@global.delayed_queue_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='delayed_queue_size'; -@@global.delayed_queue_size = VARIABLE_VALUE -1 -SELECT @@delayed_queue_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='delayed_queue_size'; -@@delayed_queue_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_026_07----------------------#' -SET @@global.delayed_queue_size = TRUE; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -SET @@global.delayed_queue_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '0' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -'#---------------------FN_DYNVARS_026_08----------------------#' -SET @@global.delayed_queue_size = 1; -SELECT @@delayed_queue_size = @@global.delayed_queue_size; -@@delayed_queue_size = @@global.delayed_queue_size -1 -'#---------------------FN_DYNVARS_026_09----------------------#' -SET delayed_queue_size = 1; -ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@delayed_queue_size; -@@delayed_queue_size -1 -SET local.delayed_queue_size = 1; -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 'delayed_queue_size = 1' at line 1 -SELECT local.delayed_queue_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.delayed_queue_size = 1; -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 'delayed_queue_size = 1' at line 1 -SELECT global.delayed_queue_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT delayed_queue_size = @@session.delayed_queue_size; -ERROR 42S22: Unknown column 'delayed_queue_size' in 'field list' -SET @@global.delayed_queue_size = @start_value; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1000 diff --git a/mysql-test/r/innodb_concurrency_tickets_basic_32.result b/mysql-test/r/innodb_concurrency_tickets_basic_32.result deleted file mode 100644 index 1d1317d0d5e..00000000000 --- a/mysql-test/r/innodb_concurrency_tickets_basic_32.result +++ /dev/null @@ -1,100 +0,0 @@ -SET @global_start_value = @@global.innodb_concurrency_tickets; -SELECT @global_start_value; -@global_start_value -500 -'#--------------------FN_DYNVARS_046_01------------------------#' -SET @@global.innodb_concurrency_tickets = 0; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '0' -SET @@global.innodb_concurrency_tickets = DEFAULT; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -500 -'#---------------------FN_DYNVARS_046_02-------------------------#' -SET innodb_concurrency_tickets = 1; -ERROR HY000: Variable 'innodb_concurrency_tickets' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@innodb_concurrency_tickets; -@@innodb_concurrency_tickets -500 -SELECT local.innodb_concurrency_tickets; -ERROR 42S02: Unknown table 'local' in field list -SET global innodb_concurrency_tickets = 0; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '0' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -'#--------------------FN_DYNVARS_046_03------------------------#' -SET @@global.innodb_concurrency_tickets = 1; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -SET @@global.innodb_concurrency_tickets = 1000; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1000 -SET @@global.innodb_concurrency_tickets = 4294967295; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -4294967295 -'#--------------------FN_DYNVARS_046_04-------------------------#' -SET @@global.innodb_concurrency_tickets = -1; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '18446744073709551615' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -4294967295 -SET @@global.innodb_concurrency_tickets = "T"; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -4294967295 -SET @@global.innodb_concurrency_tickets = "Y"; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -4294967295 -SET @@global.innodb_concurrency_tickets = 1001; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -'#----------------------FN_DYNVARS_046_05------------------------#' -SELECT @@global.innodb_concurrency_tickets = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_concurrency_tickets'; -@@global.innodb_concurrency_tickets = -VARIABLE_VALUE -1 -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_concurrency_tickets'; -VARIABLE_VALUE -1001 -'#---------------------FN_DYNVARS_046_06-------------------------#' -SET @@global.innodb_concurrency_tickets = OFF; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -SET @@global.innodb_concurrency_tickets = ON; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -'#---------------------FN_DYNVARS_046_07----------------------#' -SET @@global.innodb_concurrency_tickets = TRUE; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -SET @@global.innodb_concurrency_tickets = FALSE; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '0' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -SET @@global.innodb_concurrency_tickets = @global_start_value; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -500 diff --git a/mysql-test/r/innodb_max_purge_lag_basic_32.result b/mysql-test/r/innodb_max_purge_lag_basic_32.result deleted file mode 100644 index ed960f12ff1..00000000000 --- a/mysql-test/r/innodb_max_purge_lag_basic_32.result +++ /dev/null @@ -1,94 +0,0 @@ -SET @global_start_value = @@global.innodb_max_purge_lag; -SELECT @global_start_value; -@global_start_value -0 -'#--------------------FN_DYNVARS_046_01------------------------#' -SET @@global.innodb_max_purge_lag = 0; -SET @@global.innodb_max_purge_lag = DEFAULT; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -'#---------------------FN_DYNVARS_046_02-------------------------#' -SET innodb_max_purge_lag = 1; -ERROR HY000: Variable 'innodb_max_purge_lag' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@innodb_max_purge_lag; -@@innodb_max_purge_lag -0 -SELECT local.innodb_max_purge_lag; -ERROR 42S02: Unknown table 'local' in field list -SET global innodb_max_purge_lag = 0; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -'#--------------------FN_DYNVARS_046_03------------------------#' -SET @@global.innodb_max_purge_lag = 0; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -SET @@global.innodb_max_purge_lag = 1; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1 -SET @@global.innodb_max_purge_lag = 4294967295; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -4294967295 -'#--------------------FN_DYNVARS_046_04-------------------------#' -SET @@global.innodb_max_purge_lag = -1; -Warnings: -Warning 1292 Truncated incorrect max_purge_lag value: '18446744073709551615' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -4294967295 -SET @@global.innodb_max_purge_lag = "T"; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -4294967295 -SET @@global.innodb_max_purge_lag = "Y"; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -4294967295 -SET @@global.innodb_max_purge_lag = 1001; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -'#----------------------FN_DYNVARS_046_05------------------------#' -SELECT @@global.innodb_max_purge_lag = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_max_purge_lag'; -@@global.innodb_max_purge_lag = -VARIABLE_VALUE -1 -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_max_purge_lag'; -VARIABLE_VALUE -1001 -'#---------------------FN_DYNVARS_046_06-------------------------#' -SET @@global.innodb_max_purge_lag = OFF; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -SET @@global.innodb_max_purge_lag = ON; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -'#---------------------FN_DYNVARS_046_07----------------------#' -SET @@global.innodb_max_purge_lag = TRUE; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1 -SET @@global.innodb_max_purge_lag = FALSE; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -SET @@global.innodb_max_purge_lag = @global_start_value; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 diff --git a/mysql-test/r/innodb_sync_spin_loops_basic_32.result b/mysql-test/r/innodb_sync_spin_loops_basic_32.result deleted file mode 100644 index 2b976e65b14..00000000000 --- a/mysql-test/r/innodb_sync_spin_loops_basic_32.result +++ /dev/null @@ -1,94 +0,0 @@ -SET @global_start_value = @@global.innodb_sync_spin_loops; -SELECT @global_start_value; -@global_start_value -20 -'#--------------------FN_DYNVARS_046_01------------------------#' -SET @@global.innodb_sync_spin_loops = 0; -SET @@global.innodb_sync_spin_loops = DEFAULT; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -20 -'#---------------------FN_DYNVARS_046_02-------------------------#' -SET innodb_sync_spin_loops = 1; -ERROR HY000: Variable 'innodb_sync_spin_loops' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@innodb_sync_spin_loops; -@@innodb_sync_spin_loops -20 -SELECT local.innodb_sync_spin_loops; -ERROR 42S02: Unknown table 'local' in field list -SET global innodb_sync_spin_loops = 0; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -0 -'#--------------------FN_DYNVARS_046_03------------------------#' -SET @@global.innodb_sync_spin_loops = 0; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -0 -SET @@global.innodb_sync_spin_loops = 1; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1 -SET @@global.innodb_sync_spin_loops = 1000; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1000 -'#--------------------FN_DYNVARS_046_04-------------------------#' -SET @@global.innodb_sync_spin_loops = -1; -Warnings: -Warning 1292 Truncated incorrect sync_spin_loops value: '18446744073709551615' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -4294967295 -SET @@global.innodb_sync_spin_loops = "T"; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -4294967295 -SET @@global.innodb_sync_spin_loops = "Y"; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -4294967295 -SET @@global.innodb_sync_spin_loops = 1001; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -'#----------------------FN_DYNVARS_046_05------------------------#' -SELECT @@global.innodb_sync_spin_loops = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_sync_spin_loops'; -@@global.innodb_sync_spin_loops = -VARIABLE_VALUE -1 -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_sync_spin_loops'; -VARIABLE_VALUE -1001 -'#---------------------FN_DYNVARS_046_06-------------------------#' -SET @@global.innodb_sync_spin_loops = OFF; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -SET @@global.innodb_sync_spin_loops = ON; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -'#---------------------FN_DYNVARS_046_07----------------------#' -SET @@global.innodb_sync_spin_loops = TRUE; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1 -SET @@global.innodb_sync_spin_loops = FALSE; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -0 -SET @@global.innodb_sync_spin_loops = @global_start_value; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -20 diff --git a/mysql-test/r/join_buffer_size_basic_32.result b/mysql-test/r/join_buffer_size_basic_32.result deleted file mode 100644 index fc3061d2f59..00000000000 --- a/mysql-test/r/join_buffer_size_basic_32.result +++ /dev/null @@ -1,198 +0,0 @@ -SET @start_global_value = @@global.join_buffer_size; -SELECT @start_global_value; -@start_global_value -131072 -SET @start_session_value = @@session.join_buffer_size; -SELECT @start_session_value; -@start_session_value -131072 -'#--------------------FN_DYNVARS_053_01-------------------------#' -SET @@global.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SET @@global.join_buffer_size = DEFAULT; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -131072 -SET @@session.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SET @@session.join_buffer_size = DEFAULT; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -131072 -'#--------------------FN_DYNVARS_053_02-------------------------#' -SET @@global.join_buffer_size = DEFAULT; -SELECT @@global.join_buffer_size = 131072; -@@global.join_buffer_size = 131072 -1 -SET @@session.join_buffer_size = DEFAULT; -SELECT @@session.join_buffer_size = 131072; -@@session.join_buffer_size = 131072 -1 -'#--------------------FN_DYNVARS_053_03-------------------------#' -SET @@global.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = 65536; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -65536 -SET @@global.join_buffer_size = 4294967295; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -4294963200 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -'#--------------------FN_DYNVARS_053_04-------------------------#' -SET @@session.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = 65536; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -65536 -SET @@session.join_buffer_size = 4294967295; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -4294963200 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -'#------------------FN_DYNVARS_053_05-----------------------#' -SET @@global.join_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = -1024; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = 8199; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8199' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = 42949672951; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '42949672951' -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -4294963200 -SET @@global.join_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 -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -4294963200 -SET @@global.join_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'join_buffer_size' -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -4294963200 -SET @@session.join_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = -2; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = 8199; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8199' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = 42949672951; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '42949672951' -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -4294963200 -SET @@session.join_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 -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -4294963200 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@session.join_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'join_buffer_size' -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -4294963200 -'#------------------FN_DYNVARS_053_06-----------------------#' -SELECT @@global.join_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='join_buffer_size'; -@@global.join_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_053_07-----------------------#' -SELECT @@session.join_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='join_buffer_size'; -@@session.join_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_053_08-----------------------#' -SET @@global.join_buffer_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '1' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.join_buffer_size = 10; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '10' -SELECT @@join_buffer_size = @@global.join_buffer_size; -@@join_buffer_size = @@global.join_buffer_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@join_buffer_size = 100; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '100' -SELECT @@join_buffer_size = @@local.join_buffer_size; -@@join_buffer_size = @@local.join_buffer_size -1 -SELECT @@local.join_buffer_size = @@session.join_buffer_size; -@@local.join_buffer_size = @@session.join_buffer_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET join_buffer_size = 1; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '1' -SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228; -@@join_buffer_size=8200 OR @@join_buffer_size= 8228 -1 -SELECT local.join_buffer_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.join_buffer_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT join_buffer_size = @@session.join_buffer_size; -ERROR 42S22: Unknown column 'join_buffer_size' in 'field list' -SET @@global.join_buffer_size = @start_global_value; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -131072 -SET @@session.join_buffer_size = @start_session_value; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -131072 diff --git a/mysql-test/r/key_buffer_size_basic_32.result b/mysql-test/r/key_buffer_size_basic_32.result deleted file mode 100644 index 981988a1d4d..00000000000 --- a/mysql-test/r/key_buffer_size_basic_32.result +++ /dev/null @@ -1,111 +0,0 @@ -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 -1 -'#---------------------FN_DYNVARS_055_02-------------------------#' -SET @@global.key_buffer_size = @start_value; -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 -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 -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' -SELECT @@global.key_buffer_size; -@@global.key_buffer_size -61440 -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 -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 -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 -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 -1 -'#----------------------FN_DYNVARS_055_06------------------------#' -SELECT @@global.key_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_buffer_size'; -@@global.key_buffer_size = VARIABLE_VALUE -1 -SELECT @@key_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_buffer_size'; -@@key_buffer_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_055_07----------------------#' -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 -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 -1 -'#---------------------FN_DYNVARS_055_08----------------------#' -SET @@global.key_buffer_size = @min_key_buffer_size; -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; -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 -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 -SELECT local.key_buffer_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.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 -SELECT global.key_buffer_size; -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/r/key_cache_age_threshold_basic_32.result b/mysql-test/r/key_cache_age_threshold_basic_32.result deleted file mode 100644 index 023b23ea425..00000000000 --- a/mysql-test/r/key_cache_age_threshold_basic_32.result +++ /dev/null @@ -1,126 +0,0 @@ -SET @start_value = @@global.key_cache_age_threshold; -SELECT @start_value; -@start_value -300 -'#--------------------FN_DYNVARS_056_01------------------------#' -SET @@global.key_cache_age_threshold = 99; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' -SET @@global.key_cache_age_threshold = DEFAULT; -ERROR 42000: Variable 'key_cache_age_threshold' doesn't have a default value -'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'#---------------------FN_DYNVARS_056_02-------------------------#' -SET @@global.key_cache_age_threshold = @start_value; -SELECT @@global.key_cache_age_threshold = 300; -@@global.key_cache_age_threshold = 300 -1 -'#--------------------FN_DYNVARS_056_03------------------------#' -SET @@global.key_cache_age_threshold = 100; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -SET @@global.key_cache_age_threshold = 4294967295; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -4294967200 -SET @@global.key_cache_age_threshold = 1800; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -1800 -SET @@global.key_cache_age_threshold = 65535; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -65500 -'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -'#--------------------FN_DYNVARS_056_04-------------------------#' -SET @@global.key_cache_age_threshold = -1; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -4294967200 -SET @@global.key_cache_age_threshold = 42949672951; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -4294967200 -SET @@global.key_cache_age_threshold = 10000.01; -ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -4294967200 -SET @@global.key_cache_age_threshold = -1024; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -4294966200 -SET @@global.key_cache_age_threshold = 99; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.key_cache_age_threshold = ON; -ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -SET @@global.key_cache_age_threshold = 'test'; -ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'#-------------------FN_DYNVARS_056_05----------------------------#' -SET @@session.key_cache_age_threshold = 0; -ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.key_cache_age_threshold; -ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable -'#----------------------FN_DYNVARS_056_06------------------------#' -SELECT @@global.key_cache_age_threshold = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_age_threshold'; -@@global.key_cache_age_threshold = VARIABLE_VALUE -1 -SELECT @@key_cache_age_threshold = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_age_threshold'; -@@key_cache_age_threshold = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_056_07----------------------#' -SET @@global.key_cache_age_threshold = TRUE; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '1' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -SET @@global.key_cache_age_threshold = FALSE; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '0' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'#---------------------FN_DYNVARS_056_08----------------------#' -SET @@global.key_cache_age_threshold = 101; -SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold; -@@key_cache_age_threshold = @@global.key_cache_age_threshold -1 -'#---------------------FN_DYNVARS_056_09----------------------#' -SET key_cache_age_threshold = 8000; -ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_cache_age_threshold; -@@key_cache_age_threshold -100 -SET local.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 -SELECT local.key_cache_age_threshold; -ERROR 42S02: Unknown table 'local' in field list -SET global.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 -SELECT global.key_cache_age_threshold; -ERROR 42S02: Unknown table 'global' in field list -SELECT key_cache_age_threshold = @@session.key_cache_age_threshold; -ERROR 42S22: Unknown column 'key_cache_age_threshold' in 'field list' -SET @@global.key_cache_age_threshold = @start_value; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -300 diff --git a/mysql-test/r/key_cache_block_size_basic_32.result b/mysql-test/r/key_cache_block_size_basic_32.result deleted file mode 100644 index ac78acb8244..00000000000 --- a/mysql-test/r/key_cache_block_size_basic_32.result +++ /dev/null @@ -1,142 +0,0 @@ -SET @start_value = @@global.key_cache_block_size; -SELECT @start_value; -@start_value -1024 -'#--------------------FN_DYNVARS_057_01------------------------#' -SET @@global.key_cache_block_size = 600; -SET @@global.key_cache_block_size = DEFAULT; -ERROR 42000: Variable 'key_cache_block_size' doesn't have a default value -'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -'#---------------------FN_DYNVARS_057_02-------------------------#' -SET @@global.key_cache_block_size = @start_value; -SELECT @@global.key_cache_block_size = 1024; -@@global.key_cache_block_size = 1024 -1 -'#--------------------FN_DYNVARS_057_03------------------------#' -SET @@global.key_cache_block_size = 1024; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -1024 -SET @@global.key_cache_block_size = 16384; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 1800; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -1536 -SET @@global.key_cache_block_size = 16383; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -15872 -'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -'#--------------------FN_DYNVARS_057_04-------------------------#' -SET @@global.key_cache_block_size = -1; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '4294967295' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 42949672951; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '4294967287' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = -1024; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '4294966272' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 256; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '256' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -SET @@global.key_cache_block_size = 511; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '511' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -SET @@global.key_cache_block_size = 16385; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '16385' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.key_cache_block_size = ON; -ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -'#-------------------FN_DYNVARS_057_05----------------------------#' -SET @@session.key_cache_block_size = 0; -ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.key_cache_block_size; -ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable -'#----------------------FN_DYNVARS_057_06------------------------#' -SELECT @@global.key_cache_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_block_size'; -@@global.key_cache_block_size = VARIABLE_VALUE -1 -SELECT @@key_cache_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_block_size'; -@@key_cache_block_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_057_07----------------------#' -SET @@global.key_cache_block_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '1' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -SET @@global.key_cache_block_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '0' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -'#---------------------FN_DYNVARS_057_08----------------------#' -SET @@global.key_cache_block_size = 1024; -SELECT @@key_cache_block_size = @@global.key_cache_block_size; -@@key_cache_block_size = @@global.key_cache_block_size -1 -'#---------------------FN_DYNVARS_057_09----------------------#' -SET key_cache_block_size = 8000; -ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_cache_block_size; -@@key_cache_block_size -1024 -SET local.key_cache_block_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_cache_block_size = 10' at line 1 -SELECT local.key_cache_block_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.key_cache_block_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_cache_block_size = 10' at line 1 -SELECT global.key_cache_block_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT key_cache_block_size = @@session.key_cache_block_size; -ERROR 42S22: Unknown column 'key_cache_block_size' in 'field list' -SET @@global.key_cache_block_size = @start_value; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -1024 diff --git a/mysql-test/r/key_cache_division_limit_basic_32.result b/mysql-test/r/key_cache_division_limit_basic_32.result deleted file mode 100644 index 5902dbcdf89..00000000000 --- a/mysql-test/r/key_cache_division_limit_basic_32.result +++ /dev/null @@ -1,139 +0,0 @@ -SET @start_value = @@global.key_cache_division_limit; -SELECT @start_value; -@start_value -100 -'#--------------------FN_DYNVARS_058_01------------------------#' -SET @@global.key_cache_division_limit = 50; -SET @@global.key_cache_division_limit = DEFAULT; -ERROR 42000: Variable 'key_cache_division_limit' doesn't have a default value -'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -50 -'#---------------------FN_DYNVARS_058_02-------------------------#' -SET @@global.key_cache_division_limit = @start_value; -SELECT @@global.key_cache_division_limit = 100; -@@global.key_cache_division_limit = 100 -1 -'#--------------------FN_DYNVARS_058_03------------------------#' -SET @@global.key_cache_division_limit = 1; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -SET @@global.key_cache_division_limit = 50; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -50 -SET @@global.key_cache_division_limit = 99; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -99 -SET @@global.key_cache_division_limit = 2; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -2 -'#--------------------FN_DYNVARS_058_04-------------------------#' -SET @@global.key_cache_division_limit = -1; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '4294967295' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 101; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '101' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 10000.01; -ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = -1024; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '4294966272' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 0; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '0' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -SET @@global.key_cache_division_limit = 200; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '200' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 65535; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '65535' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.key_cache_division_limit = ON; -ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 'test'; -ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -'#-------------------FN_DYNVARS_058_05----------------------------#' -SET @@session.key_cache_division_limit = 0; -ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.key_cache_division_limit; -ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable -'#----------------------FN_DYNVARS_058_06------------------------#' -SELECT @@global.key_cache_division_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_division_limit'; -@@global.key_cache_division_limit = VARIABLE_VALUE -1 -SELECT @@key_cache_division_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_division_limit'; -@@key_cache_division_limit = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_058_07----------------------#' -SET @@global.key_cache_division_limit = TRUE; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -SET @@global.key_cache_division_limit = FALSE; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '0' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -'#---------------------FN_DYNVARS_058_08----------------------#' -SET @@global.key_cache_division_limit = 90; -SELECT @@key_cache_division_limit = @@global.key_cache_division_limit; -@@key_cache_division_limit = @@global.key_cache_division_limit -1 -'#---------------------FN_DYNVARS_058_09----------------------#' -SET key_cache_division_limit = 80; -ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_cache_division_limit; -@@key_cache_division_limit -90 -SET local.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 -SELECT local.key_cache_division_limit; -ERROR 42S02: Unknown table 'local' in field list -SET global.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 -SELECT global.key_cache_division_limit; -ERROR 42S02: Unknown table 'global' in field list -SELECT key_cache_division_limit = @@session.key_cache_division_limit; -ERROR 42S22: Unknown column 'key_cache_division_limit' in 'field list' -SET @@global.key_cache_division_limit = @start_value; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 diff --git a/mysql-test/r/log_warnings_basic_32.result b/mysql-test/r/log_warnings_basic_32.result deleted file mode 100644 index 702e95b1383..00000000000 --- a/mysql-test/r/log_warnings_basic_32.result +++ /dev/null @@ -1,162 +0,0 @@ -SET @start_global_value = @@global.log_warnings; -SELECT @start_global_value; -@start_global_value -1 -SET @start_session_value = @@session.log_warnings; -SELECT @start_session_value; -@start_session_value -1 -'#--------------------FN_DYNVARS_067_01-------------------------#' -SET @@global.log_warnings = 100; -SET @@global.log_warnings = DEFAULT; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@session.log_warnings = 200; -SET @@session.log_warnings = DEFAULT; -SELECT @@session.log_warnings; -@@session.log_warnings -1 -'#--------------------FN_DYNVARS_067_02-------------------------#' -SET @@global.log_warnings = DEFAULT; -SELECT @@global.log_warnings = 1; -@@global.log_warnings = 1 -1 -SET @@session.log_warnings = DEFAULT; -SELECT @@session.log_warnings = 1; -@@session.log_warnings = 1 -1 -'#--------------------FN_DYNVARS_067_03-------------------------#' -SET @@global.log_warnings = 0; -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@global.log_warnings = 1; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@global.log_warnings = 60020; -SELECT @@global.log_warnings; -@@global.log_warnings -60020 -SET @@global.log_warnings = 65535; -SELECT @@global.log_warnings; -@@global.log_warnings -65535 -SET @@global.log_warnings = 65536; -SELECT @@global.log_warnings; -@@global.log_warnings -65536 -'#--------------------FN_DYNVARS_067_04-------------------------#' -SET @@session.log_warnings = 0; -SELECT @@session.log_warnings; -@@session.log_warnings -0 -SET @@session.log_warnings = 1; -SELECT @@session.log_warnings; -@@session.log_warnings -1 -SET @@session.log_warnings = 50050; -SELECT @@session.log_warnings; -@@session.log_warnings -50050 -SET @@session.log_warnings = 65535; -SELECT @@session.log_warnings; -@@session.log_warnings -65535 -SET @@session.log_warnings = 65550; -SELECT @@session.log_warnings; -@@session.log_warnings -65550 -'#------------------FN_DYNVARS_067_05-----------------------#' -SET @@global.log_warnings = 100000000000; -Warnings: -Warning 1292 Truncated incorrect log-warnings value: '100000000000' -SELECT @@global.log_warnings; -@@global.log_warnings -4294967295 -SET @@global.log_warnings = -1024; -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@global.log_warnings = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@global.log_warnings = test; -ERROR 42000: Incorrect argument type to variable 'log_warnings' -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@session.log_warnings = 100000000000; -Warnings: -Warning 1292 Truncated incorrect log-warnings value: '100000000000' -SELECT @@session.log_warnings; -@@session.log_warnings -4294967295 -SET @@session.log_warnings = -2; -SELECT @@session.log_warnings; -@@session.log_warnings -0 -SET @@session.log_warnings = 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 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.log_warnings = test; -ERROR 42000: Incorrect argument type to variable 'log_warnings' -SELECT @@session.log_warnings; -@@session.log_warnings -0 -'#------------------FN_DYNVARS_067_06-----------------------#' -SELECT @@global.log_warnings = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='log_warnings'; -@@global.log_warnings = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_067_07-----------------------#' -SELECT @@session.log_warnings = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='log_warnings'; -@@session.log_warnings = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_067_08-----------------------#' -SET @@global.log_warnings = TRUE; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@global.log_warnings = FALSE; -SELECT @@global.log_warnings; -@@global.log_warnings -0 -'#---------------------FN_DYNVARS_067_09----------------------#' -SET @@global.log_warnings = 10; -SELECT @@log_warnings = @@global.log_warnings; -@@log_warnings = @@global.log_warnings -0 -'#---------------------FN_DYNVARS_067_10----------------------#' -SET @@log_warnings = 100; -SELECT @@log_warnings = @@local.log_warnings; -@@log_warnings = @@local.log_warnings -1 -SELECT @@local.log_warnings = @@session.log_warnings; -@@local.log_warnings = @@session.log_warnings -1 -'#---------------------FN_DYNVARS_067_11----------------------#' -SET log_warnings = 1; -SELECT @@log_warnings; -@@log_warnings -1 -SELECT local.log_warnings; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.log_warnings; -ERROR 42S02: Unknown table 'session' in field list -SELECT log_warnings = @@session.log_warnings; -ERROR 42S22: Unknown column 'log_warnings' in 'field list' -SET @@global.log_warnings = @start_global_value; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@session.log_warnings = @start_session_value; -SELECT @@session.log_warnings; -@@session.log_warnings -1 diff --git a/mysql-test/r/max_binlog_cache_size_basic_32.result b/mysql-test/r/max_binlog_cache_size_basic_32.result deleted file mode 100644 index 1dbeb50ff90..00000000000 --- a/mysql-test/r/max_binlog_cache_size_basic_32.result +++ /dev/null @@ -1,145 +0,0 @@ -SET @start_value = @@global.max_binlog_cache_size; -SELECT @start_value; -@start_value -4294967295 -'#--------------------FN_DYNVARS_072_01------------------------#' -SET @@global.max_binlog_cache_size = 5000; -SET @@global.max_binlog_cache_size = DEFAULT; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -'#---------------------FN_DYNVARS_072_02-------------------------#' -SET @@global.max_binlog_cache_size = @start_value; -SELECT @@global.max_binlog_cache_size = 4294967295; -@@global.max_binlog_cache_size = 4294967295 -0 -'Bug# 34876: Incorrect Default Value is assigned to variable'; -'#--------------------FN_DYNVARS_072_03------------------------#' -SET @@global.max_binlog_cache_size = 4096; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 4294967295; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = 4294967294; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = 4097; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 65535; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -61440 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_072_04-------------------------#' -SET @@global.max_binlog_cache_size = -1; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 100000000000; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '100000000000' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = -1024; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 1024; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '1024' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '4294967296' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = 4095; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '4095' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.max_binlog_cache_size = ON; -ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -'#-------------------FN_DYNVARS_072_05----------------------------#' -SET @@session.max_binlog_cache_size = 4096; -ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.max_binlog_cache_size; -ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable -'#----------------------FN_DYNVARS_072_06------------------------#' -SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_binlog_cache_size'; -@@global.max_binlog_cache_size = VARIABLE_VALUE -1 -SELECT @@max_binlog_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_binlog_cache_size'; -@@max_binlog_cache_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_072_07----------------------#' -SET @@global.max_binlog_cache_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '1' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -'#---------------------FN_DYNVARS_072_08----------------------#' -SET @@global.max_binlog_cache_size = 5000; -SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size; -@@max_binlog_cache_size = @@global.max_binlog_cache_size -1 -'#---------------------FN_DYNVARS_072_09----------------------#' -SET max_binlog_cache_size = 6000; -ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@max_binlog_cache_size; -@@max_binlog_cache_size -4096 -SET local.max_binlog_cache_size = 7000; -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 'max_binlog_cache_size = 7000' at line 1 -SELECT local.max_binlog_cache_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.max_binlog_cache_size = 8000; -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 'max_binlog_cache_size = 8000' at line 1 -SELECT global.max_binlog_cache_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT max_binlog_cache_size = @@session.max_binlog_cache_size; -ERROR 42S22: Unknown column 'max_binlog_cache_size' in 'field list' -SET @@global.max_binlog_cache_size = @start_value; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 diff --git a/mysql-test/r/max_connect_errors_basic_32.result b/mysql-test/r/max_connect_errors_basic_32.result deleted file mode 100644 index b786e0ce31a..00000000000 --- a/mysql-test/r/max_connect_errors_basic_32.result +++ /dev/null @@ -1,137 +0,0 @@ -SET @start_value = @@global.max_connect_errors; -SELECT @start_value; -@start_value -10 -'#--------------------FN_DYNVARS_073_01------------------------#' -SET @@global.max_connect_errors = 5000; -SET @@global.max_connect_errors = DEFAULT; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -10 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#---------------------FN_DYNVARS_073_02-------------------------#' -SET @@global.max_connect_errors = @start_value; -SELECT @@global.max_connect_errors = 10; -@@global.max_connect_errors = 10 -1 -'#--------------------FN_DYNVARS_073_03------------------------#' -SET @@global.max_connect_errors = 4096; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4096 -SET @@global.max_connect_errors = 4294967294; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967294 -SET @@global.max_connect_errors = 4294967295; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -SET @@global.max_connect_errors = 1; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 2; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -2 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_073_04-------------------------#' -SET @@global.max_connect_errors = -1; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 100000000000; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '100000000000' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -SET @@global.max_connect_errors = 10000.01; -ERROR 42000: Incorrect argument type to variable 'max_connect_errors' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -SET @@global.max_connect_errors = -1024; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 0; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '4294967296' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.max_connect_errors = ON; -ERROR 42000: Incorrect argument type to variable 'max_connect_errors' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -SET @@global.max_connect_errors = 'test'; -ERROR 42000: Incorrect argument type to variable 'max_connect_errors' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -'#-------------------FN_DYNVARS_073_05----------------------------#' -SET @@session.max_connect_errors = 4096; -ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.max_connect_errors; -ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable -'#----------------------FN_DYNVARS_073_06------------------------#' -SELECT @@global.max_connect_errors = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_connect_errors'; -@@global.max_connect_errors = VARIABLE_VALUE -1 -SELECT @@max_connect_errors = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_connect_errors'; -@@max_connect_errors = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_073_07----------------------#' -SET @@global.max_connect_errors = TRUE; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -'#---------------------FN_DYNVARS_073_08----------------------#' -SET @@global.max_connect_errors = 5000; -SELECT @@max_connect_errors = @@global.max_connect_errors; -@@max_connect_errors = @@global.max_connect_errors -1 -'#---------------------FN_DYNVARS_073_09----------------------#' -SET max_connect_errors = 6000; -ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@max_connect_errors; -@@max_connect_errors -5000 -SET local.max_connect_errors = 7000; -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 'max_connect_errors = 7000' at line 1 -SELECT local.max_connect_errors; -ERROR 42S02: Unknown table 'local' in field list -SET global.max_connect_errors = 8000; -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 'max_connect_errors = 8000' at line 1 -SELECT global.max_connect_errors; -ERROR 42S02: Unknown table 'global' in field list -SELECT max_connect_errors = @@session.max_connect_errors; -ERROR 42S22: Unknown column 'max_connect_errors' in 'field list' -SET @@global.max_connect_errors = @start_value; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -10 diff --git a/mysql-test/r/max_heap_table_size_basic_32.result b/mysql-test/r/max_heap_table_size_basic_32.result deleted file mode 100644 index 04eaa3ddd19..00000000000 --- a/mysql-test/r/max_heap_table_size_basic_32.result +++ /dev/null @@ -1,196 +0,0 @@ -SET @start_global_value = @@global.max_heap_table_size; -SELECT @start_global_value; -@start_global_value -1048576 -SET @start_session_value = @@session.max_heap_table_size; -SELECT @start_session_value; -@start_session_value -1048576 -'#--------------------FN_DYNVARS_077_01-------------------------#' -SET @@global.max_heap_table_size = 1677721610; -SET @@global.max_heap_table_size = DEFAULT; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16777216 -SET @@session.max_heap_table_size = 1677721610; -SET @@session.max_heap_table_size = DEFAULT; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16777216 -'#--------------------FN_DYNVARS_077_02-------------------------#' -SET @@global.max_heap_table_size = DEFAULT; -SELECT @@global.max_heap_table_size = 16777216; -@@global.max_heap_table_size = 16777216 -1 -SET @@session.max_heap_table_size = DEFAULT; -SELECT @@session.max_heap_table_size = 16777216; -@@session.max_heap_table_size = 16777216 -1 -'#--------------------FN_DYNVARS_077_03-------------------------#' -SET @@global.max_heap_table_size = 16384; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 16385; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 65535; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -64512 -SET @@global.max_heap_table_size = 4294967294; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -SET @@global.max_heap_table_size = 4294967295; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_077_04-------------------------#' -SET @@session.max_heap_table_size = 16384; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 16385; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 65535; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -64512 -SET @@session.max_heap_table_size = 4294967294; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -SET @@session.max_heap_table_size = 4294967295; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#------------------FN_DYNVARS_077_05-----------------------#' -SET @@global.max_heap_table_size = -1; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = -1024; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 1024; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '1024' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 16383; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '16383' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 4294967296; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -SET @@global.max_heap_table_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -SET @@global.max_heap_table_size = test; -ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -SET @@session.max_heap_table_size = -1; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 16383; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '16383' -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 4294967296; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -SET @@session.max_heap_table_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.max_heap_table_size = 10737418241; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.max_heap_table_size = test; -ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -'#------------------FN_DYNVARS_077_06-----------------------#' -SELECT @@global.max_heap_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_heap_table_size'; -@@global.max_heap_table_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_077_07-----------------------#' -SELECT @@session.max_heap_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_heap_table_size'; -@@session.max_heap_table_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_077_08-----------------------#' -SET @@global.max_heap_table_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '1' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -'#---------------------FN_DYNVARS_077_09----------------------#' -SET @@global.max_heap_table_size = 163845; -SELECT @@max_heap_table_size = @@global.max_heap_table_size; -@@max_heap_table_size = @@global.max_heap_table_size -0 -'#---------------------FN_DYNVARS_077_10----------------------#' -SET @@max_heap_table_size = 16777216; -SELECT @@max_heap_table_size = @@local.max_heap_table_size; -@@max_heap_table_size = @@local.max_heap_table_size -1 -SELECT @@local.max_heap_table_size = @@session.max_heap_table_size; -@@local.max_heap_table_size = @@session.max_heap_table_size -1 -'#---------------------FN_DYNVARS_077_11----------------------#' -SET max_heap_table_size = 316777216; -SELECT @@max_heap_table_size; -@@max_heap_table_size -316776448 -SELECT local.max_heap_table_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.max_heap_table_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT max_heap_table_size = @@session.max_heap_table_size; -ERROR 42S22: Unknown column 'max_heap_table_size' in 'field list' -SET @@global.max_heap_table_size = @start_global_value; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -1048576 -SET @@session.max_heap_table_size = @start_session_value; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -1048576 diff --git a/mysql-test/r/max_seeks_for_key_basic_32.result b/mysql-test/r/max_seeks_for_key_basic_32.result deleted file mode 100644 index 64828fbe619..00000000000 --- a/mysql-test/r/max_seeks_for_key_basic_32.result +++ /dev/null @@ -1,180 +0,0 @@ -SET @start_global_value = @@global.max_seeks_for_key; -SELECT @start_global_value; -@start_global_value -4294967295 -SET @start_session_value = @@session.max_seeks_for_key; -SELECT @start_session_value; -@start_session_value -4294967295 -'#--------------------FN_DYNVARS_083_01-------------------------#' -SET @@global.max_seeks_for_key = 100; -SET @@global.max_seeks_for_key = DEFAULT; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@session.max_seeks_for_key = 200; -SET @@session.max_seeks_for_key = DEFAULT; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967295 -'#--------------------FN_DYNVARS_083_02-------------------------#' -SET @@global.max_seeks_for_key = DEFAULT; -SELECT @@global.max_seeks_for_key = 4294967295; -@@global.max_seeks_for_key = 4294967295 -1 -SET @@session.max_seeks_for_key = DEFAULT; -SELECT @@session.max_seeks_for_key = 4294967295; -@@session.max_seeks_for_key = 4294967295 -1 -'#--------------------FN_DYNVARS_083_03-------------------------#' -SET @@global.max_seeks_for_key = 1; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = 2; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -2 -SET @@global.max_seeks_for_key = 65536; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -65536 -SET @@global.max_seeks_for_key = 4294967295; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@global.max_seeks_for_key = 4294967294; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967294 -'#--------------------FN_DYNVARS_083_04-------------------------#' -SET @@session.max_seeks_for_key = 1; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -1 -SET @@session.max_seeks_for_key = 2; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -2 -SET @@session.max_seeks_for_key = 4294967295; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967295 -SET @@session.max_seeks_for_key = 4294967294; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967294 -SET @@session.max_seeks_for_key = 65535; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -65535 -'#------------------FN_DYNVARS_083_05-----------------------#' -SET @@global.max_seeks_for_key = 0; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = -1024; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '4294967296' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@global.max_seeks_for_key = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@global.max_seeks_for_key = test; -ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@session.max_seeks_for_key = 0; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -1 -SET @@session.max_seeks_for_key = -2; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -1 -SET @@session.max_seeks_for_key = 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.max_seeks_for_key = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '4294967296' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.max_seeks_for_key = test; -ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967295 -'#------------------FN_DYNVARS_083_06-----------------------#' -SELECT @@global.max_seeks_for_key = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_seeks_for_key'; -@@global.max_seeks_for_key = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_083_07-----------------------#' -SELECT @@session.max_seeks_for_key = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_seeks_for_key'; -@@session.max_seeks_for_key = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_083_08-----------------------#' -SET @@global.max_seeks_for_key = TRUE; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -'#---------------------FN_DYNVARS_083_09----------------------#' -SET @@global.max_seeks_for_key = 10; -SELECT @@max_seeks_for_key = @@global.max_seeks_for_key; -@@max_seeks_for_key = @@global.max_seeks_for_key -0 -'#---------------------FN_DYNVARS_083_10----------------------#' -SET @@max_seeks_for_key = 100; -SELECT @@max_seeks_for_key = @@local.max_seeks_for_key; -@@max_seeks_for_key = @@local.max_seeks_for_key -1 -SELECT @@local.max_seeks_for_key = @@session.max_seeks_for_key; -@@local.max_seeks_for_key = @@session.max_seeks_for_key -1 -'#---------------------FN_DYNVARS_083_11----------------------#' -SET max_seeks_for_key = 1; -SELECT @@max_seeks_for_key; -@@max_seeks_for_key -1 -SELECT local.max_seeks_for_key; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.max_seeks_for_key; -ERROR 42S02: Unknown table 'session' in field list -SELECT max_seeks_for_key = @@session.max_seeks_for_key; -ERROR 42S22: Unknown column 'max_seeks_for_key' in 'field list' -SET @@global.max_seeks_for_key = @start_global_value; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@session.max_seeks_for_key = @start_session_value; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967295 diff --git a/mysql-test/r/max_tmp_tables_basic_32.result b/mysql-test/r/max_tmp_tables_basic_32.result deleted file mode 100644 index 5f959069661..00000000000 --- a/mysql-test/r/max_tmp_tables_basic_32.result +++ /dev/null @@ -1,197 +0,0 @@ -SET @start_global_value = @@global.max_tmp_tables; -SELECT @start_global_value; -@start_global_value -32 -SET @start_session_value = @@session.max_tmp_tables; -SELECT @start_session_value; -@start_session_value -32 -'#--------------------FN_DYNVARS_086_01-------------------------#' -SET @@global.max_tmp_tables = 1000; -SET @@global.max_tmp_tables = DEFAULT; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -32 -SET @@session.max_tmp_tables = 1000; -SET @@session.max_tmp_tables = DEFAULT; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -32 -'#--------------------FN_DYNVARS_086_02-------------------------#' -SET @@global.max_tmp_tables = DEFAULT; -SELECT @@global.max_tmp_tables = 32; -@@global.max_tmp_tables = 32 -1 -SET @@session.max_tmp_tables = DEFAULT; -SELECT @@session.max_tmp_tables = 32; -@@session.max_tmp_tables = 32 -1 -'#--------------------FN_DYNVARS_086_03-------------------------#' -SET @@global.max_tmp_tables = 1; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = 2; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -2 -SET @@global.max_tmp_tables = 65536; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -65536 -SET @@global.max_tmp_tables = 4294967295; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967295 -SET @@global.max_tmp_tables = 4294967294; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967294 -'#--------------------FN_DYNVARS_086_04-------------------------#' -SET @@session.max_tmp_tables = 1; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -1 -SET @@session.max_tmp_tables = 2; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -2 -SET @@session.max_tmp_tables = 65536; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -65536 -SET @@session.max_tmp_tables = 4294967295; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967295 -SET @@session.max_tmp_tables = 4294967294; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967294 -'#------------------FN_DYNVARS_086_05-----------------------#' -SET @@global.max_tmp_tables = -1024; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '4294967296' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967295 -SET @@global.max_tmp_tables = -1; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = 429496729500; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '429496729500' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967295 -SET @@global.max_tmp_tables = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967295 -SET @@global.max_tmp_tables = test; -ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967295 -SET @@session.max_tmp_tables = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '4294967296' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967295 -SET @@session.max_tmp_tables = -1; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -1 -SET @@session.max_tmp_tables = 429496729500; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '429496729500' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967295 -SET @@session.max_tmp_tables = -001; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -1 -SET @@session.max_tmp_tables = 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.max_tmp_tables = 10737418241; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '10737418241' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967295 -SET @@session.max_tmp_tables = test; -ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967295 -'#------------------FN_DYNVARS_086_06-----------------------#' -SELECT @@global.max_tmp_tables = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_tmp_tables'; -@@global.max_tmp_tables = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_086_07-----------------------#' -SELECT @@session.max_tmp_tables = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_tmp_tables'; -@@session.max_tmp_tables = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_086_08-----------------------#' -SET @@global.max_tmp_tables = TRUE; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -'#---------------------FN_DYNVARS_086_09----------------------#' -SET @@global.max_tmp_tables = 20; -SELECT @@max_tmp_tables = @@global.max_tmp_tables; -@@max_tmp_tables = @@global.max_tmp_tables -0 -'#---------------------FN_DYNVARS_086_10----------------------#' -SET @@max_tmp_tables = 255; -SELECT @@max_tmp_tables = @@local.max_tmp_tables; -@@max_tmp_tables = @@local.max_tmp_tables -1 -SELECT @@local.max_tmp_tables = @@session.max_tmp_tables; -@@local.max_tmp_tables = @@session.max_tmp_tables -1 -'#---------------------FN_DYNVARS_086_11----------------------#' -SET max_tmp_tables = 102; -SELECT @@max_tmp_tables; -@@max_tmp_tables -102 -SELECT local.max_tmp_tables; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.max_tmp_tables; -ERROR 42S02: Unknown table 'session' in field list -SELECT max_tmp_tables = @@session.max_tmp_tables; -ERROR 42S22: Unknown column 'max_tmp_tables' in 'field list' -SET @@global.max_tmp_tables = @start_global_value; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -32 -SET @@session.max_tmp_tables = @start_session_value; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -32 diff --git a/mysql-test/r/max_write_lock_count_basic_32.result b/mysql-test/r/max_write_lock_count_basic_32.result deleted file mode 100644 index 0c9c3c00c1f..00000000000 --- a/mysql-test/r/max_write_lock_count_basic_32.result +++ /dev/null @@ -1,108 +0,0 @@ -SET @start_global_value = @@global.max_write_lock_count; -SELECT @start_global_value; -@start_global_value -4294967295 -'#--------------------FN_DYNVARS_088_01-------------------------#' -SET @@global.max_write_lock_count = 1000; -SET @@global.max_write_lock_count = DEFAULT; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -'#--------------------FN_DYNVARS_088_02-------------------------#' -SET @@global.max_write_lock_count = DEFAULT; -SELECT @@global.max_write_lock_count = 4294967295; -@@global.max_write_lock_count = 4294967295 -1 -'#--------------------FN_DYNVARS_088_03-------------------------#' -SET @@global.max_write_lock_count = 1; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = 2; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -2 -SET @@global.max_write_lock_count = 65536; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -65536 -SET @@global.max_write_lock_count = 4294967295; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -SET @@global.max_write_lock_count = 4294967294; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967294 -'#------------------FN_DYNVARS_088_04-----------------------#' -SET @@global.max_write_lock_count = -1024; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '0' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = 4294967296; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '4294967296' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -SET @@global.max_write_lock_count = -1; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '0' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = 429496729500; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '429496729500' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -SET @@global.max_write_lock_count = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -SET @@global.max_write_lock_count = test; -ERROR 42000: Incorrect argument type to variable 'max_write_lock_count' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -'#------------------FN_DYNVARS_088_05-----------------------#' -SELECT @@global.max_write_lock_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_write_lock_count'; -@@global.max_write_lock_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_088_06-----------------------#' -SET @@global.max_write_lock_count = TRUE; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '0' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -'#---------------------FN_DYNVARS_088_07----------------------#' -SET @@global.max_write_lock_count = 20; -SELECT @@max_write_lock_count = @@global.max_write_lock_count; -@@max_write_lock_count = @@global.max_write_lock_count -1 -'#---------------------FN_DYNVARS_088_08----------------------#' -SET @@global.max_write_lock_count = 102; -SELECT @@max_write_lock_count; -@@max_write_lock_count -102 -SELECT local.max_write_lock_count; -ERROR 42S02: Unknown table 'local' in field list -SELECT global.max_write_lock_count; -ERROR 42S02: Unknown table 'global' in field list -SELECT max_write_lock_count = @@global.max_write_lock_count; -ERROR 42S22: Unknown column 'max_write_lock_count' in 'field list' -SET @@global.max_write_lock_count = @start_global_value; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 diff --git a/mysql-test/r/min_examined_row_limit_basic_32.result b/mysql-test/r/min_examined_row_limit_basic_32.result deleted file mode 100644 index c0315944a8a..00000000000 --- a/mysql-test/r/min_examined_row_limit_basic_32.result +++ /dev/null @@ -1,180 +0,0 @@ -SET @start_global_value = @@global.min_examined_row_limit; -SELECT @start_global_value; -@start_global_value -0 -SET @start_session_value = @@session.min_examined_row_limit; -SELECT @start_session_value; -@start_session_value -0 -'#--------------------FN_DYNVARS_089_01-------------------------#' -SET @@global.min_examined_row_limit = 100; -SET @@global.min_examined_row_limit = DEFAULT; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = 200; -SET @@session.min_examined_row_limit = DEFAULT; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 -'#--------------------FN_DYNVARS_089_02-------------------------#' -SET @@global.min_examined_row_limit = DEFAULT; -SELECT @@global.min_examined_row_limit = 0; -@@global.min_examined_row_limit = 0 -1 -SET @@session.min_examined_row_limit = DEFAULT; -SELECT @@session.min_examined_row_limit = 0; -@@session.min_examined_row_limit = 0 -1 -'#--------------------FN_DYNVARS_089_03-------------------------#' -SET @@global.min_examined_row_limit = 0; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@global.min_examined_row_limit = 1; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -1 -SET @@global.min_examined_row_limit = 60020; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -60020 -SET @@global.min_examined_row_limit = 65535; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -65535 -SET @@global.min_examined_row_limit = 4294967295; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967295 -SET @@global.min_examined_row_limit = 4294967294; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967294 -'#--------------------FN_DYNVARS_089_04-------------------------#' -SET @@session.min_examined_row_limit = 0; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = 1; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -1 -SET @@session.min_examined_row_limit = 50050; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -50050 -SET @@session.min_examined_row_limit = 65535; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -65535 -SET @@session.min_examined_row_limit = 4294967295; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295 -SET @@session.min_examined_row_limit = 4294967294; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967294 -'#------------------FN_DYNVARS_089_05-----------------------#' -SET @@global.min_examined_row_limit = 429496726; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -429496726 -SET @@global.min_examined_row_limit = -1024; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@global.min_examined_row_limit = 429496729500; -Warnings: -Warning 1292 Truncated incorrect min_examined_row_limit value: '429496729500' -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967295 -SET @@global.min_examined_row_limit = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967295 -SET @@global.min_examined_row_limit = test; -ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967295 -SET @@session.min_examined_row_limit = 4294967296; -Warnings: -Warning 1292 Truncated incorrect min_examined_row_limit value: '4294967296' -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295 -SET @@session.min_examined_row_limit = -1; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = 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.min_examined_row_limit = 4294967295021; -Warnings: -Warning 1292 Truncated incorrect min_examined_row_limit value: '4294967295021' -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.min_examined_row_limit = test; -ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295 -'#------------------FN_DYNVARS_089_06-----------------------#' -SELECT @@global.min_examined_row_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='min_examined_row_limit'; -@@global.min_examined_row_limit = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_089_07-----------------------#' -SELECT @@session.min_examined_row_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='min_examined_row_limit'; -@@session.min_examined_row_limit = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_089_08-----------------------#' -SET @@global.min_examined_row_limit = TRUE; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -1 -SET @@global.min_examined_row_limit = FALSE; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -'#---------------------FN_DYNVARS_089_09----------------------#' -SET @@global.min_examined_row_limit = 10; -SELECT @@min_examined_row_limit = @@global.min_examined_row_limit; -@@min_examined_row_limit = @@global.min_examined_row_limit -0 -'#---------------------FN_DYNVARS_089_10----------------------#' -SET @@min_examined_row_limit = 100; -SELECT @@min_examined_row_limit = @@local.min_examined_row_limit; -@@min_examined_row_limit = @@local.min_examined_row_limit -1 -SELECT @@local.min_examined_row_limit = @@session.min_examined_row_limit; -@@local.min_examined_row_limit = @@session.min_examined_row_limit -1 -'#---------------------FN_DYNVARS_089_11----------------------#' -SET min_examined_row_limit = 1; -SELECT @@min_examined_row_limit; -@@min_examined_row_limit -1 -SELECT local.min_examined_row_limit; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.min_examined_row_limit; -ERROR 42S02: Unknown table 'session' in field list -SELECT min_examined_row_limit = @@session.min_examined_row_limit; -ERROR 42S22: Unknown column 'min_examined_row_limit' in 'field list' -SET @@global.min_examined_row_limit = @start_global_value; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = @start_session_value; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 diff --git a/mysql-test/r/multi_range_count_basic_32.result b/mysql-test/r/multi_range_count_basic_32.result deleted file mode 100644 index f6ac6490479..00000000000 --- a/mysql-test/r/multi_range_count_basic_32.result +++ /dev/null @@ -1,192 +0,0 @@ -SET @start_global_value = @@global.multi_range_count; -SELECT @start_global_value; -@start_global_value -256 -SET @start_session_value = @@session.multi_range_count; -SELECT @start_session_value; -@start_session_value -256 -'#--------------------FN_DYNVARS_090_01-------------------------#' -SET @@global.multi_range_count = 100; -SET @@global.multi_range_count = DEFAULT; -SELECT @@global.multi_range_count; -@@global.multi_range_count -256 -SET @@session.multi_range_count = 200; -SET @@session.multi_range_count = DEFAULT; -SELECT @@session.multi_range_count; -@@session.multi_range_count -256 -'#--------------------FN_DYNVARS_090_02-------------------------#' -SET @@global.multi_range_count = DEFAULT; -SELECT @@global.multi_range_count = 256; -@@global.multi_range_count = 256 -1 -SET @@session.multi_range_count = DEFAULT; -SELECT @@session.multi_range_count = 256; -@@session.multi_range_count = 256 -1 -'#--------------------FN_DYNVARS_090_03-------------------------#' -SET @@global.multi_range_count = 1; -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = 60020; -SELECT @@global.multi_range_count; -@@global.multi_range_count -60020 -SET @@global.multi_range_count = 65535; -SELECT @@global.multi_range_count; -@@global.multi_range_count -65535 -SET @@global.multi_range_count = 4294967295; -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967295 -SET @@global.multi_range_count = 4294967294; -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967294 -'#--------------------FN_DYNVARS_090_04-------------------------#' -SET @@session.multi_range_count = 1; -SELECT @@session.multi_range_count; -@@session.multi_range_count -1 -SET @@session.multi_range_count = 50050; -SELECT @@session.multi_range_count; -@@session.multi_range_count -50050 -SET @@session.multi_range_count = 65535; -SELECT @@session.multi_range_count; -@@session.multi_range_count -65535 -SET @@session.multi_range_count = 4294967295; -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295 -SET @@session.multi_range_count = 4294967294; -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967294 -'#------------------FN_DYNVARS_090_05-----------------------#' -SET @@global.multi_range_count = 0; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = 4294967296; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '4294967296' -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967295 -SET @@global.multi_range_count = -1024; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = 429496729500; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '429496729500' -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967295 -SET @@global.multi_range_count = 65530.34; -ERROR 42000: Incorrect argument type to variable 'multi_range_count' -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967295 -SET @@global.multi_range_count = test; -ERROR 42000: Incorrect argument type to variable 'multi_range_count' -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967295 -SET @@session.multi_range_count = 0; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@session.multi_range_count; -@@session.multi_range_count -1 -SET @@session.multi_range_count = 4294967296; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '4294967296' -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295 -SET @@session.multi_range_count = -1; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@session.multi_range_count; -@@session.multi_range_count -1 -SET @@session.multi_range_count = 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.multi_range_count = 4294967295021; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '4294967295021' -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.multi_range_count = test; -ERROR 42000: Incorrect argument type to variable 'multi_range_count' -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295 -'#------------------FN_DYNVARS_090_06-----------------------#' -SELECT @@global.multi_range_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='multi_range_count'; -@@global.multi_range_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_090_07-----------------------#' -SELECT @@session.multi_range_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='multi_range_count'; -@@session.multi_range_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_090_08-----------------------#' -SET @@global.multi_range_count = TRUE; -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = FALSE; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -'#---------------------FN_DYNVARS_090_09----------------------#' -SET @@global.multi_range_count = 10; -SELECT @@multi_range_count = @@global.multi_range_count; -@@multi_range_count = @@global.multi_range_count -0 -'#---------------------FN_DYNVARS_090_10----------------------#' -SET @@multi_range_count = 100; -SELECT @@multi_range_count = @@local.multi_range_count; -@@multi_range_count = @@local.multi_range_count -1 -SELECT @@local.multi_range_count = @@session.multi_range_count; -@@local.multi_range_count = @@session.multi_range_count -1 -'#---------------------FN_DYNVARS_090_11----------------------#' -SET multi_range_count = 1; -SELECT @@multi_range_count; -@@multi_range_count -1 -SELECT local.multi_range_count; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.multi_range_count; -ERROR 42S02: Unknown table 'session' in field list -SELECT multi_range_count = @@session.multi_range_count; -ERROR 42S22: Unknown column 'multi_range_count' in 'field list' -SET @@global.multi_range_count = @start_global_value; -SELECT @@global.multi_range_count; -@@global.multi_range_count -256 -SET @@session.multi_range_count = @start_session_value; -SELECT @@session.multi_range_count; -@@session.multi_range_count -256 diff --git a/mysql-test/r/myisam_max_sort_file_size_basic_32.result b/mysql-test/r/myisam_max_sort_file_size_basic_32.result deleted file mode 100644 index 64d1168685c..00000000000 --- a/mysql-test/r/myisam_max_sort_file_size_basic_32.result +++ /dev/null @@ -1,114 +0,0 @@ -SET @start_global_value = @@global.myisam_max_sort_file_size; -SELECT @start_global_value; -@start_global_value -2147483647 -'#--------------------FN_DYNVARS_094_01-------------------------#' -SET @@global.myisam_max_sort_file_size = 500000; -SET @@global.myisam_max_sort_file_size = DEFAULT; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -2146435072 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#--------------------FN_DYNVARS_094_02-------------------------#' -SET @@global.myisam_max_sort_file_size = DEFAULT; -SELECT @@global.myisam_max_sort_file_size = 2147483648; -@@global.myisam_max_sort_file_size = 2147483648 -0 -'#--------------------FN_DYNVARS_094_03-------------------------#' -SET @@global.myisam_max_sort_file_size = 0; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 1024; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 123456789; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -122683392 -SET @@global.myisam_max_sort_file_size = 2147483648*2; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -4294967296 -SET @@global.myisam_max_sort_file_size = 2147483648*1024; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -2199023255552 -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -2199023255552 -SET @@global.myisam_max_sort_file_size = 2147483648*2147483648; -'#--------------------FN_DYNVARS_094_04-------------------------#' -SET @@myisam_max_sort_file_size = 2; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.myisam_max_sort_file_size = 3; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.myisam_max_sort_file_size = 4; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_094_05-----------------------#' -SET @@global.myisam_max_sort_file_size = -1; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = -2147483648; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = -2147483649; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 2147483649.56; -ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 1G; -ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -'#------------------FN_DYNVARS_094_06-----------------------#' -SET @@global.myisam_max_sort_file_size = 3000; -SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_max_sort_file_size'; -@@global.myisam_max_sort_file_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_094_07-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_max_sort_file_size'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_094_08-----------------------#' -SET @@global.myisam_max_sort_file_size = TRUE; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = FALSE; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.myisam_max_sort_file_size = 512; -SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size; -@@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET myisam_max_sort_file_size = 2048; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT myisam_max_sort_file_size; -ERROR 42S22: Unknown column 'myisam_max_sort_file_size' in 'field list' -SELECT @@myisam_max_sort_file_size; -@@myisam_max_sort_file_size -0 -SET global myisam_max_sort_file_size = 64; -SET @@global.myisam_max_sort_file_size = @start_global_value; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -2146435072 diff --git a/mysql-test/r/myisam_repair_threads_basic_32.result b/mysql-test/r/myisam_repair_threads_basic_32.result deleted file mode 100644 index c91128e3f4c..00000000000 --- a/mysql-test/r/myisam_repair_threads_basic_32.result +++ /dev/null @@ -1,180 +0,0 @@ -SET @start_global_value = @@global.myisam_repair_threads; -SELECT @start_global_value; -@start_global_value -1 -SET @start_session_value = @@session.myisam_repair_threads; -SELECT @start_session_value; -@start_session_value -1 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.myisam_repair_threads = 100; -SET @@global.myisam_repair_threads = DEFAULT; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = 200; -SET @@session.myisam_repair_threads = DEFAULT; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.myisam_repair_threads = DEFAULT; -SELECT @@global.myisam_repair_threads = 1; -@@global.myisam_repair_threads = 1 -1 -SET @@session.myisam_repair_threads = DEFAULT; -SELECT @@session.myisam_repair_threads = 1; -@@session.myisam_repair_threads = 1 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.myisam_repair_threads = 1; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = 4294967295; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = 655354; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -655354 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.myisam_repair_threads = 1; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = 4294967295; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -4294967295 -SET @@session.myisam_repair_threads = 655345; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -655345 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.myisam_repair_threads = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = -1024; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = 429496729533; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '429496729533' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = test; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = 'test'; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = ON; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@session.myisam_repair_threads = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = -2; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = test; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.myisam_repair_threads = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_repair_threads '; -@@global.myisam_repair_threads = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.myisam_repair_threads = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_repair_threads '; -@@session.myisam_repair_threads = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_08-----------------------#' -SET @@global.myisam_repair_threads = TRUE; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = FALSE; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.myisam_repair_threads = 10; -SELECT @@myisam_repair_threads = @@global.myisam_repair_threads ; -@@myisam_repair_threads = @@global.myisam_repair_threads -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@myisam_repair_threads = 100; -SELECT @@myisam_repair_threads = @@local.myisam_repair_threads ; -@@myisam_repair_threads = @@local.myisam_repair_threads -1 -SELECT @@local.myisam_repair_threads = @@session.myisam_repair_threads ; -@@local.myisam_repair_threads = @@session.myisam_repair_threads -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET myisam_repair_threads = 1; -SELECT @@myisam_repair_threads ; -@@myisam_repair_threads -1 -SELECT local.myisam_repair_threads ; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.myisam_repair_threads ; -ERROR 42S02: Unknown table 'session' in field list -SELECT myisam_repair_threads = @@session.myisam_repair_threads ; -ERROR 42S22: Unknown column 'myisam_repair_threads' in 'field list' -SET @@global.myisam_repair_threads = @start_global_value; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = @start_session_value; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 diff --git a/mysql-test/r/myisam_sort_buffer_size_basic_32.result b/mysql-test/r/myisam_sort_buffer_size_basic_32.result deleted file mode 100644 index 74d2fb3ec86..00000000000 --- a/mysql-test/r/myisam_sort_buffer_size_basic_32.result +++ /dev/null @@ -1,184 +0,0 @@ -SET @start_global_value = @@global.myisam_sort_buffer_size ; -SELECT @start_global_value; -@start_global_value -8388608 -SET @start_session_value = @@session.myisam_sort_buffer_size ; -SELECT @start_session_value; -@start_session_value -8388608 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.myisam_sort_buffer_size = 100; -SET @@global.myisam_sort_buffer_size = DEFAULT; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -8388608 -SET @@session.myisam_sort_buffer_size = 200; -SET @@session.myisam_sort_buffer_size = DEFAULT; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -8388608 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.myisam_sort_buffer_size = DEFAULT; -SELECT @@global.myisam_sort_buffer_size = 8388608; -@@global.myisam_sort_buffer_size = 8388608 -1 -SET @@session.myisam_sort_buffer_size = DEFAULT; -SELECT @@session.myisam_sort_buffer_size = 8388608; -@@session.myisam_sort_buffer_size = 8388608 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.myisam_sort_buffer_size = 4; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = 4294967295; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_sort_buffer_size = 655354; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -655354 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.myisam_sort_buffer_size = 4; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = 4294967295; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4294967295 -SET @@session.myisam_sort_buffer_size = 655345; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -655345 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.myisam_sort_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = -1024; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = 429496729533; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '429496729533' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_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 -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_sort_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_sort_buffer_size = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_sort_buffer_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_sort_buffer_size = ON; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@session.myisam_sort_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = -2; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_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 -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_sort_buffer_size '; -@@global.myisam_sort_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_sort_buffer_size '; -@@session.myisam_sort_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_08-----------------------#' -SET @@global.myisam_sort_buffer_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.myisam_sort_buffer_size = 10; -SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; -@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@myisam_sort_buffer_size = 100; -SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; -@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size -1 -SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; -@@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET myisam_sort_buffer_size = 1; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' -SELECT @@myisam_sort_buffer_size ; -@@myisam_sort_buffer_size -4 -SELECT local.myisam_sort_buffer_size ; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.myisam_sort_buffer_size ; -ERROR 42S02: Unknown table 'session' in field list -SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; -ERROR 42S22: Unknown column 'myisam_sort_buffer_size' in 'field list' -SET @@global.myisam_sort_buffer_size = @start_global_value; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -8388608 -SET @@session.myisam_sort_buffer_size = @start_session_value; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -8388608 diff --git a/mysql-test/r/net_retry_count_basic_32.result b/mysql-test/r/net_retry_count_basic_32.result deleted file mode 100644 index 3923df539e7..00000000000 --- a/mysql-test/r/net_retry_count_basic_32.result +++ /dev/null @@ -1,192 +0,0 @@ -SET @start_global_value = @@global.net_retry_count; -SELECT @start_global_value; -@start_global_value -10 -SET @start_session_value = @@session.net_retry_count; -SELECT @start_session_value; -@start_session_value -10 -'#--------------------FN_DYNVARS_111_01-------------------------#' -SET @@global.net_retry_count = 100; -SET @@global.net_retry_count = DEFAULT; -SELECT @@global.net_retry_count; -@@global.net_retry_count -10 -SET @@session.net_retry_count = 200; -SET @@session.net_retry_count = DEFAULT; -SELECT @@session.net_retry_count; -@@session.net_retry_count -10 -'#--------------------FN_DYNVARS_111_02-------------------------#' -SET @@global.net_retry_count = DEFAULT; -SELECT @@global.net_retry_count = 10; -@@global.net_retry_count = 10 -1 -SET @@session.net_retry_count = DEFAULT; -SELECT @@session.net_retry_count = 10; -@@session.net_retry_count = 10 -1 -'#--------------------FN_DYNVARS_111_03-------------------------#' -SET @@global.net_retry_count = 1; -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = 2; -SELECT @@global.net_retry_count; -@@global.net_retry_count -2 -SET @@global.net_retry_count = 4294967295; -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967295 -SET @@global.net_retry_count = 4294967294; -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967294 -SET @@global.net_retry_count = 65536; -SELECT @@global.net_retry_count; -@@global.net_retry_count -65536 -'#--------------------FN_DYNVARS_111_04-------------------------#' -SET @@session.net_retry_count = 1; -SELECT @@session.net_retry_count; -@@session.net_retry_count -1 -SET @@session.net_retry_count = 2; -SELECT @@session.net_retry_count; -@@session.net_retry_count -2 -SET @@session.net_retry_count = 65535; -SELECT @@session.net_retry_count; -@@session.net_retry_count -65535 -SET @@session.net_retry_count = 4294967295; -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967295 -SET @@session.net_retry_count = 4294967294; -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967294 -'#------------------FN_DYNVARS_111_05-----------------------#' -SET @@global.net_retry_count = 0; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = -1024; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = 4294967296; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '4294967296' -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967295 -SET @@global.net_retry_count = 429496729500; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '429496729500' -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967295 -SET @@global.net_retry_count = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967295 -SET @@global.net_retry_count = test; -ERROR 42000: Incorrect argument type to variable 'net_retry_count' -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967295 -SET @@session.net_retry_count = 0; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@session.net_retry_count; -@@session.net_retry_count -1 -SET @@session.net_retry_count = -2; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@session.net_retry_count; -@@session.net_retry_count -1 -SET @@session.net_retry_count = 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.net_retry_count = 6555015425; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '6555015425' -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967295 -SET @@session.net_retry_count = 4294967296; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '4294967296' -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.net_retry_count = test; -ERROR 42000: Incorrect argument type to variable 'net_retry_count' -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967295 -'#------------------FN_DYNVARS_111_06-----------------------#' -SELECT @@global.net_retry_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='net_retry_count'; -@@global.net_retry_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_111_07-----------------------#' -SELECT @@session.net_retry_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='net_retry_count'; -@@session.net_retry_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_111_08-----------------------#' -SET @@global.net_retry_count = TRUE; -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = FALSE; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -'#---------------------FN_DYNVARS_111_09----------------------#' -SET @@global.net_retry_count = 10; -SELECT @@net_retry_count = @@global.net_retry_count; -@@net_retry_count = @@global.net_retry_count -0 -'#---------------------FN_DYNVARS_111_10----------------------#' -SET @@net_retry_count = 100; -SELECT @@net_retry_count = @@local.net_retry_count; -@@net_retry_count = @@local.net_retry_count -1 -SELECT @@local.net_retry_count = @@session.net_retry_count; -@@local.net_retry_count = @@session.net_retry_count -1 -'#---------------------FN_DYNVARS_111_11----------------------#' -SET net_retry_count = 1; -SELECT @@net_retry_count; -@@net_retry_count -1 -SELECT local.net_retry_count; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.net_retry_count; -ERROR 42S02: Unknown table 'session' in field list -SELECT net_retry_count = @@session.net_retry_count; -ERROR 42S22: Unknown column 'net_retry_count' in 'field list' -SET @@global.net_retry_count = @start_global_value; -SELECT @@global.net_retry_count; -@@global.net_retry_count -10 -SET @@session.net_retry_count = @start_session_value; -SELECT @@session.net_retry_count; -@@session.net_retry_count -10 diff --git a/mysql-test/r/query_alloc_block_size_basic_32.result b/mysql-test/r/query_alloc_block_size_basic_32.result deleted file mode 100644 index 3b7f06c8f81..00000000000 --- a/mysql-test/r/query_alloc_block_size_basic_32.result +++ /dev/null @@ -1,203 +0,0 @@ -SET @start_global_value = @@global.query_alloc_block_size; -SELECT @start_global_value; -@start_global_value -8192 -SET @start_session_value = @@session.query_alloc_block_size; -SELECT @start_session_value; -@start_session_value -8192 -'#--------------------FN_DYNVARS_130_01-------------------------#' -SET @@global.query_alloc_block_size = 10000; -SET @@global.query_alloc_block_size = DEFAULT; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -8192 -SET @@session.query_alloc_block_size = 20000; -SET @@session.query_alloc_block_size = DEFAULT; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -8192 -'#--------------------FN_DYNVARS_130_02-------------------------#' -SET @@global.query_alloc_block_size = DEFAULT; -SELECT @@global.query_alloc_block_size = 8192; -@@global.query_alloc_block_size = 8192 -1 -SET @@session.query_alloc_block_size = DEFAULT; -SELECT @@session.query_alloc_block_size = 8192; -@@session.query_alloc_block_size = 8192 -1 -'#--------------------FN_DYNVARS_130_03-------------------------#' -SET @@global.query_alloc_block_size = 1024; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 1025; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 4294967295; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@global.query_alloc_block_size = 4294967294; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@global.query_alloc_block_size = 65536; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -65536 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_130_04-------------------------#' -SET @@session.query_alloc_block_size = 1024; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = 1025; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = 4294967295; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294966272 -SET @@session.query_alloc_block_size = 4294967294; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294966272 -SET @@session.query_alloc_block_size = 655536; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -655360 -'#------------------FN_DYNVARS_130_05-----------------------#' -SET @@global.query_alloc_block_size = 64; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '64' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = -1; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '0' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 1023; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967296' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@global.query_alloc_block_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@global.query_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@session.query_alloc_block_size = 64; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '64' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = -2; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '0' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_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.query_alloc_block_size = 1023; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967296' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294966272 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.query_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294966272 -'#------------------FN_DYNVARS_130_06-----------------------#' -'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement'; -SET @@global.query_alloc_block_size = 1; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1' -SET @@session.query_alloc_block_size = 12; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '12' -SELECT @@global.query_alloc_block_size = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_alloc_block_size'; -@@global.query_alloc_block_size = -VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_130_07-----------------------#' -SELECT @@session.query_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_alloc_block_size'; -@@session.query_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_130_08-----------------------#' -SET @@global.query_alloc_block_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '0' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -'#---------------------FN_DYNVARS_130_09----------------------#' -SET @@global.query_alloc_block_size = 2048; -SELECT @@query_alloc_block_size = @@global.query_alloc_block_size; -@@query_alloc_block_size = @@global.query_alloc_block_size -0 -'#---------------------FN_DYNVARS_130_10----------------------#' -SET @@query_alloc_block_size = 5000; -SELECT @@query_alloc_block_size = @@local.query_alloc_block_size; -@@query_alloc_block_size = @@local.query_alloc_block_size -1 -SELECT @@local.query_alloc_block_size = @@session.query_alloc_block_size; -@@local.query_alloc_block_size = @@session.query_alloc_block_size -1 -'#---------------------FN_DYNVARS_130_11----------------------#' -SET query_alloc_block_size = 1024; -SELECT @@query_alloc_block_size; -@@query_alloc_block_size -1024 -SELECT local.query_alloc_block_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.query_alloc_block_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT query_alloc_block_size = @@session.query_alloc_block_size; -ERROR 42S22: Unknown column 'query_alloc_block_size' in 'field list' -SET @@global.query_alloc_block_size = @start_global_value; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -8192 -SET @@session.query_alloc_block_size = @start_session_value; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -8192 diff --git a/mysql-test/r/query_cache_limit_basic_32.result b/mysql-test/r/query_cache_limit_basic_32.result deleted file mode 100644 index bb66233732d..00000000000 --- a/mysql-test/r/query_cache_limit_basic_32.result +++ /dev/null @@ -1,126 +0,0 @@ -SET @start_value = @@global.query_cache_limit; -SELECT @start_value; -@start_value -1048576 -'#--------------------FN_DYNVARS_131_01------------------------#' -SET @@global.query_cache_limit = 99; -SET @@global.query_cache_limit = DEFAULT; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048576 -'#---------------------FN_DYNVARS_131_02-------------------------#' -SET @@global.query_cache_limit = @start_value; -SELECT @@global.query_cache_limit = 1048576; -@@global.query_cache_limit = 1048576 -1 -'#--------------------FN_DYNVARS_131_03------------------------#' -SET @@global.query_cache_limit = 0; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -SET @@global.query_cache_limit = 1; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1 -SET @@global.query_cache_limit = 1048576; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048576 -SET @@global.query_cache_limit = 1048575; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048575 -'#--------------------FN_DYNVARS_131_04-------------------------#' -SET @@global.query_cache_limit = -1; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -SET @@global.query_cache_limit = 4294967296; -Warnings: -Warning 1292 Truncated incorrect query_cache_limit value: '4294967296' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967295 -SET @@global.query_cache_limit = 10240022115; -Warnings: -Warning 1292 Truncated incorrect query_cache_limit value: '10240022115' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967295 -SET @@global.query_cache_limit = 10000.01; -ERROR 42000: Incorrect argument type to variable 'query_cache_limit' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967295 -SET @@global.query_cache_limit = -1024; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -SET @@global.query_cache_limit = 42949672950; -Warnings: -Warning 1292 Truncated incorrect query_cache_limit value: '42949672950' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967295 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.query_cache_limit = ON; -ERROR 42000: Incorrect argument type to variable 'query_cache_limit' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967295 -SET @@global.query_cache_limit = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_cache_limit' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967295 -'#-------------------FN_DYNVARS_131_05----------------------------#' -SET @@session.query_cache_limit = 0; -ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_limit; -@@query_cache_limit -4294967295 -'#----------------------FN_DYNVARS_131_06------------------------#' -SELECT @@global.query_cache_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_limit'; -@@global.query_cache_limit = VARIABLE_VALUE -1 -SELECT @@query_cache_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_limit'; -@@query_cache_limit = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_131_07----------------------#' -SET @@global.query_cache_limit = TRUE; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1 -SET @@global.query_cache_limit = FALSE; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -'#---------------------FN_DYNVARS_131_08----------------------#' -SET @@global.query_cache_limit = 1; -SELECT @@query_cache_limit = @@global.query_cache_limit; -@@query_cache_limit = @@global.query_cache_limit -1 -'#---------------------FN_DYNVARS_131_09----------------------#' -SET query_cache_limit = 1; -ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_limit; -@@query_cache_limit -1 -SET local.query_cache_limit = 1; -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 'query_cache_limit = 1' at line 1 -SELECT local.query_cache_limit; -ERROR 42S02: Unknown table 'local' in field list -SET global.query_cache_limit = 1; -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 'query_cache_limit = 1' at line 1 -SELECT global.query_cache_limit; -ERROR 42S02: Unknown table 'global' in field list -SELECT query_cache_limit = @@session.query_cache_limit; -ERROR 42S22: Unknown column 'query_cache_limit' in 'field list' -SET @@global.query_cache_limit = @start_value; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048576 diff --git a/mysql-test/r/query_cache_min_res_unit_basic_32.result b/mysql-test/r/query_cache_min_res_unit_basic_32.result deleted file mode 100644 index e0d8a0d2a30..00000000000 --- a/mysql-test/r/query_cache_min_res_unit_basic_32.result +++ /dev/null @@ -1,134 +0,0 @@ -SET @start_value = @@global.query_cache_min_res_unit; -SELECT @start_value; -@start_value -4096 -'#--------------------FN_DYNVARS_132_01------------------------#' -SET @@global.query_cache_min_res_unit = 99; -SET @@global.query_cache_min_res_unit = DEFAULT; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -4096 -'#---------------------FN_DYNVARS_132_02-------------------------#' -SET @@global.query_cache_min_res_unit = @start_value; -SELECT @@global.query_cache_min_res_unit = 4096; -@@global.query_cache_min_res_unit = 4096 -1 -'#--------------------FN_DYNVARS_132_03------------------------#' -SET @@global.query_cache_min_res_unit = 0; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 1; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512'; -SET @@global.query_cache_min_res_unit = 512; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 513; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -520 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.query_cache_min_res_unit = 1048576; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -1048576 -SET @@global.query_cache_min_res_unit = 1048575; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -1048576 -'#--------------------FN_DYNVARS_132_04-------------------------#' -SET @@global.query_cache_min_res_unit = -1; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 4294967296; -Warnings: -Warning 1292 Truncated incorrect query_cache_min_res_unit value: '4294967296' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -0 -SET @@global.query_cache_min_res_unit = 511; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 10000.01; -ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = -1024; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 42949672950; -Warnings: -Warning 1292 Truncated incorrect query_cache_min_res_unit value: '42949672950' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -0 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.query_cache_min_res_unit = ON; -ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -0 -SET @@global.query_cache_min_res_unit = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -0 -'#-------------------FN_DYNVARS_132_05----------------------------#' -SET @@session.query_cache_min_res_unit = 0; -ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_min_res_unit; -@@query_cache_min_res_unit -0 -'#----------------------FN_DYNVARS_132_06------------------------#' -SELECT @@global.query_cache_min_res_unit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_min_res_unit'; -@@global.query_cache_min_res_unit = VARIABLE_VALUE -1 -SELECT @@query_cache_min_res_unit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_min_res_unit'; -@@query_cache_min_res_unit = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_132_07----------------------#' -SET @@global.query_cache_min_res_unit = TRUE; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = FALSE; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -'#---------------------FN_DYNVARS_132_08----------------------#' -SET @@global.query_cache_min_res_unit = 1; -SELECT @@query_cache_min_res_unit = @@global.query_cache_min_res_unit; -@@query_cache_min_res_unit = @@global.query_cache_min_res_unit -1 -'#---------------------FN_DYNVARS_132_09----------------------#' -SET query_cache_min_res_unit = 1; -ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_min_res_unit; -@@query_cache_min_res_unit -512 -SET local.query_cache_min_res_unit = 1; -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 'query_cache_min_res_unit = 1' at line 1 -SELECT local.query_cache_min_res_unit; -ERROR 42S02: Unknown table 'local' in field list -SET global.query_cache_min_res_unit = 1; -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 'query_cache_min_res_unit = 1' at line 1 -SELECT global.query_cache_min_res_unit; -ERROR 42S02: Unknown table 'global' in field list -SELECT query_cache_min_res_unit = @@session.query_cache_min_res_unit; -ERROR 42S22: Unknown column 'query_cache_min_res_unit' in 'field list' -SET @@global.query_cache_min_res_unit = @start_value; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -4096 diff --git a/mysql-test/r/query_cache_size_basic_32.result b/mysql-test/r/query_cache_size_basic_32.result deleted file mode 100644 index 1af70b3af84..00000000000 --- a/mysql-test/r/query_cache_size_basic_32.result +++ /dev/null @@ -1,138 +0,0 @@ -SET @start_value = @@global.query_cache_size; -SELECT @start_value; -@start_value -0 -'#--------------------FN_DYNVARS_133_01------------------------#' -SET @@global.query_cache_size = 99; -SET @@global.query_cache_size = DEFAULT; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'#---------------------FN_DYNVARS_133_02-------------------------#' -SET @@global.query_cache_size = @start_value; -SELECT @@global.query_cache_size = 0; -@@global.query_cache_size = 0 -1 -'#--------------------FN_DYNVARS_133_03------------------------#' -SET @@global.query_cache_size = 0; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 1; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 512; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 1024; -Warnings: -Warning 1282 Query cache failed to set size 1024; new query cache size is 0 -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -: 'Bug#34880: Warnings are coming on assinging valid values to variable -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.query_cache_size = 1048576; -SELECT @@global.query_cache_size; -@@global.query_cache_size -1048576 -SET @@global.query_cache_size = 1048575; -SELECT @@global.query_cache_size; -@@global.query_cache_size -1047552 -'#--------------------FN_DYNVARS_133_04-------------------------#' -SET @@global.query_cache_size = -1; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect query_cache_size value: '4294967296' -Warning 1282 Query cache failed to set size 4294966272; new query cache size is 0 -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 511; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'query_cache_size' -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = -1024; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 42949672950; -Warnings: -Warning 1292 Truncated incorrect query_cache_size value: '42949672950' -Warning 1282 Query cache failed to set size 4294966272; new query cache size is 0 -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.query_cache_size = ON; -ERROR 42000: Incorrect argument type to variable 'query_cache_size' -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_cache_size' -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'#-------------------FN_DYNVARS_133_05----------------------------#' -SET @@session.query_cache_size = 0; -ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_size; -@@query_cache_size -0 -'#----------------------FN_DYNVARS_133_06------------------------#' -SELECT @@global.query_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_size'; -@@global.query_cache_size = VARIABLE_VALUE -1 -SELECT @@query_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_size'; -@@query_cache_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_133_07----------------------#' -SET @@global.query_cache_size = TRUE; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = FALSE; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'#---------------------FN_DYNVARS_133_08----------------------#' -SET @@global.query_cache_size = 1; -SELECT @@query_cache_size = @@global.query_cache_size; -@@query_cache_size = @@global.query_cache_size -1 -'#---------------------FN_DYNVARS_133_09----------------------#' -SET query_cache_size = 1; -ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_size; -@@query_cache_size -0 -SET local.query_cache_size = 1; -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 'query_cache_size = 1' at line 1 -SELECT local.query_cache_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.query_cache_size = 1; -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 'query_cache_size = 1' at line 1 -SELECT global.query_cache_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT query_cache_size = @@session.query_cache_size; -ERROR 42S22: Unknown column 'query_cache_size' in 'field list' -SET @@global.query_cache_size = @start_value; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 diff --git a/mysql-test/r/query_prealloc_size_basic_32.result b/mysql-test/r/query_prealloc_size_basic_32.result deleted file mode 100644 index fe8aba990a7..00000000000 --- a/mysql-test/r/query_prealloc_size_basic_32.result +++ /dev/null @@ -1,178 +0,0 @@ -SET @start_global_value = @@global.query_prealloc_size ; -SELECT @start_global_value; -@start_global_value -8192 -SET @start_session_value = @@session.query_prealloc_size ; -SELECT @start_session_value; -@start_session_value -8192 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.query_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '100' -SET @@global.query_prealloc_size = DEFAULT; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 200; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '200' -SET @@session.query_prealloc_size = DEFAULT; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.query_prealloc_size = DEFAULT; -SELECT @@global.query_prealloc_size = 8192; -@@global.query_prealloc_size = 8192 -1 -SET @@session.query_prealloc_size = DEFAULT; -SELECT @@session.query_prealloc_size = 8192; -@@session.query_prealloc_size = 8192 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.query_prealloc_size = 8192; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = 655354; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -654336 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.query_prealloc_size = 8192; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 655345; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -654336 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.query_prealloc_size = 0; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = -1024; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = test; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = "test"; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = ON; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 0; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = -2; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = test; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = "test"; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_prealloc_size '; -@@global.query_prealloc_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_prealloc_size '; -@@session.query_prealloc_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_08-----------------------#' -SET @@global.query_prealloc_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '1' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.query_prealloc_size = 10; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '10' -SELECT @@query_prealloc_size = @@global.query_prealloc_size ; -@@query_prealloc_size = @@global.query_prealloc_size -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@query_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '100' -SELECT @@query_prealloc_size = @@local.query_prealloc_size ; -@@query_prealloc_size = @@local.query_prealloc_size -1 -SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; -@@local.query_prealloc_size = @@session.query_prealloc_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET query_prealloc_size = 1; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '1' -SELECT @@query_prealloc_size ; -@@query_prealloc_size -8192 -SELECT local.query_prealloc_size ; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.query_prealloc_size ; -ERROR 42S02: Unknown table 'session' in field list -SELECT query_prealloc_size = @@session.query_prealloc_size ; -ERROR 42S22: Unknown column 'query_prealloc_size' in 'field list' -SET @@global.query_prealloc_size = @start_global_value; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@session.query_prealloc_size = @start_session_value; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 diff --git a/mysql-test/r/range_alloc_block_size_basic_32.result b/mysql-test/r/range_alloc_block_size_basic_32.result deleted file mode 100644 index 93441448d90..00000000000 --- a/mysql-test/r/range_alloc_block_size_basic_32.result +++ /dev/null @@ -1,182 +0,0 @@ -SET @start_global_value = @@global.range_alloc_block_size; -SELECT @start_global_value; -@start_global_value -4096 -SET @start_session_value = @@session.range_alloc_block_size; -SELECT @start_session_value; -@start_session_value -4096 -'#--------------------FN_DYNVARS_137_01-------------------------#' -SET @@global.range_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '100' -SET @@global.range_alloc_block_size = DEFAULT; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = 200; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '200' -SET @@session.range_alloc_block_size = DEFAULT; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -'#--------------------FN_DYNVARS_137_02-------------------------#' -SET @@global.range_alloc_block_size = DEFAULT; -SELECT @@global.range_alloc_block_size = 2048; -@@global.range_alloc_block_size = 2048 -0 -SET @@session.range_alloc_block_size = DEFAULT; -SELECT @@session.range_alloc_block_size = 2048; -@@session.range_alloc_block_size = 2048 -0 -'#--------------------FN_DYNVARS_137_03-------------------------#' -SET @@global.range_alloc_block_size = 2048; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.range_alloc_block_size = 4294967295; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -SET @@global.range_alloc_block_size = 4294967294; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_137_04-------------------------#' -SET @@session.range_alloc_block_size = 2048; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = 4294967295; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294966272 -SET @@session.range_alloc_block_size = 4294967294; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294966272 -'#------------------FN_DYNVARS_137_05-----------------------#' -SET @@global.range_alloc_block_size = 0; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@global.range_alloc_block_size = -1024; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@global.range_alloc_block_size = 42949672951; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '42949672951' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -SET @@global.range_alloc_block_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -SET @@global.range_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -SET @@session.range_alloc_block_size = 0; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = -2; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -SET @@session.range_alloc_block_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.range_alloc_block_size = 4294967296; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967296' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294966272 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.range_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294966272 -'#------------------FN_DYNVARS_137_06-----------------------#' -SELECT @@global.range_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='range_alloc_block_size'; -@@global.range_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_137_07-----------------------#' -SELECT @@session.range_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='range_alloc_block_size'; -@@session.range_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_137_08-----------------------#' -SET @@global.range_alloc_block_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '1' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@global.range_alloc_block_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -'#---------------------FN_DYNVARS_137_09----------------------#' -SET @@global.range_alloc_block_size = 10; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '10' -SELECT @@range_alloc_block_size = @@global.range_alloc_block_size; -@@range_alloc_block_size = @@global.range_alloc_block_size -0 -'#---------------------FN_DYNVARS_137_10----------------------#' -SET @@range_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '100' -SELECT @@range_alloc_block_size = @@local.range_alloc_block_size; -@@range_alloc_block_size = @@local.range_alloc_block_size -1 -SELECT @@local.range_alloc_block_size = @@session.range_alloc_block_size; -@@local.range_alloc_block_size = @@session.range_alloc_block_size -1 -'#---------------------FN_DYNVARS_137_11----------------------#' -SET range_alloc_block_size = 1; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '1' -SELECT @@range_alloc_block_size; -@@range_alloc_block_size -4096 -SELECT local.range_alloc_block_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.range_alloc_block_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT range_alloc_block_size = @@session.range_alloc_block_size; -ERROR 42S22: Unknown column 'range_alloc_block_size' in 'field list' -SET @@global.range_alloc_block_size = @start_global_value; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = @start_session_value; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 diff --git a/mysql-test/r/rpl_recovery_rank_basic_32.result b/mysql-test/r/rpl_recovery_rank_basic_32.result deleted file mode 100644 index d4dd46eba71..00000000000 --- a/mysql-test/r/rpl_recovery_rank_basic_32.result +++ /dev/null @@ -1,110 +0,0 @@ -SET @start_global_value = @@global.rpl_recovery_rank; -SELECT @start_global_value; -@start_global_value -0 -'#--------------------FN_DYNVARS_142_01-------------------------#' -SET @@global.rpl_recovery_rank = 500000; -SET @@global.rpl_recovery_rank = DEFAULT; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -'#--------------------FN_DYNVARS_142_02-------------------------#' -SET @@global.rpl_recovery_rank = 0; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = 1024; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -1024 -SET @@global.rpl_recovery_rank = 123456789; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -123456789 -SET @@global.rpl_recovery_rank = 2147483648*2; -Warnings: -Warning 1292 Truncated incorrect rpl-recovery-rank value: '4294967296' -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -SET @@global.rpl_recovery_rank = 2147483648*1024; -Warnings: -Warning 1292 Truncated incorrect rpl-recovery-rank value: '2199023255552' -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -SET @@global.rpl_recovery_rank = 2147483648*2147483648; -Warnings: -Warning 1292 Truncated incorrect rpl-recovery-rank value: '4611686018427387904' -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -'#--------------------FN_DYNVARS_142_03-------------------------#' -SET @@rpl_recovery_rank = 2; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.rpl_recovery_rank = 3; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.rpl_recovery_rank = 4; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_142_04-----------------------#' -SET @@global.rpl_recovery_rank = -1; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = -2147483648; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = -2147483649; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = 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 @@global.rpl_recovery_rank = 2147483649.56; -ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' -SET @@global.rpl_recovery_rank = 1G; -ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' -'#------------------FN_DYNVARS_142_05-----------------------#' -SET @@global.rpl_recovery_rank = 3000; -SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='rpl_recovery_rank'; -@@global.rpl_recovery_rank = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_142_06-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='rpl_recovery_rank'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_142_07-----------------------#' -SET @@global.rpl_recovery_rank = TRUE; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -1 -SET @@global.rpl_recovery_rank = FALSE; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -'#---------------------FN_DYNVARS_001_08----------------------#' -SET @@global.rpl_recovery_rank = 512; -SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank; -@@rpl_recovery_rank = @@global.rpl_recovery_rank -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET rpl_recovery_rank = 2048; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -SELECT rpl_recovery_rank; -ERROR 42S22: Unknown column 'rpl_recovery_rank' in 'field list' -SELECT @@rpl_recovery_rank; -@@rpl_recovery_rank -512 -SET global rpl_recovery_rank = 64; -SET @@global.rpl_recovery_rank = @start_global_value; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 diff --git a/mysql-test/r/server_id_basic_32.result b/mysql-test/r/server_id_basic_32.result deleted file mode 100644 index 6f801fc627b..00000000000 --- a/mysql-test/r/server_id_basic_32.result +++ /dev/null @@ -1,117 +0,0 @@ -SET @@global.general_log= 0; -SET @start_global_value = @@global.server_id; -SELECT @start_global_value; -@start_global_value -1 -'#--------------------FN_DYNVARS_144_01-------------------------#' -SET @@global.server_id = 500000; -SET @@global.server_id = DEFAULT; -SELECT @@global.server_id; -@@global.server_id -0 -'#--------------------FN_DYNVARS_144_02-------------------------#' -SET @@global.server_id = DEFAULT; -SELECT @@global.server_id = 0; -@@global.server_id = 0 -1 -'#--------------------FN_DYNVARS_144_03-------------------------#' -SET @@global.server_id = 0; -SELECT @@global.server_id; -@@global.server_id -0 -SET @@global.server_id = 1; -SELECT @@global.server_id; -@@global.server_id -1 -SET @@global.server_id = 15; -SELECT @@global.server_id; -@@global.server_id -15 -SET @@global.server_id = 1024; -SELECT @@global.server_id; -@@global.server_id -1024 -SET @@global.server_id = 123456789; -SELECT @@global.server_id; -@@global.server_id -123456789 -SET @@global.server_id = 2147483648; -SELECT @@global.server_id; -@@global.server_id -2147483648 -SET @@global.server_id = 2147483648*2-1; -SELECT @@global.server_id; -@@global.server_id -4294967295 -'#--------------------FN_DYNVARS_144_04-------------------------#' -SET @@server_id = 2; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.server_id = 3; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.server_id = 4; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_144_05-----------------------#' -SET @@global.server_id = -1; -SELECT @@global.server_id; -@@global.server_id -0 -SET @@global.server_id = -2147483648; -SELECT @@global.server_id; -@@global.server_id -0 -SET @@global.server_id = 2147483649*2; -Warnings: -Warning 1292 Truncated incorrect server-id value: '4294967298' -SELECT @@global.server_id; -@@global.server_id -4294967295 -SET @@global.server_id = 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 @@global.server_id = '125'; -ERROR 42000: Incorrect argument type to variable 'server_id' -SET @@global.server_id = 7483649.56; -ERROR 42000: Incorrect argument type to variable 'server_id' -SET @@global.server_id = 1G; -ERROR 42000: Incorrect argument type to variable 'server_id' -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#------------------FN_DYNVARS_144_06-----------------------#' -SET @@global.server_id = 3000; -SELECT @@global.server_id = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='server_id'; -@@global.server_id = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_144_07-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='server_id'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_144_08-----------------------#' -SET @@global.server_id = TRUE; -SELECT @@global.server_id; -@@global.server_id -1 -SET @@global.server_id = FALSE; -SELECT @@global.server_id; -@@global.server_id -0 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.server_id = 512; -SELECT @@server_id = @@global.server_id; -@@server_id = @@global.server_id -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET server_id = 2048; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -SELECT server_id; -ERROR 42S22: Unknown column 'server_id' in 'field list' -SELECT @@server_id; -@@server_id -512 -SET global server_id = 99; -SET @@global.server_id = @start_global_value; -SELECT @@global.server_id; -@@global.server_id -1 -SET @@global.general_log= 1; diff --git a/mysql-test/r/slave_transaction_retries_basic_32.result b/mysql-test/r/slave_transaction_retries_basic_32.result deleted file mode 100644 index 5b77c500aa0..00000000000 --- a/mysql-test/r/slave_transaction_retries_basic_32.result +++ /dev/null @@ -1,119 +0,0 @@ -SET @start_global_value = @@global.slave_transaction_retries; -SELECT @start_global_value; -@start_global_value -10 -'#--------------------FN_DYNVARS_149_01-------------------------#' -SET @@global.slave_transaction_retries = 50; -SET @@global.slave_transaction_retries = DEFAULT; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -10 -'#--------------------FN_DYNVARS_149_02-------------------------#' -SET @@global.slave_transaction_retries = DEFAULT; -SELECT @@global.slave_transaction_retries = 10; -@@global.slave_transaction_retries = 10 -1 -'#--------------------FN_DYNVARS_149_03-------------------------#' -SET @@global.slave_transaction_retries = 0; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -0 -SET @@global.slave_transaction_retries = 1; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -1 -SET @@global.slave_transaction_retries = 15; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -15 -SET @@global.slave_transaction_retries = 1024; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -1024 -SET @@global.slave_transaction_retries = 2147483648; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -2147483648 -SET @@global.slave_transaction_retries = 2147483648*2-1; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967295 -SET @@global.slave_transaction_retries = 2147483649*2; -Warnings: -Warning 1292 Truncated incorrect slave_transaction_retries value: '4294967298' -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967295 -SET @@global.slave_transaction_retries = 4294967295; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967295 -'#--------------------FN_DYNVARS_149_04-------------------------#' -SET @@slave_transaction_retries = 2; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.slave_transaction_retries = 3; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.slave_transaction_retries = 4; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_149_05-----------------------#' -SET @@global.slave_transaction_retries = -1; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -0 -SET @@global.slave_transaction_retries = 2147483649*2147483649; -Warnings: -Warning 1292 Truncated incorrect slave_transaction_retries value: '4611686022722355201' -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967295 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.slave_transaction_retries = 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 @@global.slave_transaction_retries = '100'; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -SET @@global.slave_transaction_retries = 7483649.56; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -SET @@global.slave_transaction_retries = ON; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -SET @@global.slave_transaction_retries = OFF; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -'#------------------FN_DYNVARS_149_06-----------------------#' -SET @@global.slave_transaction_retries = 3000; -SELECT @@global.slave_transaction_retries = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='slave_transaction_retries'; -@@global.slave_transaction_retries = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_149_07-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='slave_transaction_retries'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_149_08-----------------------#' -SET @@global.slave_transaction_retries = TRUE; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -1 -SET @@global.slave_transaction_retries = FALSE; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -0 -'#---------------------FN_DYNVARS_149_09----------------------#' -SET @@global.slave_transaction_retries = 60*60; -SELECT @@slave_transaction_retries = @@global.slave_transaction_retries; -@@slave_transaction_retries = @@global.slave_transaction_retries -1 -'#---------------------FN_DYNVARS_149_10----------------------#' -SET slave_transaction_retries = 2048; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -SELECT slave_transaction_retries; -ERROR 42S22: Unknown column 'slave_transaction_retries' in 'field list' -SELECT @@slave_transaction_retries; -@@slave_transaction_retries -3600 -SET global slave_transaction_retries = 99; -SET @@global.slave_transaction_retries = @start_global_value; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -10 diff --git a/mysql-test/r/sort_buffer_size_basic_32.result b/mysql-test/r/sort_buffer_size_basic_32.result deleted file mode 100644 index 09a1fe59046..00000000000 --- a/mysql-test/r/sort_buffer_size_basic_32.result +++ /dev/null @@ -1,193 +0,0 @@ -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 -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 -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 -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 -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 -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 -1 -SET @@global.sort_buffer_size = 4294967295; -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -4294967295 -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 -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 -1 -SET @@session.sort_buffer_size = 4294967295; -SELECT @@session.sort_buffer_size; -@@session.sort_buffer_size -4294967295 -SET @@session.sort_buffer_size = 4294967294; -SELECT @@session.sort_buffer_size; -@@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 -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 -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 -SET @@global.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 -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -4294967295 -SET @@global.sort_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'sort_buffer_size' -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 -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 -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'; -@@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'; -@@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 -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 -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 -SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; -@@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 -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; -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/r/sync_binlog_basic_32.result b/mysql-test/r/sync_binlog_basic_32.result deleted file mode 100644 index 3d9bfb6d218..00000000000 --- a/mysql-test/r/sync_binlog_basic_32.result +++ /dev/null @@ -1,105 +0,0 @@ -SET @start_value = @@global.sync_binlog; -SELECT @start_value; -@start_value -0 -'#--------------------FN_DYNVARS_168_01------------------------#' -SET @@global.sync_binlog = 99; -SET @@global.sync_binlog = DEFAULT; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -'#---------------------FN_DYNVARS_168_02-------------------------#' -SET @@global.sync_binlog = @start_value; -SELECT @@global.sync_binlog = 0; -@@global.sync_binlog = 0 -1 -'#--------------------FN_DYNVARS_168_03------------------------#' -SET @@global.sync_binlog = 0; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 1; -SELECT @@global.sync_binlog; -@@global.sync_binlog -1 -SET @@global.sync_binlog = 4294967295; -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967295 -SET @@global.sync_binlog = 4294967294; -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967294 -SET @@global.sync_binlog = 65536; -SELECT @@global.sync_binlog; -@@global.sync_binlog -65536 -'#--------------------FN_DYNVARS_168_04-------------------------#' -SET @@global.sync_binlog = -1; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 4294967296; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 10240022115; -SELECT @@global.sync_binlog; -@@global.sync_binlog -1650087523 -SET @@global.sync_binlog = 10000.01; -ERROR 42000: Incorrect argument type to variable 'sync_binlog' -SELECT @@global.sync_binlog; -@@global.sync_binlog -1650087523 -SET @@global.sync_binlog = -1024; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 42949672950; -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967286 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.sync_binlog = ON; -ERROR 42000: Incorrect argument type to variable 'sync_binlog' -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967286 -SET @@global.sync_binlog = 'test'; -ERROR 42000: Incorrect argument type to variable 'sync_binlog' -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967286 -'#-------------------FN_DYNVARS_168_05----------------------------#' -SET @@session.sync_binlog = 0; -ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@sync_binlog; -@@sync_binlog -4294967286 -'#----------------------FN_DYNVARS_168_06------------------------#' -SELECT @@global.sync_binlog = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='sync_binlog'; -@@global.sync_binlog = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_168_07----------------------#' -SET sync_binlog = 1; -ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@sync_binlog; -@@sync_binlog -4294967286 -SET local.sync_binlog = 1; -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 'sync_binlog = 1' at line 1 -SELECT local.sync_binlog; -ERROR 42S02: Unknown table 'local' in field list -SET global.sync_binlog = 1; -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 'sync_binlog = 1' at line 1 -SELECT global.sync_binlog; -ERROR 42S02: Unknown table 'global' in field list -SELECT sync_binlog = @@session.sync_binlog; -ERROR 42S22: Unknown column 'sync_binlog' in 'field list' -SET @@global.sync_binlog = @start_value; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 diff --git a/mysql-test/r/timestamp_basic_32.result b/mysql-test/r/timestamp_basic_32.result deleted file mode 100644 index cc4f0324c0f..00000000000 --- a/mysql-test/r/timestamp_basic_32.result +++ /dev/null @@ -1,73 +0,0 @@ -SET @session_start_value = @@session.timestamp; -'#--------------------FN_DYNVARS_001_01------------------------#' -SET @@timestamp = DEFAULT; -'timestamp does not have any DEFAULT value' -'#---------------------FN_DYNVARS_001_02-------------------------#' -SET @@global.timestamp = "1000"; -ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL -'#--------------------FN_DYNVARS_001_03------------------------#' -SET @@timestamp = 0; -'Setting 0 resets timestamp to session default timestamp' -SET @@timestamp = 123456789123456; -SELECT @@timestamp; -@@timestamp -2249167232 -SET @@timestamp = 60*60*60*60*365; -SELECT @@timestamp; -@@timestamp -435432704 -SET @@timestamp = -1000000000; -SELECT @@timestamp; -@@timestamp -3294967296 -SET @temp_ts = @@timestamp - @@timestamp; -SELECT @temp_ts; -@temp_ts -0 -'#--------------------FN_DYNVARS_001_04-------------------------#' -SET @@timestamp = "100"; -ERROR 42000: Incorrect argument type to variable 'timestamp' -'Bug# 34836: Documentation says its a string variable but infact its numeric' -SET @@timestamp = " "; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = 1.1; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = 9999999999999999999999; -ERROR 42000: Incorrect argument type to variable 'timestamp' -'#----------------------FN_DYNVARS_001_06------------------------#' -SELECT @@timestamp = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='timestamp'; -@@timestamp = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_08-------------------------#' -SET @@timestamp = OFF; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = ON; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = TRUE; -SELECT @@timestamp; -@@timestamp -1 -SET @@timestamp = FALSE; -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@timestamp = 123456; -SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; -@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp -1 -SET @@timestamp = 654321; -SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; -@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET timestamp = 1; -SELECT @@timestamp; -@@timestamp -1 -SELECT local.timestamp; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.timestamp; -ERROR 42S02: Unknown table 'session' in field list -SELECT timestamp = @@session.timestamp; -ERROR 42S22: Unknown column 'timestamp' in 'field list' -SET @@timestamp = @session_start_value; diff --git a/mysql-test/r/tmp_table_size_basic_32.result b/mysql-test/r/tmp_table_size_basic_32.result deleted file mode 100644 index aeafd95ed55..00000000000 --- a/mysql-test/r/tmp_table_size_basic_32.result +++ /dev/null @@ -1,172 +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 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#--------------------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 -'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' -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; -@@global.tmp_table_size = 33554432 -0 -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; -@@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 -'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; -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 -'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"; -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 -4294967295 -'#------------------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/r/transaction_alloc_block_size_basic_32.result b/mysql-test/r/transaction_alloc_block_size_basic_32.result deleted file mode 100644 index 706d7802ed3..00000000000 --- a/mysql-test/r/transaction_alloc_block_size_basic_32.result +++ /dev/null @@ -1,180 +0,0 @@ -SET @start_global_value = @@global.transaction_alloc_block_size; -SELECT @start_global_value; -@start_global_value -8192 -SET @start_session_value = @@session.transaction_alloc_block_size; -SELECT @start_session_value; -@start_session_value -8192 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.transaction_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' -SET @@global.transaction_alloc_block_size = DEFAULT; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -8192 -SET @@session.transaction_alloc_block_size = 200; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '200' -SET @@session.transaction_alloc_block_size = DEFAULT; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -8192 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.transaction_alloc_block_size = DEFAULT; -SELECT @@global.transaction_alloc_block_size = 8192; -@@global.transaction_alloc_block_size = 8192 -1 -SET @@session.transaction_alloc_block_size = DEFAULT; -SELECT @@session.transaction_alloc_block_size = 8192; -@@session.transaction_alloc_block_size = 8192 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.transaction_alloc_block_size = 1024; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = 60020; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -59392 -SET @@global.transaction_alloc_block_size = 4294967295; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.transaction_alloc_block_size = 1024; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size =4294967295; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -4294966272 -SET @@session.transaction_alloc_block_size = 65535; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -64512 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.transaction_alloc_block_size = 0; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = -1024; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = 123456789201; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '123456789201' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -4294966272 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.transaction_alloc_block_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = 65530.34; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size ="Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size = 1000; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1000' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size = 12345678901; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '12345678901' -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -4294966272 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.transaction_alloc_block_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@session.transaction_alloc_block_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@session.transaction_alloc_block_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size = "Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@session.transaction_alloc_block_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.transaction_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='transaction_alloc_block_size'; -@@global.transaction_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.transaction_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='transaction_alloc_block_size'; -@@session.transaction_alloc_block_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_08----------------------#' -SET @@transaction_alloc_block_size = 1024; -SET @@global.transaction_alloc_block_size = 4294967295; -SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size; -@@transaction_alloc_block_size = @@global.transaction_alloc_block_size -0 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@transaction_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' -SELECT @@transaction_alloc_block_size = @@local.transaction_alloc_block_size; -@@transaction_alloc_block_size = @@local.transaction_alloc_block_size -1 -SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size; -@@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET transaction_alloc_block_size = 1027; -SELECT @@transaction_alloc_block_size; -@@transaction_alloc_block_size -1024 -SELECT local.transaction_alloc_block_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.transaction_alloc_block_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT transaction_alloc_block_size = @@session.transaction_alloc_block_size; -ERROR 42S22: Unknown column 'transaction_alloc_block_size' in 'field list' -SET @@global.transaction_alloc_block_size = @start_global_value; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -8192 -SET @@session.tmp_table_size = @start_session_value; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 diff --git a/mysql-test/r/transaction_prealloc_size_basic_32.result b/mysql-test/r/transaction_prealloc_size_basic_32.result deleted file mode 100644 index 3df7a55595e..00000000000 --- a/mysql-test/r/transaction_prealloc_size_basic_32.result +++ /dev/null @@ -1,172 +0,0 @@ -SET @start_global_value = @@global.transaction_prealloc_size; -SELECT @start_global_value; -@start_global_value -4096 -SET @start_session_value = @@session.transaction_prealloc_size; -SELECT @start_session_value; -@start_session_value -4096 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.transaction_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' -SET @@global.transaction_prealloc_size = DEFAULT; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -4096 -SET @@session.transaction_prealloc_size = 200; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '200' -SET @@session.transaction_prealloc_size = DEFAULT; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4096 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.transaction_prealloc_size = DEFAULT; -SELECT @@global.transaction_prealloc_size = 4096; -@@global.transaction_prealloc_size = 4096 -1 -SET @@session.transaction_prealloc_size = DEFAULT; -SELECT @@session.transaction_prealloc_size = 4096; -@@session.transaction_prealloc_size = 4096 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.transaction_prealloc_size = 1024; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = 60020; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -59392 -SET @@global.transaction_prealloc_size = 4294966272; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -4294966272 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.transaction_prealloc_size = 1024; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size =4294966272; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4294966272 -SET @@session.transaction_prealloc_size = 65535; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -64512 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.transaction_prealloc_size = 0; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = -1024; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.transaction_prealloc_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = 65530.34; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size ="Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size = 1000; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '1000' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@session.transaction_prealloc_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@session.transaction_prealloc_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size = "Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@session.transaction_prealloc_size = 123456789031; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '123456789031' -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4294966272 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.transaction_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='transaction_prealloc_size'; -@@global.transaction_prealloc_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.transaction_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='transaction_prealloc_size'; -@@session.transaction_prealloc_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.transaction_prealloc_size = 1024; -SET @@global.transaction_prealloc_size = 10; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '10' -SELECT @@transaction_prealloc_size = @@global.transaction_prealloc_size; -@@transaction_prealloc_size = @@global.transaction_prealloc_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@transaction_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' -SELECT @@transaction_prealloc_size = @@local.transaction_prealloc_size; -@@transaction_prealloc_size = @@local.transaction_prealloc_size -1 -SELECT @@local.transaction_prealloc_size = @@session.transaction_prealloc_size; -@@local.transaction_prealloc_size = @@session.transaction_prealloc_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET transaction_prealloc_size = 1027; -SELECT @@transaction_prealloc_size; -@@transaction_prealloc_size -1024 -SELECT local.transaction_prealloc_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.transaction_prealloc_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT transaction_prealloc_size = @@session.transaction_prealloc_size; -ERROR 42S22: Unknown column 'transaction_prealloc_size' in 'field list' -SET @@global.transaction_prealloc_size = @start_global_value; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -4096 -SET @@session.transaction_prealloc_size = @start_session_value; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4096 diff --git a/mysql-test/r/wait_timeout_basic_32.result b/mysql-test/r/wait_timeout_basic_32.result deleted file mode 100644 index ae03e677e56..00000000000 --- a/mysql-test/r/wait_timeout_basic_32.result +++ /dev/null @@ -1,129 +0,0 @@ -SET @start_global_value = @@global.wait_timeout; -SET @start_session_value = @@session.wait_timeout; -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.wait_timeout = 100; -SET @@global.wait_timeout = DEFAULT; -SELECT @@global.wait_timeout; -@@global.wait_timeout -28800 -SET @@session.wait_timeout = 200; -SET @@session.wait_timeout = DEFAULT; -SELECT @@session.wait_timeout; -@@session.wait_timeout -28800 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.wait_timeout = DEFAULT; -SELECT @@global.wait_timeout = @default_wait_timeout; -@@global.wait_timeout = @default_wait_timeout -1 -SET @@session.wait_timeout = DEFAULT; -SELECT @@session.wait_timeout = @default_wait_timeout; -@@session.wait_timeout = @default_wait_timeout -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.wait_timeout= 1; -SELECT @@global.wait_timeout; -@@global.wait_timeout -1 -SET @@global.wait_timeout = 60020; -SELECT @@global.wait_timeout; -@@global.wait_timeout -60020 -SET @@global.wait_timeout = 31536000; -SELECT @@global.wait_timeout = @max_wait_timeout; -@@global.wait_timeout = @max_wait_timeout -1 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.wait_timeout =6000; -SELECT @@session.wait_timeout; -@@session.wait_timeout -6000 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.wait_timeout = 0; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -SET @@global.wait_timeout = -1024; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.wait_timeout = ON; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@global.wait_timeout = OFF; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@global.wait_timeout = True; -SELECT @@global.wait_timeout; -@@global.wait_timeout -1 -SET @@global.wait_timeout = False; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -SELECT @@global.wait_timeout; -@@global.wait_timeout -1 -SET @@global.wait_timeout = 65530.34; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@global.wait_timeout ="Test"; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = ON; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = OFF; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = True; -SELECT @@session.wait_timeout; -@@session.wait_timeout -1 -SET @@session.wait_timeout = False; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -SELECT @@session.wait_timeout; -@@session.wait_timeout -1 -SET @@session.wait_timeout = "Test"; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = 'test'; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = 123456789031; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '123456789031' -SELECT @@session.wait_timeout = @max_wait_timeout; -@@session.wait_timeout = @max_wait_timeout -1 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.wait_timeout = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='wait_timeout'; -@@global.wait_timeout = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.wait_timeout = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='wait_timeout'; -@@session.wait_timeout = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.wait_timeout = 30000; -SET @@global.wait_timeout = 40000; -SELECT @@wait_timeout = @@global.wait_timeout; -@@wait_timeout = @@global.wait_timeout -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@wait_timeout = 100; -SELECT @@wait_timeout = @@local.wait_timeout; -@@wait_timeout = @@local.wait_timeout -1 -SELECT @@local.wait_timeout = @@session.wait_timeout; -@@local.wait_timeout = @@session.wait_timeout -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET wait_timeout = 1027; -SELECT @@wait_timeout; -@@wait_timeout -1027 -SELECT local.wait_timeout; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.wait_timeout; -ERROR 42S02: Unknown table 'session' in field list -SELECT wait_timeout = @@session.wait_timeout; -ERROR 42S22: Unknown column 'wait_timeout' in 'field list' -SET @@global.wait_timeout = @start_global_value; -SET @@session.wait_timeout = @start_session_value; From ec7b92d7a0ca7be5ebf4a0e5af0d8d1c3af4ca37 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 22 Jul 2008 18:50:36 +0200 Subject: [PATCH 296/435] Fix for bug#37708:The result files of the removed 64 bit tests. --- .../r/binlog_cache_size_basic_64.result | 100 --------- .../r/bulk_insert_buffer_size_basic_64.result | 150 ------------- .../r/delayed_insert_limit_basic_64.result | 110 ---------- .../r/delayed_queue_size_basic_64.result | 108 ---------- ...innodb_concurrency_tickets_basic_64.result | 98 --------- .../r/innodb_max_purge_lag_basic_64.result | 92 -------- .../r/innodb_sync_spin_loops_basic_64.result | 92 -------- mysql-test/r/join_buffer_size_basic_64.result | 194 ----------------- mysql-test/r/key_buffer_size_basic_64.result | 111 ---------- .../r/key_cache_age_threshold_basic_64.result | 126 ----------- .../r/key_cache_block_size_basic_64.result | 142 ------------- .../key_cache_division_limit_basic_64.result | 139 ------------ mysql-test/r/log_warnings_basic_64.result | 158 -------------- .../r/max_binlog_cache_size_basic_64.result | 141 ------------- .../r/max_connect_errors_basic_64.result | 133 ------------ .../r/max_heap_table_size_basic_64.result | 196 ----------------- .../r/max_seeks_for_key_basic_64.result | 176 ---------------- mysql-test/r/max_tmp_tables_basic_64.result | 187 ---------------- .../r/max_write_lock_count_basic_64.result | 104 --------- .../r/min_examined_row_limit_basic_64.result | 174 --------------- .../r/multi_range_count_basic_64.result | 184 ---------------- .../myisam_max_sort_file_size_basic_64.result | 114 ---------- .../r/myisam_repair_threads_basic_64.result | 178 ---------------- .../r/myisam_sort_buffer_size_basic_64.result | 182 ---------------- mysql-test/r/net_retry_count_basic_64.result | 184 ---------------- .../r/query_alloc_block_size_basic_64.result | 199 ------------------ .../r/query_cache_limit_basic_64.result | 120 ----------- .../query_cache_min_res_unit_basic_64.result | 130 ------------ mysql-test/r/query_cache_size_basic_64.result | 134 ------------ .../r/query_prealloc_size_basic_64.result | 178 ---------------- .../r/range_alloc_block_size_basic_64.result | 178 ---------------- .../r/rpl_recovery_rank_basic_64.result | 110 ---------- mysql-test/r/server_id_basic_64.result | 115 ---------- .../slave_transaction_retries_basic_64.result | 115 ---------- mysql-test/r/sort_buffer_size_basic_64.result | 189 ----------------- mysql-test/r/sync_binlog_basic_64.result | 105 --------- mysql-test/r/timestamp_basic_64.result | 73 ------- mysql-test/r/tmp_table_size_basic_64.result | 172 --------------- ...ansaction_alloc_block_size_basic_64.result | 176 ---------------- .../transaction_prealloc_size_basic_64.result | 170 --------------- mysql-test/r/wait_timeout_basic_64.result | 129 ------------ 41 files changed, 5866 deletions(-) delete mode 100644 mysql-test/r/binlog_cache_size_basic_64.result delete mode 100644 mysql-test/r/bulk_insert_buffer_size_basic_64.result delete mode 100644 mysql-test/r/delayed_insert_limit_basic_64.result delete mode 100644 mysql-test/r/delayed_queue_size_basic_64.result delete mode 100644 mysql-test/r/innodb_concurrency_tickets_basic_64.result delete mode 100644 mysql-test/r/innodb_max_purge_lag_basic_64.result delete mode 100644 mysql-test/r/innodb_sync_spin_loops_basic_64.result delete mode 100644 mysql-test/r/join_buffer_size_basic_64.result delete mode 100644 mysql-test/r/key_buffer_size_basic_64.result delete mode 100644 mysql-test/r/key_cache_age_threshold_basic_64.result delete mode 100644 mysql-test/r/key_cache_block_size_basic_64.result delete mode 100644 mysql-test/r/key_cache_division_limit_basic_64.result delete mode 100644 mysql-test/r/log_warnings_basic_64.result delete mode 100644 mysql-test/r/max_binlog_cache_size_basic_64.result delete mode 100644 mysql-test/r/max_connect_errors_basic_64.result delete mode 100644 mysql-test/r/max_heap_table_size_basic_64.result delete mode 100644 mysql-test/r/max_seeks_for_key_basic_64.result delete mode 100644 mysql-test/r/max_tmp_tables_basic_64.result delete mode 100644 mysql-test/r/max_write_lock_count_basic_64.result delete mode 100644 mysql-test/r/min_examined_row_limit_basic_64.result delete mode 100644 mysql-test/r/multi_range_count_basic_64.result delete mode 100644 mysql-test/r/myisam_max_sort_file_size_basic_64.result delete mode 100644 mysql-test/r/myisam_repair_threads_basic_64.result delete mode 100644 mysql-test/r/myisam_sort_buffer_size_basic_64.result delete mode 100644 mysql-test/r/net_retry_count_basic_64.result delete mode 100644 mysql-test/r/query_alloc_block_size_basic_64.result delete mode 100644 mysql-test/r/query_cache_limit_basic_64.result delete mode 100644 mysql-test/r/query_cache_min_res_unit_basic_64.result delete mode 100644 mysql-test/r/query_cache_size_basic_64.result delete mode 100644 mysql-test/r/query_prealloc_size_basic_64.result delete mode 100644 mysql-test/r/range_alloc_block_size_basic_64.result delete mode 100644 mysql-test/r/rpl_recovery_rank_basic_64.result delete mode 100644 mysql-test/r/server_id_basic_64.result delete mode 100644 mysql-test/r/slave_transaction_retries_basic_64.result delete mode 100644 mysql-test/r/sort_buffer_size_basic_64.result delete mode 100644 mysql-test/r/sync_binlog_basic_64.result delete mode 100644 mysql-test/r/timestamp_basic_64.result delete mode 100644 mysql-test/r/tmp_table_size_basic_64.result delete mode 100644 mysql-test/r/transaction_alloc_block_size_basic_64.result delete mode 100644 mysql-test/r/transaction_prealloc_size_basic_64.result delete mode 100644 mysql-test/r/wait_timeout_basic_64.result diff --git a/mysql-test/r/binlog_cache_size_basic_64.result b/mysql-test/r/binlog_cache_size_basic_64.result deleted file mode 100644 index 45ed43589a3..00000000000 --- a/mysql-test/r/binlog_cache_size_basic_64.result +++ /dev/null @@ -1,100 +0,0 @@ -SET @start_value = @@global.binlog_cache_size; -SELECT @start_value; -@start_value -32768 -'#--------------------FN_DYNVARS_006_01------------------------#' -SET @@global.binlog_cache_size = 100; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '100' -SET @@global.binlog_cache_size = DEFAULT; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -32768 -'#---------------------FN_DYNVARS_006_02-------------------------#' -SET @@global.binlog_cache_size = @start_value; -SELECT @@global.binlog_cache_size = 32768; -@@global.binlog_cache_size = 32768 -1 -'#--------------------FN_DYNVARS_006_03------------------------#' -SET @@global.binlog_cache_size = 4096; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = 4294967295; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4294963200 -SET @@global.binlog_cache_size = 10000; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -8192 -SET @@global.binlog_cache_size = 21221204; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -21217280 -'Bug: Invalid values are coming in variable on assigning valid values' -'#--------------------FN_DYNVARS_006_04-------------------------#' -SET @@global.binlog_cache_size = 1024; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '1024' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' -SET @@global.binlog_cache_size = -1024; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '0' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = 42949672950; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -42949668864 -'Bug: Errors are not coming on assigning invalid values to variable' -SET @@global.binlog_cache_size = ON; -ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' -SET @@global.binlog_cache_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' -'#-------------------FN_DYNVARS_006_05----------------------------#' -SET @@session.binlog_cache_size = 0; -ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -'#----------------------FN_DYNVARS_006_06------------------------#' -SELECT @@global.binlog_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_cache_size'; -@@global.binlog_cache_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_006_07----------------------#' -SET @@global.binlog_cache_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '1' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -SET @@global.binlog_cache_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '0' -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -4096 -'Bug: Errors are not coming on assigning TRUE/FALSE to variable' -'#---------------------FN_DYNVARS_006_08----------------------#' -SET @@global.binlog_cache_size = 1; -Warnings: -Warning 1292 Truncated incorrect binlog_cache_size value: '1' -SELECT @@binlog_cache_size = @@global.binlog_cache_size; -@@binlog_cache_size = @@global.binlog_cache_size -1 -'#---------------------FN_DYNVARS_006_09----------------------#' -SET binlog_cache_size = 1; -ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SET global.binlog_cache_size = 1; -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 'binlog_cache_size = 1' at line 1 -SELECT global.binlog_cache_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT binlog_cache_size = @@session.binlog_cache_size; -ERROR 42S22: Unknown column 'binlog_cache_size' in 'field list' -SET @@global.binlog_cache_size = @start_value; -SELECT @@global.binlog_cache_size; -@@global.binlog_cache_size -32768 diff --git a/mysql-test/r/bulk_insert_buffer_size_basic_64.result b/mysql-test/r/bulk_insert_buffer_size_basic_64.result deleted file mode 100644 index 9e0e8e07470..00000000000 --- a/mysql-test/r/bulk_insert_buffer_size_basic_64.result +++ /dev/null @@ -1,150 +0,0 @@ -SET @start_global_value = @@global.bulk_insert_buffer_size; -SELECT @start_global_value; -@start_global_value -8388608 -SET @start_session_value = @@session.bulk_insert_buffer_size; -SELECT @start_session_value; -@start_session_value -8388608 -'#--------------------FN_DYNVARS_007_01-------------------------#' -SET @@global.bulk_insert_buffer_size = 100; -SET @@global.bulk_insert_buffer_size = DEFAULT; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -8388608 -SET @@session.bulk_insert_buffer_size = 200; -SET @@session.bulk_insert_buffer_size = DEFAULT; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -8388608 -'#--------------------FN_DYNVARS_007_02-------------------------#' -SET @@global.bulk_insert_buffer_size = @start_global_value; -SELECT @@global.bulk_insert_buffer_size = 8388608; -@@global.bulk_insert_buffer_size = 8388608 -1 -SET @@session.bulk_insert_buffer_size = @start_session_value; -SELECT @@session.bulk_insert_buffer_size = 8388608; -@@session.bulk_insert_buffer_size = 8388608 -1 -'#--------------------FN_DYNVARS_007_03-------------------------#' -SET @@global.bulk_insert_buffer_size = 0; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -0 -SET @@global.bulk_insert_buffer_size = 1; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -1 -SET @@global.bulk_insert_buffer_size = 4294967295; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -4294967295 -SET @@global.bulk_insert_buffer_size = 429496; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -429496 -'#--------------------FN_DYNVARS_007_04-------------------------#' -SET @@session.bulk_insert_buffer_size = 0; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -0 -SET @@session.bulk_insert_buffer_size = 1; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -1 -SET @@session.bulk_insert_buffer_size = 4294967295; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -4294967295 -SET @@session.bulk_insert_buffer_size = 429496; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -429496 -'#------------------FN_DYNVARS_007_05-----------------------#' -SET @@global.bulk_insert_buffer_size = 42949672950; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -42949672950 -SET @@global.bulk_insert_buffer_size = -1024; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -0 -SET @@global.bulk_insert_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@global.bulk_insert_buffer_size = ON; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@global.bulk_insert_buffer_size = 429496.10; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@session.bulk_insert_buffer_size = 42949672950; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -42949672950 -SET @@session.bulk_insert_buffer_size = -2; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -0 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@session.bulk_insert_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -SET @@session.bulk_insert_buffer_size = 429496.10; -ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' -'#------------------FN_DYNVARS_007_06-----------------------#' -SELECT @@global.bulk_insert_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='bulk_insert_buffer_size'; -@@global.bulk_insert_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_007_07-----------------------#' -SELECT @@session.bulk_insert_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='bulk_insert_buffer_size'; -@@session.bulk_insert_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_007_08-----------------------#' -SET @@global.bulk_insert_buffer_size = TRUE; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -1 -SET @@global.bulk_insert_buffer_size = FALSE; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -0 -SET @@session.bulk_insert_buffer_size = TRUE; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -1 -SET @@session.bulk_insert_buffer_size = FALSE; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -0 -'#---------------------FN_DYNVARS_007_09----------------------#' -SET @@bulk_insert_buffer_size = 100; -SELECT @@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size; -@@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size -1 -SELECT @@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; -@@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size -1 -'#---------------------FN_DYNVARS_007_10----------------------#' -SET bulk_insert_buffer_size = 1; -SELECT @@bulk_insert_buffer_size; -@@bulk_insert_buffer_size -1 -SET local.bulk_insert_buffer_size = 1; -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 'bulk_insert_buffer_size = 1' at line 1 -SELECT local.bulk_insert_buffer_size; -ERROR 42S02: Unknown table 'local' in field list -SET session.bulk_insert_buffer_size = 1; -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 'bulk_insert_buffer_size = 1' at line 1 -SELECT session.bulk_insert_buffer_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; -ERROR 42S22: Unknown column 'bulk_insert_buffer_size' in 'field list' -SET @@global.bulk_insert_buffer_size = @start_global_value; -SELECT @@global.bulk_insert_buffer_size; -@@global.bulk_insert_buffer_size -8388608 -SET @@session.bulk_insert_buffer_size = @start_session_value; -SELECT @@session.bulk_insert_buffer_size; -@@session.bulk_insert_buffer_size -8388608 diff --git a/mysql-test/r/delayed_insert_limit_basic_64.result b/mysql-test/r/delayed_insert_limit_basic_64.result deleted file mode 100644 index 246bf0e8734..00000000000 --- a/mysql-test/r/delayed_insert_limit_basic_64.result +++ /dev/null @@ -1,110 +0,0 @@ -SET @start_value = @@global.delayed_insert_limit; -SELECT @start_value; -@start_value -100 -'#--------------------FN_DYNVARS_024_01------------------------#' -SET @@global.delayed_insert_limit = 100; -SET @@global.delayed_insert_limit = DEFAULT; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -100 -'#---------------------FN_DYNVARS_024_02-------------------------#' -SET @@global.delayed_insert_limit = @start_value; -SELECT @@global.delayed_insert_limit = 100; -@@global.delayed_insert_limit = 100 -1 -'#--------------------FN_DYNVARS_024_03------------------------#' -SET @@global.delayed_insert_limit = 10000; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -10000 -SET @@global.delayed_insert_limit = 4294967295; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -4294967295 -SET @@global.delayed_insert_limit = 1; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -'#--------------------FN_DYNVARS_024_04-------------------------#' -SET @@global.delayed_insert_limit = 0; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '0' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -SET @@global.delayed_insert_limit = -1024; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '0' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -SET @@global.delayed_insert_limit = 42949672950; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -42949672950 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.delayed_insert_limit = 429496729.5; -ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -42949672950 -SET @@global.delayed_insert_limit = ON; -ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -42949672950 -'#-------------------FN_DYNVARS_024_05----------------------------#' -SET @@session.delayed_insert_limit = 0; -ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@Session.delayed_insert_limit; -ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable -'#----------------------FN_DYNVARS_024_06------------------------#' -SELECT @@global.delayed_insert_limit = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='delayed_insert_limit'; -@@global.delayed_insert_limit = -VARIABLE_VALUE -1 -SELECT @@delayed_insert_limit = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='delayed_insert_limit'; -@@delayed_insert_limit = -VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_024_07----------------------#' -SET @@global.delayed_insert_limit = TRUE; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -SET @@global.delayed_insert_limit = FALSE; -Warnings: -Warning 1292 Truncated incorrect delayed_insert_limit value: '0' -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -1 -'#---------------------FN_DYNVARS_024_08----------------------#' -SET @@global.delayed_insert_limit = 1; -SELECT @@delayed_insert_limit = @@global.delayed_insert_limit; -@@delayed_insert_limit = @@global.delayed_insert_limit -1 -'#---------------------FN_DYNVARS_024_09----------------------#' -SET delayed_insert_limit = 1; -ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@delayed_insert_limit; -@@delayed_insert_limit -1 -SET local.delayed_insert_limit = 1; -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 'delayed_insert_limit = 1' at line 1 -SELECT local.delayed_insert_limit; -ERROR 42S02: Unknown table 'local' in field list -SET global.delayed_insert_limit = 1; -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 'delayed_insert_limit = 1' at line 1 -SELECT global.delayed_insert_limit; -ERROR 42S02: Unknown table 'global' in field list -SELECT delayed_insert_limit = @@session.delayed_insert_limit; -ERROR 42S22: Unknown column 'delayed_insert_limit' in 'field list' -SET @@global.delayed_insert_limit = @start_value; -SELECT @@global.delayed_insert_limit; -@@global.delayed_insert_limit -100 diff --git a/mysql-test/r/delayed_queue_size_basic_64.result b/mysql-test/r/delayed_queue_size_basic_64.result deleted file mode 100644 index d575626b0a1..00000000000 --- a/mysql-test/r/delayed_queue_size_basic_64.result +++ /dev/null @@ -1,108 +0,0 @@ -SET @start_value = @@global.delayed_queue_size; -SELECT @start_value; -@start_value -1000 -'#--------------------FN_DYNVARS_026_01------------------------#' -SET @@global.delayed_queue_size = 100; -SET @@global.delayed_queue_size = DEFAULT; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1000 -'#---------------------FN_DYNVARS_026_02-------------------------#' -SET @@global.delayed_queue_size = @start_value; -SELECT @@global.delayed_queue_size = 1000; -@@global.delayed_queue_size = 1000 -1 -'#--------------------FN_DYNVARS_026_03------------------------#' -SET @@global.delayed_queue_size = 10000; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -10000 -SET @@global.delayed_queue_size = 4294967295; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -4294967295 -SET @@global.delayed_queue_size = 1; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -'#--------------------FN_DYNVARS_026_04-------------------------#' -SET @@global.delayed_queue_size = 0; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '0' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -SET @@global.delayed_queue_size = -1024; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '0' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -SET @@global.delayed_queue_size = 42949672950; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -42949672950 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.delayed_queue_size = 429496729.5; -ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -42949672950 -SET @@global.delayed_queue_size = ON; -ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' -SELECT @@delayed_queue_size; -@@delayed_queue_size -42949672950 -'#-------------------FN_DYNVARS_026_05----------------------------#' -SET @@session.delayed_queue_size = 0; -ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.delayed_queue_size; -ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable -'#----------------------FN_DYNVARS_026_06------------------------#' -SELECT @@global.delayed_queue_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='delayed_queue_size'; -@@global.delayed_queue_size = VARIABLE_VALUE -1 -SELECT @@delayed_queue_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='delayed_queue_size'; -@@delayed_queue_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_026_07----------------------#' -SET @@global.delayed_queue_size = TRUE; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -SET @@global.delayed_queue_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect delayed_queue_size value: '0' -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1 -'#---------------------FN_DYNVARS_026_08----------------------#' -SET @@global.delayed_queue_size = 1; -SELECT @@delayed_queue_size = @@global.delayed_queue_size; -@@delayed_queue_size = @@global.delayed_queue_size -1 -'#---------------------FN_DYNVARS_026_09----------------------#' -SET delayed_queue_size = 1; -ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@delayed_queue_size; -@@delayed_queue_size -1 -SET local.delayed_queue_size = 1; -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 'delayed_queue_size = 1' at line 1 -SELECT local.delayed_queue_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.delayed_queue_size = 1; -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 'delayed_queue_size = 1' at line 1 -SELECT global.delayed_queue_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT delayed_queue_size = @@session.delayed_queue_size; -ERROR 42S22: Unknown column 'delayed_queue_size' in 'field list' -SET @@global.delayed_queue_size = @start_value; -SELECT @@global.delayed_queue_size; -@@global.delayed_queue_size -1000 diff --git a/mysql-test/r/innodb_concurrency_tickets_basic_64.result b/mysql-test/r/innodb_concurrency_tickets_basic_64.result deleted file mode 100644 index 40d307d8733..00000000000 --- a/mysql-test/r/innodb_concurrency_tickets_basic_64.result +++ /dev/null @@ -1,98 +0,0 @@ -SET @global_start_value = @@global.innodb_concurrency_tickets; -SELECT @global_start_value; -@global_start_value -500 -'#--------------------FN_DYNVARS_046_01------------------------#' -SET @@global.innodb_concurrency_tickets = 0; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '0' -SET @@global.innodb_concurrency_tickets = DEFAULT; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -500 -'#---------------------FN_DYNVARS_046_02-------------------------#' -SET innodb_concurrency_tickets = 1; -ERROR HY000: Variable 'innodb_concurrency_tickets' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@innodb_concurrency_tickets; -@@innodb_concurrency_tickets -500 -SELECT local.innodb_concurrency_tickets; -ERROR 42S02: Unknown table 'local' in field list -SET global innodb_concurrency_tickets = 0; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '0' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -'#--------------------FN_DYNVARS_046_03------------------------#' -SET @@global.innodb_concurrency_tickets = 1; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -SET @@global.innodb_concurrency_tickets = 1000; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1000 -SET @@global.innodb_concurrency_tickets = 4294967295; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -4294967295 -'#--------------------FN_DYNVARS_046_04-------------------------#' -SET @@global.innodb_concurrency_tickets = -1; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -18446744073709551615 -SET @@global.innodb_concurrency_tickets = "T"; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -18446744073709551615 -SET @@global.innodb_concurrency_tickets = "Y"; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -18446744073709551615 -SET @@global.innodb_concurrency_tickets = 1001; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -'#----------------------FN_DYNVARS_046_05------------------------#' -SELECT @@global.innodb_concurrency_tickets = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_concurrency_tickets'; -@@global.innodb_concurrency_tickets = -VARIABLE_VALUE -1 -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_concurrency_tickets'; -VARIABLE_VALUE -1001 -'#---------------------FN_DYNVARS_046_06-------------------------#' -SET @@global.innodb_concurrency_tickets = OFF; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -SET @@global.innodb_concurrency_tickets = ON; -ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1001 -'#---------------------FN_DYNVARS_046_07----------------------#' -SET @@global.innodb_concurrency_tickets = TRUE; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -SET @@global.innodb_concurrency_tickets = FALSE; -Warnings: -Warning 1292 Truncated incorrect concurrency_tickets value: '0' -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -1 -SET @@global.innodb_concurrency_tickets = @global_start_value; -SELECT @@global.innodb_concurrency_tickets; -@@global.innodb_concurrency_tickets -500 diff --git a/mysql-test/r/innodb_max_purge_lag_basic_64.result b/mysql-test/r/innodb_max_purge_lag_basic_64.result deleted file mode 100644 index a6b669dde83..00000000000 --- a/mysql-test/r/innodb_max_purge_lag_basic_64.result +++ /dev/null @@ -1,92 +0,0 @@ -SET @global_start_value = @@global.innodb_max_purge_lag; -SELECT @global_start_value; -@global_start_value -0 -'#--------------------FN_DYNVARS_046_01------------------------#' -SET @@global.innodb_max_purge_lag = 0; -SET @@global.innodb_max_purge_lag = DEFAULT; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -'#---------------------FN_DYNVARS_046_02-------------------------#' -SET innodb_max_purge_lag = 1; -ERROR HY000: Variable 'innodb_max_purge_lag' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@innodb_max_purge_lag; -@@innodb_max_purge_lag -0 -SELECT local.innodb_max_purge_lag; -ERROR 42S02: Unknown table 'local' in field list -SET global innodb_max_purge_lag = 0; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -'#--------------------FN_DYNVARS_046_03------------------------#' -SET @@global.innodb_max_purge_lag = 0; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -SET @@global.innodb_max_purge_lag = 1; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1 -SET @@global.innodb_max_purge_lag = 4294967295; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -4294967295 -'#--------------------FN_DYNVARS_046_04-------------------------#' -SET @@global.innodb_max_purge_lag = -1; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -18446744073709551615 -SET @@global.innodb_max_purge_lag = "T"; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -18446744073709551615 -SET @@global.innodb_max_purge_lag = "Y"; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -18446744073709551615 -SET @@global.innodb_max_purge_lag = 1001; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -'#----------------------FN_DYNVARS_046_05------------------------#' -SELECT @@global.innodb_max_purge_lag = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_max_purge_lag'; -@@global.innodb_max_purge_lag = -VARIABLE_VALUE -1 -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_max_purge_lag'; -VARIABLE_VALUE -1001 -'#---------------------FN_DYNVARS_046_06-------------------------#' -SET @@global.innodb_max_purge_lag = OFF; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -SET @@global.innodb_max_purge_lag = ON; -ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1001 -'#---------------------FN_DYNVARS_046_07----------------------#' -SET @@global.innodb_max_purge_lag = TRUE; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -1 -SET @@global.innodb_max_purge_lag = FALSE; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 -SET @@global.innodb_max_purge_lag = @global_start_value; -SELECT @@global.innodb_max_purge_lag; -@@global.innodb_max_purge_lag -0 diff --git a/mysql-test/r/innodb_sync_spin_loops_basic_64.result b/mysql-test/r/innodb_sync_spin_loops_basic_64.result deleted file mode 100644 index 1b99ad8e3db..00000000000 --- a/mysql-test/r/innodb_sync_spin_loops_basic_64.result +++ /dev/null @@ -1,92 +0,0 @@ -SET @global_start_value = @@global.innodb_sync_spin_loops; -SELECT @global_start_value; -@global_start_value -20 -'#--------------------FN_DYNVARS_046_01------------------------#' -SET @@global.innodb_sync_spin_loops = 0; -SET @@global.innodb_sync_spin_loops = DEFAULT; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -20 -'#---------------------FN_DYNVARS_046_02-------------------------#' -SET innodb_sync_spin_loops = 1; -ERROR HY000: Variable 'innodb_sync_spin_loops' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@innodb_sync_spin_loops; -@@innodb_sync_spin_loops -20 -SELECT local.innodb_sync_spin_loops; -ERROR 42S02: Unknown table 'local' in field list -SET global innodb_sync_spin_loops = 0; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -0 -'#--------------------FN_DYNVARS_046_03------------------------#' -SET @@global.innodb_sync_spin_loops = 0; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -0 -SET @@global.innodb_sync_spin_loops = 1; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1 -SET @@global.innodb_sync_spin_loops = 1000; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1000 -'#--------------------FN_DYNVARS_046_04-------------------------#' -SET @@global.innodb_sync_spin_loops = -1; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -18446744073709551615 -SET @@global.innodb_sync_spin_loops = "T"; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -18446744073709551615 -SET @@global.innodb_sync_spin_loops = "Y"; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -18446744073709551615 -SET @@global.innodb_sync_spin_loops = 1001; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -'#----------------------FN_DYNVARS_046_05------------------------#' -SELECT @@global.innodb_sync_spin_loops = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_sync_spin_loops'; -@@global.innodb_sync_spin_loops = -VARIABLE_VALUE -1 -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='innodb_sync_spin_loops'; -VARIABLE_VALUE -1001 -'#---------------------FN_DYNVARS_046_06-------------------------#' -SET @@global.innodb_sync_spin_loops = OFF; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -SET @@global.innodb_sync_spin_loops = ON; -ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1001 -'#---------------------FN_DYNVARS_046_07----------------------#' -SET @@global.innodb_sync_spin_loops = TRUE; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -1 -SET @@global.innodb_sync_spin_loops = FALSE; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -0 -SET @@global.innodb_sync_spin_loops = @global_start_value; -SELECT @@global.innodb_sync_spin_loops; -@@global.innodb_sync_spin_loops -20 diff --git a/mysql-test/r/join_buffer_size_basic_64.result b/mysql-test/r/join_buffer_size_basic_64.result deleted file mode 100644 index ed652af67d2..00000000000 --- a/mysql-test/r/join_buffer_size_basic_64.result +++ /dev/null @@ -1,194 +0,0 @@ -SET @start_global_value = @@global.join_buffer_size; -SELECT @start_global_value; -@start_global_value -131072 -SET @start_session_value = @@session.join_buffer_size; -SELECT @start_session_value; -@start_session_value -131072 -'#--------------------FN_DYNVARS_053_01-------------------------#' -SET @@global.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SET @@global.join_buffer_size = DEFAULT; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -131072 -SET @@session.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SET @@session.join_buffer_size = DEFAULT; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -131072 -'#--------------------FN_DYNVARS_053_02-------------------------#' -SET @@global.join_buffer_size = DEFAULT; -SELECT @@global.join_buffer_size = 131072; -@@global.join_buffer_size = 131072 -1 -SET @@session.join_buffer_size = DEFAULT; -SELECT @@session.join_buffer_size = 131072; -@@session.join_buffer_size = 131072 -1 -'#--------------------FN_DYNVARS_053_03-------------------------#' -SET @@global.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = 65536; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -65536 -SET @@global.join_buffer_size = 4294967295; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -4294963200 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -'#--------------------FN_DYNVARS_053_04-------------------------#' -SET @@session.join_buffer_size = 8200; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8200' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = 65536; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -65536 -SET @@session.join_buffer_size = 4294967295; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -4294963200 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -'#------------------FN_DYNVARS_053_05-----------------------#' -SET @@global.join_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = -1024; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = 8199; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8199' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = 42949672951; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -42949668864 -SET @@global.join_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 -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -42949668864 -SET @@global.join_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'join_buffer_size' -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -42949668864 -SET @@session.join_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = -2; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = 8199; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '8199' -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 -1 -SET @@session.join_buffer_size = 42949672951; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -42949668864 -SET @@session.join_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 -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -42949668864 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@session.join_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'join_buffer_size' -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -42949668864 -'#------------------FN_DYNVARS_053_06-----------------------#' -SELECT @@global.join_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='join_buffer_size'; -@@global.join_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_053_07-----------------------#' -SELECT @@session.join_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='join_buffer_size'; -@@session.join_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_053_08-----------------------#' -SET @@global.join_buffer_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '1' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -SET @@global.join_buffer_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '0' -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 -1 -'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.join_buffer_size = 10; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '10' -SELECT @@join_buffer_size = @@global.join_buffer_size; -@@join_buffer_size = @@global.join_buffer_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@join_buffer_size = 100; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '100' -SELECT @@join_buffer_size = @@local.join_buffer_size; -@@join_buffer_size = @@local.join_buffer_size -1 -SELECT @@local.join_buffer_size = @@session.join_buffer_size; -@@local.join_buffer_size = @@session.join_buffer_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET join_buffer_size = 1; -Warnings: -Warning 1292 Truncated incorrect join_buffer_size value: '1' -SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228; -@@join_buffer_size=8200 OR @@join_buffer_size= 8228 -1 -SELECT local.join_buffer_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.join_buffer_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT join_buffer_size = @@session.join_buffer_size; -ERROR 42S22: Unknown column 'join_buffer_size' in 'field list' -SET @@global.join_buffer_size = @start_global_value; -SELECT @@global.join_buffer_size; -@@global.join_buffer_size -131072 -SET @@session.join_buffer_size = @start_session_value; -SELECT @@session.join_buffer_size; -@@session.join_buffer_size -131072 diff --git a/mysql-test/r/key_buffer_size_basic_64.result b/mysql-test/r/key_buffer_size_basic_64.result deleted file mode 100644 index 981988a1d4d..00000000000 --- a/mysql-test/r/key_buffer_size_basic_64.result +++ /dev/null @@ -1,111 +0,0 @@ -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 -1 -'#---------------------FN_DYNVARS_055_02-------------------------#' -SET @@global.key_buffer_size = @start_value; -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 -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 -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' -SELECT @@global.key_buffer_size; -@@global.key_buffer_size -61440 -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 -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 -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 -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 -1 -'#----------------------FN_DYNVARS_055_06------------------------#' -SELECT @@global.key_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_buffer_size'; -@@global.key_buffer_size = VARIABLE_VALUE -1 -SELECT @@key_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_buffer_size'; -@@key_buffer_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_055_07----------------------#' -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 -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 -1 -'#---------------------FN_DYNVARS_055_08----------------------#' -SET @@global.key_buffer_size = @min_key_buffer_size; -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; -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 -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 -SELECT local.key_buffer_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.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 -SELECT global.key_buffer_size; -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/r/key_cache_age_threshold_basic_64.result b/mysql-test/r/key_cache_age_threshold_basic_64.result deleted file mode 100644 index 5e05dd7bacf..00000000000 --- a/mysql-test/r/key_cache_age_threshold_basic_64.result +++ /dev/null @@ -1,126 +0,0 @@ -SET @start_value = @@global.key_cache_age_threshold; -SELECT @start_value; -@start_value -300 -'#--------------------FN_DYNVARS_056_01------------------------#' -SET @@global.key_cache_age_threshold = 99; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' -SET @@global.key_cache_age_threshold = DEFAULT; -ERROR 42000: Variable 'key_cache_age_threshold' doesn't have a default value -'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'#---------------------FN_DYNVARS_056_02-------------------------#' -SET @@global.key_cache_age_threshold = @start_value; -SELECT @@global.key_cache_age_threshold = 300; -@@global.key_cache_age_threshold = 300 -1 -'#--------------------FN_DYNVARS_056_03------------------------#' -SET @@global.key_cache_age_threshold = 100; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -SET @@global.key_cache_age_threshold = 4294967295; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -4294967200 -SET @@global.key_cache_age_threshold = 1800; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -1800 -SET @@global.key_cache_age_threshold = 65535; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -65500 -'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -'#--------------------FN_DYNVARS_056_04-------------------------#' -SET @@global.key_cache_age_threshold = -1; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -18446744073709551600 -SET @@global.key_cache_age_threshold = 42949672951; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -42949672900 -SET @@global.key_cache_age_threshold = 10000.01; -ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -42949672900 -SET @@global.key_cache_age_threshold = -1024; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -18446744073709550500 -SET @@global.key_cache_age_threshold = 99; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.key_cache_age_threshold = ON; -ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -SET @@global.key_cache_age_threshold = 'test'; -ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'#-------------------FN_DYNVARS_056_05----------------------------#' -SET @@session.key_cache_age_threshold = 0; -ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.key_cache_age_threshold; -ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable -'#----------------------FN_DYNVARS_056_06------------------------#' -SELECT @@global.key_cache_age_threshold = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_age_threshold'; -@@global.key_cache_age_threshold = VARIABLE_VALUE -1 -SELECT @@key_cache_age_threshold = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_age_threshold'; -@@key_cache_age_threshold = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_056_07----------------------#' -SET @@global.key_cache_age_threshold = TRUE; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '1' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -SET @@global.key_cache_age_threshold = FALSE; -Warnings: -Warning 1292 Truncated incorrect key_cache_age_threshold value: '0' -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -100 -'#---------------------FN_DYNVARS_056_08----------------------#' -SET @@global.key_cache_age_threshold = 101; -SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold; -@@key_cache_age_threshold = @@global.key_cache_age_threshold -1 -'#---------------------FN_DYNVARS_056_09----------------------#' -SET key_cache_age_threshold = 8000; -ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_cache_age_threshold; -@@key_cache_age_threshold -100 -SET local.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 -SELECT local.key_cache_age_threshold; -ERROR 42S02: Unknown table 'local' in field list -SET global.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 -SELECT global.key_cache_age_threshold; -ERROR 42S02: Unknown table 'global' in field list -SELECT key_cache_age_threshold = @@session.key_cache_age_threshold; -ERROR 42S22: Unknown column 'key_cache_age_threshold' in 'field list' -SET @@global.key_cache_age_threshold = @start_value; -SELECT @@global.key_cache_age_threshold; -@@global.key_cache_age_threshold -300 diff --git a/mysql-test/r/key_cache_block_size_basic_64.result b/mysql-test/r/key_cache_block_size_basic_64.result deleted file mode 100644 index 46ce1f26b29..00000000000 --- a/mysql-test/r/key_cache_block_size_basic_64.result +++ /dev/null @@ -1,142 +0,0 @@ -SET @start_value = @@global.key_cache_block_size; -SELECT @start_value; -@start_value -1024 -'#--------------------FN_DYNVARS_057_01------------------------#' -SET @@global.key_cache_block_size = 600; -SET @@global.key_cache_block_size = DEFAULT; -ERROR 42000: Variable 'key_cache_block_size' doesn't have a default value -'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -'#---------------------FN_DYNVARS_057_02-------------------------#' -SET @@global.key_cache_block_size = @start_value; -SELECT @@global.key_cache_block_size = 1024; -@@global.key_cache_block_size = 1024 -1 -'#--------------------FN_DYNVARS_057_03------------------------#' -SET @@global.key_cache_block_size = 1024; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -1024 -SET @@global.key_cache_block_size = 16384; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 1800; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -1536 -SET @@global.key_cache_block_size = 16383; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -15872 -'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -'#--------------------FN_DYNVARS_057_04-------------------------#' -SET @@global.key_cache_block_size = -1; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709551615' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 42949672951; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '42949672951' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = -1024; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709550592' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 256; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '256' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -SET @@global.key_cache_block_size = 511; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '511' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -SET @@global.key_cache_block_size = 16385; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '16385' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.key_cache_block_size = ON; -ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -SET @@global.key_cache_block_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -16384 -'#-------------------FN_DYNVARS_057_05----------------------------#' -SET @@session.key_cache_block_size = 0; -ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.key_cache_block_size; -ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable -'#----------------------FN_DYNVARS_057_06------------------------#' -SELECT @@global.key_cache_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_block_size'; -@@global.key_cache_block_size = VARIABLE_VALUE -1 -SELECT @@key_cache_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_block_size'; -@@key_cache_block_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_057_07----------------------#' -SET @@global.key_cache_block_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '1' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -SET @@global.key_cache_block_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect key_cache_block_size value: '0' -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -512 -'#---------------------FN_DYNVARS_057_08----------------------#' -SET @@global.key_cache_block_size = 1024; -SELECT @@key_cache_block_size = @@global.key_cache_block_size; -@@key_cache_block_size = @@global.key_cache_block_size -1 -'#---------------------FN_DYNVARS_057_09----------------------#' -SET key_cache_block_size = 8000; -ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_cache_block_size; -@@key_cache_block_size -1024 -SET local.key_cache_block_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_cache_block_size = 10' at line 1 -SELECT local.key_cache_block_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.key_cache_block_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_cache_block_size = 10' at line 1 -SELECT global.key_cache_block_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT key_cache_block_size = @@session.key_cache_block_size; -ERROR 42S22: Unknown column 'key_cache_block_size' in 'field list' -SET @@global.key_cache_block_size = @start_value; -SELECT @@global.key_cache_block_size; -@@global.key_cache_block_size -1024 diff --git a/mysql-test/r/key_cache_division_limit_basic_64.result b/mysql-test/r/key_cache_division_limit_basic_64.result deleted file mode 100644 index cd0cdcbca05..00000000000 --- a/mysql-test/r/key_cache_division_limit_basic_64.result +++ /dev/null @@ -1,139 +0,0 @@ -SET @start_value = @@global.key_cache_division_limit; -SELECT @start_value; -@start_value -100 -'#--------------------FN_DYNVARS_058_01------------------------#' -SET @@global.key_cache_division_limit = 50; -SET @@global.key_cache_division_limit = DEFAULT; -ERROR 42000: Variable 'key_cache_division_limit' doesn't have a default value -'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -50 -'#---------------------FN_DYNVARS_058_02-------------------------#' -SET @@global.key_cache_division_limit = @start_value; -SELECT @@global.key_cache_division_limit = 100; -@@global.key_cache_division_limit = 100 -1 -'#--------------------FN_DYNVARS_058_03------------------------#' -SET @@global.key_cache_division_limit = 1; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -SET @@global.key_cache_division_limit = 50; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -50 -SET @@global.key_cache_division_limit = 99; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -99 -SET @@global.key_cache_division_limit = 2; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -2 -'#--------------------FN_DYNVARS_058_04-------------------------#' -SET @@global.key_cache_division_limit = -1; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709551615' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 101; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '101' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 10000.01; -ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = -1024; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709550592' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 0; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '0' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -SET @@global.key_cache_division_limit = 200; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '200' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 65535; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '65535' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -'Bug # 34837: Errors are not coming on assigning invalid values to variable' -SET @@global.key_cache_division_limit = ON; -ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -SET @@global.key_cache_division_limit = 'test'; -ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 -'#-------------------FN_DYNVARS_058_05----------------------------#' -SET @@session.key_cache_division_limit = 0; -ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.key_cache_division_limit; -ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable -'#----------------------FN_DYNVARS_058_06------------------------#' -SELECT @@global.key_cache_division_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_division_limit'; -@@global.key_cache_division_limit = VARIABLE_VALUE -1 -SELECT @@key_cache_division_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_division_limit'; -@@key_cache_division_limit = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_058_07----------------------#' -SET @@global.key_cache_division_limit = TRUE; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -SET @@global.key_cache_division_limit = FALSE; -Warnings: -Warning 1292 Truncated incorrect key_cache_division_limit value: '0' -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -1 -'#---------------------FN_DYNVARS_058_08----------------------#' -SET @@global.key_cache_division_limit = 90; -SELECT @@key_cache_division_limit = @@global.key_cache_division_limit; -@@key_cache_division_limit = @@global.key_cache_division_limit -1 -'#---------------------FN_DYNVARS_058_09----------------------#' -SET key_cache_division_limit = 80; -ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@key_cache_division_limit; -@@key_cache_division_limit -90 -SET local.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 -SELECT local.key_cache_division_limit; -ERROR 42S02: Unknown table 'local' in field list -SET global.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 -SELECT global.key_cache_division_limit; -ERROR 42S02: Unknown table 'global' in field list -SELECT key_cache_division_limit = @@session.key_cache_division_limit; -ERROR 42S22: Unknown column 'key_cache_division_limit' in 'field list' -SET @@global.key_cache_division_limit = @start_value; -SELECT @@global.key_cache_division_limit; -@@global.key_cache_division_limit -100 diff --git a/mysql-test/r/log_warnings_basic_64.result b/mysql-test/r/log_warnings_basic_64.result deleted file mode 100644 index ba6671c87a4..00000000000 --- a/mysql-test/r/log_warnings_basic_64.result +++ /dev/null @@ -1,158 +0,0 @@ -SET @start_global_value = @@global.log_warnings; -SELECT @start_global_value; -@start_global_value -1 -SET @start_session_value = @@session.log_warnings; -SELECT @start_session_value; -@start_session_value -1 -'#--------------------FN_DYNVARS_067_01-------------------------#' -SET @@global.log_warnings = 100; -SET @@global.log_warnings = DEFAULT; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@session.log_warnings = 200; -SET @@session.log_warnings = DEFAULT; -SELECT @@session.log_warnings; -@@session.log_warnings -1 -'#--------------------FN_DYNVARS_067_02-------------------------#' -SET @@global.log_warnings = DEFAULT; -SELECT @@global.log_warnings = 1; -@@global.log_warnings = 1 -1 -SET @@session.log_warnings = DEFAULT; -SELECT @@session.log_warnings = 1; -@@session.log_warnings = 1 -1 -'#--------------------FN_DYNVARS_067_03-------------------------#' -SET @@global.log_warnings = 0; -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@global.log_warnings = 1; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@global.log_warnings = 60020; -SELECT @@global.log_warnings; -@@global.log_warnings -60020 -SET @@global.log_warnings = 65535; -SELECT @@global.log_warnings; -@@global.log_warnings -65535 -SET @@global.log_warnings = 65536; -SELECT @@global.log_warnings; -@@global.log_warnings -65536 -'#--------------------FN_DYNVARS_067_04-------------------------#' -SET @@session.log_warnings = 0; -SELECT @@session.log_warnings; -@@session.log_warnings -0 -SET @@session.log_warnings = 1; -SELECT @@session.log_warnings; -@@session.log_warnings -1 -SET @@session.log_warnings = 50050; -SELECT @@session.log_warnings; -@@session.log_warnings -50050 -SET @@session.log_warnings = 65535; -SELECT @@session.log_warnings; -@@session.log_warnings -65535 -SET @@session.log_warnings = 65550; -SELECT @@session.log_warnings; -@@session.log_warnings -65550 -'#------------------FN_DYNVARS_067_05-----------------------#' -SET @@global.log_warnings = 100000000000; -SELECT @@global.log_warnings; -@@global.log_warnings -100000000000 -SET @@global.log_warnings = -1024; -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@global.log_warnings = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@global.log_warnings = test; -ERROR 42000: Incorrect argument type to variable 'log_warnings' -SELECT @@global.log_warnings; -@@global.log_warnings -0 -SET @@session.log_warnings = 100000000000; -SELECT @@session.log_warnings; -@@session.log_warnings -100000000000 -SET @@session.log_warnings = -2; -SELECT @@session.log_warnings; -@@session.log_warnings -0 -SET @@session.log_warnings = 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 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.log_warnings = test; -ERROR 42000: Incorrect argument type to variable 'log_warnings' -SELECT @@session.log_warnings; -@@session.log_warnings -0 -'#------------------FN_DYNVARS_067_06-----------------------#' -SELECT @@global.log_warnings = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='log_warnings'; -@@global.log_warnings = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_067_07-----------------------#' -SELECT @@session.log_warnings = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='log_warnings'; -@@session.log_warnings = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_067_08-----------------------#' -SET @@global.log_warnings = TRUE; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@global.log_warnings = FALSE; -SELECT @@global.log_warnings; -@@global.log_warnings -0 -'#---------------------FN_DYNVARS_067_09----------------------#' -SET @@global.log_warnings = 10; -SELECT @@log_warnings = @@global.log_warnings; -@@log_warnings = @@global.log_warnings -0 -'#---------------------FN_DYNVARS_067_10----------------------#' -SET @@log_warnings = 100; -SELECT @@log_warnings = @@local.log_warnings; -@@log_warnings = @@local.log_warnings -1 -SELECT @@local.log_warnings = @@session.log_warnings; -@@local.log_warnings = @@session.log_warnings -1 -'#---------------------FN_DYNVARS_067_11----------------------#' -SET log_warnings = 1; -SELECT @@log_warnings; -@@log_warnings -1 -SELECT local.log_warnings; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.log_warnings; -ERROR 42S02: Unknown table 'session' in field list -SELECT log_warnings = @@session.log_warnings; -ERROR 42S22: Unknown column 'log_warnings' in 'field list' -SET @@global.log_warnings = @start_global_value; -SELECT @@global.log_warnings; -@@global.log_warnings -1 -SET @@session.log_warnings = @start_session_value; -SELECT @@session.log_warnings; -@@session.log_warnings -1 diff --git a/mysql-test/r/max_binlog_cache_size_basic_64.result b/mysql-test/r/max_binlog_cache_size_basic_64.result deleted file mode 100644 index 30db3f14dd4..00000000000 --- a/mysql-test/r/max_binlog_cache_size_basic_64.result +++ /dev/null @@ -1,141 +0,0 @@ -SET @start_value = @@global.max_binlog_cache_size; -SELECT @start_value; -@start_value -18446744073709551615 -'#--------------------FN_DYNVARS_072_01------------------------#' -SET @@global.max_binlog_cache_size = 5000; -SET @@global.max_binlog_cache_size = DEFAULT; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -18446744073709547520 -'#---------------------FN_DYNVARS_072_02-------------------------#' -SET @@global.max_binlog_cache_size = @start_value; -SELECT @@global.max_binlog_cache_size = 4294967295; -@@global.max_binlog_cache_size = 4294967295 -0 -'Bug# 34876: Incorrect Default Value is assigned to variable'; -'#--------------------FN_DYNVARS_072_03------------------------#' -SET @@global.max_binlog_cache_size = 4096; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 4294967295; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = 4294967294; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294963200 -SET @@global.max_binlog_cache_size = 4097; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 65535; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -61440 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_072_04-------------------------#' -SET @@global.max_binlog_cache_size = -1; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 100000000000; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -99999997952 -SET @@global.max_binlog_cache_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -99999997952 -SET @@global.max_binlog_cache_size = -1024; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 1024; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '1024' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 4294967296; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4294967296 -SET @@global.max_binlog_cache_size = 4095; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '4095' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.max_binlog_cache_size = ON; -ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -'#-------------------FN_DYNVARS_072_05----------------------------#' -SET @@session.max_binlog_cache_size = 4096; -ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.max_binlog_cache_size; -ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable -'#----------------------FN_DYNVARS_072_06------------------------#' -SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_binlog_cache_size'; -@@global.max_binlog_cache_size = VARIABLE_VALUE -1 -SELECT @@max_binlog_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_binlog_cache_size'; -@@max_binlog_cache_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_072_07----------------------#' -SET @@global.max_binlog_cache_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '1' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -SET @@global.max_binlog_cache_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -4096 -'#---------------------FN_DYNVARS_072_08----------------------#' -SET @@global.max_binlog_cache_size = 5000; -SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size; -@@max_binlog_cache_size = @@global.max_binlog_cache_size -1 -'#---------------------FN_DYNVARS_072_09----------------------#' -SET max_binlog_cache_size = 6000; -ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@max_binlog_cache_size; -@@max_binlog_cache_size -4096 -SET local.max_binlog_cache_size = 7000; -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 'max_binlog_cache_size = 7000' at line 1 -SELECT local.max_binlog_cache_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.max_binlog_cache_size = 8000; -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 'max_binlog_cache_size = 8000' at line 1 -SELECT global.max_binlog_cache_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT max_binlog_cache_size = @@session.max_binlog_cache_size; -ERROR 42S22: Unknown column 'max_binlog_cache_size' in 'field list' -SET @@global.max_binlog_cache_size = @start_value; -SELECT @@global.max_binlog_cache_size; -@@global.max_binlog_cache_size -18446744073709547520 diff --git a/mysql-test/r/max_connect_errors_basic_64.result b/mysql-test/r/max_connect_errors_basic_64.result deleted file mode 100644 index 8117b650651..00000000000 --- a/mysql-test/r/max_connect_errors_basic_64.result +++ /dev/null @@ -1,133 +0,0 @@ -SET @start_value = @@global.max_connect_errors; -SELECT @start_value; -@start_value -10 -'#--------------------FN_DYNVARS_073_01------------------------#' -SET @@global.max_connect_errors = 5000; -SET @@global.max_connect_errors = DEFAULT; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -10 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#---------------------FN_DYNVARS_073_02-------------------------#' -SET @@global.max_connect_errors = @start_value; -SELECT @@global.max_connect_errors = 10; -@@global.max_connect_errors = 10 -1 -'#--------------------FN_DYNVARS_073_03------------------------#' -SET @@global.max_connect_errors = 4096; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4096 -SET @@global.max_connect_errors = 4294967294; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967294 -SET @@global.max_connect_errors = 4294967295; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967295 -SET @@global.max_connect_errors = 1; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 2; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -2 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_073_04-------------------------#' -SET @@global.max_connect_errors = -1; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 100000000000; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -100000000000 -SET @@global.max_connect_errors = 10000.01; -ERROR 42000: Incorrect argument type to variable 'max_connect_errors' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -100000000000 -SET @@global.max_connect_errors = -1024; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 0; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = 4294967296; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967296 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.max_connect_errors = ON; -ERROR 42000: Incorrect argument type to variable 'max_connect_errors' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967296 -SET @@global.max_connect_errors = 'test'; -ERROR 42000: Incorrect argument type to variable 'max_connect_errors' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -4294967296 -'#-------------------FN_DYNVARS_073_05----------------------------#' -SET @@session.max_connect_errors = 4096; -ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@session.max_connect_errors; -ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable -'#----------------------FN_DYNVARS_073_06------------------------#' -SELECT @@global.max_connect_errors = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_connect_errors'; -@@global.max_connect_errors = VARIABLE_VALUE -1 -SELECT @@max_connect_errors = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_connect_errors'; -@@max_connect_errors = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_073_07----------------------#' -SET @@global.max_connect_errors = TRUE; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -SET @@global.max_connect_errors = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_connect_errors value: '0' -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -1 -'#---------------------FN_DYNVARS_073_08----------------------#' -SET @@global.max_connect_errors = 5000; -SELECT @@max_connect_errors = @@global.max_connect_errors; -@@max_connect_errors = @@global.max_connect_errors -1 -'#---------------------FN_DYNVARS_073_09----------------------#' -SET max_connect_errors = 6000; -ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@max_connect_errors; -@@max_connect_errors -5000 -SET local.max_connect_errors = 7000; -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 'max_connect_errors = 7000' at line 1 -SELECT local.max_connect_errors; -ERROR 42S02: Unknown table 'local' in field list -SET global.max_connect_errors = 8000; -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 'max_connect_errors = 8000' at line 1 -SELECT global.max_connect_errors; -ERROR 42S02: Unknown table 'global' in field list -SELECT max_connect_errors = @@session.max_connect_errors; -ERROR 42S22: Unknown column 'max_connect_errors' in 'field list' -SET @@global.max_connect_errors = @start_value; -SELECT @@global.max_connect_errors; -@@global.max_connect_errors -10 diff --git a/mysql-test/r/max_heap_table_size_basic_64.result b/mysql-test/r/max_heap_table_size_basic_64.result deleted file mode 100644 index ebab80f376b..00000000000 --- a/mysql-test/r/max_heap_table_size_basic_64.result +++ /dev/null @@ -1,196 +0,0 @@ -SET @start_global_value = @@global.max_heap_table_size; -SELECT @start_global_value; -@start_global_value -1048576 -SET @start_session_value = @@session.max_heap_table_size; -SELECT @start_session_value; -@start_session_value -1048576 -'#--------------------FN_DYNVARS_077_01-------------------------#' -SET @@global.max_heap_table_size = 1677721610; -SET @@global.max_heap_table_size = DEFAULT; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16777216 -SET @@session.max_heap_table_size = 1677721610; -SET @@session.max_heap_table_size = DEFAULT; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16777216 -'#--------------------FN_DYNVARS_077_02-------------------------#' -SET @@global.max_heap_table_size = DEFAULT; -SELECT @@global.max_heap_table_size = 16777216; -@@global.max_heap_table_size = 16777216 -1 -SET @@session.max_heap_table_size = DEFAULT; -SELECT @@session.max_heap_table_size = 16777216; -@@session.max_heap_table_size = 16777216 -1 -'#--------------------FN_DYNVARS_077_03-------------------------#' -SET @@global.max_heap_table_size = 16384; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 16385; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 65535; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -64512 -SET @@global.max_heap_table_size = 4294967294; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -SET @@global.max_heap_table_size = 4294967295; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_077_04-------------------------#' -SET @@session.max_heap_table_size = 16384; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 16385; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 65535; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -64512 -SET @@session.max_heap_table_size = 4294967294; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -SET @@session.max_heap_table_size = 4294967295; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#------------------FN_DYNVARS_077_05-----------------------#' -SET @@global.max_heap_table_size = -1; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = -1024; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 1024; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '1024' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 16383; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '16383' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = 4294967296; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294967296 -SET @@global.max_heap_table_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294967296 -SET @@global.max_heap_table_size = test; -ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -4294967296 -SET @@session.max_heap_table_size = -1; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 16383; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '16383' -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -16384 -SET @@session.max_heap_table_size = 4294967296; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -4294967296 -SET @@session.max_heap_table_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.max_heap_table_size = 10737418241; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -10737418240 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.max_heap_table_size = test; -ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -10737418240 -'#------------------FN_DYNVARS_077_06-----------------------#' -SELECT @@global.max_heap_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_heap_table_size'; -@@global.max_heap_table_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_077_07-----------------------#' -SELECT @@session.max_heap_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_heap_table_size'; -@@session.max_heap_table_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_077_08-----------------------#' -SET @@global.max_heap_table_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '1' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -SET @@global.max_heap_table_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_heap_table_size value: '0' -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -16384 -'#---------------------FN_DYNVARS_077_09----------------------#' -SET @@global.max_heap_table_size = 163845; -SELECT @@max_heap_table_size = @@global.max_heap_table_size; -@@max_heap_table_size = @@global.max_heap_table_size -0 -'#---------------------FN_DYNVARS_077_10----------------------#' -SET @@max_heap_table_size = 16777216; -SELECT @@max_heap_table_size = @@local.max_heap_table_size; -@@max_heap_table_size = @@local.max_heap_table_size -1 -SELECT @@local.max_heap_table_size = @@session.max_heap_table_size; -@@local.max_heap_table_size = @@session.max_heap_table_size -1 -'#---------------------FN_DYNVARS_077_11----------------------#' -SET max_heap_table_size = 316777216; -SELECT @@max_heap_table_size; -@@max_heap_table_size -316776448 -SELECT local.max_heap_table_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.max_heap_table_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT max_heap_table_size = @@session.max_heap_table_size; -ERROR 42S22: Unknown column 'max_heap_table_size' in 'field list' -SET @@global.max_heap_table_size = @start_global_value; -SELECT @@global.max_heap_table_size; -@@global.max_heap_table_size -1048576 -SET @@session.max_heap_table_size = @start_session_value; -SELECT @@session.max_heap_table_size; -@@session.max_heap_table_size -1048576 diff --git a/mysql-test/r/max_seeks_for_key_basic_64.result b/mysql-test/r/max_seeks_for_key_basic_64.result deleted file mode 100644 index eefb829cdae..00000000000 --- a/mysql-test/r/max_seeks_for_key_basic_64.result +++ /dev/null @@ -1,176 +0,0 @@ -SET @start_global_value = @@global.max_seeks_for_key; -SELECT @start_global_value; -@start_global_value -18446744073709551615 -SET @start_session_value = @@session.max_seeks_for_key; -SELECT @start_session_value; -@start_session_value -18446744073709551615 -'#--------------------FN_DYNVARS_083_01-------------------------#' -SET @@global.max_seeks_for_key = 100; -SET @@global.max_seeks_for_key = DEFAULT; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -18446744073709551615 -SET @@session.max_seeks_for_key = 200; -SET @@session.max_seeks_for_key = DEFAULT; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -18446744073709551615 -'#--------------------FN_DYNVARS_083_02-------------------------#' -SET @@global.max_seeks_for_key = DEFAULT; -SELECT @@global.max_seeks_for_key = 4294967295; -@@global.max_seeks_for_key = 4294967295 -0 -SET @@session.max_seeks_for_key = DEFAULT; -SELECT @@session.max_seeks_for_key = 4294967295; -@@session.max_seeks_for_key = 4294967295 -0 -'#--------------------FN_DYNVARS_083_03-------------------------#' -SET @@global.max_seeks_for_key = 1; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = 2; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -2 -SET @@global.max_seeks_for_key = 65536; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -65536 -SET @@global.max_seeks_for_key = 4294967295; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967295 -SET @@global.max_seeks_for_key = 4294967294; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967294 -'#--------------------FN_DYNVARS_083_04-------------------------#' -SET @@session.max_seeks_for_key = 1; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -1 -SET @@session.max_seeks_for_key = 2; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -2 -SET @@session.max_seeks_for_key = 4294967295; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967295 -SET @@session.max_seeks_for_key = 4294967294; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967294 -SET @@session.max_seeks_for_key = 65535; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -65535 -'#------------------FN_DYNVARS_083_05-----------------------#' -SET @@global.max_seeks_for_key = 0; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = -1024; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = 4294967296; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967296 -SET @@global.max_seeks_for_key = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967296 -SET @@global.max_seeks_for_key = test; -ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -4294967296 -SET @@session.max_seeks_for_key = 0; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -1 -SET @@session.max_seeks_for_key = -2; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -1 -SET @@session.max_seeks_for_key = 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.max_seeks_for_key = 4294967296; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967296 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.max_seeks_for_key = test; -ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -4294967296 -'#------------------FN_DYNVARS_083_06-----------------------#' -SELECT @@global.max_seeks_for_key = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_seeks_for_key'; -@@global.max_seeks_for_key = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_083_07-----------------------#' -SELECT @@session.max_seeks_for_key = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_seeks_for_key'; -@@session.max_seeks_for_key = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_083_08-----------------------#' -SET @@global.max_seeks_for_key = TRUE; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -SET @@global.max_seeks_for_key = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_seeks_for_key value: '0' -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -1 -'#---------------------FN_DYNVARS_083_09----------------------#' -SET @@global.max_seeks_for_key = 10; -SELECT @@max_seeks_for_key = @@global.max_seeks_for_key; -@@max_seeks_for_key = @@global.max_seeks_for_key -0 -'#---------------------FN_DYNVARS_083_10----------------------#' -SET @@max_seeks_for_key = 100; -SELECT @@max_seeks_for_key = @@local.max_seeks_for_key; -@@max_seeks_for_key = @@local.max_seeks_for_key -1 -SELECT @@local.max_seeks_for_key = @@session.max_seeks_for_key; -@@local.max_seeks_for_key = @@session.max_seeks_for_key -1 -'#---------------------FN_DYNVARS_083_11----------------------#' -SET max_seeks_for_key = 1; -SELECT @@max_seeks_for_key; -@@max_seeks_for_key -1 -SELECT local.max_seeks_for_key; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.max_seeks_for_key; -ERROR 42S02: Unknown table 'session' in field list -SELECT max_seeks_for_key = @@session.max_seeks_for_key; -ERROR 42S22: Unknown column 'max_seeks_for_key' in 'field list' -SET @@global.max_seeks_for_key = @start_global_value; -SELECT @@global.max_seeks_for_key; -@@global.max_seeks_for_key -18446744073709551615 -SET @@session.max_seeks_for_key = @start_session_value; -SELECT @@session.max_seeks_for_key; -@@session.max_seeks_for_key -18446744073709551615 diff --git a/mysql-test/r/max_tmp_tables_basic_64.result b/mysql-test/r/max_tmp_tables_basic_64.result deleted file mode 100644 index 4b9f68c509e..00000000000 --- a/mysql-test/r/max_tmp_tables_basic_64.result +++ /dev/null @@ -1,187 +0,0 @@ -SET @start_global_value = @@global.max_tmp_tables; -SELECT @start_global_value; -@start_global_value -32 -SET @start_session_value = @@session.max_tmp_tables; -SELECT @start_session_value; -@start_session_value -32 -'#--------------------FN_DYNVARS_086_01-------------------------#' -SET @@global.max_tmp_tables = 1000; -SET @@global.max_tmp_tables = DEFAULT; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -32 -SET @@session.max_tmp_tables = 1000; -SET @@session.max_tmp_tables = DEFAULT; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -32 -'#--------------------FN_DYNVARS_086_02-------------------------#' -SET @@global.max_tmp_tables = DEFAULT; -SELECT @@global.max_tmp_tables = 32; -@@global.max_tmp_tables = 32 -1 -SET @@session.max_tmp_tables = DEFAULT; -SELECT @@session.max_tmp_tables = 32; -@@session.max_tmp_tables = 32 -1 -'#--------------------FN_DYNVARS_086_03-------------------------#' -SET @@global.max_tmp_tables = 1; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = 2; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -2 -SET @@global.max_tmp_tables = 65536; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -65536 -SET @@global.max_tmp_tables = 4294967295; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967295 -SET @@global.max_tmp_tables = 4294967294; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967294 -'#--------------------FN_DYNVARS_086_04-------------------------#' -SET @@session.max_tmp_tables = 1; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -1 -SET @@session.max_tmp_tables = 2; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -2 -SET @@session.max_tmp_tables = 65536; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -65536 -SET @@session.max_tmp_tables = 4294967295; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967295 -SET @@session.max_tmp_tables = 4294967294; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967294 -'#------------------FN_DYNVARS_086_05-----------------------#' -SET @@global.max_tmp_tables = -1024; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = 4294967296; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -4294967296 -SET @@global.max_tmp_tables = -1; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = 429496729500; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -429496729500 -SET @@global.max_tmp_tables = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -429496729500 -SET @@global.max_tmp_tables = test; -ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -429496729500 -SET @@session.max_tmp_tables = 4294967296; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -4294967296 -SET @@session.max_tmp_tables = -1; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -1 -SET @@session.max_tmp_tables = 429496729500; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -429496729500 -SET @@session.max_tmp_tables = -001; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -1 -SET @@session.max_tmp_tables = 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.max_tmp_tables = 10737418241; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -10737418241 -SET @@session.max_tmp_tables = test; -ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -10737418241 -'#------------------FN_DYNVARS_086_06-----------------------#' -SELECT @@global.max_tmp_tables = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_tmp_tables'; -@@global.max_tmp_tables = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_086_07-----------------------#' -SELECT @@session.max_tmp_tables = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_tmp_tables'; -@@session.max_tmp_tables = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_086_08-----------------------#' -SET @@global.max_tmp_tables = TRUE; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -SET @@global.max_tmp_tables = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_tmp_tables value: '0' -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -1 -'#---------------------FN_DYNVARS_086_09----------------------#' -SET @@global.max_tmp_tables = 20; -SELECT @@max_tmp_tables = @@global.max_tmp_tables; -@@max_tmp_tables = @@global.max_tmp_tables -0 -'#---------------------FN_DYNVARS_086_10----------------------#' -SET @@max_tmp_tables = 255; -SELECT @@max_tmp_tables = @@local.max_tmp_tables; -@@max_tmp_tables = @@local.max_tmp_tables -1 -SELECT @@local.max_tmp_tables = @@session.max_tmp_tables; -@@local.max_tmp_tables = @@session.max_tmp_tables -1 -'#---------------------FN_DYNVARS_086_11----------------------#' -SET max_tmp_tables = 102; -SELECT @@max_tmp_tables; -@@max_tmp_tables -102 -SELECT local.max_tmp_tables; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.max_tmp_tables; -ERROR 42S02: Unknown table 'session' in field list -SELECT max_tmp_tables = @@session.max_tmp_tables; -ERROR 42S22: Unknown column 'max_tmp_tables' in 'field list' -SET @@global.max_tmp_tables = @start_global_value; -SELECT @@global.max_tmp_tables; -@@global.max_tmp_tables -32 -SET @@session.max_tmp_tables = @start_session_value; -SELECT @@session.max_tmp_tables; -@@session.max_tmp_tables -32 diff --git a/mysql-test/r/max_write_lock_count_basic_64.result b/mysql-test/r/max_write_lock_count_basic_64.result deleted file mode 100644 index d74586841dd..00000000000 --- a/mysql-test/r/max_write_lock_count_basic_64.result +++ /dev/null @@ -1,104 +0,0 @@ -SET @start_global_value = @@global.max_write_lock_count; -SELECT @start_global_value; -@start_global_value -18446744073709551615 -'#--------------------FN_DYNVARS_088_01-------------------------#' -SET @@global.max_write_lock_count = 1000; -SET @@global.max_write_lock_count = DEFAULT; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -18446744073709551615 -'#--------------------FN_DYNVARS_088_02-------------------------#' -SET @@global.max_write_lock_count = DEFAULT; -SELECT @@global.max_write_lock_count = 4294967295; -@@global.max_write_lock_count = 4294967295 -0 -'#--------------------FN_DYNVARS_088_03-------------------------#' -SET @@global.max_write_lock_count = 1; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = 2; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -2 -SET @@global.max_write_lock_count = 65536; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -65536 -SET @@global.max_write_lock_count = 4294967295; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967295 -SET @@global.max_write_lock_count = 4294967294; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967294 -'#------------------FN_DYNVARS_088_04-----------------------#' -SET @@global.max_write_lock_count = -1024; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '0' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = 4294967296; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -4294967296 -SET @@global.max_write_lock_count = -1; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '0' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = 429496729500; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -429496729500 -SET @@global.max_write_lock_count = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -429496729500 -SET @@global.max_write_lock_count = test; -ERROR 42000: Incorrect argument type to variable 'max_write_lock_count' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -429496729500 -'#------------------FN_DYNVARS_088_05-----------------------#' -SELECT @@global.max_write_lock_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_write_lock_count'; -@@global.max_write_lock_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_088_06-----------------------#' -SET @@global.max_write_lock_count = TRUE; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -SET @@global.max_write_lock_count = FALSE; -Warnings: -Warning 1292 Truncated incorrect max_write_lock_count value: '0' -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -1 -'#---------------------FN_DYNVARS_088_07----------------------#' -SET @@global.max_write_lock_count = 20; -SELECT @@max_write_lock_count = @@global.max_write_lock_count; -@@max_write_lock_count = @@global.max_write_lock_count -1 -'#---------------------FN_DYNVARS_088_08----------------------#' -SET @@global.max_write_lock_count = 102; -SELECT @@max_write_lock_count; -@@max_write_lock_count -102 -SELECT local.max_write_lock_count; -ERROR 42S02: Unknown table 'local' in field list -SELECT global.max_write_lock_count; -ERROR 42S02: Unknown table 'global' in field list -SELECT max_write_lock_count = @@global.max_write_lock_count; -ERROR 42S22: Unknown column 'max_write_lock_count' in 'field list' -SET @@global.max_write_lock_count = @start_global_value; -SELECT @@global.max_write_lock_count; -@@global.max_write_lock_count -18446744073709551615 diff --git a/mysql-test/r/min_examined_row_limit_basic_64.result b/mysql-test/r/min_examined_row_limit_basic_64.result deleted file mode 100644 index fa11659c6c5..00000000000 --- a/mysql-test/r/min_examined_row_limit_basic_64.result +++ /dev/null @@ -1,174 +0,0 @@ -SET @start_global_value = @@global.min_examined_row_limit; -SELECT @start_global_value; -@start_global_value -0 -SET @start_session_value = @@session.min_examined_row_limit; -SELECT @start_session_value; -@start_session_value -0 -'#--------------------FN_DYNVARS_089_01-------------------------#' -SET @@global.min_examined_row_limit = 100; -SET @@global.min_examined_row_limit = DEFAULT; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = 200; -SET @@session.min_examined_row_limit = DEFAULT; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 -'#--------------------FN_DYNVARS_089_02-------------------------#' -SET @@global.min_examined_row_limit = DEFAULT; -SELECT @@global.min_examined_row_limit = 0; -@@global.min_examined_row_limit = 0 -1 -SET @@session.min_examined_row_limit = DEFAULT; -SELECT @@session.min_examined_row_limit = 0; -@@session.min_examined_row_limit = 0 -1 -'#--------------------FN_DYNVARS_089_03-------------------------#' -SET @@global.min_examined_row_limit = 0; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@global.min_examined_row_limit = 1; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -1 -SET @@global.min_examined_row_limit = 60020; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -60020 -SET @@global.min_examined_row_limit = 65535; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -65535 -SET @@global.min_examined_row_limit = 4294967295; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967295 -SET @@global.min_examined_row_limit = 4294967294; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -4294967294 -'#--------------------FN_DYNVARS_089_04-------------------------#' -SET @@session.min_examined_row_limit = 0; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = 1; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -1 -SET @@session.min_examined_row_limit = 50050; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -50050 -SET @@session.min_examined_row_limit = 65535; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -65535 -SET @@session.min_examined_row_limit = 4294967295; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295 -SET @@session.min_examined_row_limit = 4294967294; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967294 -'#------------------FN_DYNVARS_089_05-----------------------#' -SET @@global.min_examined_row_limit = 429496726; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -429496726 -SET @@global.min_examined_row_limit = -1024; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@global.min_examined_row_limit = 429496729500; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -429496729500 -SET @@global.min_examined_row_limit = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -429496729500 -SET @@global.min_examined_row_limit = test; -ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -429496729500 -SET @@session.min_examined_row_limit = 4294967296; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967296 -SET @@session.min_examined_row_limit = -1; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = 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.min_examined_row_limit = 4294967295021; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295021 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.min_examined_row_limit = test; -ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -4294967295021 -'#------------------FN_DYNVARS_089_06-----------------------#' -SELECT @@global.min_examined_row_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='min_examined_row_limit'; -@@global.min_examined_row_limit = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_089_07-----------------------#' -SELECT @@session.min_examined_row_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='min_examined_row_limit'; -@@session.min_examined_row_limit = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_089_08-----------------------#' -SET @@global.min_examined_row_limit = TRUE; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -1 -SET @@global.min_examined_row_limit = FALSE; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -'#---------------------FN_DYNVARS_089_09----------------------#' -SET @@global.min_examined_row_limit = 10; -SELECT @@min_examined_row_limit = @@global.min_examined_row_limit; -@@min_examined_row_limit = @@global.min_examined_row_limit -0 -'#---------------------FN_DYNVARS_089_10----------------------#' -SET @@min_examined_row_limit = 100; -SELECT @@min_examined_row_limit = @@local.min_examined_row_limit; -@@min_examined_row_limit = @@local.min_examined_row_limit -1 -SELECT @@local.min_examined_row_limit = @@session.min_examined_row_limit; -@@local.min_examined_row_limit = @@session.min_examined_row_limit -1 -'#---------------------FN_DYNVARS_089_11----------------------#' -SET min_examined_row_limit = 1; -SELECT @@min_examined_row_limit; -@@min_examined_row_limit -1 -SELECT local.min_examined_row_limit; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.min_examined_row_limit; -ERROR 42S02: Unknown table 'session' in field list -SELECT min_examined_row_limit = @@session.min_examined_row_limit; -ERROR 42S22: Unknown column 'min_examined_row_limit' in 'field list' -SET @@global.min_examined_row_limit = @start_global_value; -SELECT @@global.min_examined_row_limit; -@@global.min_examined_row_limit -0 -SET @@session.min_examined_row_limit = @start_session_value; -SELECT @@session.min_examined_row_limit; -@@session.min_examined_row_limit -0 diff --git a/mysql-test/r/multi_range_count_basic_64.result b/mysql-test/r/multi_range_count_basic_64.result deleted file mode 100644 index f2115aec2e2..00000000000 --- a/mysql-test/r/multi_range_count_basic_64.result +++ /dev/null @@ -1,184 +0,0 @@ -SET @start_global_value = @@global.multi_range_count; -SELECT @start_global_value; -@start_global_value -256 -SET @start_session_value = @@session.multi_range_count; -SELECT @start_session_value; -@start_session_value -256 -'#--------------------FN_DYNVARS_090_01-------------------------#' -SET @@global.multi_range_count = 100; -SET @@global.multi_range_count = DEFAULT; -SELECT @@global.multi_range_count; -@@global.multi_range_count -256 -SET @@session.multi_range_count = 200; -SET @@session.multi_range_count = DEFAULT; -SELECT @@session.multi_range_count; -@@session.multi_range_count -256 -'#--------------------FN_DYNVARS_090_02-------------------------#' -SET @@global.multi_range_count = DEFAULT; -SELECT @@global.multi_range_count = 256; -@@global.multi_range_count = 256 -1 -SET @@session.multi_range_count = DEFAULT; -SELECT @@session.multi_range_count = 256; -@@session.multi_range_count = 256 -1 -'#--------------------FN_DYNVARS_090_03-------------------------#' -SET @@global.multi_range_count = 1; -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = 60020; -SELECT @@global.multi_range_count; -@@global.multi_range_count -60020 -SET @@global.multi_range_count = 65535; -SELECT @@global.multi_range_count; -@@global.multi_range_count -65535 -SET @@global.multi_range_count = 4294967295; -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967295 -SET @@global.multi_range_count = 4294967294; -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967294 -'#--------------------FN_DYNVARS_090_04-------------------------#' -SET @@session.multi_range_count = 1; -SELECT @@session.multi_range_count; -@@session.multi_range_count -1 -SET @@session.multi_range_count = 50050; -SELECT @@session.multi_range_count; -@@session.multi_range_count -50050 -SET @@session.multi_range_count = 65535; -SELECT @@session.multi_range_count; -@@session.multi_range_count -65535 -SET @@session.multi_range_count = 4294967295; -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295 -SET @@session.multi_range_count = 4294967294; -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967294 -'#------------------FN_DYNVARS_090_05-----------------------#' -SET @@global.multi_range_count = 0; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = 4294967296; -SELECT @@global.multi_range_count; -@@global.multi_range_count -4294967296 -SET @@global.multi_range_count = -1024; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = 429496729500; -SELECT @@global.multi_range_count; -@@global.multi_range_count -429496729500 -SET @@global.multi_range_count = 65530.34; -ERROR 42000: Incorrect argument type to variable 'multi_range_count' -SELECT @@global.multi_range_count; -@@global.multi_range_count -429496729500 -SET @@global.multi_range_count = test; -ERROR 42000: Incorrect argument type to variable 'multi_range_count' -SELECT @@global.multi_range_count; -@@global.multi_range_count -429496729500 -SET @@session.multi_range_count = 0; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@session.multi_range_count; -@@session.multi_range_count -1 -SET @@session.multi_range_count = 4294967296; -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967296 -SET @@session.multi_range_count = -1; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@session.multi_range_count; -@@session.multi_range_count -1 -SET @@session.multi_range_count = 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.multi_range_count = 4294967295021; -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295021 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.multi_range_count = test; -ERROR 42000: Incorrect argument type to variable 'multi_range_count' -SELECT @@session.multi_range_count; -@@session.multi_range_count -4294967295021 -'#------------------FN_DYNVARS_090_06-----------------------#' -SELECT @@global.multi_range_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='multi_range_count'; -@@global.multi_range_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_090_07-----------------------#' -SELECT @@session.multi_range_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='multi_range_count'; -@@session.multi_range_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_090_08-----------------------#' -SET @@global.multi_range_count = TRUE; -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -SET @@global.multi_range_count = FALSE; -Warnings: -Warning 1292 Truncated incorrect multi_range_count value: '0' -SELECT @@global.multi_range_count; -@@global.multi_range_count -1 -'#---------------------FN_DYNVARS_090_09----------------------#' -SET @@global.multi_range_count = 10; -SELECT @@multi_range_count = @@global.multi_range_count; -@@multi_range_count = @@global.multi_range_count -0 -'#---------------------FN_DYNVARS_090_10----------------------#' -SET @@multi_range_count = 100; -SELECT @@multi_range_count = @@local.multi_range_count; -@@multi_range_count = @@local.multi_range_count -1 -SELECT @@local.multi_range_count = @@session.multi_range_count; -@@local.multi_range_count = @@session.multi_range_count -1 -'#---------------------FN_DYNVARS_090_11----------------------#' -SET multi_range_count = 1; -SELECT @@multi_range_count; -@@multi_range_count -1 -SELECT local.multi_range_count; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.multi_range_count; -ERROR 42S02: Unknown table 'session' in field list -SELECT multi_range_count = @@session.multi_range_count; -ERROR 42S22: Unknown column 'multi_range_count' in 'field list' -SET @@global.multi_range_count = @start_global_value; -SELECT @@global.multi_range_count; -@@global.multi_range_count -256 -SET @@session.multi_range_count = @start_session_value; -SELECT @@session.multi_range_count; -@@session.multi_range_count -256 diff --git a/mysql-test/r/myisam_max_sort_file_size_basic_64.result b/mysql-test/r/myisam_max_sort_file_size_basic_64.result deleted file mode 100644 index 00ff1dfc1ab..00000000000 --- a/mysql-test/r/myisam_max_sort_file_size_basic_64.result +++ /dev/null @@ -1,114 +0,0 @@ -SET @start_global_value = @@global.myisam_max_sort_file_size; -SELECT @start_global_value; -@start_global_value -9223372036854775807 -'#--------------------FN_DYNVARS_094_01-------------------------#' -SET @@global.myisam_max_sort_file_size = 500000; -SET @@global.myisam_max_sort_file_size = DEFAULT; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -9223372036853727232 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#--------------------FN_DYNVARS_094_02-------------------------#' -SET @@global.myisam_max_sort_file_size = DEFAULT; -SELECT @@global.myisam_max_sort_file_size = 2147483648; -@@global.myisam_max_sort_file_size = 2147483648 -0 -'#--------------------FN_DYNVARS_094_03-------------------------#' -SET @@global.myisam_max_sort_file_size = 0; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 1024; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 123456789; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -122683392 -SET @@global.myisam_max_sort_file_size = 2147483648*2; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -4294967296 -SET @@global.myisam_max_sort_file_size = 2147483648*1024; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -2199023255552 -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -2199023255552 -SET @@global.myisam_max_sort_file_size = 2147483648*2147483648; -'#--------------------FN_DYNVARS_094_04-------------------------#' -SET @@myisam_max_sort_file_size = 2; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.myisam_max_sort_file_size = 3; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.myisam_max_sort_file_size = 4; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_094_05-----------------------#' -SET @@global.myisam_max_sort_file_size = -1; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = -2147483648; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = -2147483649; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 2147483649.56; -ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = 1G; -ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -'#------------------FN_DYNVARS_094_06-----------------------#' -SET @@global.myisam_max_sort_file_size = 3000; -SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_max_sort_file_size'; -@@global.myisam_max_sort_file_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_094_07-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_max_sort_file_size'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_094_08-----------------------#' -SET @@global.myisam_max_sort_file_size = TRUE; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -SET @@global.myisam_max_sort_file_size = FALSE; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -0 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.myisam_max_sort_file_size = 512; -SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size; -@@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET myisam_max_sort_file_size = 2048; -ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT myisam_max_sort_file_size; -ERROR 42S22: Unknown column 'myisam_max_sort_file_size' in 'field list' -SELECT @@myisam_max_sort_file_size; -@@myisam_max_sort_file_size -0 -SET global myisam_max_sort_file_size = 64; -SET @@global.myisam_max_sort_file_size = @start_global_value; -SELECT @@global.myisam_max_sort_file_size; -@@global.myisam_max_sort_file_size -9223372036853727232 diff --git a/mysql-test/r/myisam_repair_threads_basic_64.result b/mysql-test/r/myisam_repair_threads_basic_64.result deleted file mode 100644 index 8271451cc9e..00000000000 --- a/mysql-test/r/myisam_repair_threads_basic_64.result +++ /dev/null @@ -1,178 +0,0 @@ -SET @start_global_value = @@global.myisam_repair_threads; -SELECT @start_global_value; -@start_global_value -1 -SET @start_session_value = @@session.myisam_repair_threads; -SELECT @start_session_value; -@start_session_value -1 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.myisam_repair_threads = 100; -SET @@global.myisam_repair_threads = DEFAULT; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = 200; -SET @@session.myisam_repair_threads = DEFAULT; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.myisam_repair_threads = DEFAULT; -SELECT @@global.myisam_repair_threads = 1; -@@global.myisam_repair_threads = 1 -1 -SET @@session.myisam_repair_threads = DEFAULT; -SELECT @@session.myisam_repair_threads = 1; -@@session.myisam_repair_threads = 1 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.myisam_repair_threads = 1; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = 4294967295; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -4294967295 -SET @@global.myisam_repair_threads = 655354; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -655354 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.myisam_repair_threads = 1; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = 4294967295; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -4294967295 -SET @@session.myisam_repair_threads = 655345; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -655345 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.myisam_repair_threads = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = -1024; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = 429496729533; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -429496729533 -SET @@global.myisam_repair_threads = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -429496729533 -SET @@global.myisam_repair_threads = test; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -429496729533 -SET @@global.myisam_repair_threads = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -429496729533 -SET @@global.myisam_repair_threads = 'test'; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -429496729533 -SET @@global.myisam_repair_threads = ON; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -429496729533 -SET @@session.myisam_repair_threads = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = -2; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = test; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.myisam_repair_threads = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_repair_threads '; -@@global.myisam_repair_threads = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.myisam_repair_threads = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_repair_threads '; -@@session.myisam_repair_threads = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_08-----------------------#' -SET @@global.myisam_repair_threads = TRUE; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@global.myisam_repair_threads = FALSE; -Warnings: -Warning 1292 Truncated incorrect myisam_repair_threads value: '0' -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.myisam_repair_threads = 10; -SELECT @@myisam_repair_threads = @@global.myisam_repair_threads ; -@@myisam_repair_threads = @@global.myisam_repair_threads -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@myisam_repair_threads = 100; -SELECT @@myisam_repair_threads = @@local.myisam_repair_threads ; -@@myisam_repair_threads = @@local.myisam_repair_threads -1 -SELECT @@local.myisam_repair_threads = @@session.myisam_repair_threads ; -@@local.myisam_repair_threads = @@session.myisam_repair_threads -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET myisam_repair_threads = 1; -SELECT @@myisam_repair_threads ; -@@myisam_repair_threads -1 -SELECT local.myisam_repair_threads ; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.myisam_repair_threads ; -ERROR 42S02: Unknown table 'session' in field list -SELECT myisam_repair_threads = @@session.myisam_repair_threads ; -ERROR 42S22: Unknown column 'myisam_repair_threads' in 'field list' -SET @@global.myisam_repair_threads = @start_global_value; -SELECT @@global.myisam_repair_threads ; -@@global.myisam_repair_threads -1 -SET @@session.myisam_repair_threads = @start_session_value; -SELECT @@session.myisam_repair_threads ; -@@session.myisam_repair_threads -1 diff --git a/mysql-test/r/myisam_sort_buffer_size_basic_64.result b/mysql-test/r/myisam_sort_buffer_size_basic_64.result deleted file mode 100644 index bfcada76a46..00000000000 --- a/mysql-test/r/myisam_sort_buffer_size_basic_64.result +++ /dev/null @@ -1,182 +0,0 @@ -SET @start_global_value = @@global.myisam_sort_buffer_size ; -SELECT @start_global_value; -@start_global_value -8388608 -SET @start_session_value = @@session.myisam_sort_buffer_size ; -SELECT @start_session_value; -@start_session_value -8388608 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.myisam_sort_buffer_size = 100; -SET @@global.myisam_sort_buffer_size = DEFAULT; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -8388608 -SET @@session.myisam_sort_buffer_size = 200; -SET @@session.myisam_sort_buffer_size = DEFAULT; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -8388608 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.myisam_sort_buffer_size = DEFAULT; -SELECT @@global.myisam_sort_buffer_size = 8388608; -@@global.myisam_sort_buffer_size = 8388608 -1 -SET @@session.myisam_sort_buffer_size = DEFAULT; -SELECT @@session.myisam_sort_buffer_size = 8388608; -@@session.myisam_sort_buffer_size = 8388608 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.myisam_sort_buffer_size = 4; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = 4294967295; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4294967295 -SET @@global.myisam_sort_buffer_size = 655354; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -655354 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.myisam_sort_buffer_size = 4; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = 4294967295; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4294967295 -SET @@session.myisam_sort_buffer_size = 655345; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -655345 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.myisam_sort_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = -1024; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = 429496729533; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -429496729533 -SET @@global.myisam_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 -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -429496729533 -SET @@global.myisam_sort_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -429496729533 -SET @@global.myisam_sort_buffer_size = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -429496729533 -SET @@global.myisam_sort_buffer_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -429496729533 -SET @@global.myisam_sort_buffer_size = ON; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -429496729533 -SET @@session.myisam_sort_buffer_size = 0; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = -2; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_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 -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -SET @@session.myisam_sort_buffer_size = "test"; -ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -4 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_sort_buffer_size '; -@@global.myisam_sort_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_sort_buffer_size '; -@@session.myisam_sort_buffer_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_08-----------------------#' -SET @@global.myisam_sort_buffer_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -SET @@global.myisam_sort_buffer_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -4 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.myisam_sort_buffer_size = 10; -SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; -@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@myisam_sort_buffer_size = 100; -SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; -@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size -1 -SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; -@@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET myisam_sort_buffer_size = 1; -Warnings: -Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' -SELECT @@myisam_sort_buffer_size ; -@@myisam_sort_buffer_size -4 -SELECT local.myisam_sort_buffer_size ; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.myisam_sort_buffer_size ; -ERROR 42S02: Unknown table 'session' in field list -SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; -ERROR 42S22: Unknown column 'myisam_sort_buffer_size' in 'field list' -SET @@global.myisam_sort_buffer_size = @start_global_value; -SELECT @@global.myisam_sort_buffer_size ; -@@global.myisam_sort_buffer_size -8388608 -SET @@session.myisam_sort_buffer_size = @start_session_value; -SELECT @@session.myisam_sort_buffer_size ; -@@session.myisam_sort_buffer_size -8388608 diff --git a/mysql-test/r/net_retry_count_basic_64.result b/mysql-test/r/net_retry_count_basic_64.result deleted file mode 100644 index db133d23f79..00000000000 --- a/mysql-test/r/net_retry_count_basic_64.result +++ /dev/null @@ -1,184 +0,0 @@ -SET @start_global_value = @@global.net_retry_count; -SELECT @start_global_value; -@start_global_value -10 -SET @start_session_value = @@session.net_retry_count; -SELECT @start_session_value; -@start_session_value -10 -'#--------------------FN_DYNVARS_111_01-------------------------#' -SET @@global.net_retry_count = 100; -SET @@global.net_retry_count = DEFAULT; -SELECT @@global.net_retry_count; -@@global.net_retry_count -10 -SET @@session.net_retry_count = 200; -SET @@session.net_retry_count = DEFAULT; -SELECT @@session.net_retry_count; -@@session.net_retry_count -10 -'#--------------------FN_DYNVARS_111_02-------------------------#' -SET @@global.net_retry_count = DEFAULT; -SELECT @@global.net_retry_count = 10; -@@global.net_retry_count = 10 -1 -SET @@session.net_retry_count = DEFAULT; -SELECT @@session.net_retry_count = 10; -@@session.net_retry_count = 10 -1 -'#--------------------FN_DYNVARS_111_03-------------------------#' -SET @@global.net_retry_count = 1; -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = 2; -SELECT @@global.net_retry_count; -@@global.net_retry_count -2 -SET @@global.net_retry_count = 4294967295; -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967295 -SET @@global.net_retry_count = 4294967294; -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967294 -SET @@global.net_retry_count = 65536; -SELECT @@global.net_retry_count; -@@global.net_retry_count -65536 -'#--------------------FN_DYNVARS_111_04-------------------------#' -SET @@session.net_retry_count = 1; -SELECT @@session.net_retry_count; -@@session.net_retry_count -1 -SET @@session.net_retry_count = 2; -SELECT @@session.net_retry_count; -@@session.net_retry_count -2 -SET @@session.net_retry_count = 65535; -SELECT @@session.net_retry_count; -@@session.net_retry_count -65535 -SET @@session.net_retry_count = 4294967295; -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967295 -SET @@session.net_retry_count = 4294967294; -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967294 -'#------------------FN_DYNVARS_111_05-----------------------#' -SET @@global.net_retry_count = 0; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = -1024; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = 4294967296; -SELECT @@global.net_retry_count; -@@global.net_retry_count -4294967296 -SET @@global.net_retry_count = 429496729500; -SELECT @@global.net_retry_count; -@@global.net_retry_count -429496729500 -SET @@global.net_retry_count = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.net_retry_count; -@@global.net_retry_count -429496729500 -SET @@global.net_retry_count = test; -ERROR 42000: Incorrect argument type to variable 'net_retry_count' -SELECT @@global.net_retry_count; -@@global.net_retry_count -429496729500 -SET @@session.net_retry_count = 0; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@session.net_retry_count; -@@session.net_retry_count -1 -SET @@session.net_retry_count = -2; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@session.net_retry_count; -@@session.net_retry_count -1 -SET @@session.net_retry_count = 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.net_retry_count = 6555015425; -SELECT @@session.net_retry_count; -@@session.net_retry_count -6555015425 -SET @@session.net_retry_count = 4294967296; -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967296 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.net_retry_count = test; -ERROR 42000: Incorrect argument type to variable 'net_retry_count' -SELECT @@session.net_retry_count; -@@session.net_retry_count -4294967296 -'#------------------FN_DYNVARS_111_06-----------------------#' -SELECT @@global.net_retry_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='net_retry_count'; -@@global.net_retry_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_111_07-----------------------#' -SELECT @@session.net_retry_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='net_retry_count'; -@@session.net_retry_count = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_111_08-----------------------#' -SET @@global.net_retry_count = TRUE; -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -SET @@global.net_retry_count = FALSE; -Warnings: -Warning 1292 Truncated incorrect net_retry_count value: '0' -SELECT @@global.net_retry_count; -@@global.net_retry_count -1 -'#---------------------FN_DYNVARS_111_09----------------------#' -SET @@global.net_retry_count = 10; -SELECT @@net_retry_count = @@global.net_retry_count; -@@net_retry_count = @@global.net_retry_count -0 -'#---------------------FN_DYNVARS_111_10----------------------#' -SET @@net_retry_count = 100; -SELECT @@net_retry_count = @@local.net_retry_count; -@@net_retry_count = @@local.net_retry_count -1 -SELECT @@local.net_retry_count = @@session.net_retry_count; -@@local.net_retry_count = @@session.net_retry_count -1 -'#---------------------FN_DYNVARS_111_11----------------------#' -SET net_retry_count = 1; -SELECT @@net_retry_count; -@@net_retry_count -1 -SELECT local.net_retry_count; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.net_retry_count; -ERROR 42S02: Unknown table 'session' in field list -SELECT net_retry_count = @@session.net_retry_count; -ERROR 42S22: Unknown column 'net_retry_count' in 'field list' -SET @@global.net_retry_count = @start_global_value; -SELECT @@global.net_retry_count; -@@global.net_retry_count -10 -SET @@session.net_retry_count = @start_session_value; -SELECT @@session.net_retry_count; -@@session.net_retry_count -10 diff --git a/mysql-test/r/query_alloc_block_size_basic_64.result b/mysql-test/r/query_alloc_block_size_basic_64.result deleted file mode 100644 index 57c96a8168a..00000000000 --- a/mysql-test/r/query_alloc_block_size_basic_64.result +++ /dev/null @@ -1,199 +0,0 @@ -SET @start_global_value = @@global.query_alloc_block_size; -SELECT @start_global_value; -@start_global_value -8192 -SET @start_session_value = @@session.query_alloc_block_size; -SELECT @start_session_value; -@start_session_value -8192 -'#--------------------FN_DYNVARS_130_01-------------------------#' -SET @@global.query_alloc_block_size = 10000; -SET @@global.query_alloc_block_size = DEFAULT; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -8192 -SET @@session.query_alloc_block_size = 20000; -SET @@session.query_alloc_block_size = DEFAULT; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -8192 -'#--------------------FN_DYNVARS_130_02-------------------------#' -SET @@global.query_alloc_block_size = DEFAULT; -SELECT @@global.query_alloc_block_size = 8192; -@@global.query_alloc_block_size = 8192 -1 -SET @@session.query_alloc_block_size = DEFAULT; -SELECT @@session.query_alloc_block_size = 8192; -@@session.query_alloc_block_size = 8192 -1 -'#--------------------FN_DYNVARS_130_03-------------------------#' -SET @@global.query_alloc_block_size = 1024; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 1025; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 4294967295; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@global.query_alloc_block_size = 4294967294; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294966272 -SET @@global.query_alloc_block_size = 65536; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -65536 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_130_04-------------------------#' -SET @@session.query_alloc_block_size = 1024; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = 1025; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = 4294967295; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294966272 -SET @@session.query_alloc_block_size = 4294967294; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294966272 -SET @@session.query_alloc_block_size = 655536; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -655360 -'#------------------FN_DYNVARS_130_05-----------------------#' -SET @@global.query_alloc_block_size = 64; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '64' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = -1; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '0' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 1023; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = 4294967296; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294967296 -SET @@global.query_alloc_block_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294967296 -SET @@global.query_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -4294967296 -SET @@session.query_alloc_block_size = 64; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '64' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = -2; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '0' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_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.query_alloc_block_size = 1023; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -1024 -SET @@session.query_alloc_block_size = 4294967296; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294967296 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.query_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -4294967296 -'#------------------FN_DYNVARS_130_06-----------------------#' -'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement'; -SET @@global.query_alloc_block_size = 1; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1' -SET @@session.query_alloc_block_size = 12; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '12' -SELECT @@global.query_alloc_block_size = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_alloc_block_size'; -@@global.query_alloc_block_size = -VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_130_07-----------------------#' -SELECT @@session.query_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_alloc_block_size'; -@@session.query_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_130_08-----------------------#' -SET @@global.query_alloc_block_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '1' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -SET @@global.query_alloc_block_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect query_alloc_block_size value: '0' -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -1024 -'#---------------------FN_DYNVARS_130_09----------------------#' -SET @@global.query_alloc_block_size = 2048; -SELECT @@query_alloc_block_size = @@global.query_alloc_block_size; -@@query_alloc_block_size = @@global.query_alloc_block_size -0 -'#---------------------FN_DYNVARS_130_10----------------------#' -SET @@query_alloc_block_size = 5000; -SELECT @@query_alloc_block_size = @@local.query_alloc_block_size; -@@query_alloc_block_size = @@local.query_alloc_block_size -1 -SELECT @@local.query_alloc_block_size = @@session.query_alloc_block_size; -@@local.query_alloc_block_size = @@session.query_alloc_block_size -1 -'#---------------------FN_DYNVARS_130_11----------------------#' -SET query_alloc_block_size = 1024; -SELECT @@query_alloc_block_size; -@@query_alloc_block_size -1024 -SELECT local.query_alloc_block_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.query_alloc_block_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT query_alloc_block_size = @@session.query_alloc_block_size; -ERROR 42S22: Unknown column 'query_alloc_block_size' in 'field list' -SET @@global.query_alloc_block_size = @start_global_value; -SELECT @@global.query_alloc_block_size; -@@global.query_alloc_block_size -8192 -SET @@session.query_alloc_block_size = @start_session_value; -SELECT @@session.query_alloc_block_size; -@@session.query_alloc_block_size -8192 diff --git a/mysql-test/r/query_cache_limit_basic_64.result b/mysql-test/r/query_cache_limit_basic_64.result deleted file mode 100644 index a592883ef91..00000000000 --- a/mysql-test/r/query_cache_limit_basic_64.result +++ /dev/null @@ -1,120 +0,0 @@ -SET @start_value = @@global.query_cache_limit; -SELECT @start_value; -@start_value -1048576 -'#--------------------FN_DYNVARS_131_01------------------------#' -SET @@global.query_cache_limit = 99; -SET @@global.query_cache_limit = DEFAULT; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048576 -'#---------------------FN_DYNVARS_131_02-------------------------#' -SET @@global.query_cache_limit = @start_value; -SELECT @@global.query_cache_limit = 1048576; -@@global.query_cache_limit = 1048576 -1 -'#--------------------FN_DYNVARS_131_03------------------------#' -SET @@global.query_cache_limit = 0; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -SET @@global.query_cache_limit = 1; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1 -SET @@global.query_cache_limit = 1048576; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048576 -SET @@global.query_cache_limit = 1048575; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048575 -'#--------------------FN_DYNVARS_131_04-------------------------#' -SET @@global.query_cache_limit = -1; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -SET @@global.query_cache_limit = 4294967296; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -4294967296 -SET @@global.query_cache_limit = 10240022115; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -10240022115 -SET @@global.query_cache_limit = 10000.01; -ERROR 42000: Incorrect argument type to variable 'query_cache_limit' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -10240022115 -SET @@global.query_cache_limit = -1024; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -SET @@global.query_cache_limit = 42949672950; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -42949672950 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.query_cache_limit = ON; -ERROR 42000: Incorrect argument type to variable 'query_cache_limit' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -42949672950 -SET @@global.query_cache_limit = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_cache_limit' -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -42949672950 -'#-------------------FN_DYNVARS_131_05----------------------------#' -SET @@session.query_cache_limit = 0; -ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_limit; -@@query_cache_limit -42949672950 -'#----------------------FN_DYNVARS_131_06------------------------#' -SELECT @@global.query_cache_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_limit'; -@@global.query_cache_limit = VARIABLE_VALUE -1 -SELECT @@query_cache_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_limit'; -@@query_cache_limit = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_131_07----------------------#' -SET @@global.query_cache_limit = TRUE; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1 -SET @@global.query_cache_limit = FALSE; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -0 -'#---------------------FN_DYNVARS_131_08----------------------#' -SET @@global.query_cache_limit = 1; -SELECT @@query_cache_limit = @@global.query_cache_limit; -@@query_cache_limit = @@global.query_cache_limit -1 -'#---------------------FN_DYNVARS_131_09----------------------#' -SET query_cache_limit = 1; -ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_limit; -@@query_cache_limit -1 -SET local.query_cache_limit = 1; -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 'query_cache_limit = 1' at line 1 -SELECT local.query_cache_limit; -ERROR 42S02: Unknown table 'local' in field list -SET global.query_cache_limit = 1; -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 'query_cache_limit = 1' at line 1 -SELECT global.query_cache_limit; -ERROR 42S02: Unknown table 'global' in field list -SELECT query_cache_limit = @@session.query_cache_limit; -ERROR 42S22: Unknown column 'query_cache_limit' in 'field list' -SET @@global.query_cache_limit = @start_value; -SELECT @@global.query_cache_limit; -@@global.query_cache_limit -1048576 diff --git a/mysql-test/r/query_cache_min_res_unit_basic_64.result b/mysql-test/r/query_cache_min_res_unit_basic_64.result deleted file mode 100644 index e1c74d2bbc1..00000000000 --- a/mysql-test/r/query_cache_min_res_unit_basic_64.result +++ /dev/null @@ -1,130 +0,0 @@ -SET @start_value = @@global.query_cache_min_res_unit; -SELECT @start_value; -@start_value -4096 -'#--------------------FN_DYNVARS_132_01------------------------#' -SET @@global.query_cache_min_res_unit = 99; -SET @@global.query_cache_min_res_unit = DEFAULT; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -4096 -'#---------------------FN_DYNVARS_132_02-------------------------#' -SET @@global.query_cache_min_res_unit = @start_value; -SELECT @@global.query_cache_min_res_unit = 4096; -@@global.query_cache_min_res_unit = 4096 -1 -'#--------------------FN_DYNVARS_132_03------------------------#' -SET @@global.query_cache_min_res_unit = 0; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 1; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512'; -SET @@global.query_cache_min_res_unit = 512; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 513; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -520 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.query_cache_min_res_unit = 1048576; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -1048576 -SET @@global.query_cache_min_res_unit = 1048575; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -1048576 -'#--------------------FN_DYNVARS_132_04-------------------------#' -SET @@global.query_cache_min_res_unit = -1; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 4294967296; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -4294967296 -SET @@global.query_cache_min_res_unit = 511; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 10000.01; -ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = -1024; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = 42949672950; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -42949672952 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.query_cache_min_res_unit = ON; -ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -42949672952 -SET @@global.query_cache_min_res_unit = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -42949672952 -'#-------------------FN_DYNVARS_132_05----------------------------#' -SET @@session.query_cache_min_res_unit = 0; -ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_min_res_unit; -@@query_cache_min_res_unit -42949672952 -'#----------------------FN_DYNVARS_132_06------------------------#' -SELECT @@global.query_cache_min_res_unit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_min_res_unit'; -@@global.query_cache_min_res_unit = VARIABLE_VALUE -1 -SELECT @@query_cache_min_res_unit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_min_res_unit'; -@@query_cache_min_res_unit = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_132_07----------------------#' -SET @@global.query_cache_min_res_unit = TRUE; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -SET @@global.query_cache_min_res_unit = FALSE; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -512 -'#---------------------FN_DYNVARS_132_08----------------------#' -SET @@global.query_cache_min_res_unit = 1; -SELECT @@query_cache_min_res_unit = @@global.query_cache_min_res_unit; -@@query_cache_min_res_unit = @@global.query_cache_min_res_unit -1 -'#---------------------FN_DYNVARS_132_09----------------------#' -SET query_cache_min_res_unit = 1; -ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_min_res_unit; -@@query_cache_min_res_unit -512 -SET local.query_cache_min_res_unit = 1; -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 'query_cache_min_res_unit = 1' at line 1 -SELECT local.query_cache_min_res_unit; -ERROR 42S02: Unknown table 'local' in field list -SET global.query_cache_min_res_unit = 1; -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 'query_cache_min_res_unit = 1' at line 1 -SELECT global.query_cache_min_res_unit; -ERROR 42S02: Unknown table 'global' in field list -SELECT query_cache_min_res_unit = @@session.query_cache_min_res_unit; -ERROR 42S22: Unknown column 'query_cache_min_res_unit' in 'field list' -SET @@global.query_cache_min_res_unit = @start_value; -SELECT @@global.query_cache_min_res_unit; -@@global.query_cache_min_res_unit -4096 diff --git a/mysql-test/r/query_cache_size_basic_64.result b/mysql-test/r/query_cache_size_basic_64.result deleted file mode 100644 index 0d67eec1ccc..00000000000 --- a/mysql-test/r/query_cache_size_basic_64.result +++ /dev/null @@ -1,134 +0,0 @@ -SET @start_value = @@global.query_cache_size; -SELECT @start_value; -@start_value -0 -'#--------------------FN_DYNVARS_133_01------------------------#' -SET @@global.query_cache_size = 99; -SET @@global.query_cache_size = DEFAULT; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'#---------------------FN_DYNVARS_133_02-------------------------#' -SET @@global.query_cache_size = @start_value; -SELECT @@global.query_cache_size = 0; -@@global.query_cache_size = 0 -1 -'#--------------------FN_DYNVARS_133_03------------------------#' -SET @@global.query_cache_size = 0; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 1; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 512; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 1024; -Warnings: -Warning 1282 Query cache failed to set size 1024; new query cache size is 0 -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -: 'Bug#34880: Warnings are coming on assinging valid values to variable -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.query_cache_size = 1048576; -SELECT @@global.query_cache_size; -@@global.query_cache_size -1048576 -SET @@global.query_cache_size = 1048575; -SELECT @@global.query_cache_size; -@@global.query_cache_size -1047552 -'#--------------------FN_DYNVARS_133_04-------------------------#' -SET @@global.query_cache_size = -1; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 4294967296; -SELECT @@global.query_cache_size; -@@global.query_cache_size -4294967296 -SET @@global.query_cache_size = 511; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 10000.01; -ERROR 42000: Incorrect argument type to variable 'query_cache_size' -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = -1024; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 42949672950; -Warnings: -Warning 1282 Query cache failed to set size 42949671936; new query cache size is 0 -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.query_cache_size = ON; -ERROR 42000: Incorrect argument type to variable 'query_cache_size' -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_cache_size' -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'#-------------------FN_DYNVARS_133_05----------------------------#' -SET @@session.query_cache_size = 0; -ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_size; -@@query_cache_size -0 -'#----------------------FN_DYNVARS_133_06------------------------#' -SELECT @@global.query_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_size'; -@@global.query_cache_size = VARIABLE_VALUE -1 -SELECT @@query_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_size'; -@@query_cache_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_133_07----------------------#' -SET @@global.query_cache_size = TRUE; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -SET @@global.query_cache_size = FALSE; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 -'#---------------------FN_DYNVARS_133_08----------------------#' -SET @@global.query_cache_size = 1; -SELECT @@query_cache_size = @@global.query_cache_size; -@@query_cache_size = @@global.query_cache_size -1 -'#---------------------FN_DYNVARS_133_09----------------------#' -SET query_cache_size = 1; -ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@query_cache_size; -@@query_cache_size -0 -SET local.query_cache_size = 1; -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 'query_cache_size = 1' at line 1 -SELECT local.query_cache_size; -ERROR 42S02: Unknown table 'local' in field list -SET global.query_cache_size = 1; -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 'query_cache_size = 1' at line 1 -SELECT global.query_cache_size; -ERROR 42S02: Unknown table 'global' in field list -SELECT query_cache_size = @@session.query_cache_size; -ERROR 42S22: Unknown column 'query_cache_size' in 'field list' -SET @@global.query_cache_size = @start_value; -SELECT @@global.query_cache_size; -@@global.query_cache_size -0 diff --git a/mysql-test/r/query_prealloc_size_basic_64.result b/mysql-test/r/query_prealloc_size_basic_64.result deleted file mode 100644 index fe8aba990a7..00000000000 --- a/mysql-test/r/query_prealloc_size_basic_64.result +++ /dev/null @@ -1,178 +0,0 @@ -SET @start_global_value = @@global.query_prealloc_size ; -SELECT @start_global_value; -@start_global_value -8192 -SET @start_session_value = @@session.query_prealloc_size ; -SELECT @start_session_value; -@start_session_value -8192 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.query_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '100' -SET @@global.query_prealloc_size = DEFAULT; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 200; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '200' -SET @@session.query_prealloc_size = DEFAULT; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.query_prealloc_size = DEFAULT; -SELECT @@global.query_prealloc_size = 8192; -@@global.query_prealloc_size = 8192 -1 -SET @@session.query_prealloc_size = DEFAULT; -SELECT @@session.query_prealloc_size = 8192; -@@session.query_prealloc_size = 8192 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.query_prealloc_size = 8192; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = 655354; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -654336 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.query_prealloc_size = 8192; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 655345; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -654336 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.query_prealloc_size = 0; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = -1024; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = test; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = "test"; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = ON; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 0; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = -2; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = test; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -SET @@session.query_prealloc_size = "test"; -ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_prealloc_size '; -@@global.query_prealloc_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_prealloc_size '; -@@session.query_prealloc_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_08-----------------------#' -SET @@global.query_prealloc_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '1' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@global.query_prealloc_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '0' -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.query_prealloc_size = 10; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '10' -SELECT @@query_prealloc_size = @@global.query_prealloc_size ; -@@query_prealloc_size = @@global.query_prealloc_size -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@query_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '100' -SELECT @@query_prealloc_size = @@local.query_prealloc_size ; -@@query_prealloc_size = @@local.query_prealloc_size -1 -SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; -@@local.query_prealloc_size = @@session.query_prealloc_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET query_prealloc_size = 1; -Warnings: -Warning 1292 Truncated incorrect query_prealloc_size value: '1' -SELECT @@query_prealloc_size ; -@@query_prealloc_size -8192 -SELECT local.query_prealloc_size ; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.query_prealloc_size ; -ERROR 42S02: Unknown table 'session' in field list -SELECT query_prealloc_size = @@session.query_prealloc_size ; -ERROR 42S22: Unknown column 'query_prealloc_size' in 'field list' -SET @@global.query_prealloc_size = @start_global_value; -SELECT @@global.query_prealloc_size ; -@@global.query_prealloc_size -8192 -SET @@session.query_prealloc_size = @start_session_value; -SELECT @@session.query_prealloc_size ; -@@session.query_prealloc_size -8192 diff --git a/mysql-test/r/range_alloc_block_size_basic_64.result b/mysql-test/r/range_alloc_block_size_basic_64.result deleted file mode 100644 index 26ddfdd2bae..00000000000 --- a/mysql-test/r/range_alloc_block_size_basic_64.result +++ /dev/null @@ -1,178 +0,0 @@ -SET @start_global_value = @@global.range_alloc_block_size; -SELECT @start_global_value; -@start_global_value -4096 -SET @start_session_value = @@session.range_alloc_block_size; -SELECT @start_session_value; -@start_session_value -4096 -'#--------------------FN_DYNVARS_137_01-------------------------#' -SET @@global.range_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '100' -SET @@global.range_alloc_block_size = DEFAULT; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = 200; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '200' -SET @@session.range_alloc_block_size = DEFAULT; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -'#--------------------FN_DYNVARS_137_02-------------------------#' -SET @@global.range_alloc_block_size = DEFAULT; -SELECT @@global.range_alloc_block_size = 2048; -@@global.range_alloc_block_size = 2048 -0 -SET @@session.range_alloc_block_size = DEFAULT; -SELECT @@session.range_alloc_block_size = 2048; -@@session.range_alloc_block_size = 2048 -0 -'#--------------------FN_DYNVARS_137_03-------------------------#' -SET @@global.range_alloc_block_size = 2048; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.range_alloc_block_size = 4294967295; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -SET @@global.range_alloc_block_size = 4294967294; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_137_04-------------------------#' -SET @@session.range_alloc_block_size = 2048; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = 4294967295; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294966272 -SET @@session.range_alloc_block_size = 4294967294; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294966272 -'#------------------FN_DYNVARS_137_05-----------------------#' -SET @@global.range_alloc_block_size = 0; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@global.range_alloc_block_size = -1024; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@global.range_alloc_block_size = 42949672951; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -42949671936 -SET @@global.range_alloc_block_size = 65530.34.; -ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -42949671936 -SET @@global.range_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -42949671936 -SET @@session.range_alloc_block_size = 0; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = -2; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 -SET @@session.range_alloc_block_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.range_alloc_block_size = 4294967296; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294967296 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.range_alloc_block_size = test; -ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4294967296 -'#------------------FN_DYNVARS_137_06-----------------------#' -SELECT @@global.range_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='range_alloc_block_size'; -@@global.range_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_137_07-----------------------#' -SELECT @@session.range_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='range_alloc_block_size'; -@@session.range_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_137_08-----------------------#' -SET @@global.range_alloc_block_size = TRUE; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '1' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@global.range_alloc_block_size = FALSE; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '0' -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -'#---------------------FN_DYNVARS_137_09----------------------#' -SET @@global.range_alloc_block_size = 10; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '10' -SELECT @@range_alloc_block_size = @@global.range_alloc_block_size; -@@range_alloc_block_size = @@global.range_alloc_block_size -0 -'#---------------------FN_DYNVARS_137_10----------------------#' -SET @@range_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '100' -SELECT @@range_alloc_block_size = @@local.range_alloc_block_size; -@@range_alloc_block_size = @@local.range_alloc_block_size -1 -SELECT @@local.range_alloc_block_size = @@session.range_alloc_block_size; -@@local.range_alloc_block_size = @@session.range_alloc_block_size -1 -'#---------------------FN_DYNVARS_137_11----------------------#' -SET range_alloc_block_size = 1; -Warnings: -Warning 1292 Truncated incorrect range_alloc_block_size value: '1' -SELECT @@range_alloc_block_size; -@@range_alloc_block_size -4096 -SELECT local.range_alloc_block_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.range_alloc_block_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT range_alloc_block_size = @@session.range_alloc_block_size; -ERROR 42S22: Unknown column 'range_alloc_block_size' in 'field list' -SET @@global.range_alloc_block_size = @start_global_value; -SELECT @@global.range_alloc_block_size; -@@global.range_alloc_block_size -4096 -SET @@session.range_alloc_block_size = @start_session_value; -SELECT @@session.range_alloc_block_size; -@@session.range_alloc_block_size -4096 diff --git a/mysql-test/r/rpl_recovery_rank_basic_64.result b/mysql-test/r/rpl_recovery_rank_basic_64.result deleted file mode 100644 index d4dd46eba71..00000000000 --- a/mysql-test/r/rpl_recovery_rank_basic_64.result +++ /dev/null @@ -1,110 +0,0 @@ -SET @start_global_value = @@global.rpl_recovery_rank; -SELECT @start_global_value; -@start_global_value -0 -'#--------------------FN_DYNVARS_142_01-------------------------#' -SET @@global.rpl_recovery_rank = 500000; -SET @@global.rpl_recovery_rank = DEFAULT; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -'#--------------------FN_DYNVARS_142_02-------------------------#' -SET @@global.rpl_recovery_rank = 0; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = 1024; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -1024 -SET @@global.rpl_recovery_rank = 123456789; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -123456789 -SET @@global.rpl_recovery_rank = 2147483648*2; -Warnings: -Warning 1292 Truncated incorrect rpl-recovery-rank value: '4294967296' -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -SET @@global.rpl_recovery_rank = 2147483648*1024; -Warnings: -Warning 1292 Truncated incorrect rpl-recovery-rank value: '2199023255552' -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -SET @@global.rpl_recovery_rank = 2147483648*2147483648; -Warnings: -Warning 1292 Truncated incorrect rpl-recovery-rank value: '4611686018427387904' -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -4294967295 -'#--------------------FN_DYNVARS_142_03-------------------------#' -SET @@rpl_recovery_rank = 2; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.rpl_recovery_rank = 3; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.rpl_recovery_rank = 4; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_142_04-----------------------#' -SET @@global.rpl_recovery_rank = -1; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = -2147483648; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = -2147483649; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -SET @@global.rpl_recovery_rank = 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 @@global.rpl_recovery_rank = 2147483649.56; -ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' -SET @@global.rpl_recovery_rank = 1G; -ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' -'#------------------FN_DYNVARS_142_05-----------------------#' -SET @@global.rpl_recovery_rank = 3000; -SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='rpl_recovery_rank'; -@@global.rpl_recovery_rank = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_142_06-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='rpl_recovery_rank'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_142_07-----------------------#' -SET @@global.rpl_recovery_rank = TRUE; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -1 -SET @@global.rpl_recovery_rank = FALSE; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 -'#---------------------FN_DYNVARS_001_08----------------------#' -SET @@global.rpl_recovery_rank = 512; -SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank; -@@rpl_recovery_rank = @@global.rpl_recovery_rank -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET rpl_recovery_rank = 2048; -ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL -SELECT rpl_recovery_rank; -ERROR 42S22: Unknown column 'rpl_recovery_rank' in 'field list' -SELECT @@rpl_recovery_rank; -@@rpl_recovery_rank -512 -SET global rpl_recovery_rank = 64; -SET @@global.rpl_recovery_rank = @start_global_value; -SELECT @@global.rpl_recovery_rank; -@@global.rpl_recovery_rank -0 diff --git a/mysql-test/r/server_id_basic_64.result b/mysql-test/r/server_id_basic_64.result deleted file mode 100644 index b6f3095ccfe..00000000000 --- a/mysql-test/r/server_id_basic_64.result +++ /dev/null @@ -1,115 +0,0 @@ -SET @@global.general_log= 0; -SET @start_global_value = @@global.server_id; -SELECT @start_global_value; -@start_global_value -1 -'#--------------------FN_DYNVARS_144_01-------------------------#' -SET @@global.server_id = 500000; -SET @@global.server_id = DEFAULT; -SELECT @@global.server_id; -@@global.server_id -0 -'#--------------------FN_DYNVARS_144_02-------------------------#' -SET @@global.server_id = DEFAULT; -SELECT @@global.server_id = 0; -@@global.server_id = 0 -1 -'#--------------------FN_DYNVARS_144_03-------------------------#' -SET @@global.server_id = 0; -SELECT @@global.server_id; -@@global.server_id -0 -SET @@global.server_id = 1; -SELECT @@global.server_id; -@@global.server_id -1 -SET @@global.server_id = 15; -SELECT @@global.server_id; -@@global.server_id -15 -SET @@global.server_id = 1024; -SELECT @@global.server_id; -@@global.server_id -1024 -SET @@global.server_id = 123456789; -SELECT @@global.server_id; -@@global.server_id -123456789 -SET @@global.server_id = 2147483648; -SELECT @@global.server_id; -@@global.server_id -2147483648 -SET @@global.server_id = 2147483648*2-1; -SELECT @@global.server_id; -@@global.server_id -4294967295 -'#--------------------FN_DYNVARS_144_04-------------------------#' -SET @@server_id = 2; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.server_id = 3; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.server_id = 4; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_144_05-----------------------#' -SET @@global.server_id = -1; -SELECT @@global.server_id; -@@global.server_id -0 -SET @@global.server_id = -2147483648; -SELECT @@global.server_id; -@@global.server_id -0 -SET @@global.server_id = 2147483649*2; -SELECT @@global.server_id; -@@global.server_id -4294967298 -SET @@global.server_id = 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 @@global.server_id = '125'; -ERROR 42000: Incorrect argument type to variable 'server_id' -SET @@global.server_id = 7483649.56; -ERROR 42000: Incorrect argument type to variable 'server_id' -SET @@global.server_id = 1G; -ERROR 42000: Incorrect argument type to variable 'server_id' -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#------------------FN_DYNVARS_144_06-----------------------#' -SET @@global.server_id = 3000; -SELECT @@global.server_id = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='server_id'; -@@global.server_id = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_144_07-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='server_id'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_144_08-----------------------#' -SET @@global.server_id = TRUE; -SELECT @@global.server_id; -@@global.server_id -1 -SET @@global.server_id = FALSE; -SELECT @@global.server_id; -@@global.server_id -0 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.server_id = 512; -SELECT @@server_id = @@global.server_id; -@@server_id = @@global.server_id -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET server_id = 2048; -ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL -SELECT server_id; -ERROR 42S22: Unknown column 'server_id' in 'field list' -SELECT @@server_id; -@@server_id -512 -SET global server_id = 99; -SET @@global.server_id = @start_global_value; -SELECT @@global.server_id; -@@global.server_id -1 -SET @@global.general_log= 1; diff --git a/mysql-test/r/slave_transaction_retries_basic_64.result b/mysql-test/r/slave_transaction_retries_basic_64.result deleted file mode 100644 index 9434b14b238..00000000000 --- a/mysql-test/r/slave_transaction_retries_basic_64.result +++ /dev/null @@ -1,115 +0,0 @@ -SET @start_global_value = @@global.slave_transaction_retries; -SELECT @start_global_value; -@start_global_value -10 -'#--------------------FN_DYNVARS_149_01-------------------------#' -SET @@global.slave_transaction_retries = 50; -SET @@global.slave_transaction_retries = DEFAULT; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -10 -'#--------------------FN_DYNVARS_149_02-------------------------#' -SET @@global.slave_transaction_retries = DEFAULT; -SELECT @@global.slave_transaction_retries = 10; -@@global.slave_transaction_retries = 10 -1 -'#--------------------FN_DYNVARS_149_03-------------------------#' -SET @@global.slave_transaction_retries = 0; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -0 -SET @@global.slave_transaction_retries = 1; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -1 -SET @@global.slave_transaction_retries = 15; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -15 -SET @@global.slave_transaction_retries = 1024; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -1024 -SET @@global.slave_transaction_retries = 2147483648; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -2147483648 -SET @@global.slave_transaction_retries = 2147483648*2-1; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967295 -SET @@global.slave_transaction_retries = 2147483649*2; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967298 -SET @@global.slave_transaction_retries = 4294967295; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4294967295 -'#--------------------FN_DYNVARS_149_04-------------------------#' -SET @@slave_transaction_retries = 2; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -SET @@session.slave_transaction_retries = 3; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -SET @@local.slave_transaction_retries = 4; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -'#------------------FN_DYNVARS_149_05-----------------------#' -SET @@global.slave_transaction_retries = -1; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -0 -SET @@global.slave_transaction_retries = 2147483649*2147483649; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -4611686022722355201 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.slave_transaction_retries = 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 @@global.slave_transaction_retries = '100'; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -SET @@global.slave_transaction_retries = 7483649.56; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -SET @@global.slave_transaction_retries = ON; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -SET @@global.slave_transaction_retries = OFF; -ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' -'#------------------FN_DYNVARS_149_06-----------------------#' -SET @@global.slave_transaction_retries = 3000; -SELECT @@global.slave_transaction_retries = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='slave_transaction_retries'; -@@global.slave_transaction_retries = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_149_07-----------------------#' -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='slave_transaction_retries'; -count(VARIABLE_VALUE) -1 -'#------------------FN_DYNVARS_149_08-----------------------#' -SET @@global.slave_transaction_retries = TRUE; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -1 -SET @@global.slave_transaction_retries = FALSE; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -0 -'#---------------------FN_DYNVARS_149_09----------------------#' -SET @@global.slave_transaction_retries = 60*60; -SELECT @@slave_transaction_retries = @@global.slave_transaction_retries; -@@slave_transaction_retries = @@global.slave_transaction_retries -1 -'#---------------------FN_DYNVARS_149_10----------------------#' -SET slave_transaction_retries = 2048; -ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL -SELECT slave_transaction_retries; -ERROR 42S22: Unknown column 'slave_transaction_retries' in 'field list' -SELECT @@slave_transaction_retries; -@@slave_transaction_retries -3600 -SET global slave_transaction_retries = 99; -SET @@global.slave_transaction_retries = @start_global_value; -SELECT @@global.slave_transaction_retries; -@@global.slave_transaction_retries -10 diff --git a/mysql-test/r/sort_buffer_size_basic_64.result b/mysql-test/r/sort_buffer_size_basic_64.result deleted file mode 100644 index e9bd14abc67..00000000000 --- a/mysql-test/r/sort_buffer_size_basic_64.result +++ /dev/null @@ -1,189 +0,0 @@ -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 -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 -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 -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 -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 -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 -1 -SET @@global.sort_buffer_size = 4294967295; -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -4294967295 -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 -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 -1 -SET @@session.sort_buffer_size = 4294967295; -SELECT @@session.sort_buffer_size; -@@session.sort_buffer_size -4294967295 -SET @@session.sort_buffer_size = 4294967294; -SELECT @@session.sort_buffer_size; -@@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 -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 -1 -SET @@global.sort_buffer_size = 4294967296; -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -4294967296 -SET @@global.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 -SELECT @@global.sort_buffer_size; -@@global.sort_buffer_size -4294967296 -SET @@global.sort_buffer_size = test; -ERROR 42000: Incorrect argument type to variable 'sort_buffer_size' -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 -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 -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; -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'; -@@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'; -@@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 -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 -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 -SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; -@@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 -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; -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/r/sync_binlog_basic_64.result b/mysql-test/r/sync_binlog_basic_64.result deleted file mode 100644 index ffd1b3fc4f1..00000000000 --- a/mysql-test/r/sync_binlog_basic_64.result +++ /dev/null @@ -1,105 +0,0 @@ -SET @start_value = @@global.sync_binlog; -SELECT @start_value; -@start_value -0 -'#--------------------FN_DYNVARS_168_01------------------------#' -SET @@global.sync_binlog = 99; -SET @@global.sync_binlog = DEFAULT; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -'#---------------------FN_DYNVARS_168_02-------------------------#' -SET @@global.sync_binlog = @start_value; -SELECT @@global.sync_binlog = 0; -@@global.sync_binlog = 0 -1 -'#--------------------FN_DYNVARS_168_03------------------------#' -SET @@global.sync_binlog = 0; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 1; -SELECT @@global.sync_binlog; -@@global.sync_binlog -1 -SET @@global.sync_binlog = 4294967295; -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967295 -SET @@global.sync_binlog = 4294967294; -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967294 -SET @@global.sync_binlog = 65536; -SELECT @@global.sync_binlog; -@@global.sync_binlog -65536 -'#--------------------FN_DYNVARS_168_04-------------------------#' -SET @@global.sync_binlog = -1; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 4294967296; -SELECT @@global.sync_binlog; -@@global.sync_binlog -4294967296 -SET @@global.sync_binlog = 10240022115; -SELECT @@global.sync_binlog; -@@global.sync_binlog -10240022115 -SET @@global.sync_binlog = 10000.01; -ERROR 42000: Incorrect argument type to variable 'sync_binlog' -SELECT @@global.sync_binlog; -@@global.sync_binlog -10240022115 -SET @@global.sync_binlog = -1024; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 -SET @@global.sync_binlog = 42949672950; -SELECT @@global.sync_binlog; -@@global.sync_binlog -42949672950 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.sync_binlog = ON; -ERROR 42000: Incorrect argument type to variable 'sync_binlog' -SELECT @@global.sync_binlog; -@@global.sync_binlog -42949672950 -SET @@global.sync_binlog = 'test'; -ERROR 42000: Incorrect argument type to variable 'sync_binlog' -SELECT @@global.sync_binlog; -@@global.sync_binlog -42949672950 -'#-------------------FN_DYNVARS_168_05----------------------------#' -SET @@session.sync_binlog = 0; -ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@sync_binlog; -@@sync_binlog -42949672950 -'#----------------------FN_DYNVARS_168_06------------------------#' -SELECT @@global.sync_binlog = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='sync_binlog'; -@@global.sync_binlog = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_168_07----------------------#' -SET sync_binlog = 1; -ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL -SELECT @@sync_binlog; -@@sync_binlog -42949672950 -SET local.sync_binlog = 1; -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 'sync_binlog = 1' at line 1 -SELECT local.sync_binlog; -ERROR 42S02: Unknown table 'local' in field list -SET global.sync_binlog = 1; -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 'sync_binlog = 1' at line 1 -SELECT global.sync_binlog; -ERROR 42S02: Unknown table 'global' in field list -SELECT sync_binlog = @@session.sync_binlog; -ERROR 42S22: Unknown column 'sync_binlog' in 'field list' -SET @@global.sync_binlog = @start_value; -SELECT @@global.sync_binlog; -@@global.sync_binlog -0 diff --git a/mysql-test/r/timestamp_basic_64.result b/mysql-test/r/timestamp_basic_64.result deleted file mode 100644 index df877cd455b..00000000000 --- a/mysql-test/r/timestamp_basic_64.result +++ /dev/null @@ -1,73 +0,0 @@ -SET @session_start_value = @@session.timestamp; -'#--------------------FN_DYNVARS_001_01------------------------#' -SET @@timestamp = DEFAULT; -'timestamp does not have any DEFAULT value' -'#---------------------FN_DYNVARS_001_02-------------------------#' -SET @@global.timestamp = "1000"; -ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL -'#--------------------FN_DYNVARS_001_03------------------------#' -SET @@timestamp = 0; -'Setting 0 resets timestamp to session default timestamp' -SET @@timestamp = 123456789123456; -SELECT @@timestamp; -@@timestamp -123456789123456 -SET @@timestamp = 60*60*60*60*365; -SELECT @@timestamp; -@@timestamp -4730400000 -SET @@timestamp = -1000000000; -SELECT @@timestamp; -@@timestamp -18446744072709551616 -SET @temp_ts = @@timestamp - @@timestamp; -SELECT @temp_ts; -@temp_ts -0 -'#--------------------FN_DYNVARS_001_04-------------------------#' -SET @@timestamp = "100"; -ERROR 42000: Incorrect argument type to variable 'timestamp' -'Bug# 34836: Documentation says its a string variable but infact its numeric' -SET @@timestamp = " "; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = 1.1; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = 9999999999999999999999; -ERROR 42000: Incorrect argument type to variable 'timestamp' -'#----------------------FN_DYNVARS_001_06------------------------#' -SELECT @@timestamp = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='timestamp'; -@@timestamp = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_08-------------------------#' -SET @@timestamp = OFF; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = ON; -ERROR 42000: Incorrect argument type to variable 'timestamp' -SET @@timestamp = TRUE; -SELECT @@timestamp; -@@timestamp -1 -SET @@timestamp = FALSE; -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@timestamp = 123456; -SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; -@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp -1 -SET @@timestamp = 654321; -SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; -@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET timestamp = 1; -SELECT @@timestamp; -@@timestamp -1 -SELECT local.timestamp; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.timestamp; -ERROR 42S02: Unknown table 'session' in field list -SELECT timestamp = @@session.timestamp; -ERROR 42S22: Unknown column 'timestamp' in 'field list' -SET @@timestamp = @session_start_value; diff --git a/mysql-test/r/tmp_table_size_basic_64.result b/mysql-test/r/tmp_table_size_basic_64.result deleted file mode 100644 index 837b90fc143..00000000000 --- a/mysql-test/r/tmp_table_size_basic_64.result +++ /dev/null @@ -1,172 +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 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#--------------------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 -'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' -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; -@@global.tmp_table_size = 33554432 -0 -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; -@@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 -'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; -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 -'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"; -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/r/transaction_alloc_block_size_basic_64.result b/mysql-test/r/transaction_alloc_block_size_basic_64.result deleted file mode 100644 index c968d6f108c..00000000000 --- a/mysql-test/r/transaction_alloc_block_size_basic_64.result +++ /dev/null @@ -1,176 +0,0 @@ -SET @start_global_value = @@global.transaction_alloc_block_size; -SELECT @start_global_value; -@start_global_value -8192 -SET @start_session_value = @@session.transaction_alloc_block_size; -SELECT @start_session_value; -@start_session_value -8192 -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.transaction_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' -SET @@global.transaction_alloc_block_size = DEFAULT; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -8192 -SET @@session.transaction_alloc_block_size = 200; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '200' -SET @@session.transaction_alloc_block_size = DEFAULT; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -8192 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.transaction_alloc_block_size = DEFAULT; -SELECT @@global.transaction_alloc_block_size = 8192; -@@global.transaction_alloc_block_size = 8192 -1 -SET @@session.transaction_alloc_block_size = DEFAULT; -SELECT @@session.transaction_alloc_block_size = 8192; -@@session.transaction_alloc_block_size = 8192 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.transaction_alloc_block_size = 1024; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = 60020; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -59392 -SET @@global.transaction_alloc_block_size = 4294967295; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -4294966272 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.transaction_alloc_block_size = 1024; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size =4294967295; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -4294966272 -SET @@session.transaction_alloc_block_size = 65535; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -64512 -'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.transaction_alloc_block_size = 0; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = -1024; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = 123456789201; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -123456788480 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.transaction_alloc_block_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@global.transaction_alloc_block_size = 65530.34; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size ="Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@global.transaction_alloc_block_size = 1000; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1000' -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size = 12345678901; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -12345678848 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@session.transaction_alloc_block_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@session.transaction_alloc_block_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@session.transaction_alloc_block_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 -SET @@session.transaction_alloc_block_size = "Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -SET @@session.transaction_alloc_block_size = 'test'; -ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.transaction_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='transaction_alloc_block_size'; -@@global.transaction_alloc_block_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.transaction_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='transaction_alloc_block_size'; -@@session.transaction_alloc_block_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_08----------------------#' -SET @@transaction_alloc_block_size = 1024; -SET @@global.transaction_alloc_block_size = 4294967295; -SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size; -@@transaction_alloc_block_size = @@global.transaction_alloc_block_size -0 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@transaction_alloc_block_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' -SELECT @@transaction_alloc_block_size = @@local.transaction_alloc_block_size; -@@transaction_alloc_block_size = @@local.transaction_alloc_block_size -1 -SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size; -@@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size -1 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET transaction_alloc_block_size = 1027; -SELECT @@transaction_alloc_block_size; -@@transaction_alloc_block_size -1024 -SELECT local.transaction_alloc_block_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.transaction_alloc_block_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT transaction_alloc_block_size = @@session.transaction_alloc_block_size; -ERROR 42S22: Unknown column 'transaction_alloc_block_size' in 'field list' -SET @@global.transaction_alloc_block_size = @start_global_value; -SELECT @@global.transaction_alloc_block_size; -@@global.transaction_alloc_block_size -8192 -SET @@session.tmp_table_size = @start_session_value; -SELECT @@session.transaction_alloc_block_size; -@@session.transaction_alloc_block_size -1024 diff --git a/mysql-test/r/transaction_prealloc_size_basic_64.result b/mysql-test/r/transaction_prealloc_size_basic_64.result deleted file mode 100644 index 2fb6451372f..00000000000 --- a/mysql-test/r/transaction_prealloc_size_basic_64.result +++ /dev/null @@ -1,170 +0,0 @@ -SET @start_global_value = @@global.transaction_prealloc_size; -SELECT @start_global_value; -@start_global_value -4096 -SET @start_session_value = @@session.transaction_prealloc_size; -SELECT @start_session_value; -@start_session_value -4096 -'Bug# 34876: This variable has invalid default value as compared to documentation'; -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.transaction_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' -SET @@global.transaction_prealloc_size = DEFAULT; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -4096 -SET @@session.transaction_prealloc_size = 200; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '200' -SET @@session.transaction_prealloc_size = DEFAULT; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4096 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.transaction_prealloc_size = DEFAULT; -SELECT @@global.transaction_prealloc_size = 4096; -@@global.transaction_prealloc_size = 4096 -1 -SET @@session.transaction_prealloc_size = DEFAULT; -SELECT @@session.transaction_prealloc_size = 4096; -@@session.transaction_prealloc_size = 4096 -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.transaction_prealloc_size = 1024; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = 60020; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -59392 -SET @@global.transaction_prealloc_size = 4294966272; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -4294966272 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.transaction_prealloc_size = 1024; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size =4294966272; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4294966272 -SET @@session.transaction_prealloc_size = 65535; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -64512 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.transaction_prealloc_size = 0; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = -1024; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.transaction_prealloc_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@global.transaction_prealloc_size = 65530.34; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size ="Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@global.transaction_prealloc_size = 1000; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '1000' -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size = ON; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@session.transaction_prealloc_size = OFF; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@session.transaction_prealloc_size = True; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size = False; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -1024 -SET @@session.transaction_prealloc_size = "Test"; -ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' -SET @@session.transaction_prealloc_size = 123456789031; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -123456788480 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.transaction_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='transaction_prealloc_size'; -@@global.transaction_prealloc_size = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.transaction_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='transaction_prealloc_size'; -@@session.transaction_prealloc_size = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.transaction_prealloc_size = 1024; -SET @@global.transaction_prealloc_size = 10; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '10' -SELECT @@transaction_prealloc_size = @@global.transaction_prealloc_size; -@@transaction_prealloc_size = @@global.transaction_prealloc_size -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@transaction_prealloc_size = 100; -Warnings: -Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' -SELECT @@transaction_prealloc_size = @@local.transaction_prealloc_size; -@@transaction_prealloc_size = @@local.transaction_prealloc_size -1 -SELECT @@local.transaction_prealloc_size = @@session.transaction_prealloc_size; -@@local.transaction_prealloc_size = @@session.transaction_prealloc_size -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET transaction_prealloc_size = 1027; -SELECT @@transaction_prealloc_size; -@@transaction_prealloc_size -1024 -SELECT local.transaction_prealloc_size; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.transaction_prealloc_size; -ERROR 42S02: Unknown table 'session' in field list -SELECT transaction_prealloc_size = @@session.transaction_prealloc_size; -ERROR 42S22: Unknown column 'transaction_prealloc_size' in 'field list' -SET @@global.transaction_prealloc_size = @start_global_value; -SELECT @@global.transaction_prealloc_size; -@@global.transaction_prealloc_size -4096 -SET @@session.transaction_prealloc_size = @start_session_value; -SELECT @@session.transaction_prealloc_size; -@@session.transaction_prealloc_size -4096 diff --git a/mysql-test/r/wait_timeout_basic_64.result b/mysql-test/r/wait_timeout_basic_64.result deleted file mode 100644 index ae03e677e56..00000000000 --- a/mysql-test/r/wait_timeout_basic_64.result +++ /dev/null @@ -1,129 +0,0 @@ -SET @start_global_value = @@global.wait_timeout; -SET @start_session_value = @@session.wait_timeout; -'#--------------------FN_DYNVARS_005_01-------------------------#' -SET @@global.wait_timeout = 100; -SET @@global.wait_timeout = DEFAULT; -SELECT @@global.wait_timeout; -@@global.wait_timeout -28800 -SET @@session.wait_timeout = 200; -SET @@session.wait_timeout = DEFAULT; -SELECT @@session.wait_timeout; -@@session.wait_timeout -28800 -'#--------------------FN_DYNVARS_005_02-------------------------#' -SET @@global.wait_timeout = DEFAULT; -SELECT @@global.wait_timeout = @default_wait_timeout; -@@global.wait_timeout = @default_wait_timeout -1 -SET @@session.wait_timeout = DEFAULT; -SELECT @@session.wait_timeout = @default_wait_timeout; -@@session.wait_timeout = @default_wait_timeout -1 -'#--------------------FN_DYNVARS_005_03-------------------------#' -SET @@global.wait_timeout= 1; -SELECT @@global.wait_timeout; -@@global.wait_timeout -1 -SET @@global.wait_timeout = 60020; -SELECT @@global.wait_timeout; -@@global.wait_timeout -60020 -SET @@global.wait_timeout = 31536000; -SELECT @@global.wait_timeout = @max_wait_timeout; -@@global.wait_timeout = @max_wait_timeout -1 -'#--------------------FN_DYNVARS_005_04-------------------------#' -SET @@session.wait_timeout =6000; -SELECT @@session.wait_timeout; -@@session.wait_timeout -6000 -'#------------------FN_DYNVARS_005_05-----------------------#' -SET @@global.wait_timeout = 0; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -SET @@global.wait_timeout = -1024; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -'Bug # 34837: Errors are not coming on assigning invalid values to variable'; -SET @@global.wait_timeout = ON; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@global.wait_timeout = OFF; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@global.wait_timeout = True; -SELECT @@global.wait_timeout; -@@global.wait_timeout -1 -SET @@global.wait_timeout = False; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -SELECT @@global.wait_timeout; -@@global.wait_timeout -1 -SET @@global.wait_timeout = 65530.34; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@global.wait_timeout ="Test"; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = ON; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = OFF; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = True; -SELECT @@session.wait_timeout; -@@session.wait_timeout -1 -SET @@session.wait_timeout = False; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '0' -SELECT @@session.wait_timeout; -@@session.wait_timeout -1 -SET @@session.wait_timeout = "Test"; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = 'test'; -ERROR 42000: Incorrect argument type to variable 'wait_timeout' -SET @@session.wait_timeout = 123456789031; -Warnings: -Warning 1292 Truncated incorrect wait_timeout value: '123456789031' -SELECT @@session.wait_timeout = @max_wait_timeout; -@@session.wait_timeout = @max_wait_timeout -1 -'#------------------FN_DYNVARS_005_06-----------------------#' -SELECT @@global.wait_timeout = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='wait_timeout'; -@@global.wait_timeout = VARIABLE_VALUE -1 -'#------------------FN_DYNVARS_005_07-----------------------#' -SELECT @@session.wait_timeout = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='wait_timeout'; -@@session.wait_timeout = VARIABLE_VALUE -1 -'#---------------------FN_DYNVARS_001_09----------------------#' -SET @@global.wait_timeout = 30000; -SET @@global.wait_timeout = 40000; -SELECT @@wait_timeout = @@global.wait_timeout; -@@wait_timeout = @@global.wait_timeout -0 -'#---------------------FN_DYNVARS_001_10----------------------#' -SET @@wait_timeout = 100; -SELECT @@wait_timeout = @@local.wait_timeout; -@@wait_timeout = @@local.wait_timeout -1 -SELECT @@local.wait_timeout = @@session.wait_timeout; -@@local.wait_timeout = @@session.wait_timeout -1 -'#---------------------FN_DYNVARS_001_11----------------------#' -SET wait_timeout = 1027; -SELECT @@wait_timeout; -@@wait_timeout -1027 -SELECT local.wait_timeout; -ERROR 42S02: Unknown table 'local' in field list -SELECT session.wait_timeout; -ERROR 42S02: Unknown table 'session' in field list -SELECT wait_timeout = @@session.wait_timeout; -ERROR 42S22: Unknown column 'wait_timeout' in 'field list' -SET @@global.wait_timeout = @start_global_value; -SET @@session.wait_timeout = @start_session_value; From 56729a758ce98cdc1c257997446723acfa985a7f Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 22 Jul 2008 18:56:50 +0200 Subject: [PATCH 297/435] --- .../include/binlog_cache_size_basic.inc | 154 ----------- .../include/bulk_insert_buffer_size_basic.inc | 203 -------------- .../include/delayed_insert_limit_basic.inc | 167 ------------ .../include/delayed_queue_size_basic.inc | 163 ------------ .../innodb_concurrency_tickets_basic.inc | 147 ----------- .../include/innodb_max_purge_lag_basic.inc | 147 ----------- .../include/innodb_sync_spin_loops_basic.inc | 142 ---------- mysql-test/include/join_buffer_size_basic.inc | 216 --------------- mysql-test/include/key_buffer_size_basic.inc | 187 ------------- .../include/key_cache_age_threshold_basic.inc | 180 ------------- .../include/key_cache_block_size_basic.inc | 185 ------------- .../key_cache_division_limit_basic.inc | 184 ------------- mysql-test/include/log_warnings_basic.inc | 210 --------------- .../include/max_binlog_cache_size_basic.inc | 187 ------------- .../include/max_connect_errors_basic.inc | 182 ------------- .../include/max_heap_table_size_basic.inc | 222 ---------------- .../include/max_seeks_for_key_basic.inc | 213 --------------- mysql-test/include/max_tmp_tables_basic.inc | 227 ---------------- .../include/max_write_lock_count_basic.inc | 158 ----------- .../include/min_examined_row_limit_basic.inc | 219 ---------------- .../include/multi_range_count_basic.inc | 219 ---------------- .../myisam_max_sort_file_size_basic.inc | 184 ------------- .../include/myisam_repair_threads_basic.inc | 242 ----------------- .../include/myisam_sort_buffer_size_basic.inc | 240 ----------------- mysql-test/include/net_retry_count_basic.inc | 217 --------------- .../include/query_alloc_block_size_basic.inc | 225 ---------------- .../include/query_cache_limit_basic.inc | 178 ------------- .../query_cache_min_res_unit_basic.inc | 187 ------------- mysql-test/include/query_cache_size_basic.inc | 175 ------------- .../include/query_prealloc_size_basic.inc | 247 ------------------ .../include/range_alloc_block_size_basic.inc | 208 --------------- .../include/rpl_recovery_rank_basic.inc | 171 ------------ mysql-test/include/server_id_basic.inc | 190 -------------- .../slave_transaction_retries_basic.inc | 188 ------------- mysql-test/include/sort_buffer_size_basic.inc | 213 --------------- mysql-test/include/sync_binlog_basic.inc | 156 ----------- mysql-test/include/timestamp_basic.inc | 162 ------------ mysql-test/include/tmp_table_size_basic.inc | 233 ----------------- .../transaction_alloc_block_size_basic.inc | 240 ----------------- .../transaction_prealloc_size_basic.inc | 229 ---------------- 40 files changed, 7797 deletions(-) delete mode 100644 mysql-test/include/binlog_cache_size_basic.inc delete mode 100644 mysql-test/include/bulk_insert_buffer_size_basic.inc delete mode 100644 mysql-test/include/delayed_insert_limit_basic.inc delete mode 100644 mysql-test/include/delayed_queue_size_basic.inc delete mode 100644 mysql-test/include/innodb_concurrency_tickets_basic.inc delete mode 100644 mysql-test/include/innodb_max_purge_lag_basic.inc delete mode 100644 mysql-test/include/innodb_sync_spin_loops_basic.inc delete mode 100644 mysql-test/include/join_buffer_size_basic.inc delete mode 100644 mysql-test/include/key_buffer_size_basic.inc delete mode 100644 mysql-test/include/key_cache_age_threshold_basic.inc delete mode 100644 mysql-test/include/key_cache_block_size_basic.inc delete mode 100644 mysql-test/include/key_cache_division_limit_basic.inc delete mode 100644 mysql-test/include/log_warnings_basic.inc delete mode 100644 mysql-test/include/max_binlog_cache_size_basic.inc delete mode 100644 mysql-test/include/max_connect_errors_basic.inc delete mode 100644 mysql-test/include/max_heap_table_size_basic.inc delete mode 100644 mysql-test/include/max_seeks_for_key_basic.inc delete mode 100644 mysql-test/include/max_tmp_tables_basic.inc delete mode 100644 mysql-test/include/max_write_lock_count_basic.inc delete mode 100644 mysql-test/include/min_examined_row_limit_basic.inc delete mode 100644 mysql-test/include/multi_range_count_basic.inc delete mode 100644 mysql-test/include/myisam_max_sort_file_size_basic.inc delete mode 100644 mysql-test/include/myisam_repair_threads_basic.inc delete mode 100644 mysql-test/include/myisam_sort_buffer_size_basic.inc delete mode 100644 mysql-test/include/net_retry_count_basic.inc delete mode 100644 mysql-test/include/query_alloc_block_size_basic.inc delete mode 100644 mysql-test/include/query_cache_limit_basic.inc delete mode 100644 mysql-test/include/query_cache_min_res_unit_basic.inc delete mode 100644 mysql-test/include/query_cache_size_basic.inc delete mode 100644 mysql-test/include/query_prealloc_size_basic.inc delete mode 100644 mysql-test/include/range_alloc_block_size_basic.inc delete mode 100644 mysql-test/include/rpl_recovery_rank_basic.inc delete mode 100644 mysql-test/include/server_id_basic.inc delete mode 100644 mysql-test/include/slave_transaction_retries_basic.inc delete mode 100644 mysql-test/include/sort_buffer_size_basic.inc delete mode 100644 mysql-test/include/sync_binlog_basic.inc delete mode 100644 mysql-test/include/timestamp_basic.inc delete mode 100644 mysql-test/include/tmp_table_size_basic.inc delete mode 100644 mysql-test/include/transaction_alloc_block_size_basic.inc delete mode 100644 mysql-test/include/transaction_prealloc_size_basic.inc diff --git a/mysql-test/include/binlog_cache_size_basic.inc b/mysql-test/include/binlog_cache_size_basic.inc deleted file mode 100644 index 323e19c4d66..00000000000 --- a/mysql-test/include/binlog_cache_size_basic.inc +++ /dev/null @@ -1,154 +0,0 @@ -################# mysql-test\t\binlog_cache_size_basic.test #################### -# # -# Variable Name: binlog_cache_size # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 32768 # -# Range: 4096 - 4294967295 # -# # -# # -# Creation Date: 2008-04-28 # -# Author: Salman Rawala/Horst Hunger # -# # -# Description: Test Cases of Dynamic System Variable "binlog_cache_size" # -# that checks 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#option_mysqld_binlog_cache_size # -# # -################################################################################ - -################################################################# -# START OF binlog_cache_size TESTS # -################################################################# - -######################################################################### -# Saving initial value of binlog_cache_size in a temporary variable # -######################################################################### - -SET @start_value = @@global.binlog_cache_size; -SELECT @start_value; - ---echo '#--------------------FN_DYNVARS_006_01------------------------#' -######################################################################### -# Display the DEFAULT value of binlog_cache_size # -######################################################################### - -SET @@global.binlog_cache_size = 100; -SET @@global.binlog_cache_size = DEFAULT; -SELECT @@global.binlog_cache_size; - - ---echo '#---------------------FN_DYNVARS_006_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.binlog_cache_size = @start_value; -SELECT @@global.binlog_cache_size = 32768; - - ---echo '#--------------------FN_DYNVARS_006_03------------------------#' -######################################################################### -# Change the value of binlog_cache_size to a valid value # -######################################################################### - -SET @@global.binlog_cache_size = 4096; -SELECT @@global.binlog_cache_size; -SET @@global.binlog_cache_size = 4294967295; -SELECT @@global.binlog_cache_size; -SET @@global.binlog_cache_size = 10000; -SELECT @@global.binlog_cache_size; -SET @@global.binlog_cache_size = 21221204; -SELECT @@global.binlog_cache_size; -echo 'Bug: Invalid values are coming in variable on assigning valid values'; - - ---echo '#--------------------FN_DYNVARS_006_04-------------------------#' -############################################################################ -# Change the value of binlog_cache_size to invalid value # -############################################################################ - -SET @@global.binlog_cache_size = 1024; -SELECT @@global.binlog_cache_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.binlog_cache_size = 10000.01; -SET @@global.binlog_cache_size = -1024; -SELECT @@global.binlog_cache_size; -SET @@global.binlog_cache_size = 42949672950; -SELECT @@global.binlog_cache_size; -echo 'Bug: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.binlog_cache_size = ON; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.binlog_cache_size = 'test'; - - ---echo '#-------------------FN_DYNVARS_006_05----------------------------#' -############################################################################ -# Test if accessing session binlog_cache_size gives error # -############################################################################ - ---Error ER_GLOBAL_VARIABLE -SET @@session.binlog_cache_size = 0; - - ---echo '#----------------------FN_DYNVARS_006_06------------------------#' -############################################################################## -# Check if the value in GLOBAL Tables matches values in variable # -############################################################################## - -SELECT @@global.binlog_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_cache_size'; - ---echo '#---------------------FN_DYNVARS_006_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.binlog_cache_size = TRUE; -SELECT @@global.binlog_cache_size; -SET @@global.binlog_cache_size = FALSE; -SELECT @@global.binlog_cache_size; -echo 'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; - ---echo '#---------------------FN_DYNVARS_006_08----------------------#' -############################################################################### -# Check if accessing variable without SCOPE points to same global variable # -############################################################################### - -SET @@global.binlog_cache_size = 1; -SELECT @@binlog_cache_size = @@global.binlog_cache_size; - ---echo '#---------------------FN_DYNVARS_006_09----------------------#' -########################################################################### -# Check if binlog_cache_size can be accessed with and without @@ sign # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET binlog_cache_size = 1; ---Error ER_PARSE_ERROR -SET global.binlog_cache_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.binlog_cache_size; ---Error ER_BAD_FIELD_ERROR -SELECT binlog_cache_size = @@session.binlog_cache_size; - - -############################## -# Restore initial value # -############################## - -SET @@global.binlog_cache_size = @start_value; -SELECT @@global.binlog_cache_size; - - -########################################################### -# END OF binlog_cache_size TESTS # -########################################################### diff --git a/mysql-test/include/bulk_insert_buffer_size_basic.inc b/mysql-test/include/bulk_insert_buffer_size_basic.inc deleted file mode 100644 index 56ffbace173..00000000000 --- a/mysql-test/include/bulk_insert_buffer_size_basic.inc +++ /dev/null @@ -1,203 +0,0 @@ -############## mysql-test\t\bulk_insert_buffer_size_basic.test ################# -# # -# Variable Name: bulk_insert_buffer_size # -# Scope: GLOBAL & SESSION # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 8388608 # -# Range: 0 - 4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman Rawala # -# # -# Description: Test Cases of Dynamic System Variable "bulk_insert_buffer_size" # -# that checks 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#option_mysqld_bulk_insert_buffer_size # -# # -################################################################################ - ---source include/load_sysvars.inc - -####################################################################### -# START OF bulk_insert_buffer_size TESTS # -####################################################################### - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.bulk_insert_buffer_size; -SELECT @start_global_value; -SET @start_session_value = @@session.bulk_insert_buffer_size; -SELECT @start_session_value; - ---echo '#--------------------FN_DYNVARS_007_01-------------------------#' -####################################################################### -# Display the DEFAULT value of bulk_insert_buffer_size # -####################################################################### - -SET @@global.bulk_insert_buffer_size = 100; -SET @@global.bulk_insert_buffer_size = DEFAULT; -SELECT @@global.bulk_insert_buffer_size; - -SET @@session.bulk_insert_buffer_size = 200; -SET @@session.bulk_insert_buffer_size = DEFAULT; -SELECT @@session.bulk_insert_buffer_size; - - ---echo '#--------------------FN_DYNVARS_007_02-------------------------#' -####################################################################### -# Check the DEFAULT value of bulk_insert_buffer_size # -####################################################################### - -SET @@global.bulk_insert_buffer_size = @start_global_value; -SELECT @@global.bulk_insert_buffer_size = 8388608; - -SET @@session.bulk_insert_buffer_size = @start_session_value; -SELECT @@session.bulk_insert_buffer_size = 8388608; - - ---echo '#--------------------FN_DYNVARS_007_03-------------------------#' -############################################################################### -#Change the value of bulk_insert_buffer_size to valid values for GLOBAL Scope # -############################################################################### - -SET @@global.bulk_insert_buffer_size = 0; -SELECT @@global.bulk_insert_buffer_size; -SET @@global.bulk_insert_buffer_size = 1; -SELECT @@global.bulk_insert_buffer_size; -SET @@global.bulk_insert_buffer_size = 4294967295; -SELECT @@global.bulk_insert_buffer_size; -SET @@global.bulk_insert_buffer_size = 429496; -SELECT @@global.bulk_insert_buffer_size; - - ---echo '#--------------------FN_DYNVARS_007_04-------------------------#' -############################################################################### -#Change the value of bulk_insert_buffer_size to valid values for SESSION Scope# -############################################################################### - -SET @@session.bulk_insert_buffer_size = 0; -SELECT @@session.bulk_insert_buffer_size; -SET @@session.bulk_insert_buffer_size = 1; -SELECT @@session.bulk_insert_buffer_size; -SET @@session.bulk_insert_buffer_size = 4294967295; -SELECT @@session.bulk_insert_buffer_size; -SET @@session.bulk_insert_buffer_size = 429496; -SELECT @@session.bulk_insert_buffer_size; - - ---echo '#------------------FN_DYNVARS_007_05-----------------------#' -################################################################### -# Change the value of bulk_insert_buffer_size to an invalid value # -################################################################### - -SET @@global.bulk_insert_buffer_size = 42949672950; -SELECT @@global.bulk_insert_buffer_size; -SET @@global.bulk_insert_buffer_size = -1024; -SELECT @@global.bulk_insert_buffer_size; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.bulk_insert_buffer_size = test; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.bulk_insert_buffer_size = ON; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.bulk_insert_buffer_size = 429496.10; - -SET @@session.bulk_insert_buffer_size = 42949672950; -SELECT @@session.bulk_insert_buffer_size; -SET @@session.bulk_insert_buffer_size = -2; -SELECT @@session.bulk_insert_buffer_size; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.bulk_insert_buffer_size = test; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.bulk_insert_buffer_size = 429496.10; - - ---echo '#------------------FN_DYNVARS_007_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -SELECT @@global.bulk_insert_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='bulk_insert_buffer_size'; - ---echo '#------------------FN_DYNVARS_007_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.bulk_insert_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='bulk_insert_buffer_size'; - - ---echo '#------------------FN_DYNVARS_007_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.bulk_insert_buffer_size = TRUE; -SELECT @@global.bulk_insert_buffer_size; -SET @@global.bulk_insert_buffer_size = FALSE; -SELECT @@global.bulk_insert_buffer_size; - -SET @@session.bulk_insert_buffer_size = TRUE; -SELECT @@session.bulk_insert_buffer_size; -SET @@session.bulk_insert_buffer_size = FALSE; -SELECT @@session.bulk_insert_buffer_size; - - ---echo '#---------------------FN_DYNVARS_007_09----------------------#' -############################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points # -# to same session variable # -############################################################################## - -SET @@bulk_insert_buffer_size = 100; -SELECT @@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size; -SELECT @@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; - - ---echo '#---------------------FN_DYNVARS_007_10----------------------#' -############################################################################### -# Check if bulk_insert_buffer_size can be accessed with and without @@ sign # -############################################################################### - -SET bulk_insert_buffer_size = 1; -SELECT @@bulk_insert_buffer_size; ---Error ER_PARSE_ERROR -SET local.bulk_insert_buffer_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.bulk_insert_buffer_size; ---Error ER_PARSE_ERROR -SET session.bulk_insert_buffer_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT session.bulk_insert_buffer_size; ---Error ER_BAD_FIELD_ERROR -SELECT bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.bulk_insert_buffer_size = @start_global_value; -SELECT @@global.bulk_insert_buffer_size; -SET @@session.bulk_insert_buffer_size = @start_session_value; -SELECT @@session.bulk_insert_buffer_size; - - -#################################################### -# END OF bulk_insert_buffer_size TESTS # -#################################################### diff --git a/mysql-test/include/delayed_insert_limit_basic.inc b/mysql-test/include/delayed_insert_limit_basic.inc deleted file mode 100644 index ab158bc593e..00000000000 --- a/mysql-test/include/delayed_insert_limit_basic.inc +++ /dev/null @@ -1,167 +0,0 @@ -############### mysql-test\t\delayed_insert_limit_basic.test ################### -# # -# Variable Name: delayed_insert_limit # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 100 # -# Range: 1 - 4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman Rawala # -# # -# Description: Test Cases of Dynamic System Variable "delayed_insert_limit" # -# that checks 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#option_mysqld_delayed_insert_limit # -# # -################################################################################ - ---source include/load_sysvars.inc - -################################################################# -# START OF delayed_insert_limit TESTS # -################################################################# - -######################################################################### -# Saving initial value of delayed_insert_limit in a temporary variable # -######################################################################### - -SET @start_value = @@global.delayed_insert_limit; -SELECT @start_value; - ---echo '#--------------------FN_DYNVARS_024_01------------------------#' -######################################################################### -# Display the DEFAULT value of delayed_insert_limit # -######################################################################### - -SET @@global.delayed_insert_limit = 100; -SET @@global.delayed_insert_limit = DEFAULT; -SELECT @@global.delayed_insert_limit; - - ---echo '#---------------------FN_DYNVARS_024_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.delayed_insert_limit = @start_value; -SELECT @@global.delayed_insert_limit = 100; - - ---echo '#--------------------FN_DYNVARS_024_03------------------------#' -######################################################################### -# Change the value of delayed_insert_limit to a valid value # -######################################################################### - -SET @@global.delayed_insert_limit = 10000; -SELECT @@global.delayed_insert_limit; -SET @@global.delayed_insert_limit = 4294967295; -SELECT @@global.delayed_insert_limit; -SET @@global.delayed_insert_limit = 1; -SELECT @@global.delayed_insert_limit; - - ---echo '#--------------------FN_DYNVARS_024_04-------------------------#' -############################################################################ -# Change the value of delayed_insert_limit to invalid value # -############################################################################ - -SET @@global.delayed_insert_limit = 0; -SELECT @@global.delayed_insert_limit; -SET @@global.delayed_insert_limit = -1024; -SELECT @@global.delayed_insert_limit; -SET @@global.delayed_insert_limit = 42949672950; -SELECT @@global.delayed_insert_limit; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.delayed_insert_limit = 429496729.5; -SELECT @@global.delayed_insert_limit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.delayed_insert_limit = ON; -SELECT @@global.delayed_insert_limit; - - - ---echo '#-------------------FN_DYNVARS_024_05----------------------------#' -############################################################################ -# Test if accessing session delayed_insert_limit gives error # -############################################################################ - ---Error ER_GLOBAL_VARIABLE -SET @@session.delayed_insert_limit = 0; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@Session.delayed_insert_limit; - - ---echo '#----------------------FN_DYNVARS_024_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.delayed_insert_limit = - VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='delayed_insert_limit'; - -SELECT @@delayed_insert_limit = - VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES - WHERE VARIABLE_NAME='delayed_insert_limit'; - - ---echo '#---------------------FN_DYNVARS_024_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.delayed_insert_limit = TRUE; -SELECT @@global.delayed_insert_limit; -SET @@global.delayed_insert_limit = FALSE; -SELECT @@global.delayed_insert_limit; - ---echo '#---------------------FN_DYNVARS_024_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.delayed_insert_limit = 1; -SELECT @@delayed_insert_limit = @@global.delayed_insert_limit; - - ---echo '#---------------------FN_DYNVARS_024_09----------------------#' -############################################################################## -# Check if delayed_insert_limit can be accessed with and without @@ sign # -############################################################################## - ---Error ER_GLOBAL_VARIABLE -SET delayed_insert_limit = 1; -SELECT @@delayed_insert_limit; ---Error ER_PARSE_ERROR -SET local.delayed_insert_limit = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.delayed_insert_limit; ---Error ER_PARSE_ERROR -SET global.delayed_insert_limit = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.delayed_insert_limit; ---Error ER_BAD_FIELD_ERROR -SELECT delayed_insert_limit = @@session.delayed_insert_limit; - -############################## -# Restore initial value # -############################## - -SET @@global.delayed_insert_limit = @start_value; -SELECT @@global.delayed_insert_limit; - - -########################################################### -# END OF delayed_insert_limit TESTS # -########################################################### - diff --git a/mysql-test/include/delayed_queue_size_basic.inc b/mysql-test/include/delayed_queue_size_basic.inc deleted file mode 100644 index 2d16f75d4e1..00000000000 --- a/mysql-test/include/delayed_queue_size_basic.inc +++ /dev/null @@ -1,163 +0,0 @@ -################# mysql-test\t\delayed_queue_size_basic.test ################### -# # -# Variable Name: delayed_queue_size # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 1000 # -# Range: 1 - 4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman Rawala # -# # -# Description: Test Cases of Dynamic System Variable "delayed_queue_size" # -# that checks 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#option_mysqld_delayed_queue_size # -# # -################################################################################ - ---source include/load_sysvars.inc - -################################################################# -# START OF delayed_queue_size TESTS # -################################################################# - -######################################################################### -# Saving initial value of delayed_queue_size in a temporary variable # -######################################################################### - -SET @start_value = @@global.delayed_queue_size; -SELECT @start_value; - ---echo '#--------------------FN_DYNVARS_026_01------------------------#' -######################################################################### -# Display the DEFAULT value of delayed_queue_size # -######################################################################### - -SET @@global.delayed_queue_size = 100; -SET @@global.delayed_queue_size = DEFAULT; -SELECT @@global.delayed_queue_size; - ---echo '#---------------------FN_DYNVARS_026_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.delayed_queue_size = @start_value; -SELECT @@global.delayed_queue_size = 1000; - ---echo '#--------------------FN_DYNVARS_026_03------------------------#' -######################################################################### -# Change the value of delayed_queue_size to a valid value # -######################################################################### - -SET @@global.delayed_queue_size = 10000; -SELECT @@global.delayed_queue_size; -SET @@global.delayed_queue_size = 4294967295; -SELECT @@global.delayed_queue_size; -SET @@global.delayed_queue_size = 1; -SELECT @@global.delayed_queue_size; - - ---echo '#--------------------FN_DYNVARS_026_04-------------------------#' -############################################################################ -# Change the value of delayed_queue_size to invalid value # -############################################################################ - -SET @@global.delayed_queue_size = 0; -SELECT @@global.delayed_queue_size; -SET @@global.delayed_queue_size = -1024; -SELECT @@global.delayed_queue_size; -SET @@global.delayed_queue_size = 42949672950; -SELECT @@global.delayed_queue_size; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.delayed_queue_size = 429496729.5; -SELECT @@global.delayed_queue_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.delayed_queue_size = ON; -SELECT @@delayed_queue_size; - ---echo '#-------------------FN_DYNVARS_026_05----------------------------#' -############################################################################ -# Test if accessing session delayed_queue_size gives error # -############################################################################ - ---Error 1229 -SET @@session.delayed_queue_size = 0; ---Error 1238 -SELECT @@session.delayed_queue_size; - ---echo '#----------------------FN_DYNVARS_026_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.delayed_queue_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='delayed_queue_size'; - -SELECT @@delayed_queue_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='delayed_queue_size'; - - ---echo '#---------------------FN_DYNVARS_026_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.delayed_queue_size = TRUE; -SELECT @@global.delayed_queue_size; -SET @@global.delayed_queue_size = FALSE; -SELECT @@global.delayed_queue_size; - ---echo '#---------------------FN_DYNVARS_026_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.delayed_queue_size = 1; -SELECT @@delayed_queue_size = @@global.delayed_queue_size; - - ---echo '#---------------------FN_DYNVARS_026_09----------------------#' -########################################################################### -# Check if delayed_queue_size can be accessed with and without @@ sign # -########################################################################### - ---Error 1229 -SET delayed_queue_size = 1; -SELECT @@delayed_queue_size; ---Error ER_PARSE_ERROR -SET local.delayed_queue_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.delayed_queue_size; ---Error ER_PARSE_ERROR -SET global.delayed_queue_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.delayed_queue_size; ---Error ER_BAD_FIELD_ERROR -SELECT delayed_queue_size = @@session.delayed_queue_size; - - -############################## -# Restore initial value # -############################## - -SET @@global.delayed_queue_size = @start_value; -SELECT @@global.delayed_queue_size; - - -########################################################### -# END OF delayed_queue_size TESTS # -########################################################### - diff --git a/mysql-test/include/innodb_concurrency_tickets_basic.inc b/mysql-test/include/innodb_concurrency_tickets_basic.inc deleted file mode 100644 index 67b0247d169..00000000000 --- a/mysql-test/include/innodb_concurrency_tickets_basic.inc +++ /dev/null @@ -1,147 +0,0 @@ -################# mysql-test\t\innodb_concurrency_tickets_basic.test ########## -# # -# Variable Name: innodb_concurrency_tickets # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 500 # -# Range: 1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -#Description:Test Cases of Dynamic System Variable innodb_concurrency_tickets # -# 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 # -# # -############################################################################### - ---source include/have_innodb.inc ---source include/load_sysvars.inc - -######################################################################## -# START OF innodb_concurrency_tickets TESTS # -######################################################################## - - -################################################################################ -# Saving initial value of innodb_concurrency_tickets in a temporary variable # -################################################################################ - -SET @global_start_value = @@global.innodb_concurrency_tickets; -SELECT @global_start_value; - ---echo '#--------------------FN_DYNVARS_046_01------------------------#' -######################################################################## -# Display the DEFAULT value of innodb_concurrency_tickets # -######################################################################## - -SET @@global.innodb_concurrency_tickets = 0; -SET @@global.innodb_concurrency_tickets = DEFAULT; -SELECT @@global.innodb_concurrency_tickets; - ---echo '#---------------------FN_DYNVARS_046_02-------------------------#' -################################################################################ -# Check if innodb_concurrency_tickets can be accessed with and without @@ sign # -################################################################################ - ---Error ER_GLOBAL_VARIABLE -SET innodb_concurrency_tickets = 1; -SELECT @@innodb_concurrency_tickets; - ---Error ER_UNKNOWN_TABLE -SELECT local.innodb_concurrency_tickets; - - -SET global innodb_concurrency_tickets = 0; -SELECT @@global.innodb_concurrency_tickets; - - ---echo '#--------------------FN_DYNVARS_046_03------------------------#' -########################################################################## -# change the value of innodb_concurrency_tickets to a valid value # -########################################################################## - - -SET @@global.innodb_concurrency_tickets = 1; -SELECT @@global.innodb_concurrency_tickets; - -SET @@global.innodb_concurrency_tickets = 1000; -SELECT @@global.innodb_concurrency_tickets; - -SET @@global.innodb_concurrency_tickets = 4294967295; -SELECT @@global.innodb_concurrency_tickets; - - ---echo '#--------------------FN_DYNVARS_046_04-------------------------#' -########################################################################### -# Change the value of innodb_concurrency_tickets to invalid value # -########################################################################### - -SET @@global.innodb_concurrency_tickets = -1; -SELECT @@global.innodb_concurrency_tickets; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_concurrency_tickets = "T"; -SELECT @@global.innodb_concurrency_tickets; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_concurrency_tickets = "Y"; -SELECT @@global.innodb_concurrency_tickets; - -SET @@global.innodb_concurrency_tickets = 1001; -SELECT @@global.innodb_concurrency_tickets; - ---echo '#----------------------FN_DYNVARS_046_05------------------------#' -######################################################################### -# Check if the value in GLOBAL Table matches value in variable # -######################################################################### - -SELECT @@global.innodb_concurrency_tickets = - VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='innodb_concurrency_tickets'; -SELECT @@global.innodb_concurrency_tickets; -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='innodb_concurrency_tickets'; - ---echo '#---------------------FN_DYNVARS_046_06-------------------------#' -################################################################### -# Check if ON and OFF values can be used on variable # -################################################################### - ---ERROR ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_concurrency_tickets = OFF; -SELECT @@global.innodb_concurrency_tickets; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_concurrency_tickets = ON; -SELECT @@global.innodb_concurrency_tickets; - ---echo '#---------------------FN_DYNVARS_046_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.innodb_concurrency_tickets = TRUE; -SELECT @@global.innodb_concurrency_tickets; -SET @@global.innodb_concurrency_tickets = FALSE; -SELECT @@global.innodb_concurrency_tickets; - -############################## -# Restore initial value # -############################## - -SET @@global.innodb_concurrency_tickets = @global_start_value; -SELECT @@global.innodb_concurrency_tickets; - -############################################################### -# END OF innodb_concurrency_tickets TESTS # -############################################################### - diff --git a/mysql-test/include/innodb_max_purge_lag_basic.inc b/mysql-test/include/innodb_max_purge_lag_basic.inc deleted file mode 100644 index 9e6b8201e3d..00000000000 --- a/mysql-test/include/innodb_max_purge_lag_basic.inc +++ /dev/null @@ -1,147 +0,0 @@ -################# mysql-test\t\innodb_max_purge_lag_basic.test ################ -# # -# Variable Name: innodb_max_purge_lag # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 0 # -# Range: 0-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -#Description:Test Cases of Dynamic System Variable innodb_max_purge_lag # -# 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 # -# # -############################################################################### - ---source include/have_innodb.inc ---source include/load_sysvars.inc - -######################################################################## -# START OF innodb_max_purge_lag TESTS # -######################################################################## - -################################################################################ -# Saving initial value of innodb_max_purge_lag in a temporary variable # -################################################################################ - -SET @global_start_value = @@global.innodb_max_purge_lag; -SELECT @global_start_value; - ---echo '#--------------------FN_DYNVARS_046_01------------------------#' -######################################################################## -# Display the DEFAULT value of innodb_max_purge_lag # -######################################################################## - -SET @@global.innodb_max_purge_lag = 0; -SET @@global.innodb_max_purge_lag = DEFAULT; -SELECT @@global.innodb_max_purge_lag; - ---echo '#---------------------FN_DYNVARS_046_02-------------------------#' -############################################################################ -# Check if innodb_max_purge_lag can be accessed with and without @@ sign # -############################################################################ - ---Error ER_GLOBAL_VARIABLE -SET innodb_max_purge_lag = 1; -SELECT @@innodb_max_purge_lag; - ---Error ER_UNKNOWN_TABLE -SELECT local.innodb_max_purge_lag; - -SET global innodb_max_purge_lag = 0; -SELECT @@global.innodb_max_purge_lag; - ---echo '#--------------------FN_DYNVARS_046_03------------------------#' -########################################################################## -# change the value of innodb_max_purge_lag to a valid value # -########################################################################## - - -SET @@global.innodb_max_purge_lag = 0; -SELECT @@global.innodb_max_purge_lag; - -SET @@global.innodb_max_purge_lag = 1; -SELECT @@global.innodb_max_purge_lag; -SET @@global.innodb_max_purge_lag = 4294967295; -SELECT @@global.innodb_max_purge_lag; - ---echo '#--------------------FN_DYNVARS_046_04-------------------------#' -########################################################################### -# Change the value of innodb_max_purge_lag to invalid value # -########################################################################### - -SET @@global.innodb_max_purge_lag = -1; -SELECT @@global.innodb_max_purge_lag; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_max_purge_lag = "T"; -SELECT @@global.innodb_max_purge_lag; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_max_purge_lag = "Y"; -SELECT @@global.innodb_max_purge_lag; - - -SET @@global.innodb_max_purge_lag = 1001; -SELECT @@global.innodb_max_purge_lag; - ---echo '#----------------------FN_DYNVARS_046_05------------------------#' -######################################################################### -# Check if the value in GLOBAL Table matches value in variable # -######################################################################### - -SELECT @@global.innodb_max_purge_lag = - VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='innodb_max_purge_lag'; -SELECT @@global.innodb_max_purge_lag; -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='innodb_max_purge_lag'; - - - - ---echo '#---------------------FN_DYNVARS_046_06-------------------------#' -################################################################### -# Check if ON and OFF values can be used on variable # -################################################################### - ---ERROR ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_max_purge_lag = OFF; -SELECT @@global.innodb_max_purge_lag; - ---ERROR ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_max_purge_lag = ON; -SELECT @@global.innodb_max_purge_lag; - ---echo '#---------------------FN_DYNVARS_046_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - - -SET @@global.innodb_max_purge_lag = TRUE; -SELECT @@global.innodb_max_purge_lag; -SET @@global.innodb_max_purge_lag = FALSE; -SELECT @@global.innodb_max_purge_lag; - -############################## -# Restore initial value # -############################## - - -SET @@global.innodb_max_purge_lag = @global_start_value; -SELECT @@global.innodb_max_purge_lag; - -############################################################### -# END OF innodb_max_purge_lag TESTS # -############################################################### diff --git a/mysql-test/include/innodb_sync_spin_loops_basic.inc b/mysql-test/include/innodb_sync_spin_loops_basic.inc deleted file mode 100644 index 35460fe47f2..00000000000 --- a/mysql-test/include/innodb_sync_spin_loops_basic.inc +++ /dev/null @@ -1,142 +0,0 @@ -################# mysql-test\t\innodb_sync_spin_loops_basic.test ############## -# # -# Variable Name: innodb_sync_spin_loops # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 20 # -# Range: 0-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -#Description:Test Cases of Dynamic System Variable innodb_sync_spin_loops # -# 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 # -# # -############################################################################### - ---source include/have_innodb.inc ---source include/load_sysvars.inc - -######################################################################## -# START OF innodb_sync_spin_loops TESTS # -######################################################################## - - -############################################################################ -# Saving initial value of innodb_sync_spin_loops in a temporary variable # -############################################################################ - -SET @global_start_value = @@global.innodb_sync_spin_loops; -SELECT @global_start_value; - ---echo '#--------------------FN_DYNVARS_046_01------------------------#' -######################################################################## -# Display the DEFAULT value of innodb_sync_spin_loops # -######################################################################## - -SET @@global.innodb_sync_spin_loops = 0; -SET @@global.innodb_sync_spin_loops = DEFAULT; -SELECT @@global.innodb_sync_spin_loops; - ---echo '#---------------------FN_DYNVARS_046_02-------------------------#' -############################################################################## -# Check if innodb_sync_spin_loops can be accessed with and without @@ sign # -############################################################################## - ---Error ER_GLOBAL_VARIABLE -SET innodb_sync_spin_loops = 1; -SELECT @@innodb_sync_spin_loops; - ---Error ER_UNKNOWN_TABLE -SELECT local.innodb_sync_spin_loops; - -SET global innodb_sync_spin_loops = 0; -SELECT @@global.innodb_sync_spin_loops; - ---echo '#--------------------FN_DYNVARS_046_03------------------------#' -########################################################################## -# change the value of innodb_sync_spin_loops to a valid value # -########################################################################## - -SET @@global.innodb_sync_spin_loops = 0; -SELECT @@global.innodb_sync_spin_loops; - -SET @@global.innodb_sync_spin_loops = 1; -SELECT @@global.innodb_sync_spin_loops; -SET @@global.innodb_sync_spin_loops = 1000; -SELECT @@global.innodb_sync_spin_loops; - ---echo '#--------------------FN_DYNVARS_046_04-------------------------#' -########################################################################### -# Change the value of innodb_sync_spin_loops to invalid value # -########################################################################### - -SET @@global.innodb_sync_spin_loops = -1; -SELECT @@global.innodb_sync_spin_loops; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_sync_spin_loops = "T"; -SELECT @@global.innodb_sync_spin_loops; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_sync_spin_loops = "Y"; -SELECT @@global.innodb_sync_spin_loops; - -SET @@global.innodb_sync_spin_loops = 1001; -SELECT @@global.innodb_sync_spin_loops; - ---echo '#----------------------FN_DYNVARS_046_05------------------------#' -######################################################################### -# Check if the value in GLOBAL Table matches value in variable # -######################################################################### - -SELECT @@global.innodb_sync_spin_loops = - VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='innodb_sync_spin_loops'; -SELECT @@global.innodb_sync_spin_loops; -SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='innodb_sync_spin_loops'; - ---echo '#---------------------FN_DYNVARS_046_06-------------------------#' -################################################################### -# Check if ON and OFF values can be used on variable # -################################################################### - ---ERROR ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_sync_spin_loops = OFF; -SELECT @@global.innodb_sync_spin_loops; - ---ERROR ER_WRONG_TYPE_FOR_VAR -SET @@global.innodb_sync_spin_loops = ON; -SELECT @@global.innodb_sync_spin_loops; - ---echo '#---------------------FN_DYNVARS_046_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - - -SET @@global.innodb_sync_spin_loops = TRUE; -SELECT @@global.innodb_sync_spin_loops; -SET @@global.innodb_sync_spin_loops = FALSE; -SELECT @@global.innodb_sync_spin_loops; - -############################## -# Restore initial value # -############################## - -SET @@global.innodb_sync_spin_loops = @global_start_value; -SELECT @@global.innodb_sync_spin_loops; - -############################################################### -# END OF innodb_sync_spin_loops TESTS # -############################################################### diff --git a/mysql-test/include/join_buffer_size_basic.inc b/mysql-test/include/join_buffer_size_basic.inc deleted file mode 100644 index 880dac4cac4..00000000000 --- a/mysql-test/include/join_buffer_size_basic.inc +++ /dev/null @@ -1,216 +0,0 @@ -############## mysql-test\t\join_buffer_size_basic.test ############### -# # -# Variable Name: join_buffer_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 131072 # -# Range: 8200-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable join_buffer_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################ -# START OF join_buffer_size TESTS # -################################################################ - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.join_buffer_size; -SELECT @start_global_value; -SET @start_session_value = @@session.join_buffer_size; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_053_01-------------------------#' -################################################################ -# Display the DEFAULT value of join_buffer_size # -################################################################ - -SET @@global.join_buffer_size = 8200; -SET @@global.join_buffer_size = DEFAULT; -SELECT @@global.join_buffer_size; - -SET @@session.join_buffer_size = 8200; -SET @@session.join_buffer_size = DEFAULT; -SELECT @@session.join_buffer_size; - - ---echo '#--------------------FN_DYNVARS_053_02-------------------------#' -################################################################### -# Check the DEFAULT value of join_buffer_size # -################################################################### - -SET @@global.join_buffer_size = DEFAULT; -SELECT @@global.join_buffer_size = 131072; - -SET @@session.join_buffer_size = DEFAULT; -SELECT @@session.join_buffer_size = 131072; - - ---echo '#--------------------FN_DYNVARS_053_03-------------------------#' -########################################################################## -# Change the value of join_buffer_size to a valid value for GLOBAL Scope # -########################################################################## - -SET @@global.join_buffer_size = 8200; -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -SET @@global.join_buffer_size = 65536; -SELECT @@global.join_buffer_size; -SET @@global.join_buffer_size = 4294967295; -SELECT @@global.join_buffer_size; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - - ---echo '#--------------------FN_DYNVARS_053_04-------------------------#' -########################################################################### -# Change the value of join_buffer_size to a valid value for SESSION Scope # -########################################################################### - -SET @@session.join_buffer_size = 8200; -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -SET @@session.join_buffer_size = 65536; -SELECT @@session.join_buffer_size; -SET @@session.join_buffer_size = 4294967295; -SELECT @@session.join_buffer_size; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - - ---echo '#------------------FN_DYNVARS_053_05-----------------------#' -############################################################ -# Change the value of join_buffer_size to an invalid value # -############################################################ - -SET @@global.join_buffer_size = 0; -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -SET @@global.join_buffer_size = -1024; -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -SET @@global.join_buffer_size = 8199; -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -SET @@global.join_buffer_size = 42949672951; -SELECT @@global.join_buffer_size; - ---Error ER_PARSE_ERROR -SET @@global.join_buffer_size = 65530.34.; -SELECT @@global.join_buffer_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.join_buffer_size = test; -SELECT @@global.join_buffer_size; - -SET @@session.join_buffer_size = 0; -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -SET @@session.join_buffer_size = -2; -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -SET @@session.join_buffer_size = 8199; -SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; -SET @@session.join_buffer_size = 42949672951; -SELECT @@session.join_buffer_size; - ---Error ER_PARSE_ERROR -SET @@session.join_buffer_size = 65530.34.; -SELECT @@session.join_buffer_size; -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.join_buffer_size = test; -SELECT @@session.join_buffer_size; - - ---echo '#------------------FN_DYNVARS_053_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.join_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='join_buffer_size'; - ---echo '#------------------FN_DYNVARS_053_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.join_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='join_buffer_size'; - - ---echo '#------------------FN_DYNVARS_053_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.join_buffer_size = TRUE; -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; -SET @@global.join_buffer_size = FALSE; -SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; ---echo 'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.join_buffer_size = 10; -SELECT @@join_buffer_size = @@global.join_buffer_size; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@join_buffer_size = 100; -SELECT @@join_buffer_size = @@local.join_buffer_size; -SELECT @@local.join_buffer_size = @@session.join_buffer_size; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -############################################################################## -# Check if join_buffer_size can be accessed with and without @@ sign # -############################################################################## - -SET join_buffer_size = 1; -SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228; ---Error ER_UNKNOWN_TABLE -SELECT local.join_buffer_size; ---Error ER_UNKNOWN_TABLE -SELECT session.join_buffer_size; ---Error ER_BAD_FIELD_ERROR -SELECT join_buffer_size = @@session.join_buffer_size; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.join_buffer_size = @start_global_value; -SELECT @@global.join_buffer_size; -SET @@session.join_buffer_size = @start_session_value; -SELECT @@session.join_buffer_size; - - -######################################################## -# END OF join_buffer_size TESTS # -######################################################## - diff --git a/mysql-test/include/key_buffer_size_basic.inc b/mysql-test/include/key_buffer_size_basic.inc deleted file mode 100644 index 996a9e712f9..00000000000 --- a/mysql-test/include/key_buffer_size_basic.inc +++ /dev/null @@ -1,187 +0,0 @@ -############## mysql-test\t\key_buffer_size_basic.test ######################## -# # -# Variable Name: key_buffer_size # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 131072 # -# Range:8-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable key_buffer_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 # -# # -############################################################################### -# Changes: # -# 2008-03-06 hhunger Got "lost connections with 5.1.24 # -######################################################################## - ---source include/load_sysvars.inc - -######################################################################## -# START OF key_buffer_size TESTS # -######################################################################## - ---disable_warnings -######################################################################## -# Saving initial value of key_buffer_size in a temporary variable # -######################################################################## - -SET @start_value = @@global.key_buffer_size; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_055_01------------------------#' -######################################################################## -# Display the DEFAULT value of key_buffer_size # -######################################################################## - -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; - - ---echo '#---------------------FN_DYNVARS_055_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.key_buffer_size = @start_value; -SELECT @@global.key_buffer_size = @start_value; - ---echo '#--------------------FN_DYNVARS_055_03------------------------#' -######################################################################## -# 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; ---disable_warnings -#Due to "lost connection" -#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; -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" -#SET @@global.key_buffer_size = -1; -#SELECT @@global.key_buffer_size; -#SET @@global.key_buffer_size = 100000000000; -#SELECT @@global.key_buffer_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_buffer_size = 10000.01; -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'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_buffer_size = ON; -SELECT @@global.key_buffer_size = @min_key_buffer_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_buffer_size = 'test'; -SELECT @@global.key_buffer_size = @min_key_buffer_size; - - ---echo '#-------------------FN_DYNVARS_055_05----------------------------#' -########################################################################### -# Test if accessing session key_buffer_size gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.key_buffer_size = 0; -SELECT @@key_buffer_size = @min_key_buffer_size; - - ---echo '#----------------------FN_DYNVARS_055_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.key_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_buffer_size'; - -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; -SET @@global.key_buffer_size = FALSE; -SELECT @@global.key_buffer_size = @min_key_buffer_size; - - ---echo '#---------------------FN_DYNVARS_055_08----------------------#' -##################################################################### -# Check if accessing variable with SESSION,LOCAL and without SCOPE # -# points to same session variable # -##################################################################### - -# due to differences in contents of the warnings ---disable_warnings -SET @@global.key_buffer_size = @min_key_buffer_size; -SELECT @@key_buffer_size = @@global.key_buffer_size; ---enable_warnings - ---echo '#---------------------FN_DYNVARS_055_09----------------------#' -########################################################################## -# Check if key_buffer_size can be accessed with and without @@ sign # -########################################################################## - ---Error ER_GLOBAL_VARIABLE -SET key_buffer_size = @min_key_buffer_size; -SELECT @@key_buffer_size = @min_key_buffer_size; ---Error ER_PARSE_ERROR -SET local.key_buffer_size = 10; ---Error ER_UNKNOWN_TABLE -SELECT local.key_buffer_size; ---Error ER_PARSE_ERROR -SET global.key_buffer_size = 10; ---Error ER_UNKNOWN_TABLE -SELECT global.key_buffer_size; ---Error ER_BAD_FIELD_ERROR -SELECT key_buffer_size = @@session.key_buffer_size; - - -############################## -# Restore initial value # -############################## - -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/include/key_cache_age_threshold_basic.inc b/mysql-test/include/key_cache_age_threshold_basic.inc deleted file mode 100644 index 7841ad2cedc..00000000000 --- a/mysql-test/include/key_cache_age_threshold_basic.inc +++ /dev/null @@ -1,180 +0,0 @@ -############## mysql-test\t\key_cache_age_threshold_basic.test ############### -# # -# Variable Name: key_cache_age_threshold # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 300 # -# Range: 100-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable key_cache_age_threshold # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -######################################################################## -# START OF key_cache_age_threshold TESTS # -######################################################################## - - -############################################################################# -# Saving initial value of key_cache_age_threshold in a temporary variable # -############################################################################# - -SET @start_value = @@global.key_cache_age_threshold; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_056_01------------------------#' -################################################################################ -# Display the DEFAULT value of key_cache_age_threshold # -################################################################################ - -SET @@global.key_cache_age_threshold = 99; ---Error ER_NO_DEFAULT -SET @@global.key_cache_age_threshold = DEFAULT; ---echo 'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_cache_age_threshold; - - ---echo '#---------------------FN_DYNVARS_056_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.key_cache_age_threshold = @start_value; -SELECT @@global.key_cache_age_threshold = 300; - - ---echo '#--------------------FN_DYNVARS_056_03------------------------#' -############################################################################### -# Change the value of key_cache_age_threshold to a valid value # -############################################################################### - -SET @@global.key_cache_age_threshold = 100; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = 4294967295; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = 1800; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = 65535; -SELECT @@global.key_cache_age_threshold; ---echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; - - ---echo '#--------------------FN_DYNVARS_056_04-------------------------#' -########################################################################### -# Change the value of key_cache_age_threshold to invalid value # -########################################################################### - -SET @@global.key_cache_age_threshold = -1; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = 42949672951; -SELECT @@global.key_cache_age_threshold; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_age_threshold = 10000.01; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = -1024; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = 99; -SELECT @@global.key_cache_age_threshold; - -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_age_threshold = ON; -SELECT @@global.key_cache_age_threshold; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_age_threshold = 'test'; -SELECT @@global.key_cache_age_threshold; - - ---echo '#-------------------FN_DYNVARS_056_05----------------------------#' -########################################################################### -# Test if accessing session key_cache_age_threshold gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.key_cache_age_threshold = 0; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.key_cache_age_threshold; - - ---echo '#----------------------FN_DYNVARS_056_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.key_cache_age_threshold = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_age_threshold'; - -SELECT @@key_cache_age_threshold = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_age_threshold'; - - ---echo '#---------------------FN_DYNVARS_056_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.key_cache_age_threshold = TRUE; -SELECT @@global.key_cache_age_threshold; -SET @@global.key_cache_age_threshold = FALSE; -SELECT @@global.key_cache_age_threshold; - - ---echo '#---------------------FN_DYNVARS_056_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.key_cache_age_threshold = 101; -SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold; - - ---echo '#---------------------FN_DYNVARS_056_09----------------------#' -########################################################################## ####### -# Check if key_cache_age_threshold can be accessed with and without @@ sign # -################################################################################## - ---Error ER_GLOBAL_VARIABLE -SET key_cache_age_threshold = 8000; -SELECT @@key_cache_age_threshold; ---Error ER_PARSE_ERROR -SET local.key_cache_age_threshold = 10; ---Error ER_UNKNOWN_TABLE -SELECT local.key_cache_age_threshold; ---Error ER_PARSE_ERROR -SET global.key_cache_age_threshold = 10; ---Error ER_UNKNOWN_TABLE -SELECT global.key_cache_age_threshold; ---Error ER_BAD_FIELD_ERROR -SELECT key_cache_age_threshold = @@session.key_cache_age_threshold; - - -############################## -# Restore initial value # -############################## - -SET @@global.key_cache_age_threshold = @start_value; -SELECT @@global.key_cache_age_threshold; - - -######################################################################## -# END OF key_cache_age_threshold TESTS # -######################################################################## diff --git a/mysql-test/include/key_cache_block_size_basic.inc b/mysql-test/include/key_cache_block_size_basic.inc deleted file mode 100644 index b12ea45b762..00000000000 --- a/mysql-test/include/key_cache_block_size_basic.inc +++ /dev/null @@ -1,185 +0,0 @@ -############## mysql-test\t\key_cache_block_size_basic.test ############### -# # -# Variable Name: key_cache_block_size # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric 1024 # -# Default Value: # -# Range: 512-16384 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable key_cache_block_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -##################################################################### -# START OF key_cache_block_size TESTS # -##################################################################### - - -########################################################################## -# Saving initial value of key_cache_block_size in a temporary variable # -########################################################################## - -SET @start_value = @@global.key_cache_block_size; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_057_01------------------------#' -################################################################################ -# Display the DEFAULT value of key_cache_block_size # -################################################################################ - -SET @@global.key_cache_block_size = 600; ---Error ER_NO_DEFAULT -SET @@global.key_cache_block_size = DEFAULT; ---echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; -SELECT @@global.key_cache_block_size; - - ---echo '#---------------------FN_DYNVARS_057_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.key_cache_block_size = @start_value; -SELECT @@global.key_cache_block_size = 1024; - - ---echo '#--------------------FN_DYNVARS_057_03------------------------#' -############################################################################### -# Change the value of key_cache_block_size to a valid value # -############################################################################### - -SET @@global.key_cache_block_size = 1024; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 16384; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 1800; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 16383; -SELECT @@global.key_cache_block_size; ---echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; - - ---echo '#--------------------FN_DYNVARS_057_04-------------------------#' -########################################################################### -# Change the value of key_cache_block_size to invalid value # -########################################################################### - -SET @@global.key_cache_block_size = -1; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 42949672951; -SELECT @@global.key_cache_block_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_block_size = 10000.01; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = -1024; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 256; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 511; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = 16385; -SELECT @@global.key_cache_block_size; - -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_block_size = ON; -SELECT @@global.key_cache_block_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_block_size = 'test'; -SELECT @@global.key_cache_block_size; - - ---echo '#-------------------FN_DYNVARS_057_05----------------------------#' -########################################################################### -# Test if accessing session key_cache_block_size gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.key_cache_block_size = 0; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.key_cache_block_size; - - ---echo '#----------------------FN_DYNVARS_057_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.key_cache_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_block_size'; - -SELECT @@key_cache_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_block_size'; - - ---echo '#---------------------FN_DYNVARS_057_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.key_cache_block_size = TRUE; -SELECT @@global.key_cache_block_size; -SET @@global.key_cache_block_size = FALSE; -SELECT @@global.key_cache_block_size; - - ---echo '#---------------------FN_DYNVARS_057_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.key_cache_block_size = 1024; -SELECT @@key_cache_block_size = @@global.key_cache_block_size; - - ---echo '#---------------------FN_DYNVARS_057_09----------------------#' -############################################################################### -# Check if key_cache_block_size can be accessed with and without @@ sign # -###############################################################################; - ---Error ER_GLOBAL_VARIABLE -SET key_cache_block_size = 8000; -SELECT @@key_cache_block_size; ---Error ER_PARSE_ERROR -SET local.key_cache_block_size = 10; ---Error ER_UNKNOWN_TABLE -SELECT local.key_cache_block_size; ---Error ER_PARSE_ERROR -SET global.key_cache_block_size = 10; ---Error ER_UNKNOWN_TABLE -SELECT global.key_cache_block_size; ---Error ER_BAD_FIELD_ERROR -SELECT key_cache_block_size = @@session.key_cache_block_size; - - -############################## -# Restore initial value # -############################## - -SET @@global.key_cache_block_size = @start_value; -SELECT @@global.key_cache_block_size; - - -##################################################################### -# END OF key_cache_block_size TESTS # -##################################################################### - diff --git a/mysql-test/include/key_cache_division_limit_basic.inc b/mysql-test/include/key_cache_division_limit_basic.inc deleted file mode 100644 index a2cc49a1f38..00000000000 --- a/mysql-test/include/key_cache_division_limit_basic.inc +++ /dev/null @@ -1,184 +0,0 @@ -############## mysql-test\t\key_cache_division_limit_basic.test ############### -# # -# Variable Name: key_cache_division_limit # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 100 # -# Range: 1-100 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable key_cache_division_limit # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -##################################################################### -# START OF key_cache_division_limit TESTS # -##################################################################### - - -############################################################################## -# Saving initial value of key_cache_division_limit in a temporary variable # -############################################################################## - -SET @start_value = @@global.key_cache_division_limit; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_058_01------------------------#' -################################################################################ -# Display the DEFAULT value of key_cache_division_limit # -################################################################################ - -SET @@global.key_cache_division_limit = 50; ---Error ER_NO_DEFAULT -SET @@global.key_cache_division_limit = DEFAULT; ---echo 'Bug# 34878: This variable has default value according to documentation'; -SELECT @@global.key_cache_division_limit; - - ---echo '#---------------------FN_DYNVARS_058_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.key_cache_division_limit = @start_value; -SELECT @@global.key_cache_division_limit = 100; - - ---echo '#--------------------FN_DYNVARS_058_03------------------------#' -############################################################################### -# Change the value of key_cache_division_limit to a valid value # -############################################################################### - -SET @@global.key_cache_division_limit = 1; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 50; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 99; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 2; -SELECT @@global.key_cache_division_limit; - - ---echo '#--------------------FN_DYNVARS_058_04-------------------------#' -########################################################################### -# Change the value of key_cache_division_limit to invalid value # -########################################################################### - -SET @@global.key_cache_division_limit = -1; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 101; -SELECT @@global.key_cache_division_limit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_division_limit = 10000.01; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = -1024; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 0; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 200; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = 65535; -SELECT @@global.key_cache_division_limit; - -echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_division_limit = ON; -SELECT @@global.key_cache_division_limit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.key_cache_division_limit = 'test'; -SELECT @@global.key_cache_division_limit; - - ---echo '#-------------------FN_DYNVARS_058_05----------------------------#' -########################################################################### -# Test if accessing session key_cache_division_limit gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.key_cache_division_limit = 0; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.key_cache_division_limit; - - ---echo '#----------------------FN_DYNVARS_058_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.key_cache_division_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='key_cache_division_limit'; - -SELECT @@key_cache_division_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='key_cache_division_limit'; - - ---echo '#---------------------FN_DYNVARS_058_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.key_cache_division_limit = TRUE; -SELECT @@global.key_cache_division_limit; -SET @@global.key_cache_division_limit = FALSE; -SELECT @@global.key_cache_division_limit; - - ---echo '#---------------------FN_DYNVARS_058_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.key_cache_division_limit = 90; -SELECT @@key_cache_division_limit = @@global.key_cache_division_limit; - - ---echo '#---------------------FN_DYNVARS_058_09----------------------#' -############################################################################### -# Check if key_cache_division_limit can be accessed with and without @@ sign # -###############################################################################; - ---Error ER_GLOBAL_VARIABLE -SET key_cache_division_limit = 80; -SELECT @@key_cache_division_limit; ---Error ER_PARSE_ERROR -SET local.key_cache_division_limit = 10; ---Error ER_UNKNOWN_TABLE -SELECT local.key_cache_division_limit; ---Error ER_PARSE_ERROR -SET global.key_cache_division_limit = 10; ---Error ER_UNKNOWN_TABLE -SELECT global.key_cache_division_limit; ---Error ER_BAD_FIELD_ERROR -SELECT key_cache_division_limit = @@session.key_cache_division_limit; - - -############################## -# Restore initial value # -############################## - -SET @@global.key_cache_division_limit = @start_value; -SELECT @@global.key_cache_division_limit; - - -##################################################################### -# END OF key_cache_division_limit TESTS # -##################################################################### - diff --git a/mysql-test/include/log_warnings_basic.inc b/mysql-test/include/log_warnings_basic.inc deleted file mode 100644 index cd7e1023649..00000000000 --- a/mysql-test/include/log_warnings_basic.inc +++ /dev/null @@ -1,210 +0,0 @@ -############## mysql-test\t\log_warnings_basic.test ############### -# # -# Variable Name: log_warnings # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 1 # -# Range: - # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable log_warnings # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -############################################################ -# START OF log_warnings TESTS # -############################################################ - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.log_warnings; -SELECT @start_global_value; -SET @start_session_value = @@session.log_warnings; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_067_01-------------------------#' -######################################################################## -# Display the DEFAULT value of log_warnings # -######################################################################## - -SET @@global.log_warnings = 100; -SET @@global.log_warnings = DEFAULT; -SELECT @@global.log_warnings; - -SET @@session.log_warnings = 200; -SET @@session.log_warnings = DEFAULT; -SELECT @@session.log_warnings; - - ---echo '#--------------------FN_DYNVARS_067_02-------------------------#' -######################################################################## -# Check the DEFAULT value of log_warnings # -######################################################################## - -SET @@global.log_warnings = DEFAULT; -SELECT @@global.log_warnings = 1; - -SET @@session.log_warnings = DEFAULT; -SELECT @@session.log_warnings = 1; - - ---echo '#--------------------FN_DYNVARS_067_03-------------------------#' -###################################################################### -# Change the value of log_warnings to a valid value for GLOBAL Scope # -###################################################################### - -SET @@global.log_warnings = 0; -SELECT @@global.log_warnings; -SET @@global.log_warnings = 1; -SELECT @@global.log_warnings; -SET @@global.log_warnings = 60020; -SELECT @@global.log_warnings; -SET @@global.log_warnings = 65535; -SELECT @@global.log_warnings; -SET @@global.log_warnings = 65536; -SELECT @@global.log_warnings; - - ---echo '#--------------------FN_DYNVARS_067_04-------------------------#' -####################################################################### -# Change the value of log_warnings to a valid value for SESSION Scope # -####################################################################### - -SET @@session.log_warnings = 0; -SELECT @@session.log_warnings; -SET @@session.log_warnings = 1; -SELECT @@session.log_warnings; -SET @@session.log_warnings = 50050; -SELECT @@session.log_warnings; -SET @@session.log_warnings = 65535; -SELECT @@session.log_warnings; -SET @@session.log_warnings = 65550; -SELECT @@session.log_warnings; - - ---echo '#------------------FN_DYNVARS_067_05-----------------------#' -######################################################## -# Change the value of log_warnings to an invalid value # -######################################################## - -SET @@global.log_warnings = 100000000000; -SELECT @@global.log_warnings; -SET @@global.log_warnings = -1024; -SELECT @@global.log_warnings; ---Error ER_PARSE_ERROR -SET @@global.log_warnings = 65530.34.; -SELECT @@global.log_warnings; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.log_warnings = test; -SELECT @@global.log_warnings; - -SET @@session.log_warnings = 100000000000; -SELECT @@session.log_warnings; -SET @@session.log_warnings = -2; -SELECT @@session.log_warnings; ---Error ER_PARSE_ERROR -SET @@session.log_warnings = 65530.34.; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.log_warnings = test; -SELECT @@session.log_warnings; - - ---echo '#------------------FN_DYNVARS_067_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.log_warnings = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='log_warnings'; - ---echo '#------------------FN_DYNVARS_067_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.log_warnings = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='log_warnings'; - - ---echo '#------------------FN_DYNVARS_067_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.log_warnings = TRUE; -SELECT @@global.log_warnings; -SET @@global.log_warnings = FALSE; -SELECT @@global.log_warnings; - - ---echo '#---------------------FN_DYNVARS_067_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.log_warnings = 10; -SELECT @@log_warnings = @@global.log_warnings; - - ---echo '#---------------------FN_DYNVARS_067_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@log_warnings = 100; -SELECT @@log_warnings = @@local.log_warnings; -SELECT @@local.log_warnings = @@session.log_warnings; - - ---echo '#---------------------FN_DYNVARS_067_11----------------------#' -####################################################################### -# Check if log_warnings can be accessed with and without @@ sign # -####################################################################### - -SET log_warnings = 1; -SELECT @@log_warnings; ---Error ER_UNKNOWN_TABLE -SELECT local.log_warnings; ---Error ER_UNKNOWN_TABLE -SELECT session.log_warnings; ---Error ER_BAD_FIELD_ERROR -SELECT log_warnings = @@session.log_warnings; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.log_warnings = @start_global_value; -SELECT @@global.log_warnings; -SET @@session.log_warnings = @start_session_value; -SELECT @@session.log_warnings; - - -############################################################# -# END OF log_warnings TESTS # -############################################################# - diff --git a/mysql-test/include/max_binlog_cache_size_basic.inc b/mysql-test/include/max_binlog_cache_size_basic.inc deleted file mode 100644 index 9f3416d2e31..00000000000 --- a/mysql-test/include/max_binlog_cache_size_basic.inc +++ /dev/null @@ -1,187 +0,0 @@ -############## mysql-test\t\max_binlog_cache_size_basic.test ############### -# # -# Variable Name: max_binlog_cache_size # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value:4294967295 # -# Range: 4096-4294967295 # -# # -# # -# # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable max_binlog_cache_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -######################################################################## -# START OF max_binlog_cache_size TESTS # -######################################################################## - - -######################################################################## -# Saving initial value of max_binlog_cache_size in a temporary variable# -######################################################################## - -SET @start_value = @@global.max_binlog_cache_size; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_072_01------------------------#' -######################################################################## -# Display the DEFAULT value of max_binlog_cache_size # -######################################################################## - -SET @@global.max_binlog_cache_size = 5000; -SET @@global.max_binlog_cache_size = DEFAULT; -SELECT @@global.max_binlog_cache_size; - - ---echo '#---------------------FN_DYNVARS_072_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.max_binlog_cache_size = @start_value; -SELECT @@global.max_binlog_cache_size = 4294967295; ---echo 'Bug# 34876: Incorrect Default Value is assigned to variable'; - ---echo '#--------------------FN_DYNVARS_072_03------------------------#' -######################################################################## -# Change the value of max_binlog_cache_size to a valid value # -######################################################################## - -SET @@global.max_binlog_cache_size = 4096; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 4294967295; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 4294967294; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 4097; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 65535; -SELECT @@global.max_binlog_cache_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#--------------------FN_DYNVARS_072_04-------------------------#' -########################################################################### -# Change the value of max_binlog_cache_size to invalid value # -########################################################################### - -SET @@global.max_binlog_cache_size = -1; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 100000000000; -SELECT @@global.max_binlog_cache_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_binlog_cache_size = 10000.01; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = -1024; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 1024; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 4294967296; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = 4095; -SELECT @@global.max_binlog_cache_size; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_binlog_cache_size = ON; -SELECT @@global.max_binlog_cache_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_binlog_cache_size = 'test'; -SELECT @@global.max_binlog_cache_size; - - ---echo '#-------------------FN_DYNVARS_072_05----------------------------#' -########################################################################### -# Test if accessing session max_binlog_cache_size gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.max_binlog_cache_size = 4096; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.max_binlog_cache_size; - - ---echo '#----------------------FN_DYNVARS_072_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_binlog_cache_size'; - -SELECT @@max_binlog_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_binlog_cache_size'; - - ---echo '#---------------------FN_DYNVARS_072_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.max_binlog_cache_size = TRUE; -SELECT @@global.max_binlog_cache_size; -SET @@global.max_binlog_cache_size = FALSE; -SELECT @@global.max_binlog_cache_size; - - ---echo '#---------------------FN_DYNVARS_072_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.max_binlog_cache_size = 5000; -SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size; - - ---echo '#---------------------FN_DYNVARS_072_09----------------------#' -################################################################################ -# Check if max_binlog_cache_size can be accessed with and without @@ sign # -################################################################################ - ---Error ER_GLOBAL_VARIABLE -SET max_binlog_cache_size = 6000; -SELECT @@max_binlog_cache_size; ---Error ER_PARSE_ERROR -SET local.max_binlog_cache_size = 7000; ---Error ER_UNKNOWN_TABLE -SELECT local.max_binlog_cache_size; ---Error ER_PARSE_ERROR -SET global.max_binlog_cache_size = 8000; ---Error ER_UNKNOWN_TABLE -SELECT global.max_binlog_cache_size; ---Error ER_BAD_FIELD_ERROR -SELECT max_binlog_cache_size = @@session.max_binlog_cache_size; - - -############################## -# Restore initial value # -############################## - -SET @@global.max_binlog_cache_size = @start_value; -SELECT @@global.max_binlog_cache_size; - - -######################################################################## -# END OF max_binlog_cache_size TESTS # -######################################################################## diff --git a/mysql-test/include/max_connect_errors_basic.inc b/mysql-test/include/max_connect_errors_basic.inc deleted file mode 100644 index 530022652a1..00000000000 --- a/mysql-test/include/max_connect_errors_basic.inc +++ /dev/null @@ -1,182 +0,0 @@ -############## mysql-test\t\max_connect_errors_basic.test ############### -# # -# Variable Name: max_connect_errors # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 10 # -# Range: 1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable max_connect_errors # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################## -# START OF max_connect_errors TESTS # -################################################################## - - -###################################################################### -# Saving initial value of max_connect_errors in a temporary variable # -###################################################################### - -SET @start_value = @@global.max_connect_errors; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_073_01------------------------#' -################################################################## -# Display the DEFAULT value of max_connect_errors # -################################################################## - -SET @@global.max_connect_errors = 5000; -SET @@global.max_connect_errors = DEFAULT; -SELECT @@global.max_connect_errors; ---echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; - ---echo '#---------------------FN_DYNVARS_073_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.max_connect_errors = @start_value; -SELECT @@global.max_connect_errors = 10; - ---echo '#--------------------FN_DYNVARS_073_03------------------------#' -################################################################## -# Change the value of max_connect_errors to a valid value # -################################################################## - -SET @@global.max_connect_errors = 4096; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 4294967294; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 4294967295; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 1; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 2; -SELECT @@global.max_connect_errors; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#--------------------FN_DYNVARS_073_04-------------------------#' -##################################################################### -# Change the value of max_connect_errors to invalid value # -##################################################################### - -SET @@global.max_connect_errors = -1; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 100000000000; -SELECT @@global.max_connect_errors; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_connect_errors = 10000.01; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = -1024; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 0; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = 4294967296; -SELECT @@global.max_connect_errors; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_connect_errors = ON; -SELECT @@global.max_connect_errors; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_connect_errors = 'test'; -SELECT @@global.max_connect_errors; - - ---echo '#-------------------FN_DYNVARS_073_05----------------------------#' -##################################################################### -# Test if accessing session max_connect_errors gives error # -##################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.max_connect_errors = 4096; ---Error ER_INCORRECT_GLOBAL_LOCAL_VAR -SELECT @@session.max_connect_errors; - - ---echo '#----------------------FN_DYNVARS_073_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.max_connect_errors = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_connect_errors'; - -SELECT @@max_connect_errors = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_connect_errors'; - - ---echo '#---------------------FN_DYNVARS_073_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.max_connect_errors = TRUE; -SELECT @@global.max_connect_errors; -SET @@global.max_connect_errors = FALSE; -SELECT @@global.max_connect_errors; - - ---echo '#---------------------FN_DYNVARS_073_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.max_connect_errors = 5000; -SELECT @@max_connect_errors = @@global.max_connect_errors; - - ---echo '#---------------------FN_DYNVARS_073_09----------------------#' -########################################################################## -# Check if max_connect_errors can be accessed with and without @@ sign # -########################################################################## - ---Error ER_GLOBAL_VARIABLE -SET max_connect_errors = 6000; -SELECT @@max_connect_errors; ---Error ER_PARSE_ERROR -SET local.max_connect_errors = 7000; ---Error ER_UNKNOWN_TABLE -SELECT local.max_connect_errors; ---Error ER_PARSE_ERROR -SET global.max_connect_errors = 8000; ---Error ER_UNKNOWN_TABLE -SELECT global.max_connect_errors; ---Error ER_BAD_FIELD_ERROR -SELECT max_connect_errors = @@session.max_connect_errors; - - -############################## -# Restore initial value # -############################## - -SET @@global.max_connect_errors = @start_value; -SELECT @@global.max_connect_errors; - - -################################################################## -# END OF max_connect_errors TESTS # -################################################################## - diff --git a/mysql-test/include/max_heap_table_size_basic.inc b/mysql-test/include/max_heap_table_size_basic.inc deleted file mode 100644 index d07ae094cde..00000000000 --- a/mysql-test/include/max_heap_table_size_basic.inc +++ /dev/null @@ -1,222 +0,0 @@ -############## mysql-test\t\max_heap_table_size_basic.test ############### -# # -# Variable Name: max_heap_table_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 16777216 # -# Range: 16384-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable max_heap_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -############################################################### -# START OF max_heap_table_size TESTS # -############################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.max_heap_table_size; -SELECT @start_global_value; -SET @start_session_value = @@session.max_heap_table_size; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_077_01-------------------------#' -############################################################### -# Display the DEFAULT value of max_heap_table_size # -############################################################### - -SET @@global.max_heap_table_size = 1677721610; -SET @@global.max_heap_table_size = DEFAULT; -SELECT @@global.max_heap_table_size; - -SET @@session.max_heap_table_size = 1677721610; -SET @@session.max_heap_table_size = DEFAULT; -SELECT @@session.max_heap_table_size; - - ---echo '#--------------------FN_DYNVARS_077_02-------------------------#' -################################################################## -# Check the DEFAULT value of max_heap_table_size # -################################################################## - -SET @@global.max_heap_table_size = DEFAULT; -SELECT @@global.max_heap_table_size = 16777216; - -SET @@session.max_heap_table_size = DEFAULT; -SELECT @@session.max_heap_table_size = 16777216; - - ---echo '#--------------------FN_DYNVARS_077_03-------------------------#' -############################################################################ -# Change the value of max_heap_table_size to a valid value for GLOBAL Scope # -############################################################################ - -SET @@global.max_heap_table_size = 16384; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 16385; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 65535; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 4294967294; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 4294967295; -SELECT @@global.max_heap_table_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#--------------------FN_DYNVARS_077_04-------------------------#' -############################################################################# -# Change the value of max_heap_table_size to a valid value for SESSION Scope # -############################################################################# - -SET @@session.max_heap_table_size = 16384; -SELECT @@session.max_heap_table_size; -SET @@session.max_heap_table_size = 16385; -SELECT @@session.max_heap_table_size; -SET @@session.max_heap_table_size = 65535; -SELECT @@session.max_heap_table_size; -SET @@session.max_heap_table_size = 4294967294; -SELECT @@session.max_heap_table_size; -SET @@session.max_heap_table_size = 4294967295; -SELECT @@session.max_heap_table_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#------------------FN_DYNVARS_077_05-----------------------#' -############################################################## -# Change the value of max_heap_table_size to an invalid value # -############################################################## - -SET @@global.max_heap_table_size = -1; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = -1024; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 1024; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 16383; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = 4294967296; -SELECT @@global.max_heap_table_size; ---Error ER_PARSE_ERROR -SET @@global.max_heap_table_size = 65530.34.; -SELECT @@global.max_heap_table_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_heap_table_size = test; -SELECT @@global.max_heap_table_size; - -SET @@session.max_heap_table_size = -1; -SELECT @@session.max_heap_table_size; -SET @@session.max_heap_table_size = 16383; -SELECT @@session.max_heap_table_size; -SET @@session.max_heap_table_size = 4294967296; -SELECT @@session.max_heap_table_size; ---Error ER_PARSE_ERROR -SET @@session.max_heap_table_size = 65530.34.; -SET @@session.max_heap_table_size = 10737418241; -SELECT @@session.max_heap_table_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.max_heap_table_size = test; -SELECT @@session.max_heap_table_size; - - ---echo '#------------------FN_DYNVARS_077_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.max_heap_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_heap_table_size'; - ---echo '#------------------FN_DYNVARS_077_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.max_heap_table_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_heap_table_size'; - - ---echo '#------------------FN_DYNVARS_077_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.max_heap_table_size = TRUE; -SELECT @@global.max_heap_table_size; -SET @@global.max_heap_table_size = FALSE; -SELECT @@global.max_heap_table_size; - - ---echo '#---------------------FN_DYNVARS_077_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.max_heap_table_size = 163845; -SELECT @@max_heap_table_size = @@global.max_heap_table_size; - - ---echo '#---------------------FN_DYNVARS_077_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@max_heap_table_size = 16777216; -SELECT @@max_heap_table_size = @@local.max_heap_table_size; -SELECT @@local.max_heap_table_size = @@session.max_heap_table_size; - - ---echo '#---------------------FN_DYNVARS_077_11----------------------#' -############################################################################# -# Check if max_heap_table_size can be accessed with and without @@ sign # -############################################################################# - -SET max_heap_table_size = 316777216; -SELECT @@max_heap_table_size; ---Error ER_UNKNOWN_TABLE -SELECT local.max_heap_table_size; ---Error ER_UNKNOWN_TABLE -SELECT session.max_heap_table_size; ---Error ER_BAD_FIELD_ERROR -SELECT max_heap_table_size = @@session.max_heap_table_size; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.max_heap_table_size = @start_global_value; -SELECT @@global.max_heap_table_size; -SET @@session.max_heap_table_size = @start_session_value; -SELECT @@session.max_heap_table_size; - - -####################################################### -# END OF max_heap_table_size TESTS # -####################################################### - diff --git a/mysql-test/include/max_seeks_for_key_basic.inc b/mysql-test/include/max_seeks_for_key_basic.inc deleted file mode 100644 index 23c3c5b2a95..00000000000 --- a/mysql-test/include/max_seeks_for_key_basic.inc +++ /dev/null @@ -1,213 +0,0 @@ -############## mysql-test\t\max_seeks_for_key_basic.test ############### -# # -# Variable Name: max_seeks_for_key # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 4294967295 # -# Range: 1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable max_seeks_for_key # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################# -# START OF max_seeks_for_key TESTS # -################################################################# - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.max_seeks_for_key; -SELECT @start_global_value; -SET @start_session_value = @@session.max_seeks_for_key; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_083_01-------------------------#' -################################################################# -# Display the DEFAULT value of max_seeks_for_key # -################################################################# - -SET @@global.max_seeks_for_key = 100; -SET @@global.max_seeks_for_key = DEFAULT; -SELECT @@global.max_seeks_for_key; - -SET @@session.max_seeks_for_key = 200; -SET @@session.max_seeks_for_key = DEFAULT; -SELECT @@session.max_seeks_for_key; - - ---echo '#--------------------FN_DYNVARS_083_02-------------------------#' -################################################################# -# Check the DEFAULT value of max_seeks_for_key # -################################################################# - -SET @@global.max_seeks_for_key = DEFAULT; -SELECT @@global.max_seeks_for_key = 4294967295; - -SET @@session.max_seeks_for_key = DEFAULT; -SELECT @@session.max_seeks_for_key = 4294967295; - - ---echo '#--------------------FN_DYNVARS_083_03-------------------------#' -########################################################################### -# Change the value of max_seeks_for_key to a valid value for GLOBAL Scope # -########################################################################### - -SET @@global.max_seeks_for_key = 1; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = 2; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = 65536; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = 4294967295; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = 4294967294; -SELECT @@global.max_seeks_for_key; - - ---echo '#--------------------FN_DYNVARS_083_04-------------------------#' -############################################################################ -# Change the value of max_seeks_for_key to a valid value for SESSION Scope # -############################################################################ -SET @@session.max_seeks_for_key = 1; -SELECT @@session.max_seeks_for_key; -SET @@session.max_seeks_for_key = 2; -SELECT @@session.max_seeks_for_key; -SET @@session.max_seeks_for_key = 4294967295; -SELECT @@session.max_seeks_for_key; -SET @@session.max_seeks_for_key = 4294967294; -SELECT @@session.max_seeks_for_key; -SET @@session.max_seeks_for_key = 65535; -SELECT @@session.max_seeks_for_key; - - ---echo '#------------------FN_DYNVARS_083_05-----------------------#' -############################################################# -# Change the value of max_seeks_for_key to an invalid value # -############################################################# - -SET @@global.max_seeks_for_key = 0; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = -1024; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = 4294967296; -SELECT @@global.max_seeks_for_key; ---Error ER_PARSE_ERROR -SET @@global.max_seeks_for_key = 65530.34.; -SELECT @@global.max_seeks_for_key; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_seeks_for_key = test; -SELECT @@global.max_seeks_for_key; - -SET @@session.max_seeks_for_key = 0; -SELECT @@session.max_seeks_for_key; -SET @@session.max_seeks_for_key = -2; -SELECT @@session.max_seeks_for_key; ---Error ER_PARSE_ERROR -SET @@session.max_seeks_for_key = 65530.34.; -SET @@session.max_seeks_for_key = 4294967296; -SELECT @@session.max_seeks_for_key; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.max_seeks_for_key = test; -SELECT @@session.max_seeks_for_key; - - ---echo '#------------------FN_DYNVARS_083_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.max_seeks_for_key = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_seeks_for_key'; - ---echo '#------------------FN_DYNVARS_083_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.max_seeks_for_key = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_seeks_for_key'; - - ---echo '#------------------FN_DYNVARS_083_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.max_seeks_for_key = TRUE; -SELECT @@global.max_seeks_for_key; -SET @@global.max_seeks_for_key = FALSE; -SELECT @@global.max_seeks_for_key; - - ---echo '#---------------------FN_DYNVARS_083_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.max_seeks_for_key = 10; -SELECT @@max_seeks_for_key = @@global.max_seeks_for_key; - - ---echo '#---------------------FN_DYNVARS_083_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@max_seeks_for_key = 100; -SELECT @@max_seeks_for_key = @@local.max_seeks_for_key; -SELECT @@local.max_seeks_for_key = @@session.max_seeks_for_key; - - ---echo '#---------------------FN_DYNVARS_083_11----------------------#' -############################################################################ -# Check if max_seeks_for_key can be accessed with and without @@ sign # -############################################################################ - -SET max_seeks_for_key = 1; -SELECT @@max_seeks_for_key; ---Error ER_UNKNOWN_TABLE -SELECT local.max_seeks_for_key; ---Error ER_UNKNOWN_TABLE -SELECT session.max_seeks_for_key; ---Error ER_BAD_FIELD_ERROR -SELECT max_seeks_for_key = @@session.max_seeks_for_key; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.max_seeks_for_key = @start_global_value; -SELECT @@global.max_seeks_for_key; -SET @@session.max_seeks_for_key = @start_session_value; -SELECT @@session.max_seeks_for_key; - - -############################################################# -# END OF max_seeks_for_key TESTS # -############################################################# - diff --git a/mysql-test/include/max_tmp_tables_basic.inc b/mysql-test/include/max_tmp_tables_basic.inc deleted file mode 100644 index e24d97f47dd..00000000000 --- a/mysql-test/include/max_tmp_tables_basic.inc +++ /dev/null @@ -1,227 +0,0 @@ -############## mysql-test\t\max_tmp_tables_basic.test ############### -# # -# Variable Name: max_tmp_tables # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 32 # -# Range: 1-4294967295 # -# # -# # -# # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable max_tmp_tables # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -#################################### -# START OF max_tmp_tables TESTS # -#################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.max_tmp_tables; -SELECT @start_global_value; -SET @start_session_value = @@session.max_tmp_tables; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_086_01-------------------------#' -###################################################### -# Display the DEFAULT value of max_tmp_tables # -###################################################### - -SET @@global.max_tmp_tables = 1000; -SET @@global.max_tmp_tables = DEFAULT; -SELECT @@global.max_tmp_tables; - - -SET @@session.max_tmp_tables = 1000; -SET @@session.max_tmp_tables = DEFAULT; -SELECT @@session.max_tmp_tables; - - ---echo '#--------------------FN_DYNVARS_086_02-------------------------#' -###################################################### -# Check the DEFAULT value of max_tmp_tables # -###################################################### - -SET @@global.max_tmp_tables = DEFAULT; -SELECT @@global.max_tmp_tables = 32; - -SET @@session.max_tmp_tables = DEFAULT; -SELECT @@session.max_tmp_tables = 32; - - - ---echo '#--------------------FN_DYNVARS_086_03-------------------------#' -######################################################################## -# Change the value of max_tmp_tables to a valid value for GLOBAL Scope # -######################################################################## - -SET @@global.max_tmp_tables = 1; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = 2; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = 65536; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = 4294967295; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = 4294967294; -SELECT @@global.max_tmp_tables; - ---echo '#--------------------FN_DYNVARS_086_04-------------------------#' -######################################################################### -# Change the value of max_tmp_tables to a valid value for SESSION Scope # -######################################################################### - -SET @@session.max_tmp_tables = 1; -SELECT @@session.max_tmp_tables; - -SET @@session.max_tmp_tables = 2; -SELECT @@session.max_tmp_tables; - -SET @@session.max_tmp_tables = 65536; -SELECT @@session.max_tmp_tables; - -SET @@session.max_tmp_tables = 4294967295; -SELECT @@session.max_tmp_tables; - -SET @@session.max_tmp_tables = 4294967294; -SELECT @@session.max_tmp_tables; - - ---echo '#------------------FN_DYNVARS_086_05-----------------------#' -########################################################## -# Change the value of max_tmp_tables to an invalid value # -########################################################## - -SET @@global.max_tmp_tables = -1024; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = 4294967296; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = -1; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = 429496729500; -SELECT @@global.max_tmp_tables; ---Error ER_PARSE_ERROR -SET @@global.max_tmp_tables = 65530.34.; -SELECT @@global.max_tmp_tables; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_tmp_tables = test; -SELECT @@global.max_tmp_tables; - -SET @@session.max_tmp_tables = 4294967296; -SELECT @@session.max_tmp_tables; -SET @@session.max_tmp_tables = -1; -SELECT @@session.max_tmp_tables; -SET @@session.max_tmp_tables = 429496729500; -SELECT @@session.max_tmp_tables; -SET @@session.max_tmp_tables = -001; -SELECT @@session.max_tmp_tables; ---Error ER_PARSE_ERROR -SET @@session.max_tmp_tables = 65530.34.; -SET @@session.max_tmp_tables = 10737418241; -SELECT @@session.max_tmp_tables; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.max_tmp_tables = test; -SELECT @@session.max_tmp_tables; - - ---echo '#------------------FN_DYNVARS_086_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.max_tmp_tables = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_tmp_tables'; - ---echo '#------------------FN_DYNVARS_086_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.max_tmp_tables = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='max_tmp_tables'; - - ---echo '#------------------FN_DYNVARS_086_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.max_tmp_tables = TRUE; -SELECT @@global.max_tmp_tables; -SET @@global.max_tmp_tables = FALSE; -SELECT @@global.max_tmp_tables; - - ---echo '#---------------------FN_DYNVARS_086_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.max_tmp_tables = 20; -SELECT @@max_tmp_tables = @@global.max_tmp_tables; - - ---echo '#---------------------FN_DYNVARS_086_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@max_tmp_tables = 255; -SELECT @@max_tmp_tables = @@local.max_tmp_tables; -SELECT @@local.max_tmp_tables = @@session.max_tmp_tables; - - ---echo '#---------------------FN_DYNVARS_086_11----------------------#' -######################################################################### -# Check if max_tmp_tables can be accessed with and without @@ sign # -######################################################################### - - -SET max_tmp_tables = 102; -SELECT @@max_tmp_tables; ---Error ER_UNKNOWN_TABLE -SELECT local.max_tmp_tables; ---Error ER_UNKNOWN_TABLE -SELECT session.max_tmp_tables; ---Error ER_BAD_FIELD_ERROR -SELECT max_tmp_tables = @@session.max_tmp_tables; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.max_tmp_tables = @start_global_value; -SELECT @@global.max_tmp_tables; -SET @@session.max_tmp_tables = @start_session_value; -SELECT @@session.max_tmp_tables; - - -################################################### -# END OF max_tmp_tables TESTS # -################################################### - diff --git a/mysql-test/include/max_write_lock_count_basic.inc b/mysql-test/include/max_write_lock_count_basic.inc deleted file mode 100644 index 80d5b7cc747..00000000000 --- a/mysql-test/include/max_write_lock_count_basic.inc +++ /dev/null @@ -1,158 +0,0 @@ -############## mysql-test\t\max_write_lock_count_basic.test ############### -# # -# Variable Name: max_write_lock_count # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 4294967295 # -# Range:1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable max_write_lock_count # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -########################################## -# START OF max_write_lock_count TESTS # -########################################## - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.max_write_lock_count; -SELECT @start_global_value; - - ---echo '#--------------------FN_DYNVARS_088_01-------------------------#' -############################################################ -# Display the DEFAULT value of max_write_lock_count # -############################################################ - -SET @@global.max_write_lock_count = 1000; -SET @@global.max_write_lock_count = DEFAULT; -SELECT @@global.max_write_lock_count; - - ---echo '#--------------------FN_DYNVARS_088_02-------------------------#' -############################################################ -# Check the DEFAULT value of max_write_lock_count # -############################################################ - -SET @@global.max_write_lock_count = DEFAULT; -SELECT @@global.max_write_lock_count = 4294967295; - - ---echo '#--------------------FN_DYNVARS_088_03-------------------------#' -############################################################################## -# Change the value of max_write_lock_count to a valid value for GLOBAL Scope # -############################################################################## - -SET @@global.max_write_lock_count = 1; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = 2; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = 65536; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = 4294967295; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = 4294967294; -SELECT @@global.max_write_lock_count; - - - ---echo '#------------------FN_DYNVARS_088_04-----------------------#' -################################################################ -# Change the value of max_write_lock_count to an invalid value # -################################################################ - -SET @@global.max_write_lock_count = -1024; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = 4294967296; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = -1; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = 429496729500; -SELECT @@global.max_write_lock_count; ---Error ER_PARSE_ERROR -SET @@global.max_write_lock_count = 65530.34.; -SELECT @@global.max_write_lock_count; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.max_write_lock_count = test; -SELECT @@global.max_write_lock_count; - - - ---echo '#------------------FN_DYNVARS_088_05-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.max_write_lock_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='max_write_lock_count'; - - ---echo '#------------------FN_DYNVARS_088_06-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.max_write_lock_count = TRUE; -SELECT @@global.max_write_lock_count; -SET @@global.max_write_lock_count = FALSE; -SELECT @@global.max_write_lock_count; - - ---echo '#---------------------FN_DYNVARS_088_07----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.max_write_lock_count = 20; -SELECT @@max_write_lock_count = @@global.max_write_lock_count; - - ---echo '#---------------------FN_DYNVARS_088_08----------------------#' -############################################################################### -# Check if max_write_lock_count can be accessed with and without @@ sign # -############################################################################### - - -SET @@global.max_write_lock_count = 102; -SELECT @@max_write_lock_count; ---Error ER_UNKNOWN_TABLE -SELECT local.max_write_lock_count; ---Error ER_UNKNOWN_TABLE -SELECT global.max_write_lock_count; ---Error ER_BAD_FIELD_ERROR -SELECT max_write_lock_count = @@global.max_write_lock_count; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.max_write_lock_count = @start_global_value; -SELECT @@global.max_write_lock_count; - - -################################################### -# END OF max_write_lock_count TESTS # -################################################### - diff --git a/mysql-test/include/min_examined_row_limit_basic.inc b/mysql-test/include/min_examined_row_limit_basic.inc deleted file mode 100644 index c032d4a9d6d..00000000000 --- a/mysql-test/include/min_examined_row_limit_basic.inc +++ /dev/null @@ -1,219 +0,0 @@ -############## mysql-test\t\min_examined_row_limit_basic.test ############### -# # -# Variable Name: min_examined_row_limit # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 0 # -# Range:0-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable min_examined_row_limit # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -###################################################################### -# START OF min_examined_row_limit TESTS # -###################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.min_examined_row_limit; -SELECT @start_global_value; -SET @start_session_value = @@session.min_examined_row_limit; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_089_01-------------------------#' -###################################################################### -# Display the DEFAULT value of min_examined_row_limit # -###################################################################### - -SET @@global.min_examined_row_limit = 100; -SET @@global.min_examined_row_limit = DEFAULT; -SELECT @@global.min_examined_row_limit; - -SET @@session.min_examined_row_limit = 200; -SET @@session.min_examined_row_limit = DEFAULT; -SELECT @@session.min_examined_row_limit; - - ---echo '#--------------------FN_DYNVARS_089_02-------------------------#' -######################################################################## -# Check the DEFAULT value of min_examined_row_limit # -######################################################################## - -SET @@global.min_examined_row_limit = DEFAULT; -SELECT @@global.min_examined_row_limit = 0; - -SET @@session.min_examined_row_limit = DEFAULT; -SELECT @@session.min_examined_row_limit = 0; - - ---echo '#--------------------FN_DYNVARS_089_03-------------------------#' -################################################################################ -# Change the value of min_examined_row_limit to a valid value for GLOBAL Scope # -################################################################################ - -SET @@global.min_examined_row_limit = 0; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = 1; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = 60020; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = 65535; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = 4294967295; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = 4294967294; -SELECT @@global.min_examined_row_limit; - - - ---echo '#--------------------FN_DYNVARS_089_04-------------------------#' -################################################################################### -# Change the value of min_examined_row_limit to a valid value for SESSION Scope # -################################################################################### - -SET @@session.min_examined_row_limit = 0; -SELECT @@session.min_examined_row_limit; -SET @@session.min_examined_row_limit = 1; -SELECT @@session.min_examined_row_limit; -SET @@session.min_examined_row_limit = 50050; -SELECT @@session.min_examined_row_limit; -SET @@session.min_examined_row_limit = 65535; -SELECT @@session.min_examined_row_limit; -SET @@session.min_examined_row_limit = 4294967295; -SELECT @@session.min_examined_row_limit; -SET @@session.min_examined_row_limit = 4294967294; -SELECT @@session.min_examined_row_limit; - - ---echo '#------------------FN_DYNVARS_089_05-----------------------#' -#################################################################### -# Change the value of min_examined_row_limit to an invalid value # -#################################################################### - -SET @@global.min_examined_row_limit = 429496726; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = -1024; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = 429496729500; -SELECT @@global.min_examined_row_limit; ---Error ER_PARSE_ERROR -SET @@global.min_examined_row_limit = 65530.34.; -SELECT @@global.min_examined_row_limit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.min_examined_row_limit = test; -SELECT @@global.min_examined_row_limit; - -SET @@session.min_examined_row_limit = 4294967296; -SELECT @@session.min_examined_row_limit; -SET @@session.min_examined_row_limit = -1; -SELECT @@session.min_examined_row_limit; ---Error ER_PARSE_ERROR -SET @@session.min_examined_row_limit = 65530.34.; -SET @@session.min_examined_row_limit = 4294967295021; -SELECT @@session.min_examined_row_limit; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.min_examined_row_limit = test; -SELECT @@session.min_examined_row_limit; - - ---echo '#------------------FN_DYNVARS_089_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.min_examined_row_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='min_examined_row_limit'; - ---echo '#------------------FN_DYNVARS_089_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.min_examined_row_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='min_examined_row_limit'; - - ---echo '#------------------FN_DYNVARS_089_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.min_examined_row_limit = TRUE; -SELECT @@global.min_examined_row_limit; -SET @@global.min_examined_row_limit = FALSE; -SELECT @@global.min_examined_row_limit; - - ---echo '#---------------------FN_DYNVARS_089_09----------------------#' -#################################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -#################################################################################### - -SET @@global.min_examined_row_limit = 10; -SELECT @@min_examined_row_limit = @@global.min_examined_row_limit; - - ---echo '#---------------------FN_DYNVARS_089_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@min_examined_row_limit = 100; -SELECT @@min_examined_row_limit = @@local.min_examined_row_limit; -SELECT @@local.min_examined_row_limit = @@session.min_examined_row_limit; - - ---echo '#---------------------FN_DYNVARS_089_11----------------------#' -################################################################################### -# Check if min_examined_row_limit can be accessed with and without @@ sign # -################################################################################### - -SET min_examined_row_limit = 1; -SELECT @@min_examined_row_limit; ---Error ER_UNKNOWN_TABLE -SELECT local.min_examined_row_limit; ---Error ER_UNKNOWN_TABLE -SELECT session.min_examined_row_limit; ---Error ER_BAD_FIELD_ERROR -SELECT min_examined_row_limit = @@session.min_examined_row_limit; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.min_examined_row_limit = @start_global_value; -SELECT @@global.min_examined_row_limit; -SET @@session.min_examined_row_limit = @start_session_value; -SELECT @@session.min_examined_row_limit; - - -############################################################# -# END OF min_examined_row_limit TESTS # -############################################################# - diff --git a/mysql-test/include/multi_range_count_basic.inc b/mysql-test/include/multi_range_count_basic.inc deleted file mode 100644 index 47e8352196f..00000000000 --- a/mysql-test/include/multi_range_count_basic.inc +++ /dev/null @@ -1,219 +0,0 @@ -############## mysql-test\t\multi_range_count_basic.test ############### -# # -# Variable Name: multi_range_count # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 256 # -# Range:1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable multi_range_count # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################# -# START OF multi_range_count TESTS # -################################################################# - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.multi_range_count; -SELECT @start_global_value; -SET @start_session_value = @@session.multi_range_count; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_090_01-------------------------#' -################################################################# -# Display the DEFAULT value of multi_range_count # -################################################################# - -SET @@global.multi_range_count = 100; -SET @@global.multi_range_count = DEFAULT; -SELECT @@global.multi_range_count; - -SET @@session.multi_range_count = 200; -SET @@session.multi_range_count = DEFAULT; -SELECT @@session.multi_range_count; - - ---echo '#--------------------FN_DYNVARS_090_02-------------------------#' -################################################################# -# Check the DEFAULT value of multi_range_count # -################################################################# - -SET @@global.multi_range_count = DEFAULT; -SELECT @@global.multi_range_count = 256; - -SET @@session.multi_range_count = DEFAULT; -SELECT @@session.multi_range_count = 256; - - ---echo '#--------------------FN_DYNVARS_090_03-------------------------#' -########################################################################### -# Change the value of multi_range_count to a valid value for GLOBAL Scope # -########################################################################### - -SET @@global.multi_range_count = 1; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = 60020; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = 65535; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = 4294967295; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = 4294967294; -SELECT @@global.multi_range_count; - - - ---echo '#--------------------FN_DYNVARS_090_04-------------------------#' -############################################################################ -# Change the value of multi_range_count to a valid value for SESSION Scope # -############################################################################ - -SET @@session.multi_range_count = 1; -SELECT @@session.multi_range_count; -SET @@session.multi_range_count = 50050; -SELECT @@session.multi_range_count; -SET @@session.multi_range_count = 65535; -SELECT @@session.multi_range_count; -SET @@session.multi_range_count = 4294967295; -SELECT @@session.multi_range_count; -SET @@session.multi_range_count = 4294967294; -SELECT @@session.multi_range_count; - - ---echo '#------------------FN_DYNVARS_090_05-----------------------#' -############################################################# -# Change the value of multi_range_count to an invalid value # -############################################################# - -SET @@global.multi_range_count = 0; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = 4294967296; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = -1024; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = 429496729500; -SELECT @@global.multi_range_count; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.multi_range_count = 65530.34; -SELECT @@global.multi_range_count; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.multi_range_count = test; -SELECT @@global.multi_range_count; - -SET @@session.multi_range_count = 0; -SELECT @@session.multi_range_count; -SET @@session.multi_range_count = 4294967296; -SELECT @@session.multi_range_count; -SET @@session.multi_range_count = -1; -SELECT @@session.multi_range_count; ---Error ER_PARSE_ERROR -SET @@session.multi_range_count = 65530.34.; -SET @@session.multi_range_count = 4294967295021; -SELECT @@session.multi_range_count; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.multi_range_count = test; -SELECT @@session.multi_range_count; - - ---echo '#------------------FN_DYNVARS_090_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.multi_range_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='multi_range_count'; - ---echo '#------------------FN_DYNVARS_090_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.multi_range_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='multi_range_count'; - - ---echo '#------------------FN_DYNVARS_090_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.multi_range_count = TRUE; -SELECT @@global.multi_range_count; -SET @@global.multi_range_count = FALSE; -SELECT @@global.multi_range_count; - - ---echo '#---------------------FN_DYNVARS_090_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.multi_range_count = 10; -SELECT @@multi_range_count = @@global.multi_range_count; - - ---echo '#---------------------FN_DYNVARS_090_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@multi_range_count = 100; -SELECT @@multi_range_count = @@local.multi_range_count; -SELECT @@local.multi_range_count = @@session.multi_range_count; - - ---echo '#---------------------FN_DYNVARS_090_11----------------------#' -############################################################################ -# Check if multi_range_count can be accessed with and without @@ sign # -############################################################################ - -SET multi_range_count = 1; -SELECT @@multi_range_count; ---Error ER_UNKNOWN_TABLE -SELECT local.multi_range_count; ---Error ER_UNKNOWN_TABLE -SELECT session.multi_range_count; ---Error ER_BAD_FIELD_ERROR -SELECT multi_range_count = @@session.multi_range_count; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.multi_range_count = @start_global_value; -SELECT @@global.multi_range_count; -SET @@session.multi_range_count = @start_session_value; -SELECT @@session.multi_range_count; - - -###################################################### -# END OF multi_range_count TESTS # -###################################################### - diff --git a/mysql-test/include/myisam_max_sort_file_size_basic.inc b/mysql-test/include/myisam_max_sort_file_size_basic.inc deleted file mode 100644 index 23f0607b439..00000000000 --- a/mysql-test/include/myisam_max_sort_file_size_basic.inc +++ /dev/null @@ -1,184 +0,0 @@ - -############## mysql-test\t\myisam_max_sort_file_size_basic.test ################ -# # -# Variable Name: myisam_max_sort_file_size # -# Scope: GLOBAL & SESSION # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 1 # -# Range: 1 - 65536 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan Maredia # -# # -# Description: Test Cases of Dynamic System Variable myisam_max_sort_file_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 # -# # -################################################################################ - ---source include/load_sysvars.inc - -################################################################### -# START OF myisam_max_sort_file_size TESTS # -################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.myisam_max_sort_file_size; -SELECT @start_global_value; - ---echo '#--------------------FN_DYNVARS_094_01-------------------------#' -################################################################### -# Display the DEFAULT value of myisam_max_sort_file_size # -################################################################### - -SET @@global.myisam_max_sort_file_size = 500000; -SET @@global.myisam_max_sort_file_size = DEFAULT; -SELECT @@global.myisam_max_sort_file_size; - ---echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; - ---echo '#--------------------FN_DYNVARS_094_02-------------------------#' -################################################################### -# Check the DEFAULT value of myisam_max_sort_file_size # -################################################################### - -SET @@global.myisam_max_sort_file_size = DEFAULT; -SELECT @@global.myisam_max_sort_file_size = 2147483648; - ---echo '#--------------------FN_DYNVARS_094_03-------------------------#' -################################################################################## -# Change the value of myisam_max_sort_file_size to a valid value for GLOBAL Scope # -################################################################################## - -SET @@global.myisam_max_sort_file_size = 0; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = 1024; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = 123456789; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = 2147483648*2; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = 2147483648*1024; -SELECT @@global.myisam_max_sort_file_size; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = 2147483648*2147483648; - ---echo '#--------------------FN_DYNVARS_094_04-------------------------#' -################################################################################# -# Check if variable can be access with session scope # -################################################################################# - ---Error ER_GLOBAL_VARIABLE -SET @@myisam_max_sort_file_size = 2; - ---Error ER_GLOBAL_VARIABLE -SET @@session.myisam_max_sort_file_size = 3; - ---Error ER_GLOBAL_VARIABLE -SET @@local.myisam_max_sort_file_size = 4; - - - ---echo '#------------------FN_DYNVARS_094_05-----------------------#' -#################################################################### -# Change the value of myisam_max_sort_file_size to an invalid value # -#################################################################### - -SET @@global.myisam_max_sort_file_size = -1; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = -2147483648; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = -2147483649; -SELECT @@global.myisam_max_sort_file_size; ---Error ER_PARSE_ERROR -SET @@global.myisam_max_sort_file_size = 65530.34.; -SELECT @@global.myisam_max_sort_file_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_max_sort_file_size = 2147483649.56; -SELECT @@global.myisam_max_sort_file_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_max_sort_file_size = 1G; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - - ---echo '#------------------FN_DYNVARS_094_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -SET @@global.myisam_max_sort_file_size = 3000; -SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_max_sort_file_size'; - - ---echo '#------------------FN_DYNVARS_094_07-----------------------#' -########################################################################### -# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # -########################################################################### - -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_max_sort_file_size'; - - ---echo '#------------------FN_DYNVARS_094_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.myisam_max_sort_file_size = TRUE; -SELECT @@global.myisam_max_sort_file_size; -SET @@global.myisam_max_sort_file_size = FALSE; -SELECT @@global.myisam_max_sort_file_size; - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - - -SET @@global.myisam_max_sort_file_size = 512; -SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -################################################################################## -# Check if myisam_max_sort_file_size can be accessed without @@ sign and scope # -################################################################################## - ---Error ER_GLOBAL_VARIABLE -SET myisam_max_sort_file_size = 2048; ---Error ER_BAD_FIELD_ERROR -SELECT myisam_max_sort_file_size; - -SELECT @@myisam_max_sort_file_size; - -#verifying another syntax for setting value# -SET global myisam_max_sort_file_size = 64; - -#################################### -# Restore initial value # -#################################### - -SET @@global.myisam_max_sort_file_size = @start_global_value; -SELECT @@global.myisam_max_sort_file_size; - -######################################################## -# END OF myisam_max_sort_file_size TESTS # -######################################################## - diff --git a/mysql-test/include/myisam_repair_threads_basic.inc b/mysql-test/include/myisam_repair_threads_basic.inc deleted file mode 100644 index 8485e79ff03..00000000000 --- a/mysql-test/include/myisam_repair_threads_basic.inc +++ /dev/null @@ -1,242 +0,0 @@ -############## mysql-test\t\myisam_repair_threads_basic.test ################## -# # -# Variable Name: myisam_repair_threads # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 1 # -# Range: 1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Sharique Abdullah # -# # -# Description: Test Cases of Dynamic System Variable myisam_repair_threads # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -###################################################################### -# START OF myisam_repair_threads TESTS # -###################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.myisam_repair_threads; -SELECT @start_global_value; -SET @start_session_value = @@session.myisam_repair_threads; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_005_01-------------------------#' -################################################################# -# Display the DEFAULT value of myisam_block_size # -################################################################# - -SET @@global.myisam_repair_threads = 100; -SET @@global.myisam_repair_threads = DEFAULT; -SELECT @@global.myisam_repair_threads ; - -SET @@session.myisam_repair_threads = 200; -SET @@session.myisam_repair_threads = DEFAULT; -SELECT @@session.myisam_repair_threads ; - - ---echo '#--------------------FN_DYNVARS_005_02-------------------------#' -###################################################################### -# Check the DEFAULT value of myisam_repair_threads # -###################################################################### - -SET @@global.myisam_repair_threads = DEFAULT; -SELECT @@global.myisam_repair_threads = 1; - -SET @@session.myisam_repair_threads = DEFAULT; -SELECT @@session.myisam_repair_threads = 1; - - ---echo '#--------------------FN_DYNVARS_005_03-------------------------#' -############################################################################### -# Change the value of myisam_repair_threads to a valid value for GLOBAL Scope# -############################################################################### - -SET @@global.myisam_repair_threads = 1; -SELECT @@global.myisam_repair_threads ; - -SET @@global.myisam_repair_threads = 4294967295; -SELECT @@global.myisam_repair_threads ; - -SET @@global.myisam_repair_threads = 655354; -SELECT @@global.myisam_repair_threads ; - - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -############################################################################### -# Change the value of myisam_repair_threads to a valid value for SESSION -# Scope -############################################################################### - -SET @@session.myisam_repair_threads = 1; -SELECT @@session.myisam_repair_threads ; - -SET @@session.myisam_repair_threads = 4294967295; -SELECT @@session.myisam_repair_threads ; - -SET @@session.myisam_repair_threads = 655345; -SELECT @@session.myisam_repair_threads ; - - - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -################################################################## -# Change the value of myisam_repair_threads to an invalid value # -################################################################## - -SET @@global.myisam_repair_threads = 0; -SELECT @@global.myisam_repair_threads ; - -SET @@global.myisam_repair_threads = -1024; -SELECT @@global.myisam_repair_threads ; - -SET @@global.myisam_repair_threads = 429496729533; -SELECT @@global.myisam_repair_threads ; - - ---Error ER_PARSE_ERROR -SET @@global.myisam_repair_threads = 65530.34.; -SELECT @@global.myisam_repair_threads ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_repair_threads = test; -SELECT @@global.myisam_repair_threads ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_repair_threads = "test"; -SELECT @@global.myisam_repair_threads ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_repair_threads = 'test'; -SELECT @@global.myisam_repair_threads ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_repair_threads = ON; -SELECT @@global.myisam_repair_threads ; - - -SET @@session.myisam_repair_threads = 0; -SELECT @@session.myisam_repair_threads ; - -SET @@session.myisam_repair_threads = -2; -SELECT @@session.myisam_repair_threads ; - ---Error ER_PARSE_ERROR - -SET @@session.myisam_repair_threads = 65530.34.; -SELECT @@session.myisam_repair_threads ; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.myisam_repair_threads = test; -SELECT @@session.myisam_repair_threads ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.myisam_repair_threads = "test"; -SELECT @@session.myisam_repair_threads ; - - ---echo '#------------------FN_DYNVARS_005_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.myisam_repair_threads = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_repair_threads '; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.myisam_repair_threads = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_repair_threads '; - - ---echo '#------------------FN_DYNVARS_005_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.myisam_repair_threads = TRUE; -SELECT @@global.myisam_repair_threads ; -SET @@global.myisam_repair_threads = FALSE; -SELECT @@global.myisam_repair_threads ; - - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -############################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -############################################################################### - -SET @@global.myisam_repair_threads = 10; -SELECT @@myisam_repair_threads = @@global.myisam_repair_threads ; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to -# same session variable # -######################################################################################################## - -SET @@myisam_repair_threads = 100; -SELECT @@myisam_repair_threads = @@local.myisam_repair_threads ; -SELECT @@local.myisam_repair_threads = @@session.myisam_repair_threads ; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -################################################################################### -# Check if myisam_repair_threads can be accessed with and without @@ sign # -################################################################################### - -SET myisam_repair_threads = 1; -SELECT @@myisam_repair_threads ; ---Error ER_UNKNOWN_TABLE - -SELECT local.myisam_repair_threads ; - ---Error ER_UNKNOWN_TABLE -SELECT session.myisam_repair_threads ; - ---Error ER_BAD_FIELD_ERROR -SELECT myisam_repair_threads = @@session.myisam_repair_threads ; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.myisam_repair_threads = @start_global_value; -SELECT @@global.myisam_repair_threads ; -SET @@session.myisam_repair_threads = @start_session_value; -SELECT @@session.myisam_repair_threads ; - - -############################################################# -# END OF myisam_repair_threads TESTS # -############################################################# - diff --git a/mysql-test/include/myisam_sort_buffer_size_basic.inc b/mysql-test/include/myisam_sort_buffer_size_basic.inc deleted file mode 100644 index 8e36d8a2c70..00000000000 --- a/mysql-test/include/myisam_sort_buffer_size_basic.inc +++ /dev/null @@ -1,240 +0,0 @@ -############## mysql-test\t\myisam_sort_buffer_size_basic.test ############### -# # -# Variable Name: myisam_sort_buffer_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: # -# Range: # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -# Description: Test Cases of Dynamic System Variable myisam_sort_buffer_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -######################################################################## -# START OF myisam_sort_buffer_size TESTS # -######################################################################## - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.myisam_sort_buffer_size ; -SELECT @start_global_value; -SET @start_session_value = @@session.myisam_sort_buffer_size ; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_005_01-------------------------#' -######################################################################## -# Display the DEFAULT value of myisam_block_size # -######################################################################## - -SET @@global.myisam_sort_buffer_size = 100; -SET @@global.myisam_sort_buffer_size = DEFAULT; -SELECT @@global.myisam_sort_buffer_size ; - -SET @@session.myisam_sort_buffer_size = 200; -SET @@session.myisam_sort_buffer_size = DEFAULT; -SELECT @@session.myisam_sort_buffer_size ; - - ---echo '#--------------------FN_DYNVARS_005_02-------------------------#' -######################################################################## -# Check the DEFAULT value of myisam_sort_buffer_size # -######################################################################## - -SET @@global.myisam_sort_buffer_size = DEFAULT; -SELECT @@global.myisam_sort_buffer_size = 8388608; - -SET @@session.myisam_sort_buffer_size = DEFAULT; -SELECT @@session.myisam_sort_buffer_size = 8388608; - - ---echo '#--------------------FN_DYNVARS_005_03-------------------------#' -################################################################################## -# Change the value of myisam_sort_buffer_size to a valid value for GLOBAL Scope # -################################################################################## - -SET @@global.myisam_sort_buffer_size = 4; -SELECT @@global.myisam_sort_buffer_size ; - -SET @@global.myisam_sort_buffer_size = 4294967295; -SELECT @@global.myisam_sort_buffer_size ; - -SET @@global.myisam_sort_buffer_size = 655354; -SELECT @@global.myisam_sort_buffer_size ; - - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -################################################################################### -# Change the value of myisam_sort_buffer_size to a valid value for SESSION Scope # -################################################################################### - -SET @@session.myisam_sort_buffer_size = 4; -SELECT @@session.myisam_sort_buffer_size ; - -SET @@session.myisam_sort_buffer_size = 4294967295; -SELECT @@session.myisam_sort_buffer_size ; - -SET @@session.myisam_sort_buffer_size = 655345; -SELECT @@session.myisam_sort_buffer_size ; - - - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -#################################################################### -# Change the value of myisam_sort_buffer_size to an invalid value # -#################################################################### - -SET @@global.myisam_sort_buffer_size = 0; -SELECT @@global.myisam_sort_buffer_size ; - -SET @@global.myisam_sort_buffer_size = -1024; -SELECT @@global.myisam_sort_buffer_size ; - -SET @@global.myisam_sort_buffer_size = 429496729533; -SELECT @@global.myisam_sort_buffer_size ; - - ---Error ER_PARSE_ERROR -SET @@global.myisam_sort_buffer_size = 65530.34.; -SELECT @@global.myisam_sort_buffer_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_sort_buffer_size = test; -SELECT @@global.myisam_sort_buffer_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_sort_buffer_size = "test"; -SELECT @@global.myisam_sort_buffer_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_sort_buffer_size = 'test'; -SELECT @@global.myisam_sort_buffer_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.myisam_sort_buffer_size = ON; -SELECT @@global.myisam_sort_buffer_size ; - - -SET @@session.myisam_sort_buffer_size = 0; -SELECT @@session.myisam_sort_buffer_size ; - -SET @@session.myisam_sort_buffer_size = -2; -SELECT @@session.myisam_sort_buffer_size ; - ---Error ER_PARSE_ERROR - -SET @@session.myisam_sort_buffer_size = 65530.34.; -SELECT @@session.myisam_sort_buffer_size ; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.myisam_sort_buffer_size = test; -SELECT @@session.myisam_sort_buffer_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.myisam_sort_buffer_size = "test"; -SELECT @@session.myisam_sort_buffer_size ; - - ---echo '#------------------FN_DYNVARS_005_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='myisam_sort_buffer_size '; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='myisam_sort_buffer_size '; - - ---echo '#------------------FN_DYNVARS_005_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.myisam_sort_buffer_size = TRUE; -SELECT @@global.myisam_sort_buffer_size ; -SET @@global.myisam_sort_buffer_size = FALSE; -SELECT @@global.myisam_sort_buffer_size ; - - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -#################################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -#################################################################################### - -SET @@global.myisam_sort_buffer_size = 10; -SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@myisam_sort_buffer_size = 100; -SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; -SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -################################################################################### -# Check if myisam_sort_buffer_size can be accessed with and without @@ sign # -################################################################################### - -SET myisam_sort_buffer_size = 1; -SELECT @@myisam_sort_buffer_size ; ---Error ER_UNKNOWN_TABLE - -SELECT local.myisam_sort_buffer_size ; - ---Error ER_UNKNOWN_TABLE -SELECT session.myisam_sort_buffer_size ; - ---Error ER_BAD_FIELD_ERROR -SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.myisam_sort_buffer_size = @start_global_value; -SELECT @@global.myisam_sort_buffer_size ; -SET @@session.myisam_sort_buffer_size = @start_session_value; -SELECT @@session.myisam_sort_buffer_size ; - - -############################################################# -# END OF myisam_sort_buffer_size TESTS # -############################################################# - diff --git a/mysql-test/include/net_retry_count_basic.inc b/mysql-test/include/net_retry_count_basic.inc deleted file mode 100644 index 537d8eea6c6..00000000000 --- a/mysql-test/include/net_retry_count_basic.inc +++ /dev/null @@ -1,217 +0,0 @@ -############## mysql-test\t\net_retry_count_basic.test ############### -# # -# Variable Name: net_retry_count # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value:10 # -# Range: 1-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable net_retry_count # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -############################################################### -# START OF net_retry_count TESTS # -############################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.net_retry_count; -SELECT @start_global_value; -SET @start_session_value = @@session.net_retry_count; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_111_01-------------------------#' -############################################################### -# Display the DEFAULT value of net_retry_count # -############################################################### - -SET @@global.net_retry_count = 100; -SET @@global.net_retry_count = DEFAULT; -SELECT @@global.net_retry_count; - -SET @@session.net_retry_count = 200; -SET @@session.net_retry_count = DEFAULT; -SELECT @@session.net_retry_count; - - ---echo '#--------------------FN_DYNVARS_111_02-------------------------#' -############################################################### -# Check the DEFAULT value of net_retry_count # -############################################################### - -SET @@global.net_retry_count = DEFAULT; -SELECT @@global.net_retry_count = 10; - -SET @@session.net_retry_count = DEFAULT; -SELECT @@session.net_retry_count = 10; - - ---echo '#--------------------FN_DYNVARS_111_03-------------------------#' -######################################################################### -# Change the value of net_retry_count to a valid value for GLOBAL Scope # -######################################################################### - -SET @@global.net_retry_count = 1; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = 2; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = 4294967295; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = 4294967294; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = 65536; -SELECT @@global.net_retry_count; - ---echo '#--------------------FN_DYNVARS_111_04-------------------------#' -########################################################################## -# Change the value of net_retry_count to a valid value for SESSION Scope # -########################################################################## - -SET @@session.net_retry_count = 1; -SELECT @@session.net_retry_count; -SET @@session.net_retry_count = 2; -SELECT @@session.net_retry_count; -SET @@session.net_retry_count = 65535; -SELECT @@session.net_retry_count; -SET @@session.net_retry_count = 4294967295; -SELECT @@session.net_retry_count; -SET @@session.net_retry_count = 4294967294; -SELECT @@session.net_retry_count; - ---echo '#------------------FN_DYNVARS_111_05-----------------------#' -########################################################### -# Change the value of net_retry_count to an invalid value # -########################################################### - -SET @@global.net_retry_count = 0; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = -1024; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = 4294967296; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = 429496729500; -SELECT @@global.net_retry_count; ---Error ER_PARSE_ERROR -SET @@global.net_retry_count = 65530.34.; -SELECT @@global.net_retry_count; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.net_retry_count = test; -SELECT @@global.net_retry_count; - -SET @@session.net_retry_count = 0; -SELECT @@session.net_retry_count; -SET @@session.net_retry_count = -2; -SELECT @@session.net_retry_count; ---Error ER_PARSE_ERROR -SET @@session.net_retry_count = 65530.34.; -SET @@session.net_retry_count = 6555015425; -SELECT @@session.net_retry_count; -SET @@session.net_retry_count = 4294967296; -SELECT @@session.net_retry_count; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.net_retry_count = test; -SELECT @@session.net_retry_count; - - ---echo '#------------------FN_DYNVARS_111_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.net_retry_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='net_retry_count'; - ---echo '#------------------FN_DYNVARS_111_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.net_retry_count = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='net_retry_count'; - - ---echo '#------------------FN_DYNVARS_111_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.net_retry_count = TRUE; -SELECT @@global.net_retry_count; -SET @@global.net_retry_count = FALSE; -SELECT @@global.net_retry_count; - - ---echo '#---------------------FN_DYNVARS_111_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.net_retry_count = 10; -SELECT @@net_retry_count = @@global.net_retry_count; - - ---echo '#---------------------FN_DYNVARS_111_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@net_retry_count = 100; -SELECT @@net_retry_count = @@local.net_retry_count; -SELECT @@local.net_retry_count = @@session.net_retry_count; - - ---echo '#---------------------FN_DYNVARS_111_11----------------------#' -########################################################################## -# Check if net_retry_count can be accessed with and without @@ sign # -########################################################################## - -SET net_retry_count = 1; -SELECT @@net_retry_count; ---Error ER_UNKNOWN_TABLE -SELECT local.net_retry_count; ---Error ER_UNKNOWN_TABLE -SELECT session.net_retry_count; ---Error ER_BAD_FIELD_ERROR -SELECT net_retry_count = @@session.net_retry_count; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.net_retry_count = @start_global_value; -SELECT @@global.net_retry_count; -SET @@session.net_retry_count = @start_session_value; -SELECT @@session.net_retry_count; - - -#################################################### -# END OF net_retry_count TESTS # -#################################################### - diff --git a/mysql-test/include/query_alloc_block_size_basic.inc b/mysql-test/include/query_alloc_block_size_basic.inc deleted file mode 100644 index 208fe6b3da4..00000000000 --- a/mysql-test/include/query_alloc_block_size_basic.inc +++ /dev/null @@ -1,225 +0,0 @@ -############## mysql-test\t\query_alloc_block_size_basic.test ############### -# # -# Variable Name: query_alloc_block_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 8192 # -# Range: 1024-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable query_alloc_block_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################### -# START OF query_alloc_block_size TESTS # -################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.query_alloc_block_size; -SELECT @start_global_value; -SET @start_session_value = @@session.query_alloc_block_size; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_130_01-------------------------#' -################################################################### -# Display the DEFAULT value of query_alloc_block_size # -################################################################### - -SET @@global.query_alloc_block_size = 10000; -SET @@global.query_alloc_block_size = DEFAULT; -SELECT @@global.query_alloc_block_size; - -SET @@session.query_alloc_block_size = 20000; -SET @@session.query_alloc_block_size = DEFAULT; -SELECT @@session.query_alloc_block_size; - - ---echo '#--------------------FN_DYNVARS_130_02-------------------------#' -################################################################### -# Check the DEFAULT value of query_alloc_block_size # -################################################################### - -SET @@global.query_alloc_block_size = DEFAULT; -SELECT @@global.query_alloc_block_size = 8192; - -SET @@session.query_alloc_block_size = DEFAULT; -SELECT @@session.query_alloc_block_size = 8192; - - ---echo '#--------------------FN_DYNVARS_130_03-------------------------#' -############################################################################# -# Change the value of query_alloc_block_size to a valid value for GLOBAL Scope # -############################################################################# - -SET @@global.query_alloc_block_size = 1024; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = 1025; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = 4294967295; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = 4294967294; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = 65536; -SELECT @@global.query_alloc_block_size; - ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#--------------------FN_DYNVARS_130_04-------------------------#' -################################################################################# -# Change the value of query_alloc_block_size to a valid value for SESSION Scope # -################################################################################# - -SET @@session.query_alloc_block_size = 1024; -SELECT @@session.query_alloc_block_size; -SET @@session.query_alloc_block_size = 1025; -SELECT @@session.query_alloc_block_size; -SET @@session.query_alloc_block_size = 4294967295; -SELECT @@session.query_alloc_block_size; -SET @@session.query_alloc_block_size = 4294967294; -SELECT @@session.query_alloc_block_size; -SET @@session.query_alloc_block_size = 655536; -SELECT @@session.query_alloc_block_size; - ---echo '#------------------FN_DYNVARS_130_05-----------------------#' -################################################################## -# Change the value of query_alloc_block_size to an invalid value # -################################################################## - -SET @@global.query_alloc_block_size = 64; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = -1; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = 1023; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = 4294967296; -SELECT @@global.query_alloc_block_size; ---Error ER_PARSE_ERROR -SET @@global.query_alloc_block_size = 65530.34.; -SELECT @@global.query_alloc_block_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_alloc_block_size = test; -SELECT @@global.query_alloc_block_size; - -SET @@session.query_alloc_block_size = 64; -SELECT @@session.query_alloc_block_size; -SET @@session.query_alloc_block_size = -2; -SELECT @@session.query_alloc_block_size; ---Error ER_PARSE_ERROR -SET @@session.query_alloc_block_size = 65530.34.; -SET @@session.query_alloc_block_size = 1023; -SELECT @@session.query_alloc_block_size; -SET @@session.query_alloc_block_size = 4294967296; -SELECT @@session.query_alloc_block_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.query_alloc_block_size = test; -SELECT @@session.query_alloc_block_size; - ---echo '#------------------FN_DYNVARS_130_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -#SET @@global.query_alloc_block_size = 1; -#SET @@session.query_alloc_block_size = 12; ---echo 'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement'; - -SET @@global.query_alloc_block_size = 1; -SET @@session.query_alloc_block_size = 12; - -SELECT @@global.query_alloc_block_size = -VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_alloc_block_size'; - - ---echo '#------------------FN_DYNVARS_130_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.query_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_alloc_block_size'; - - ---echo '#------------------FN_DYNVARS_130_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.query_alloc_block_size = TRUE; -SELECT @@global.query_alloc_block_size; -SET @@global.query_alloc_block_size = FALSE; -SELECT @@global.query_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_130_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - -SET @@global.query_alloc_block_size = 2048; -SELECT @@query_alloc_block_size = @@global.query_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_130_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@query_alloc_block_size = 5000; -SELECT @@query_alloc_block_size = @@local.query_alloc_block_size; -SELECT @@local.query_alloc_block_size = @@session.query_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_130_11----------------------#' -############################################################################## -# Check if query_alloc_block_size can be accessed with and without @@ sign # -############################################################################## - -SET query_alloc_block_size = 1024; -SELECT @@query_alloc_block_size; ---Error ER_UNKNOWN_TABLE -SELECT local.query_alloc_block_size; ---Error ER_UNKNOWN_TABLE -SELECT session.query_alloc_block_size; ---Error ER_BAD_FIELD_ERROR -SELECT query_alloc_block_size = @@session.query_alloc_block_size; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.query_alloc_block_size = @start_global_value; -SELECT @@global.query_alloc_block_size; -SET @@session.query_alloc_block_size = @start_session_value; -SELECT @@session.query_alloc_block_size; - - -######################################################## -# END OF query_alloc_block_size TESTS # -######################################################## - diff --git a/mysql-test/include/query_cache_limit_basic.inc b/mysql-test/include/query_cache_limit_basic.inc deleted file mode 100644 index 2eb4a597eef..00000000000 --- a/mysql-test/include/query_cache_limit_basic.inc +++ /dev/null @@ -1,178 +0,0 @@ -############## mysql-test\t\query_cache_limit_basic.test ############### -# # -# Variable Name: query_cache_limit # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 1048576 # -# Min value: 0 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable query_cache_limit # -# 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 # -# # -############################################################################### - ---source include/have_query_cache.inc ---source include/load_sysvars.inc - -######################################################################## -# START OF query_cache_limit TESTS # -######################################################################## - - -######################################################################## -# Saving initial value of query_cache_limit in a temporary variable # -######################################################################## - -SET @start_value = @@global.query_cache_limit; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_131_01------------------------#' -######################################################################## -# Display the DEFAULT value of query_cache_limit # -######################################################################## - -SET @@global.query_cache_limit = 99; -SET @@global.query_cache_limit = DEFAULT; -SELECT @@global.query_cache_limit; - - ---echo '#---------------------FN_DYNVARS_131_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.query_cache_limit = @start_value; -SELECT @@global.query_cache_limit = 1048576; - - ---echo '#--------------------FN_DYNVARS_131_03------------------------#' -######################################################################## -# Change the value of query_cache_limit to a valid value # -######################################################################## - -SET @@global.query_cache_limit = 0; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = 1; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = 1048576; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = 1048575; -SELECT @@global.query_cache_limit; - - ---echo '#--------------------FN_DYNVARS_131_04-------------------------#' -########################################################################### -# Change the value of query_cache_limit to invalid value # -########################################################################### - -SET @@global.query_cache_limit = -1; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = 4294967296; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = 10240022115; -SELECT @@global.query_cache_limit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_limit = 10000.01; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = -1024; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = 42949672950; -SELECT @@global.query_cache_limit; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_limit = ON; -SELECT @@global.query_cache_limit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_limit = 'test'; -SELECT @@global.query_cache_limit; - - ---echo '#-------------------FN_DYNVARS_131_05----------------------------#' -########################################################################### -# Test if accessing session query_cache_limit gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.query_cache_limit = 0; -SELECT @@query_cache_limit; - - ---echo '#----------------------FN_DYNVARS_131_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.query_cache_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_limit'; - -SELECT @@query_cache_limit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_limit'; - - ---echo '#---------------------FN_DYNVARS_131_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.query_cache_limit = TRUE; -SELECT @@global.query_cache_limit; -SET @@global.query_cache_limit = FALSE; -SELECT @@global.query_cache_limit; - - ---echo '#---------------------FN_DYNVARS_131_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.query_cache_limit = 1; -SELECT @@query_cache_limit = @@global.query_cache_limit; - - ---echo '#---------------------FN_DYNVARS_131_09----------------------#' -########################################################################## -# Check if query_cache_limit can be accessed with and without @@ sign # -########################################################################## - ---Error ER_GLOBAL_VARIABLE -SET query_cache_limit = 1; -SELECT @@query_cache_limit; ---Error ER_PARSE_ERROR -SET local.query_cache_limit = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.query_cache_limit; ---Error ER_PARSE_ERROR -SET global.query_cache_limit = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.query_cache_limit; ---Error ER_BAD_FIELD_ERROR -SELECT query_cache_limit = @@session.query_cache_limit; - - -############################## -# Restore initial value # -############################## - -SET @@global.query_cache_limit = @start_value; -SELECT @@global.query_cache_limit; - - -######################################################################## -# END OF query_cache_limit TESTS # -######################################################################## diff --git a/mysql-test/include/query_cache_min_res_unit_basic.inc b/mysql-test/include/query_cache_min_res_unit_basic.inc deleted file mode 100644 index 1b65e035b18..00000000000 --- a/mysql-test/include/query_cache_min_res_unit_basic.inc +++ /dev/null @@ -1,187 +0,0 @@ -############## mysql-test\t\query_cache_min_res_unit_basic.test ############### -# # -# Variable Name: query_cache_min_res_unit # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value:1024 # -# Min Value:0 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman Rawala # -# # -# Description: Test Cases of Dynamic System Variable query_cache_min_res_unit # -# 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 # -# # -############################################################################### - ---source include/have_query_cache.inc ---source include/load_sysvars.inc - -######################################################################## - - -######################################################################## -# START OF query_cache_min_res_unit TESTS # -######################################################################## - - -############################################################################### -# Saving initial value of query_cache_min_res_unit in a temporary variable # -############################################################################### - -SET @start_value = @@global.query_cache_min_res_unit; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_132_01------------------------#' -############################################################################### -# Display the DEFAULT value of query_cache_min_res_unit # -############################################################################### - -SET @@global.query_cache_min_res_unit = 99; -SET @@global.query_cache_min_res_unit = DEFAULT; -SELECT @@global.query_cache_min_res_unit; - - ---echo '#---------------------FN_DYNVARS_132_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.query_cache_min_res_unit = @start_value; -SELECT @@global.query_cache_min_res_unit = 4096; - - ---echo '#--------------------FN_DYNVARS_132_03------------------------#' -################################################################################ -# Change the value of query_cache_min_res_unit to a valid value # -################################################################################ - -SET @@global.query_cache_min_res_unit = 0; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = 1; -SELECT @@global.query_cache_min_res_unit; ---echo 'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512'; -SET @@global.query_cache_min_res_unit = 512; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = 513; -SELECT @@global.query_cache_min_res_unit; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.query_cache_min_res_unit = 1048576; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = 1048575; -SELECT @@global.query_cache_min_res_unit; - - ---echo '#--------------------FN_DYNVARS_132_04-------------------------#' -################################################################################### -# Change the value of query_cache_min_res_unit to invalid value # -################################################################################### - -SET @@global.query_cache_min_res_unit = -1; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = 4294967296; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = 511; -SELECT @@global.query_cache_min_res_unit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_min_res_unit = 10000.01; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = -1024; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = 42949672950; -SELECT @@global.query_cache_min_res_unit; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_min_res_unit = ON; -SELECT @@global.query_cache_min_res_unit; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_min_res_unit = 'test'; -SELECT @@global.query_cache_min_res_unit; - - ---echo '#-------------------FN_DYNVARS_132_05----------------------------#' -################################################################################### -# Test if accessing session query_cache_min_res_unit gives error # -################################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.query_cache_min_res_unit = 0; -SELECT @@query_cache_min_res_unit; - - ---echo '#----------------------FN_DYNVARS_132_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.query_cache_min_res_unit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_min_res_unit'; - -SELECT @@query_cache_min_res_unit = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_min_res_unit'; - - ---echo '#---------------------FN_DYNVARS_132_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.query_cache_min_res_unit = TRUE; -SELECT @@global.query_cache_min_res_unit; -SET @@global.query_cache_min_res_unit = FALSE; -SELECT @@global.query_cache_min_res_unit; - - ---echo '#---------------------FN_DYNVARS_132_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.query_cache_min_res_unit = 1; -SELECT @@query_cache_min_res_unit = @@global.query_cache_min_res_unit; - - ---echo '#---------------------FN_DYNVARS_132_09----------------------#' -################################################################################## -# Check if query_cache_min_res_unit can be accessed with and without @@ sign # -################################################################################## - ---Error ER_GLOBAL_VARIABLE -SET query_cache_min_res_unit = 1; -SELECT @@query_cache_min_res_unit; ---Error ER_PARSE_ERROR -SET local.query_cache_min_res_unit = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.query_cache_min_res_unit; ---Error ER_PARSE_ERROR -SET global.query_cache_min_res_unit = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.query_cache_min_res_unit; ---Error ER_BAD_FIELD_ERROR -SELECT query_cache_min_res_unit = @@session.query_cache_min_res_unit; - - -############################## -# Restore initial value # -############################## - -SET @@global.query_cache_min_res_unit = @start_value; -SELECT @@global.query_cache_min_res_unit; - - -######################################################################## -# END OF query_cache_min_res_unit TESTS # -######################################################################## diff --git a/mysql-test/include/query_cache_size_basic.inc b/mysql-test/include/query_cache_size_basic.inc deleted file mode 100644 index 1a3f9e1efe2..00000000000 --- a/mysql-test/include/query_cache_size_basic.inc +++ /dev/null @@ -1,175 +0,0 @@ -############## mysql-test\t\query_cache_size_basic.test ############### -# # -# Variable Name: query_cache_size # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 0 # -# Range: - # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable query_cache_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 # -# # -############################################################################### - ---source include/have_query_cache.inc ---source include/load_sysvars.inc - -######################################################################## -# START OF query_cache_size TESTS # -######################################################################## - - -############################################################################### -# Saving initial value of query_cache_size in a temporary variable # -############################################################################### - -SET @start_value = @@global.query_cache_size; -SELECT @start_value; - ---echo '#--------------------FN_DYNVARS_133_01------------------------#' -############################################################################### -# Display the DEFAULT value of query_cache_size # -############################################################################### - -SET @@global.query_cache_size = 99; -SET @@global.query_cache_size = DEFAULT; -SELECT @@global.query_cache_size; - ---echo '#---------------------FN_DYNVARS_133_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.query_cache_size = @start_value; -SELECT @@global.query_cache_size = 0; - ---echo '#--------------------FN_DYNVARS_133_03------------------------#' -################################################################################ -# Change the value of query_cache_size to a valid value # -################################################################################ - -SET @@global.query_cache_size = 0; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = 1; -SELECT @@global.query_cache_size; - -SET @@global.query_cache_size = 512; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = 1024; -SELECT @@global.query_cache_size; ---echo : 'Bug#34880: Warnings are coming on assinging valid values to variable ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.query_cache_size = 1048576; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = 1048575; -SELECT @@global.query_cache_size; - ---echo '#--------------------FN_DYNVARS_133_04-------------------------#' -################################################################################### -# Change the value of query_cache_size to invalid value # -################################################################################### - -SET @@global.query_cache_size = -1; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = 4294967296; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = 511; -SELECT @@global.query_cache_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_size = 10000.01; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = -1024; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = 42949672950; -SELECT @@global.query_cache_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_size = ON; -SELECT @@global.query_cache_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_cache_size = 'test'; -SELECT @@global.query_cache_size; - ---echo '#-------------------FN_DYNVARS_133_05----------------------------#' -################################################################################### -# Test if accessing session query_cache_size gives error # -################################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.query_cache_size = 0; -SELECT @@query_cache_size; - ---echo '#----------------------FN_DYNVARS_133_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.query_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_cache_size'; - -SELECT @@query_cache_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_cache_size'; - ---echo '#---------------------FN_DYNVARS_133_07----------------------#' -################################################################### -# Check if TRUE and FALSE values can be used on variable # -################################################################### - -SET @@global.query_cache_size = TRUE; -SELECT @@global.query_cache_size; -SET @@global.query_cache_size = FALSE; -SELECT @@global.query_cache_size; - ---echo '#---------------------FN_DYNVARS_133_08----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@global.query_cache_size = 1; -SELECT @@query_cache_size = @@global.query_cache_size; - ---echo '#---------------------FN_DYNVARS_133_09----------------------#' -################################################################################## -# Check if query_cache_size can be accessed with and without @@ sign # -################################################################################## - ---Error ER_GLOBAL_VARIABLE -SET query_cache_size = 1; -SELECT @@query_cache_size; ---Error ER_PARSE_ERROR -SET local.query_cache_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.query_cache_size; ---Error ER_PARSE_ERROR -SET global.query_cache_size = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.query_cache_size; ---Error ER_BAD_FIELD_ERROR -SELECT query_cache_size = @@session.query_cache_size; - -############################## -# Restore initial value # -############################## - -SET @@global.query_cache_size = @start_value; -SELECT @@global.query_cache_size; - -######################################################################## -# END OF query_cache_size TESTS # -######################################################################## - diff --git a/mysql-test/include/query_prealloc_size_basic.inc b/mysql-test/include/query_prealloc_size_basic.inc deleted file mode 100644 index ac005b696fa..00000000000 --- a/mysql-test/include/query_prealloc_size_basic.inc +++ /dev/null @@ -1,247 +0,0 @@ -################# mysql-test\t\query_prealloc_size_basic.test ################## -# # -# Variable Name: query_prealloc_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 8192 # -# Range: 8192-4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -# Description: Test Cases of Dynamic System Variable query_prealloc_size # -# that checks the behavior of this variable in the following ways # -# * Default Value # -# * Valid & Invalid values # -# * Scope & Access method # -# * Data Integrity # -# # -# Reference: # -# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # -# # -# Last Modification: # -# 2008-07-14 hhunger removed values for 64 bit platforms. # -# # -################################################################################ - ---source include/load_sysvars.inc - -######################################################################## -# START OF query_prealloc_size TESTS # -######################################################################## - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.query_prealloc_size ; -SELECT @start_global_value; -SET @start_session_value = @@session.query_prealloc_size ; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_005_01-------------------------#' -######################################################################## -# Display the DEFAULT value of myisam_block_size # -######################################################################## - -SET @@global.query_prealloc_size = 100; -SET @@global.query_prealloc_size = DEFAULT; -SELECT @@global.query_prealloc_size ; - -SET @@session.query_prealloc_size = 200; -SET @@session.query_prealloc_size = DEFAULT; -SELECT @@session.query_prealloc_size ; - - ---echo '#--------------------FN_DYNVARS_005_02-------------------------#' -######################################################################## -# Check the DEFAULT value of query_prealloc_size # -######################################################################## - -SET @@global.query_prealloc_size = DEFAULT; -SELECT @@global.query_prealloc_size = 8192; - -SET @@session.query_prealloc_size = DEFAULT; -SELECT @@session.query_prealloc_size = 8192; - - ---echo '#--------------------FN_DYNVARS_005_03-------------------------#' -################################################################################ -# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # -################################################################################ - -SET @@global.query_prealloc_size = 8192; -SELECT @@global.query_prealloc_size ; - -# Due to problems with 64 bit machines having less than 6 GB main memory. -#SET @@global.query_prealloc_size = 4294967295; -#SELECT @@global.query_prealloc_size ; - -SET @@global.query_prealloc_size = 655354; -SELECT @@global.query_prealloc_size ; - - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -################################################################################## -# Change the value of query_prealloc_size to a valid value for SESSION Scope # -################################################################################## - -SET @@session.query_prealloc_size = 8192; -SELECT @@session.query_prealloc_size ; - -# Due to problems with 64 bit machines having less than 6 GB main memory. -#SET @@session.query_prealloc_size = 4294967295; -#SELECT @@session.query_prealloc_size ; - -SET @@session.query_prealloc_size = 655345; -SELECT @@session.query_prealloc_size ; - - - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -#################################################################### -# Change the value of query_prealloc_size to an invalid value # -#################################################################### - -SET @@global.query_prealloc_size = 0; -SELECT @@global.query_prealloc_size ; - -SET @@global.query_prealloc_size = -1024; -SELECT @@global.query_prealloc_size ; - -# Due to problems with 64 bit machines having less than 6 GB main memory. -#SET @@global.query_prealloc_size = 429496729533; -#SELECT @@global.query_prealloc_size ; - - ---Error ER_PARSE_ERROR -SET @@global.query_prealloc_size = 65530.34.; -SELECT @@global.query_prealloc_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_prealloc_size = test; -SELECT @@global.query_prealloc_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_prealloc_size = "test"; -SELECT @@global.query_prealloc_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_prealloc_size = 'test'; -SELECT @@global.query_prealloc_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.query_prealloc_size = ON; -SELECT @@global.query_prealloc_size ; - - -SET @@session.query_prealloc_size = 0; -SELECT @@session.query_prealloc_size ; - -SET @@session.query_prealloc_size = -2; -SELECT @@session.query_prealloc_size ; - ---Error ER_PARSE_ERROR - -SET @@session.query_prealloc_size = 65530.34.; -SELECT @@session.query_prealloc_size ; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.query_prealloc_size = test; -SELECT @@session.query_prealloc_size ; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.query_prealloc_size = "test"; -SELECT @@session.query_prealloc_size ; - - ---echo '#------------------FN_DYNVARS_005_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='query_prealloc_size '; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.query_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='query_prealloc_size '; - - ---echo '#------------------FN_DYNVARS_005_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.query_prealloc_size = TRUE; -SELECT @@global.query_prealloc_size ; -SET @@global.query_prealloc_size = FALSE; -SELECT @@global.query_prealloc_size ; - - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -################################################################################ -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################ - -SET @@global.query_prealloc_size = 10; -SELECT @@query_prealloc_size = @@global.query_prealloc_size ; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -############################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to # -# to the same session variable # -############################################################################## - -SET @@query_prealloc_size = 100; -SELECT @@query_prealloc_size = @@local.query_prealloc_size ; -SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -################################################################################ -# Check if query_prealloc_size can be accessed with and without @@ sign # -################################################################################ - -SET query_prealloc_size = 1; -SELECT @@query_prealloc_size ; ---Error ER_UNKNOWN_TABLE - -SELECT local.query_prealloc_size ; - ---Error ER_UNKNOWN_TABLE -SELECT session.query_prealloc_size ; - ---Error ER_BAD_FIELD_ERROR -SELECT query_prealloc_size = @@session.query_prealloc_size ; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.query_prealloc_size = @start_global_value; -SELECT @@global.query_prealloc_size ; -SET @@session.query_prealloc_size = @start_session_value; -SELECT @@session.query_prealloc_size ; - - -############################################################# -# END OF query_prealloc_size TESTS # -############################################################# - diff --git a/mysql-test/include/range_alloc_block_size_basic.inc b/mysql-test/include/range_alloc_block_size_basic.inc deleted file mode 100644 index 37692cc8c35..00000000000 --- a/mysql-test/include/range_alloc_block_size_basic.inc +++ /dev/null @@ -1,208 +0,0 @@ -############## mysql-test\t\range_alloc_block_size_basic.test ############### -# # -# Variable Name: range_alloc_block_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value:2048 # -# Max value: 4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable range_alloc_block_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -###################################################################### -# START OF range_alloc_block_size TESTS # -###################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.range_alloc_block_size; -SELECT @start_global_value; -SET @start_session_value = @@session.range_alloc_block_size; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_137_01-------------------------#' -###################################################################### -# Display the DEFAULT value of range_alloc_block_size # -###################################################################### - -SET @@global.range_alloc_block_size = 100; -SET @@global.range_alloc_block_size = DEFAULT; -SELECT @@global.range_alloc_block_size; - -SET @@session.range_alloc_block_size = 200; -SET @@session.range_alloc_block_size = DEFAULT; -SELECT @@session.range_alloc_block_size; - - ---echo '#--------------------FN_DYNVARS_137_02-------------------------#' -###################################################################### -# Check the DEFAULT value of range_alloc_block_size # -###################################################################### - -SET @@global.range_alloc_block_size = DEFAULT; -SELECT @@global.range_alloc_block_size = 2048; - -SET @@session.range_alloc_block_size = DEFAULT; -SELECT @@session.range_alloc_block_size = 2048; - - ---echo '#--------------------FN_DYNVARS_137_03-------------------------#' -################################################################################ -# Change the value of range_alloc_block_size to a valid value for GLOBAL Scope # -################################################################################ - -SET @@global.range_alloc_block_size = 2048; -SELECT @@global.range_alloc_block_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; -SET @@global.range_alloc_block_size = 4294967295; -SELECT @@global.range_alloc_block_size; -SET @@global.range_alloc_block_size = 4294967294; -SELECT @@global.range_alloc_block_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#--------------------FN_DYNVARS_137_04-------------------------#' -################################################################################### -# Change the value of range_alloc_block_size to a valid value for SESSION Scope # -################################################################################### - -SET @@session.range_alloc_block_size = 2048; -SELECT @@session.range_alloc_block_size; -SET @@session.range_alloc_block_size = 4294967295; -SELECT @@session.range_alloc_block_size; -SET @@session.range_alloc_block_size = 4294967294; -SELECT @@session.range_alloc_block_size; - - ---echo '#------------------FN_DYNVARS_137_05-----------------------#' -################################################################## -# Change the value of range_alloc_block_size to an invalid value # -################################################################## - -SET @@global.range_alloc_block_size = 0; -SELECT @@global.range_alloc_block_size; -SET @@global.range_alloc_block_size = -1024; -SELECT @@global.range_alloc_block_size; -SET @@global.range_alloc_block_size = 42949672951; -SELECT @@global.range_alloc_block_size; ---Error ER_PARSE_ERROR -SET @@global.range_alloc_block_size = 65530.34.; -SELECT @@global.range_alloc_block_size; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.range_alloc_block_size = test; -SELECT @@global.range_alloc_block_size; - -SET @@session.range_alloc_block_size = 0; -SELECT @@session.range_alloc_block_size; -SET @@session.range_alloc_block_size = -2; -SELECT @@session.range_alloc_block_size; ---Error ER_PARSE_ERROR -SET @@session.range_alloc_block_size = 65530.34.; -SET @@session.range_alloc_block_size = 4294967296; -SELECT @@session.range_alloc_block_size; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.range_alloc_block_size = test; -SELECT @@session.range_alloc_block_size; - - ---echo '#------------------FN_DYNVARS_137_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.range_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='range_alloc_block_size'; - ---echo '#------------------FN_DYNVARS_137_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.range_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='range_alloc_block_size'; - - ---echo '#------------------FN_DYNVARS_137_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.range_alloc_block_size = TRUE; -SELECT @@global.range_alloc_block_size; -SET @@global.range_alloc_block_size = FALSE; -SELECT @@global.range_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_137_09----------------------#' -#################################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -#################################################################################### - -SET @@global.range_alloc_block_size = 10; -SELECT @@range_alloc_block_size = @@global.range_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_137_10----------------------#' -######################################################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # -######################################################################################################## - -SET @@range_alloc_block_size = 100; -SELECT @@range_alloc_block_size = @@local.range_alloc_block_size; -SELECT @@local.range_alloc_block_size = @@session.range_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_137_11----------------------#' -################################################################################### -# Check if range_alloc_block_size can be accessed with and without @@ sign # -################################################################################### - -SET range_alloc_block_size = 1; -SELECT @@range_alloc_block_size; ---Error ER_UNKNOWN_TABLE -SELECT local.range_alloc_block_size; ---Error ER_UNKNOWN_TABLE -SELECT session.range_alloc_block_size; ---Error ER_BAD_FIELD_ERROR -SELECT range_alloc_block_size = @@session.range_alloc_block_size; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.range_alloc_block_size = @start_global_value; -SELECT @@global.range_alloc_block_size; -SET @@session.range_alloc_block_size = @start_session_value; -SELECT @@session.range_alloc_block_size; - - -############################################################# -# END OF range_alloc_block_size TESTS # -############################################################# - diff --git a/mysql-test/include/rpl_recovery_rank_basic.inc b/mysql-test/include/rpl_recovery_rank_basic.inc deleted file mode 100644 index f9ae3968b31..00000000000 --- a/mysql-test/include/rpl_recovery_rank_basic.inc +++ /dev/null @@ -1,171 +0,0 @@ -############## mysql-test\t\rpl_recovery_rank_basic.test ####################### -# # -# Variable Name: rpl_recovery_rank # -# Scope: GLOBAL & SESSION # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 1 # -# Range: 1 - 65536 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan Maredia # -# # -# Description: Test Cases of Dynamic System Variable rpl_recovery_rank # -# 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 # -# # -################################################################################ - ---source include/load_sysvars.inc - -################################################################### -# START OF rpl_recovery_rank TESTS # -################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.rpl_recovery_rank; -SELECT @start_global_value; - ---echo '#--------------------FN_DYNVARS_142_01-------------------------#' -################################################################### -# Check the DEFAULT value of rpl_recovery_rank # -################################################################### - -SET @@global.rpl_recovery_rank = 500000; -SET @@global.rpl_recovery_rank = DEFAULT; -SELECT @@global.rpl_recovery_rank; - ---echo '#--------------------FN_DYNVARS_142_02-------------------------#' -################################################################################## -# Change the value of rpl_recovery_rank to a valid value for GLOBAL Scope # -################################################################################## - -SET @@global.rpl_recovery_rank = 0; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = 1024; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = 123456789; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = 2147483648*2; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = 2147483648*1024; -SELECT @@global.rpl_recovery_rank; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = 2147483648*2147483648; -SELECT @@global.rpl_recovery_rank; - - ---echo '#--------------------FN_DYNVARS_142_03-------------------------#' -################################################################################# -# Check if variable can be access with session scope # -################################################################################# - ---Error ER_GLOBAL_VARIABLE -SET @@rpl_recovery_rank = 2; - ---Error ER_GLOBAL_VARIABLE -SET @@session.rpl_recovery_rank = 3; - ---Error ER_GLOBAL_VARIABLE -SET @@local.rpl_recovery_rank = 4; - - - ---echo '#------------------FN_DYNVARS_142_04-----------------------#' -#################################################################### -# Change the value of rpl_recovery_rank to an invalid value # -#################################################################### - -SET @@global.rpl_recovery_rank = -1; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = -2147483648; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = -2147483649; -SELECT @@global.rpl_recovery_rank; ---Error ER_PARSE_ERROR -SET @@global.rpl_recovery_rank = 65530.34.; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.rpl_recovery_rank = 2147483649.56; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.rpl_recovery_rank = 1G; - - ---echo '#------------------FN_DYNVARS_142_05-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -SET @@global.rpl_recovery_rank = 3000; -SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='rpl_recovery_rank'; - - ---echo '#------------------FN_DYNVARS_142_06-----------------------#' -########################################################################### -# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # -########################################################################### - -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='rpl_recovery_rank'; - - ---echo '#------------------FN_DYNVARS_142_07-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.rpl_recovery_rank = TRUE; -SELECT @@global.rpl_recovery_rank; -SET @@global.rpl_recovery_rank = FALSE; -SELECT @@global.rpl_recovery_rank; - - ---echo '#---------------------FN_DYNVARS_001_08----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - - -SET @@global.rpl_recovery_rank = 512; -SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank; - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -################################################################################## -# Check if rpl_recovery_rank can be accessed without @@ sign and scope # -################################################################################## - ---Error ER_GLOBAL_VARIABLE -SET rpl_recovery_rank = 2048; ---Error ER_BAD_FIELD_ERROR -SELECT rpl_recovery_rank; - -SELECT @@rpl_recovery_rank; - -#verifying another another syntax for setting value -SET global rpl_recovery_rank = 64; - -#################################### -# Restore initial value # -#################################### - -SET @@global.rpl_recovery_rank = @start_global_value; -SELECT @@global.rpl_recovery_rank; - -######################################################## -# END OF rpl_recovery_rank TESTS # -######################################################## - diff --git a/mysql-test/include/server_id_basic.inc b/mysql-test/include/server_id_basic.inc deleted file mode 100644 index 47afadb5016..00000000000 --- a/mysql-test/include/server_id_basic.inc +++ /dev/null @@ -1,190 +0,0 @@ -############## mysql-test\t\server_id_basic.test ################ -# # -# Variable Name: server_id # -# Scope: GLOBAL & SESSION # -# Access Type: Dynamic # -# Data Type: Numeric # -# Default Value: 1 # -# Range: 1 - 65536 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan Maredia # -# # -# Description: Test Cases of Dynamic System Variable server_id # -# 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 # -# # -################################################################################ - ---source include/load_sysvars.inc - -################################################################### -# START OF server_id TESTS # -################################################################### - - -############################################################# -# Save initial value # -############################################################# - -let $save_general_log= `SELECT @@global.general_log`; -SET @@global.general_log= 0; -SET @start_global_value = @@global.server_id; -SELECT @start_global_value; - ---echo '#--------------------FN_DYNVARS_144_01-------------------------#' -################################################################### -# Display the DEFAULT value of server_id # -################################################################### - -SET @@global.server_id = 500000; -SET @@global.server_id = DEFAULT; -SELECT @@global.server_id; - ---echo '#--------------------FN_DYNVARS_144_02-------------------------#' -################################################################### -# Check the DEFAULT value of server_id # -################################################################### - -SET @@global.server_id = DEFAULT; -SELECT @@global.server_id = 0; - ---echo '#--------------------FN_DYNVARS_144_03-------------------------#' -################################################################################## -# Change the value of server_id to a valid value for GLOBAL Scope # -################################################################################## - -SET @@global.server_id = 0; -SELECT @@global.server_id; -SET @@global.server_id = 1; -SELECT @@global.server_id; -SET @@global.server_id = 15; -SELECT @@global.server_id; -SET @@global.server_id = 1024; -SELECT @@global.server_id; -SET @@global.server_id = 123456789; -SELECT @@global.server_id; -SET @@global.server_id = 2147483648; -SELECT @@global.server_id; -SET @@global.server_id = 2147483648*2-1; -SELECT @@global.server_id; - - ---echo '#--------------------FN_DYNVARS_144_04-------------------------#' -################################################################################# -# Check if variable can be access with session scope # -################################################################################# - ---Error ER_GLOBAL_VARIABLE -SET @@server_id = 2; - ---Error ER_GLOBAL_VARIABLE -SET @@session.server_id = 3; - ---Error ER_GLOBAL_VARIABLE -SET @@local.server_id = 4; - - - ---echo '#------------------FN_DYNVARS_144_05-----------------------#' -#################################################################### -# Change the value of server_id to an invalid value # -#################################################################### - -SET @@global.server_id = -1; -SELECT @@global.server_id; - -SET @@global.server_id = -2147483648; -SELECT @@global.server_id; - -SET @@global.server_id = 2147483649*2; -SELECT @@global.server_id; - ---Error ER_PARSE_ERROR -SET @@global.server_id = 65530.34.; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.server_id = '125'; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.server_id = 7483649.56; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.server_id = 1G; - ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#------------------FN_DYNVARS_144_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -SET @@global.server_id = 3000; -SELECT @@global.server_id = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='server_id'; - - ---echo '#------------------FN_DYNVARS_144_07-----------------------#' -########################################################################### -# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # -########################################################################### - -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='server_id'; - - ---echo '#------------------FN_DYNVARS_144_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.server_id = TRUE; -SELECT @@global.server_id; -SET @@global.server_id = FALSE; -SELECT @@global.server_id; - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -################################################################################# -# Check if accessing variable with and without GLOBAL point to same variable # -################################################################################# - - -SET @@global.server_id = 512; -SELECT @@server_id = @@global.server_id; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -################################################################################## -# Check if server_id can be accessed without @@ sign and scope # -################################################################################## - ---Error ER_GLOBAL_VARIABLE -SET server_id = 2048; ---Error ER_BAD_FIELD_ERROR -SELECT server_id; - -SELECT @@server_id; - -#verifying another another syntax for setting value -SET global server_id = 99; - -#################################### -# Restore initial value # -#################################### - -SET @@global.server_id = @start_global_value; -SELECT @@global.server_id; - -eval SET @@global.general_log= $save_general_log; -######################################################## -# END OF server_id TESTS # -######################################################## - diff --git a/mysql-test/include/slave_transaction_retries_basic.inc b/mysql-test/include/slave_transaction_retries_basic.inc deleted file mode 100644 index 6bbed3b1982..00000000000 --- a/mysql-test/include/slave_transaction_retries_basic.inc +++ /dev/null @@ -1,188 +0,0 @@ -############# mysql-test\t\slave_transaction_retries_basic.test ############### -# # -# Variable Name: slave_transaction_retries # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 10 # -# Range: # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -# Description: Test Cases of Dynamic System Variable slave_transaction_retries# -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################### -# START OF slave_transaction_retries TESTS # -################################################################### - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.slave_transaction_retries; -SELECT @start_global_value; - ---echo '#--------------------FN_DYNVARS_149_01-------------------------#' -################################################################### -# Display the DEFAULT value of slave_transaction_retries # -################################################################### - -SET @@global.slave_transaction_retries = 50; -SET @@global.slave_transaction_retries = DEFAULT; -SELECT @@global.slave_transaction_retries; - ---echo '#--------------------FN_DYNVARS_149_02-------------------------#' -################################################################### -# Check the DEFAULT value of slave_transaction_retries # -################################################################### - -SET @@global.slave_transaction_retries = DEFAULT; -SELECT @@global.slave_transaction_retries = 10; - ---echo '#--------------------FN_DYNVARS_149_03-------------------------#' -################################################################################ -# Change the value of slave_transaction_retries to a valid value for -# GLOBAL Scope -################################################################################ - -SET @@global.slave_transaction_retries = 0; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 1; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 15; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 1024; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 2147483648; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 2147483648*2-1; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 2147483649*2; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = 4294967295; -SELECT @@global.slave_transaction_retries; - ---echo '#--------------------FN_DYNVARS_149_04-------------------------#' -############################################################################### -# Check if variable can be access with session scope # -############################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@slave_transaction_retries = 2; - ---Error ER_GLOBAL_VARIABLE -SET @@session.slave_transaction_retries = 3; - ---Error ER_GLOBAL_VARIABLE -SET @@local.slave_transaction_retries = 4; - - - ---echo '#------------------FN_DYNVARS_149_05-----------------------#' -#################################################################### -# Change the value of slave_transaction_retries to an invalid value# -#################################################################### - -SET @@global.slave_transaction_retries = -1; -SELECT @@global.slave_transaction_retries; - -SET @@global.slave_transaction_retries = 2147483649*2147483649; -SELECT @@global.slave_transaction_retries; - ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - ---Error ER_PARSE_ERROR -SET @@global.slave_transaction_retries = 65530.34.; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.slave_transaction_retries = '100'; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.slave_transaction_retries = 7483649.56; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.slave_transaction_retries = ON; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.slave_transaction_retries = OFF; - ---echo '#------------------FN_DYNVARS_149_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -SET @@global.slave_transaction_retries = 3000; -SELECT @@global.slave_transaction_retries = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='slave_transaction_retries'; - - ---echo '#------------------FN_DYNVARS_149_07-----------------------#' -########################################################################### -# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # -########################################################################### - -SELECT count(VARIABLE_VALUE) -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='slave_transaction_retries'; - - ---echo '#------------------FN_DYNVARS_149_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.slave_transaction_retries = TRUE; -SELECT @@global.slave_transaction_retries; -SET @@global.slave_transaction_retries = FALSE; -SELECT @@global.slave_transaction_retries; - - ---echo '#---------------------FN_DYNVARS_149_09----------------------#' -############################################################################### -# Check if accessing variable with and without GLOBAL point to same variable # -############################################################################### - - -SET @@global.slave_transaction_retries = 60*60; -SELECT @@slave_transaction_retries = @@global.slave_transaction_retries; - - ---echo '#---------------------FN_DYNVARS_149_10----------------------#' -############################################################################### -# Check if slave_transaction_retries can be accessed without @@ sign -# and scope -############################################################################### - ---Error ER_GLOBAL_VARIABLE -SET slave_transaction_retries = 2048; ---Error ER_BAD_FIELD_ERROR -SELECT slave_transaction_retries; - -SELECT @@slave_transaction_retries; - -#verifying another another syntax for setting value -SET global slave_transaction_retries = 99; - -#################################### -# Restore initial value # -#################################### - -SET @@global.slave_transaction_retries = @start_global_value; -SELECT @@global.slave_transaction_retries; - -######################################################## -# END OF slave_transaction_retries TESTS # -######################################################## - diff --git a/mysql-test/include/sort_buffer_size_basic.inc b/mysql-test/include/sort_buffer_size_basic.inc deleted file mode 100644 index 4dbae7c8847..00000000000 --- a/mysql-test/include/sort_buffer_size_basic.inc +++ /dev/null @@ -1,213 +0,0 @@ -############## mysql-test\t\sort_buffer_size_basic.test ####################### -# # -# Variable Name: sort_buffer_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 2097144 # -# Range:max value:4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable sort_buffer_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -######################################################################## - - -###################################################################### -# START OF sort_buffer_size TESTS # -###################################################################### - - -############################################################# -# Save initial value # -############################################################# - -# due to difference 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; - - ---echo '#--------------------FN_DYNVARS_151_01-------------------------#' -###################################################################### -# 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; - -SET @@session.sort_buffer_size = 2000; -SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116; - - ---echo '#--------------------FN_DYNVARS_151_02-------------------------#' -###################################################################### -# 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; - -SET @@session.sort_buffer_size = DEFAULT; -SELECT @@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116; - - ---echo '#--------------------FN_DYNVARS_151_03-------------------------#' -################################################################################ -# 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; -SET @@global.sort_buffer_size = 32777; -SELECT @@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804; -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 # -################################################################################### - -SET @@session.sort_buffer_size = 32776; -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; -SET @@session.sort_buffer_size = 32777; -SELECT @@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804; -SET @@session.sort_buffer_size = 4294967295; -SELECT @@session.sort_buffer_size; -SET @@session.sort_buffer_size = 4294967294; -SELECT @@session.sort_buffer_size; - - ---echo '#------------------FN_DYNVARS_151_05-----------------------#' -################################################################## -# 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; -SET @@global.sort_buffer_size = -1024; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -SET @@global.sort_buffer_size = 4294967296; -SELECT @@global.sort_buffer_size; ---Error ER_PARSE_ERROR -SET @@global.sort_buffer_size = 65530.34.; -SELECT @@global.sort_buffer_size; ---Error ER_WRONG_TYPE_FOR_VAR -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; -SET @@session.sort_buffer_size = -2; -SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; ---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-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -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'; - - ---echo '#------------------FN_DYNVARS_151_08-----------------------#' -#################################################################### -# Check if TRUE and FALSE values can be used on variable # -#################################################################### - -SET @@global.sort_buffer_size = TRUE; -SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; -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'; - - ---echo '#---------------------FN_DYNVARS_151_09----------------------#' -#################################################################################### -# 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 # -######################################################################################################## - -SET @@sort_buffer_size = 9000; -SELECT @@sort_buffer_size = @@local.sort_buffer_size; -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 # -################################################################################### - -SET sort_buffer_size = 9100; -SELECT @sort_buffer_size= 32776 OR @@sort_buffer_size= 32804; -SELECT @@sort_buffer_size; ---Error ER_UNKNOWN_TABLE -SELECT local.sort_buffer_size; ---Error ER_UNKNOWN_TABLE -SELECT session.sort_buffer_size; ---Error ER_BAD_FIELD_ERROR -SELECT sort_buffer_size = @@session.sort_buffer_size; - - -#################################### -# Restore initial value # -#################################### - -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; - - -############################################################# -# END OF sort_buffer_size TESTS # -############################################################# diff --git a/mysql-test/include/sync_binlog_basic.inc b/mysql-test/include/sync_binlog_basic.inc deleted file mode 100644 index b66509bbb5e..00000000000 --- a/mysql-test/include/sync_binlog_basic.inc +++ /dev/null @@ -1,156 +0,0 @@ -#################### mysql-test\t\sync_binlog_basic.test ###################### -# # -# Variable Name: sync_binlog # -# Scope: GLOBAL # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 0 # -# Range: 0 - 4294967295 # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Salman Rawala # -# # -# Description: Test Cases of Dynamic System Variable sync_binlog # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -################################################################## -# START OF sync_binlog TESTS # -################################################################## - - -################################################################## -# Saving initial value of sync_binlog in a temporary variable # -################################################################## - -SET @start_value = @@global.sync_binlog; -SELECT @start_value; - - ---echo '#--------------------FN_DYNVARS_168_01------------------------#' -################################################################## -# Display the DEFAULT value of sync_binlog # -################################################################## - -SET @@global.sync_binlog = 99; -SET @@global.sync_binlog = DEFAULT; -SELECT @@global.sync_binlog; - - ---echo '#---------------------FN_DYNVARS_168_02-------------------------#' -############################################### -# Verify default value of variable # -############################################### - -SET @@global.sync_binlog = @start_value; -SELECT @@global.sync_binlog = 0; - - ---echo '#--------------------FN_DYNVARS_168_03------------------------#' -################################################################### -# Change the value of sync_binlog to a valid value # -################################################################### - -SET @@global.sync_binlog = 0; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 1; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 4294967295; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 4294967294; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 65536; -SELECT @@global.sync_binlog; - - ---echo '#--------------------FN_DYNVARS_168_04-------------------------#' -###################################################################### -# Change the value of sync_binlog to invalid value # -###################################################################### - -SET @@global.sync_binlog = -1; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 4294967296; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 10240022115; -SELECT @@global.sync_binlog; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.sync_binlog = 10000.01; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = -1024; -SELECT @@global.sync_binlog; -SET @@global.sync_binlog = 42949672950; -SELECT @@global.sync_binlog; ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.sync_binlog = ON; -SELECT @@global.sync_binlog; ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.sync_binlog = 'test'; -SELECT @@global.sync_binlog; - - ---echo '#-------------------FN_DYNVARS_168_05----------------------------#' -########################################################################### -# Test if accessing session sync_binlog gives error # -########################################################################### - ---Error ER_GLOBAL_VARIABLE -SET @@session.sync_binlog = 0; -SELECT @@sync_binlog; - - ---echo '#----------------------FN_DYNVARS_168_06------------------------#' -############################################################################## -# Check if the value in GLOBAL & SESSION Tables matches values in variable # -############################################################################## - -SELECT @@global.sync_binlog = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='sync_binlog'; - - - ---echo '#---------------------FN_DYNVARS_168_07----------------------#' -########################################################################## -# Check if sync_binlog can be accessed with and without @@ sign # -########################################################################## - ---Error ER_GLOBAL_VARIABLE -SET sync_binlog = 1; -SELECT @@sync_binlog; ---Error ER_PARSE_ERROR -SET local.sync_binlog = 1; ---Error ER_UNKNOWN_TABLE -SELECT local.sync_binlog; ---Error ER_PARSE_ERROR -SET global.sync_binlog = 1; ---Error ER_UNKNOWN_TABLE -SELECT global.sync_binlog; ---Error ER_BAD_FIELD_ERROR -SELECT sync_binlog = @@session.sync_binlog; - - -############################## -# Restore initial value # -############################## - -SET @@global.sync_binlog = @start_value; -SELECT @@global.sync_binlog; - - -######################################################################## -# END OF sync_binlog TESTS # -######################################################################## diff --git a/mysql-test/include/timestamp_basic.inc b/mysql-test/include/timestamp_basic.inc deleted file mode 100644 index d7ad620ec26..00000000000 --- a/mysql-test/include/timestamp_basic.inc +++ /dev/null @@ -1,162 +0,0 @@ -################## mysql-test\t\timestamp_basic.test ########################## -# # -# Variable Name: timestamp # -# Scope: SESSION # -# Access Type: Dynamic # -# Data Type: string # -# Default Value: # -# Range: # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Rizwan # -# # -# Description: Test Cases of Dynamic System Variable timestamp # -# 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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -####################################################################### -# START OF timestamp TESTS # -####################################################################### - - -####################################################################### -# Saving initial value of timestamp in a temporary variable # -####################################################################### - -SET @session_start_value = @@session.timestamp; - ---echo '#--------------------FN_DYNVARS_001_01------------------------#' -######################################################################## -# Display the DEFAULT value of timestamp # -######################################################################## - - -SET @@timestamp = DEFAULT; -#SELECT @@timestamp; - ---echo 'timestamp does not have any DEFAULT value' - ---echo '#---------------------FN_DYNVARS_001_02-------------------------#' -############################################################## -# see if accessable using global scope # -############################################################## - ---Error ER_LOCAL_VARIABLE -SET @@global.timestamp = "1000"; - - ---echo '#--------------------FN_DYNVARS_001_03------------------------#' -######################################################################## -# Change the value of timestamp to a valid value # -######################################################################## - -SET @@timestamp = 0; -#SELECT @@timestamp; - ---echo 'Setting 0 resets timestamp to session default timestamp' - -SET @@timestamp = 123456789123456; -SELECT @@timestamp; -SET @@timestamp = 60*60*60*60*365; -SELECT @@timestamp; -SET @@timestamp = -1000000000; -SELECT @@timestamp; - -SET @temp_ts = @@timestamp - @@timestamp; -SELECT @temp_ts; - ---echo '#--------------------FN_DYNVARS_001_04-------------------------#' -########################################################################### -# Change the value of timestamp to invalid value # -########################################################################### - -# for session scope ---Error ER_WRONG_TYPE_FOR_VAR -SET @@timestamp = "100"; ---echo 'Bug# 34836: Documentation says its a string variable but infact its numeric' - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@timestamp = " "; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@timestamp = 1.1; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@timestamp = 9999999999999999999999; - - - ---echo '#----------------------FN_DYNVARS_001_06------------------------#' -######################################################################### -# Check if the value in SESSION Table matches value in variable # -######################################################################### - -SELECT @@timestamp = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='timestamp'; - ---echo '#---------------------FN_DYNVARS_001_08-------------------------#' -############################################################################# -# Check if ON, OFF, TRUE and FALSE values can be used on variable # -############################################################################# ---Error ER_WRONG_TYPE_FOR_VAR -SET @@timestamp = OFF; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@timestamp = ON; - -SET @@timestamp = TRUE; -SELECT @@timestamp; - -SET @@timestamp = FALSE; -#SELECT @@timestamp; - - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -############################################################################# -# Check if accessing variable with SESSION,LOCAL and without SCOPE points -# to same session variable -############################################################################# - -SET @@timestamp = 123456; -SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; -SET @@timestamp = 654321; -SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -##################################################################### -# Check if timestamp can be accessed with and without @@ sign # -##################################################################### - -SET timestamp = 1; -SELECT @@timestamp; ---Error ER_UNKNOWN_TABLE -SELECT local.timestamp; ---Error ER_UNKNOWN_TABLE -SELECT session.timestamp; ---Error ER_BAD_FIELD_ERROR -SELECT timestamp = @@session.timestamp; - -############################## -# Restore initial value # -############################## - -SET @@timestamp = @session_start_value; - -####################################################################### -# END OF timestamp TESTS # -####################################################################### - diff --git a/mysql-test/include/tmp_table_size_basic.inc b/mysql-test/include/tmp_table_size_basic.inc deleted file mode 100644 index 7f69bcd1f8c..00000000000 --- a/mysql-test/include/tmp_table_size_basic.inc +++ /dev/null @@ -1,233 +0,0 @@ -############## 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#option_mysqld_tmp_table_size # -# # -############################################################################### - ---source include/load_sysvars.inc - -############################################################## -# START OF tmp_table_size TESTS # -############################################################## - - -############################################################# -# Save initial value # -############################################################# - -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 '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 # -############################################################## - -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 # -######################################################################## - -SET @@global.tmp_table_size = DEFAULT; -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 # -######################################################################## - -SET @@global.tmp_table_size = 1024; -SELECT @@global.tmp_table_size; -SET @@global.tmp_table_size = 60020; -SELECT @@global.tmp_table_size; -SET @@global.tmp_table_size = 4294967295; -SELECT @@global.tmp_table_size; - - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -######################################################################### -# 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; -SELECT @@session.tmp_table_size; -SET @@session.tmp_table_size = 65535; -SELECT @@session.tmp_table_size; - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -########################################################## -# Change the value of tmp_table_size to an invalid value # -########################################################## - -SET @@global.tmp_table_size = 0; -SELECT @@global.tmp_table_size; - -SET @@global.tmp_table_size = -1024; -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; - --- 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; - -SET @@session.tmp_table_size = True; -SELECT @@session.tmp_table_size; - -SET @@session.tmp_table_size = False; -SELECT @@session.tmp_table_size; - --- Error ER_WRONG_TYPE_FOR_VAR -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'; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -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 # -######################################################################## - -SET @@global.tmp_table_size = 1024; -SET @@tmp_table_size = 4294967295; -SELECT @@tmp_table_size = @@global.tmp_table_size; - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -################################################################## -# Check if accessing variable with SESSION,LOCAL and without # -# SCOPE points to same session variable # -################################################################## - -SET @@tmp_table_size = 100; -SELECT @@tmp_table_size = @@local.tmp_table_size; -SELECT @@local.tmp_table_size = @@session.tmp_table_size; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -######################################################################### -# Check if tmp_table_size can be accessed with and without @@ sign # -######################################################################### - -SET tmp_table_size = 1027; -SELECT @@tmp_table_size; - ---Error ER_UNKNOWN_TABLE -SELECT local.tmp_table_size; - ---Error ER_UNKNOWN_TABLE -SELECT global.tmp_table_size; - ---Error ER_BAD_FIELD_ERROR -SELECT tmp_table_size = @@session.tmp_table_size; - - -#################################### -# Restore initial value # -#################################### - -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/include/transaction_alloc_block_size_basic.inc b/mysql-test/include/transaction_alloc_block_size_basic.inc deleted file mode 100644 index c14383b86c6..00000000000 --- a/mysql-test/include/transaction_alloc_block_size_basic.inc +++ /dev/null @@ -1,240 +0,0 @@ -############## mysql-test\t\transaction_alloc_block_size_basic.test ########### -# # -# Variable Name: transaction_alloc_block_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 8192 # -# Range: 1024-4294967295 # -# # -# # -# Creation Date: 2008-02-14 # -# Author: Salman # -# # -# Description: Test Cases of Dynamic System Variable # -# transaction_alloc_block_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 # -# # -############################################################################### - ---source include/load_sysvars.inc - -######################################################################## -# START OF transaction_alloc_block_size TESTS # -######################################################################## - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.transaction_alloc_block_size; -SELECT @start_global_value; -SET @start_session_value = @@session.transaction_alloc_block_size; -SELECT @start_session_value; - - ---echo '#--------------------FN_DYNVARS_005_01-------------------------#' -######################################################################## -# Display the DEFAULT value of transaction_alloc_block_size # -######################################################################## - -SET @@global.transaction_alloc_block_size = 100; -SET @@global.transaction_alloc_block_size = DEFAULT; -SELECT @@global.transaction_alloc_block_size; - - -SET @@session.transaction_alloc_block_size = 200; -SET @@session.transaction_alloc_block_size = DEFAULT; -SELECT @@session.transaction_alloc_block_size; - - - ---echo '#--------------------FN_DYNVARS_005_02-------------------------#' -######################################################################## -# Check the DEFAULT value of transaction_alloc_block_size # -######################################################################## - -SET @@global.transaction_alloc_block_size = DEFAULT; -SELECT @@global.transaction_alloc_block_size = 8192; - -SET @@session.transaction_alloc_block_size = DEFAULT; -SELECT @@session.transaction_alloc_block_size = 8192; - - ---echo '#--------------------FN_DYNVARS_005_03-------------------------#' -################################################################## -# Change the value of variable to a valid value for GLOBAL Scope # -################################################################## - -SET @@global.transaction_alloc_block_size = 1024; -SELECT @@global.transaction_alloc_block_size; - -SET @@global.transaction_alloc_block_size = 60020; -SELECT @@global.transaction_alloc_block_size; - -SET @@global.transaction_alloc_block_size = 4294967295; -SELECT @@global.transaction_alloc_block_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -################################################################### -# Change the value of variable to a valid value for SESSION Scope # -################################################################### - -SET @@session.transaction_alloc_block_size = 1024; -SELECT @@session.transaction_alloc_block_size; - -SET @@session.transaction_alloc_block_size =4294967295; -SELECT @@session.transaction_alloc_block_size; - -SET @@session.transaction_alloc_block_size = 65535; -SELECT @@session.transaction_alloc_block_size; ---echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -######################################################################## -# Change the value of transaction_alloc_block_size to an invalid value # -######################################################################## - -SET @@global.transaction_alloc_block_size = 0; -SELECT @@global.transaction_alloc_block_size; - -SET @@global.transaction_alloc_block_size = -1024; -SELECT @@global.transaction_alloc_block_size; - - -SET @@global.transaction_alloc_block_size = 123456789201; -SELECT @@global.transaction_alloc_block_size; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_alloc_block_size = ON; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_alloc_block_size = OFF; - - -SET @@global.transaction_alloc_block_size = True; -SELECT @@global.transaction_alloc_block_size; - -SET @@global.transaction_alloc_block_size = False; -SELECT @@global.transaction_alloc_block_size; - - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_alloc_block_size = 65530.34; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_alloc_block_size ="Test"; - -SET @@global.transaction_alloc_block_size = 1000; -SELECT @@global.transaction_alloc_block_size; - -SET @@session.transaction_alloc_block_size = 12345678901; -SELECT @@session.transaction_alloc_block_size; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_alloc_block_size = ON; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_alloc_block_size = OFF; - -SET @@session.transaction_alloc_block_size = True; -SELECT @@session.transaction_alloc_block_size; - -SET @@session.transaction_alloc_block_size = False; -SELECT @@session.transaction_alloc_block_size; - - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_alloc_block_size = "Test"; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_alloc_block_size = 'test'; - ---echo '#------------------FN_DYNVARS_005_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.transaction_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='transaction_alloc_block_size'; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.transaction_alloc_block_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='transaction_alloc_block_size'; - - ---echo '#---------------------FN_DYNVARS_001_08----------------------#' -########################################################################### -# Check if global and session variable are independent of each other # -########################################################################### - -SET @@transaction_alloc_block_size = 1024; -SET @@global.transaction_alloc_block_size = 4294967295; -SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -######################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE # -# points to same session variable # -######################################################################## - -SET @@transaction_alloc_block_size = 100; -SELECT @@transaction_alloc_block_size = @@local.transaction_alloc_block_size; -SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -################################################################ -# Check if variable can be accessed with and without @@ sign # -################################################################ - -SET transaction_alloc_block_size = 1027; -SELECT @@transaction_alloc_block_size; - ---Error ER_UNKNOWN_TABLE -SELECT local.transaction_alloc_block_size; - ---Error ER_UNKNOWN_TABLE -SELECT session.transaction_alloc_block_size; - ---Error ER_BAD_FIELD_ERROR -SELECT transaction_alloc_block_size = @@session.transaction_alloc_block_size; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.transaction_alloc_block_size = @start_global_value; -SELECT @@global.transaction_alloc_block_size; -SET @@session.tmp_table_size = @start_session_value; -SELECT @@session.transaction_alloc_block_size; - - -############################################################# -# END OF transaction_alloc_block_size TESTS # -############################################################# - diff --git a/mysql-test/include/transaction_prealloc_size_basic.inc b/mysql-test/include/transaction_prealloc_size_basic.inc deleted file mode 100644 index 1ca302a19e0..00000000000 --- a/mysql-test/include/transaction_prealloc_size_basic.inc +++ /dev/null @@ -1,229 +0,0 @@ -############## mysql-test\t\transaction_prealloc_size_basic.test ############## -# # -# Variable Name: transaction_prealloc_size # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: 4096 # -# Range: # -# # -# # -# Creation Date: 2008-02-14 # -# Author: Sharique Abdullah # -# # -# Description: Test Cases of Dynamic System Variable transaction_prealloc_size# -# that checks the behavior of this variable in the following ways# -# * Default Value # -# * Valid & Invalid values # -# * Scope & Access method # -# * Data Integrity # -# # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html#option_mysqld_transaction_prealloc_size # -# # -############################################################################### - ---source include/load_sysvars.inc - -######################################################################## -# START OF transaction_prealloc_size TESTS # -######################################################################## - - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.transaction_prealloc_size; -SELECT @start_global_value; -SET @start_session_value = @@session.transaction_prealloc_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 transaction_prealloc_size # -######################################################################## - -SET @@global.transaction_prealloc_size = 100; -SET @@global.transaction_prealloc_size = DEFAULT; -SELECT @@global.transaction_prealloc_size; - - -SET @@session.transaction_prealloc_size = 200; -SET @@session.transaction_prealloc_size = DEFAULT; -SELECT @@session.transaction_prealloc_size; - ---echo '#--------------------FN_DYNVARS_005_02-------------------------#' -######################################################################## -# Check the DEFAULT value of transaction_prealloc_size # -######################################################################## - -SET @@global.transaction_prealloc_size = DEFAULT; -SELECT @@global.transaction_prealloc_size = 4096; - -SET @@session.transaction_prealloc_size = DEFAULT; -SELECT @@session.transaction_prealloc_size = 4096; - ---echo '#--------------------FN_DYNVARS_005_03-------------------------#' -################################################################## -# Change the value of variable to a valid value for GLOBAL Scope # -################################################################## - -SET @@global.transaction_prealloc_size = 1024; -SELECT @@global.transaction_prealloc_size; - -SET @@global.transaction_prealloc_size = 60020; -SELECT @@global.transaction_prealloc_size; - -SET @@global.transaction_prealloc_size = 4294966272; -SELECT @@global.transaction_prealloc_size; - - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -################################################################### -# Change the value of variable to a valid value for SESSION Scope # -################################################################### - -SET @@session.transaction_prealloc_size = 1024; -SELECT @@session.transaction_prealloc_size; - -SET @@session.transaction_prealloc_size =4294966272; -SELECT @@session.transaction_prealloc_size; -SET @@session.transaction_prealloc_size = 65535; -SELECT @@session.transaction_prealloc_size; - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -##################################################################### -# Change the value of transaction_prealloc_size to an invalid value # -##################################################################### - -SET @@global.transaction_prealloc_size = 0; -SELECT @@global.transaction_prealloc_size; - -SET @@global.transaction_prealloc_size = -1024; -SELECT @@global.transaction_prealloc_size; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_prealloc_size = ON; - - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_prealloc_size = OFF; - - -SET @@global.transaction_prealloc_size = True; -SELECT @@global.transaction_prealloc_size; - -SET @@global.transaction_prealloc_size = False; -SELECT @@global.transaction_prealloc_size; - - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_prealloc_size = 65530.34; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@global.transaction_prealloc_size ="Test"; - -SET @@global.transaction_prealloc_size = 1000; -SELECT @@global.transaction_prealloc_size; - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_prealloc_size = ON; - - --- Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_prealloc_size = OFF; - -SET @@session.transaction_prealloc_size = True; -SELECT @@session.transaction_prealloc_size; - -SET @@session.transaction_prealloc_size = False; -SELECT @@session.transaction_prealloc_size; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.transaction_prealloc_size = "Test"; - -SET @@session.transaction_prealloc_size = 123456789031; -SELECT @@session.transaction_prealloc_size; - - ---echo '#------------------FN_DYNVARS_005_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - - -SELECT @@global.transaction_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='transaction_prealloc_size'; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.transaction_prealloc_size = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='transaction_prealloc_size'; - - - - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -########################################################################### -# Check if global and session variable are independent of each other # -########################################################################### - -SET @@global.transaction_prealloc_size = 1024; -SET @@global.transaction_prealloc_size = 10; - -SELECT @@transaction_prealloc_size = @@global.transaction_prealloc_size; - - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE # -# points to same session variable # -######################################################################## - -SET @@transaction_prealloc_size = 100; -SELECT @@transaction_prealloc_size = @@local.transaction_prealloc_size; -SELECT @@local.transaction_prealloc_size = @@session.transaction_prealloc_size; - - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -############################################################################### -# Check if transaction_prealloc_size can be accessed with and without @@ sign # -############################################################################### - -SET transaction_prealloc_size = 1027; -SELECT @@transaction_prealloc_size; - ---Error ER_UNKNOWN_TABLE -SELECT local.transaction_prealloc_size; - ---Error ER_UNKNOWN_TABLE -SELECT session.transaction_prealloc_size; - ---Error ER_BAD_FIELD_ERROR -SELECT transaction_prealloc_size = @@session.transaction_prealloc_size; - -#################################### -# Restore initial value # -#################################### - -SET @@global.transaction_prealloc_size = @start_global_value; -SELECT @@global.transaction_prealloc_size; -SET @@session.transaction_prealloc_size = @start_session_value; -SELECT @@session.transaction_prealloc_size; - - -############################################################# -# END OF transaction_prealloc_size TESTS # -############################################################# - From 2017e5f9446bd7cc002f1fd302106667930ea3c6 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Tue, 22 Jul 2008 19:00:27 +0200 Subject: [PATCH 298/435] Fix for bug#37708: Deleted the removed tests. --- mysql-test/t/disabled.def | 82 --------------------------------------- 1 file changed, 82 deletions(-) diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index c058992d795..ada7cb3aa97 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -12,88 +12,6 @@ federated_transactions : Bug#29523 Transactions do not work csv_alter_table : Bug#33696 2008-01-21 pcrews no .result file - bug allows NULL columns in CSV tables thread_cache_size_func : Bug#36733 main.thread_cache_size_func fails randomly -binlog_cache_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -bulk_insert_buffer_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -delayed_insert_limit_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -delayed_queue_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -innodb_concurrency_tickets_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -innodb_max_purge_lag_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -innodb_sync_spin_loops_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -join_buffer_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_buffer_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_cache_age_threshold_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_cache_block_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_cache_division_limit_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -log_warnings_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_binlog_cache_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_connect_errors_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_heap_table_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_seeks_for_key_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_tmp_tables_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_write_lock_count_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -min_examined_row_limit_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -multi_range_count_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -myisam_max_sort_file_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -myisam_repair_threads_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -myisam_sort_buffer_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -net_retry_count_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_alloc_block_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_cache_limit_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_cache_min_res_unit_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_cache_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_prealloc_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -range_alloc_block_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -rpl_recovery_rank_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -server_id_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -slave_transaction_retries_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -sort_buffer_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -sync_binlog_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -timestamp_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -tmp_table_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -transaction_alloc_block_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -transaction_prealloc_size_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -wait_timeout_basic_32 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -binlog_cache_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -bulk_insert_buffer_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -delayed_insert_limit_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -delayed_queue_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -innodb_concurrency_tickets_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -innodb_max_purge_lag_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -innodb_sync_spin_loops_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -join_buffer_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_buffer_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_cache_age_threshold_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_cache_block_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -key_cache_division_limit_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -log_warnings_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_binlog_cache_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_connect_errors_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_heap_table_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_seeks_for_key_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_tmp_tables_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -max_write_lock_count_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -min_examined_row_limit_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -multi_range_count_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -myisam_max_sort_file_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -myisam_repair_threads_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -myisam_sort_buffer_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -net_retry_count_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_alloc_block_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_cache_limit_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_cache_min_res_unit_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_cache_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -query_prealloc_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -range_alloc_block_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -rpl_recovery_rank_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -server_id_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -slave_transaction_retries_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -sort_buffer_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -sync_binlog_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -timestamp_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -tmp_table_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -transaction_alloc_block_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -transaction_prealloc_size_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms -wait_timeout_basic_64 : Bug #36522: Some tests of system variables have diffs on 64bit platorms 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 From a555716d444a5aa11e2d600f4fac98b210137d13 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Tue, 22 Jul 2008 14:53:36 -0300 Subject: [PATCH 299/435] Silence warning due to unused function. sql/field.cc: Function is only used if replication is compiled in. --- sql/field.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/field.cc b/sql/field.cc index 21e26b518e8..70cc14bda5f 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -6644,6 +6644,7 @@ struct Check_field_param { Field *field; }; +#ifdef HAVE_REPLICATION static bool check_field_for_37426(const void *param_arg) { @@ -6655,7 +6656,7 @@ check_field_for_37426(const void *param_arg) param->field->row_pack_length())); return param->field->row_pack_length() > 255; } - +#endif int Field_string::compatible_field_size(uint field_metadata, const Relay_log_info *rli_arg) From 0763b15b1f420193b2d5da438aeba070ac8ceb13 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Wed, 23 Jul 2008 12:03:27 +0530 Subject: [PATCH 300/435] WL#4380 fixed the abi_check rule to handle failure in the diff command on the solaris platform. Makefile.am: Removed the -B option from the diff command used on the abi_check rule. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 222785ea3b1..77318baf07e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -306,7 +306,7 @@ do_abi_check: -e '/^[ ]*$$/d' \ -e '/^#pragma GCC set_debug_pwd/d' > \ $(top_builddir)/abi_check.out; \ - @DIFF@ -wB $$file.pp $(top_builddir)/abi_check.out; \ + @DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \ @RM@ $(top_builddir)/abi_check.out; \ done From cbbe2afdda9d29d1531d137dd7f4c8b88a1ee4e1 Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Wed, 23 Jul 2008 08:51:04 +0200 Subject: [PATCH 301/435] fix of bug#37708: removed a forgotten include file. --- mysql-test/include/wait_timeout_basic.inc | 218 ---------------------- 1 file changed, 218 deletions(-) delete mode 100644 mysql-test/include/wait_timeout_basic.inc diff --git a/mysql-test/include/wait_timeout_basic.inc b/mysql-test/include/wait_timeout_basic.inc deleted file mode 100644 index b6e19e235ba..00000000000 --- a/mysql-test/include/wait_timeout_basic.inc +++ /dev/null @@ -1,218 +0,0 @@ -############## mysql-test\t\wait_timeout_basic.test ########################### -# # -# Variable Name: wait_timeout # -# Scope: GLOBAL | SESSION # -# Access Type: Dynamic # -# Data Type: numeric # -# Default Value: # -# Range: # -# # -# # -# Creation Date: 2008-02-07 # -# Author: Sharique Abdullah # -# # -# Description: Test Cases of Dynamic System Variable wait_timeout # -# 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#option_mysqld_wait_timeouts # -# # -############################################################################### -# Due to differnces between linux and windows in the results - ---source include/not_windows.inc ---source include/load_sysvars.inc - -############################################################ -# START OF wait_timeout TESTS # -############################################################ - -############################################################# -# Save initial value # -############################################################# - -SET @start_global_value = @@global.wait_timeout; -SET @start_session_value = @@session.wait_timeout; - ---echo '#--------------------FN_DYNVARS_005_01-------------------------#' -############################################################ -# Display the DEFAULT value of wait_timeout # -############################################################ - -SET @@global.wait_timeout = 100; -SET @@global.wait_timeout = DEFAULT; -SELECT @@global.wait_timeout; - -SET @@session.wait_timeout = 200; -SET @@session.wait_timeout = DEFAULT; -SELECT @@session.wait_timeout; - - ---echo '#--------------------FN_DYNVARS_005_02-------------------------#' -############################################################ -# Check the DEFAULT value of wait_timeout # -############################################################ - -SET @@global.wait_timeout = DEFAULT; -SELECT @@global.wait_timeout = @default_wait_timeout; - -SET @@session.wait_timeout = DEFAULT; -SELECT @@session.wait_timeout = @default_wait_timeout; - - - ---echo '#--------------------FN_DYNVARS_005_03-------------------------#' -###################################################################### -# Change the value of wait_timeout to a valid value for GLOBAL Scope # -###################################################################### - -#SET @@global.wait_timeout= @min_wait_timeout; -SET @@global.wait_timeout= 1; -SELECT @@global.wait_timeout; - -SET @@global.wait_timeout = 60020; -SELECT @@global.wait_timeout; - -#SET @@global.wait_timeout = @max_wait_timeout; -SET @@global.wait_timeout = 31536000; -SELECT @@global.wait_timeout = @max_wait_timeout; - - ---echo '#--------------------FN_DYNVARS_005_04-------------------------#' -####################################################################### -# Change the value of wait_timeout to a valid value for SESSION Scope # -####################################################################### -#SET @@session.wait_timeout = @min_wait_timeout; -#SELECT @@session.wait_timeout; - -SET @@session.wait_timeout =6000; -SELECT @@session.wait_timeout; - -#SET @@session.wait_timeout = @max_wait_timeout; -#SELECT @@session.wait_timeout = @max_wait_timeout; - - ---echo '#------------------FN_DYNVARS_005_05-----------------------#' -######################################################## -# Change the value of wait_timeout to an invalid value # -######################################################## - -SET @@global.wait_timeout = 0; -SET @@global.wait_timeout = -1024; - ---echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.wait_timeout = ON; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.wait_timeout = OFF; - -SET @@global.wait_timeout = True; -SELECT @@global.wait_timeout; - -SET @@global.wait_timeout = False; -SELECT @@global.wait_timeout; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.wait_timeout = 65530.34; - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@global.wait_timeout ="Test"; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.wait_timeout = ON; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.wait_timeout = OFF; - -SET @@session.wait_timeout = True; -SELECT @@session.wait_timeout; - -SET @@session.wait_timeout = False; -SELECT @@session.wait_timeout; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.wait_timeout = "Test"; - - ---Error ER_WRONG_TYPE_FOR_VAR -SET @@session.wait_timeout = 'test'; - -SET @@session.wait_timeout = 123456789031; -SELECT @@session.wait_timeout = @max_wait_timeout; - - ---echo '#------------------FN_DYNVARS_005_06-----------------------#' -#################################################################### -# Check if the value in GLOBAL Table matches value in variable # -#################################################################### - -SELECT @@global.wait_timeout = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES -WHERE VARIABLE_NAME='wait_timeout'; - ---echo '#------------------FN_DYNVARS_005_07-----------------------#' -#################################################################### -# Check if the value in SESSION Table matches value in variable # -#################################################################### - -SELECT @@session.wait_timeout = VARIABLE_VALUE -FROM INFORMATION_SCHEMA.SESSION_VARIABLES -WHERE VARIABLE_NAME='wait_timeout'; - ---echo '#---------------------FN_DYNVARS_001_09----------------------#' -########################################################################### -# Check if global and session variable are independent of each other # -########################################################################### - -SET @@global.wait_timeout = 30000; -SET @@global.wait_timeout = 40000; -SELECT @@wait_timeout = @@global.wait_timeout; - ---echo '#---------------------FN_DYNVARS_001_10----------------------#' -######################################################################## -# Check if accessing variable with SESSION,LOCAL and without SCOPE # -# points to same session variable # -######################################################################## - -SET @@wait_timeout = 100; -SELECT @@wait_timeout = @@local.wait_timeout; -SELECT @@local.wait_timeout = @@session.wait_timeout; - ---echo '#---------------------FN_DYNVARS_001_11----------------------#' -####################################################################### -# Check if wait_timeout can be accessed with and without @@ sign # -####################################################################### - -SET wait_timeout = 1027; -SELECT @@wait_timeout; - - ---Error ER_UNKNOWN_TABLE -SELECT local.wait_timeout; - ---Error ER_UNKNOWN_TABLE -SELECT session.wait_timeout; - ---Error ER_BAD_FIELD_ERROR -SELECT wait_timeout = @@session.wait_timeout; - - -#################################### -# Restore initial value # -#################################### - -SET @@global.wait_timeout = @start_global_value; -SET @@session.wait_timeout = @start_session_value; - -################################################# -# END OF wait_timeout TESTS # -################################################# From 7978905c5c5fc6a980b9e9f105212956b765f151 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Wed, 23 Jul 2008 12:13:55 +0200 Subject: [PATCH 302/435] BUG#37493: rpl_trunc_temp.test nondeterministic Problem: the test waits for a 'DROP TEMPORARY TABLE' event to appear in the master's binlog, then checks on the slave whether the number of temporary tables has decreased. The slave does not sync, causing a race. Fix: check for the 'DROP TEMPORARY TABLE' event on slave instead of on master. mysql-test/suite/rpl/t/rpl_trunc_temp.test: - Fixed BUG#37493 by waiting for the event on the slave instead of on the master. - Added comments. --- mysql-test/suite/rpl/t/rpl_trunc_temp.test | 38 +++++++++++++++------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/mysql-test/suite/rpl/t/rpl_trunc_temp.test b/mysql-test/suite/rpl/t/rpl_trunc_temp.test index 93308e3eb3f..88ecb7c18b0 100644 --- a/mysql-test/suite/rpl/t/rpl_trunc_temp.test +++ b/mysql-test/suite/rpl/t/rpl_trunc_temp.test @@ -1,13 +1,30 @@ -# Requires statement logging +# ==== Purpose ==== +# +# Verify that Slave_open_temp_tables is increased when a temporary +# table is opened on the slave, and decreased when a temporary table +# is closed on the slave, and that it is preserved during 'DELETE FROM +# table' and 'TRUNCATE table'. +# +# ==== Method ==== +# +# Create a temporary table on master, insert rows, and try: +# - delete rows from the table +# - truncate the table +# - drop the table +# +# ==== Related bugs ==== +# +# BUG#17137 Running "truncate table" on temporary table leaves the table open on a slave +# +# Bug in this test: BUG#37493: rpl_trunc_temp.test nondeterministic + + +# Requires statement-based logging since temporary tables are not +# logged in row-based logging -- source include/have_binlog_format_mixed_or_statement.inc source include/master-slave.inc; -# -# Bug#17137 Running "truncate table" on temporary table -# leaves the table open on a slave -# - create temporary table t1 (n int); insert into t1 values(1); sync_slave_with_master; @@ -28,13 +45,10 @@ show status like 'Slave_open_temp_tables'; # Disconnect the master, temp table on slave should dissapear disconnect master; -connection master1; -# Wait until drop of temp tables appers in binlog +connection slave; + +# Wait until drop of temp tables appers in slave's binlog let $wait_binlog_event= DROP; source include/wait_for_binlog_event.inc; -connection slave; show status like 'Slave_open_temp_tables'; - - -# End of 4.1 tests From dd85aa78ba8fbdd992139223aff9ef051f80694a Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 23 Jul 2008 14:25:00 +0300 Subject: [PATCH 303/435] Bug#37830 : ORDER BY ASC/DESC - no difference Range scan in descending order for c <= <= c type of ranges was ignoring the DESC flag. However some engines like InnoDB have the primary key parts as a suffix for every secondary key. When such primary key suffix is used for ordering ignoring the DESC is not valid. But we generally would like to do this because it's faster. Fixed by performing only reverse scan if the primary key is used. Removed some dead code in the process. mysql-test/r/innodb_mysql.result: Bug#37830 : test case mysql-test/t/innodb_mysql.test: Bug#37830 : test case sql/opt_range.cc: Bug#37830 : - preserve and use used_key_parts to distinguish when a primary key suffix is used - removed some dead code sql/opt_range.h: Bug#37830 : - preserve used_key_parts - dead code removed sql/sql_select.cc: Bug#37830 : Do only reverse order traversal if the primary key suffix is used. --- mysql-test/r/innodb_mysql.result | 15 ++++++++ mysql-test/t/innodb_mysql.test | 18 +++++++++ sql/opt_range.cc | 66 ++++++-------------------------- sql/opt_range.h | 4 +- sql/sql_select.cc | 59 +++++++++++++++++----------- 5 files changed, 83 insertions(+), 79 deletions(-) diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index b487cfd9a4b..47fa331c9ab 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1246,4 +1246,19 @@ set global innodb_autoextend_increment=@my_innodb_autoextend_increment; set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency; set global innodb_commit_concurrency=0; set global innodb_commit_concurrency=@my_innodb_commit_concurrency; +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b)) +ENGINE=InnoDB; +INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1); +INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1; +EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range t1_b t1_b 5 NULL 4 Using where +SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; +a b c +8 1 1 +7 1 1 +6 1 1 +5 1 1 +4 1 1 +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index 59ee7c274bb..e15d1aee08a 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -996,4 +996,22 @@ set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency; set global innodb_commit_concurrency=0; set global innodb_commit_concurrency=@my_innodb_commit_concurrency; +# +# Bug #37830: ORDER BY ASC/DESC - no difference +# + +CREATE TABLE t1 (a int, b int, c int, PRIMARY KEY (a), KEY t1_b (b)) + ENGINE=InnoDB; + +INSERT INTO t1 (a,b,c) VALUES (1,1,1), (2,1,1), (3,1,1), (4,1,1); +INSERT INTO t1 (a,b,c) SELECT a+4,b,c FROM t1; + +# should be range access +EXPLAIN SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; + +# should produce '8 7 6 5 4' for a +SELECT a, b, c FROM t1 WHERE b = 1 ORDER BY a DESC LIMIT 5; + +DROP TABLE t1; + --echo End of 5.0 tests diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 95cda371673..7587db4e329 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -7099,7 +7099,8 @@ bool QUICK_RANGE_SELECT::row_in_ranges() QUICK_SELECT_DESC::QUICK_SELECT_DESC(QUICK_RANGE_SELECT *q, uint used_key_parts_arg) - : QUICK_RANGE_SELECT(*q), rev_it(rev_ranges) + : QUICK_RANGE_SELECT(*q), rev_it(rev_ranges), + used_key_parts (used_key_parts_arg) { QUICK_RANGE *r; @@ -7141,10 +7142,11 @@ int QUICK_SELECT_DESC::get_next() int result; if (last_range) { // Already read through key - result = ((last_range->flag & EQ_RANGE) - ? file->index_next_same(record, (byte*) last_range->min_key, - last_range->min_length) : - file->index_prev(record)); + result = ((last_range->flag & EQ_RANGE && + used_key_parts <= head->key_info[index].key_parts) ? + file->index_next_same(record, (byte*) last_range->min_key, + last_range->min_length) : + file->index_prev(record)); if (!result) { if (cmp_prev(*rev_it.ref()) == 0) @@ -7168,7 +7170,9 @@ int QUICK_SELECT_DESC::get_next() continue; } - if (last_range->flag & EQ_RANGE) + if (last_range->flag & EQ_RANGE && + used_key_parts <= head->key_info[index].key_parts) + { result= file->index_read(record, (byte*) last_range->max_key, last_range->max_length, HA_READ_KEY_EXACT); @@ -7176,6 +7180,8 @@ int QUICK_SELECT_DESC::get_next() else { DBUG_ASSERT(last_range->flag & NEAR_MAX || + (last_range->flag & EQ_RANGE && + used_key_parts > head->key_info[index].key_parts) || range_reads_after_key(last_range)); result=file->index_read(record, (byte*) last_range->max_key, last_range->max_length, @@ -7273,54 +7279,6 @@ bool QUICK_SELECT_DESC::range_reads_after_key(QUICK_RANGE *range_arg) } -/* TRUE if we are reading over a key that may have a NULL value */ - -#ifdef NOT_USED -bool QUICK_SELECT_DESC::test_if_null_range(QUICK_RANGE *range_arg, - uint used_key_parts) -{ - uint offset, end; - KEY_PART *key_part = key_parts, - *key_part_end= key_part+used_key_parts; - - for (offset= 0, end = min(range_arg->min_length, range_arg->max_length) ; - offset < end && key_part != key_part_end ; - offset+= key_part++->store_length) - { - if (!memcmp((char*) range_arg->min_key+offset, - (char*) range_arg->max_key+offset, - key_part->store_length)) - continue; - - if (key_part->null_bit && range_arg->min_key[offset]) - return 1; // min_key is null and max_key isn't - // Range doesn't cover NULL. This is ok if there is no more null parts - break; - } - /* - If the next min_range is > NULL, then we can use this, even if - it's a NULL key - Example: SELECT * FROM t1 WHERE a = 2 AND b >0 ORDER BY a DESC,b DESC; - - */ - if (key_part != key_part_end && key_part->null_bit) - { - if (offset >= range_arg->min_length || range_arg->min_key[offset]) - return 1; // Could be null - key_part++; - } - /* - If any of the key parts used in the ORDER BY could be NULL, we can't - use the key to sort the data. - */ - for (; key_part != key_part_end ; key_part++) - if (key_part->null_bit) - return 1; // Covers null part - return 0; -} -#endif - - void QUICK_RANGE_SELECT::add_info_string(String *str) { KEY *key_info= head->key_info + index; diff --git a/sql/opt_range.h b/sql/opt_range.h index 3a737323eb7..8856223b371 100644 --- a/sql/opt_range.h +++ b/sql/opt_range.h @@ -667,12 +667,10 @@ public: int get_type() { return QS_TYPE_RANGE_DESC; } private: bool range_reads_after_key(QUICK_RANGE *range); -#ifdef NOT_USED - bool test_if_null_range(QUICK_RANGE *range, uint used_key_parts); -#endif int reset(void) { rev_it.rewind(); return QUICK_RANGE_SELECT::reset(); } List rev_ranges; List_iterator rev_it; + uint used_key_parts; }; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 60ba7591726..bcc5f30180f 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -12088,26 +12088,25 @@ part_of_refkey(TABLE *table,Field *field) } -/***************************************************************************** - Test if one can use the key to resolve ORDER BY +/** + Test if a key can be used to resolve ORDER BY - SYNOPSIS - test_if_order_by_key() - order Sort order - table Table to sort - idx Index to check - used_key_parts Return value for used key parts. + used_key_parts is set to correct key parts used if return value != 0 + (On other cases, used_key_part may be changed). + Note that the value may actually be greater than the number of index + key parts. This can happen for storage engines that have the primary + key parts as a suffix for every secondary key. + @param order Sort order + @param table Table to sort + @param idx Index to check + @param[out] used_key_parts Return value for used key parts. - NOTES - used_key_parts is set to correct key parts used if return value != 0 - (On other cases, used_key_part may be changed) - - RETURN - 1 key is ok. - 0 Key can't be used - -1 Reverse key can be used -*****************************************************************************/ + @return indication if the key can be used for sorting + @retval 1 key can be used for reading data in order. + @retval 0 Key can't be used + @retval -1 Reverse read on the key can be used +*/ static int test_if_order_by_key(ORDER *order, TABLE *table, uint idx, uint *used_key_parts) @@ -12172,11 +12171,27 @@ static int test_if_order_by_key(ORDER *order, TABLE *table, uint idx, reverse=flag; // Remember if reverse key_part++; } - *used_key_parts= on_primary_key ? table->key_info[idx].key_parts : - (uint) (key_part - table->key_info[idx].key_part); - if (reverse == -1 && !(table->file->index_flags(idx, *used_key_parts-1, 1) & - HA_READ_PREV)) - reverse= 0; // Index can't be used + if (on_primary_key) + { + uint used_key_parts_secondary= table->key_info[idx].key_parts; + uint used_key_parts_pk= + (uint) (key_part - table->key_info[table->s->primary_key].key_part); + *used_key_parts= used_key_parts_pk + used_key_parts_secondary; + + if (reverse == -1 && + (!(table->file->index_flags(idx, used_key_parts_secondary - 1, 1) & + HA_READ_PREV) || + !(table->file->index_flags(table->s->primary_key, + used_key_parts_pk - 1, 1) & HA_READ_PREV))) + reverse= 0; // Index can't be used + } + else + { + *used_key_parts= (uint) (key_part - table->key_info[idx].key_part); + if (reverse == -1 && + !(table->file->index_flags(idx, *used_key_parts-1, 1) & HA_READ_PREV)) + reverse= 0; // Index can't be used + } DBUG_RETURN(reverse); } From ea4b3963038318ac96dd397125e70b7c9dfb9adb Mon Sep 17 00:00:00 2001 From: Horst Hunger Date: Wed, 23 Jul 2008 16:06:44 +0200 Subject: [PATCH 304/435] Final fix for bug#36522 in 5.1. This new fix was necessary due to fix of bug 37708. --- mysql-test/suite/sys_vars/README | 3 + .../sys_vars/inc/binlog_cache_size_basic.inc | 154 +++++++++++ .../inc/bulk_insert_buffer_size_basic.inc | 203 +++++++++++++++ .../inc/delayed_insert_limit_basic.inc | 167 ++++++++++++ .../sys_vars/inc/delayed_queue_size_basic.inc | 163 ++++++++++++ .../inc/innodb_concurrency_tickets_basic.inc | 147 +++++++++++ .../inc/innodb_max_purge_lag_basic.inc | 147 +++++++++++ .../inc/innodb_sync_spin_loops_basic.inc | 142 ++++++++++ .../sys_vars/inc/join_buffer_size_basic.inc | 216 ++++++++++++++++ .../sys_vars/inc/key_buffer_size_basic.inc | 187 ++++++++++++++ .../inc/key_cache_age_threshold_basic.inc | 180 +++++++++++++ .../inc/key_cache_block_size_basic.inc | 185 +++++++++++++ .../inc/key_cache_division_limit_basic.inc | 184 +++++++++++++ .../suite/sys_vars/inc/log_warnings_basic.inc | 210 +++++++++++++++ .../inc/max_binlog_cache_size_basic.inc | 187 ++++++++++++++ .../sys_vars/inc/max_connect_errors_basic.inc | 182 +++++++++++++ .../inc/max_heap_table_size_basic.inc | 222 ++++++++++++++++ .../sys_vars/inc/max_seeks_for_key_basic.inc | 213 +++++++++++++++ .../sys_vars/inc/max_tmp_tables_basic.inc | 227 ++++++++++++++++ .../inc/max_write_lock_count_basic.inc | 158 ++++++++++++ .../inc/min_examined_row_limit_basic.inc | 219 ++++++++++++++++ .../sys_vars/inc/multi_range_count_basic.inc | 219 ++++++++++++++++ .../inc/myisam_max_sort_file_size_basic.inc | 184 +++++++++++++ .../inc/myisam_repair_threads_basic.inc | 242 ++++++++++++++++++ .../inc/myisam_sort_buffer_size_basic.inc | 240 +++++++++++++++++ .../sys_vars/inc/net_retry_count_basic.inc | 217 ++++++++++++++++ .../inc/query_alloc_block_size_basic.inc | 225 ++++++++++++++++ .../sys_vars/inc/query_cache_limit_basic.inc | 178 +++++++++++++ .../inc/query_cache_min_res_unit_basic.inc | 187 ++++++++++++++ .../sys_vars/inc/query_cache_size_basic.inc | 175 +++++++++++++ .../inc/query_prealloc_size_basic.inc | 241 +++++++++++++++++ .../inc/range_alloc_block_size_basic.inc | 208 +++++++++++++++ .../sys_vars/inc/rpl_recovery_rank_basic.inc | 171 +++++++++++++ .../suite/sys_vars/inc/server_id_basic.inc | 190 ++++++++++++++ .../inc/slave_transaction_retries_basic.inc | 188 ++++++++++++++ .../sys_vars/inc/sort_buffer_size_basic.inc | 213 +++++++++++++++ .../suite/sys_vars/inc/sync_binlog_basic.inc | 156 +++++++++++ .../suite/sys_vars/inc/timestamp_basic.inc | 162 ++++++++++++ .../sys_vars/inc/tmp_table_size_basic.inc | 233 +++++++++++++++++ .../transaction_alloc_block_size_basic.inc | 240 +++++++++++++++++ .../inc/transaction_prealloc_size_basic.inc | 229 +++++++++++++++++ .../suite/sys_vars/inc/wait_timeout_basic.inc | 218 ++++++++++++++++ .../r/binlog_cache_size_basic_32.result | 102 ++++++++ .../r/binlog_cache_size_basic_64.result | 100 ++++++++ .../r/bulk_insert_buffer_size_basic_32.result | 154 +++++++++++ .../r/bulk_insert_buffer_size_basic_64.result | 150 +++++++++++ .../r/delayed_insert_limit_basic_32.result | 112 ++++++++ .../r/delayed_insert_limit_basic_64.result | 110 ++++++++ .../r/delayed_queue_size_basic_32.result | 110 ++++++++ .../r/delayed_queue_size_basic_64.result | 108 ++++++++ ...innodb_concurrency_tickets_basic_32.result | 100 ++++++++ ...innodb_concurrency_tickets_basic_64.result | 98 +++++++ .../r/innodb_max_purge_lag_basic_32.result | 94 +++++++ .../r/innodb_max_purge_lag_basic_64.result | 92 +++++++ .../r/innodb_sync_spin_loops_basic_32.result | 94 +++++++ .../r/innodb_sync_spin_loops_basic_64.result | 92 +++++++ .../r/join_buffer_size_basic_32.result | 198 ++++++++++++++ .../r/join_buffer_size_basic_64.result | 194 ++++++++++++++ .../r/key_buffer_size_basic_32.result | 111 ++++++++ .../r/key_buffer_size_basic_64.result | 111 ++++++++ .../r/key_cache_age_threshold_basic_32.result | 126 +++++++++ .../r/key_cache_age_threshold_basic_64.result | 126 +++++++++ .../r/key_cache_block_size_basic_32.result | 142 ++++++++++ .../r/key_cache_block_size_basic_64.result | 142 ++++++++++ .../key_cache_division_limit_basic_32.result | 139 ++++++++++ .../key_cache_division_limit_basic_64.result | 139 ++++++++++ .../sys_vars/r/log_warnings_basic_32.result | 162 ++++++++++++ .../sys_vars/r/log_warnings_basic_64.result | 158 ++++++++++++ .../r/max_binlog_cache_size_basic_32.result | 145 +++++++++++ .../r/max_binlog_cache_size_basic_64.result | 141 ++++++++++ .../r/max_connect_errors_basic_32.result | 137 ++++++++++ .../r/max_connect_errors_basic_64.result | 133 ++++++++++ .../r/max_heap_table_size_basic_32.result | 196 ++++++++++++++ .../r/max_heap_table_size_basic_64.result | 196 ++++++++++++++ .../r/max_seeks_for_key_basic_32.result | 180 +++++++++++++ .../r/max_seeks_for_key_basic_64.result | 176 +++++++++++++ .../sys_vars/r/max_tmp_tables_basic_32.result | 197 ++++++++++++++ .../sys_vars/r/max_tmp_tables_basic_64.result | 187 ++++++++++++++ .../r/max_write_lock_count_basic_32.result | 108 ++++++++ .../r/max_write_lock_count_basic_64.result | 104 ++++++++ .../r/min_examined_row_limit_basic_32.result | 180 +++++++++++++ .../r/min_examined_row_limit_basic_64.result | 174 +++++++++++++ .../r/multi_range_count_basic_32.result | 192 ++++++++++++++ .../r/multi_range_count_basic_64.result | 184 +++++++++++++ .../myisam_max_sort_file_size_basic_32.result | 114 +++++++++ .../myisam_max_sort_file_size_basic_64.result | 114 +++++++++ .../r/myisam_repair_threads_basic_32.result | 180 +++++++++++++ .../r/myisam_repair_threads_basic_64.result | 178 +++++++++++++ .../r/myisam_sort_buffer_size_basic_32.result | 184 +++++++++++++ .../r/myisam_sort_buffer_size_basic_64.result | 182 +++++++++++++ .../r/net_retry_count_basic_32.result | 192 ++++++++++++++ .../r/net_retry_count_basic_64.result | 184 +++++++++++++ .../r/query_alloc_block_size_basic_32.result | 203 +++++++++++++++ .../r/query_alloc_block_size_basic_64.result | 199 ++++++++++++++ .../r/query_cache_limit_basic_32.result | 126 +++++++++ .../r/query_cache_limit_basic_64.result | 120 +++++++++ .../query_cache_min_res_unit_basic_32.result | 134 ++++++++++ .../query_cache_min_res_unit_basic_64.result | 130 ++++++++++ .../r/query_cache_size_basic_32.result | 138 ++++++++++ .../r/query_cache_size_basic_64.result | 134 ++++++++++ .../r/query_prealloc_size_basic_32.result | 192 ++++++++++++++ .../r/query_prealloc_size_basic_64.result | 190 ++++++++++++++ .../r/range_alloc_block_size_basic_32.result | 182 +++++++++++++ .../r/range_alloc_block_size_basic_64.result | 178 +++++++++++++ .../r/rpl_recovery_rank_basic_32.result | 110 ++++++++ .../r/rpl_recovery_rank_basic_64.result | 104 ++++++++ .../sys_vars/r/server_id_basic_32.result | 117 +++++++++ .../sys_vars/r/server_id_basic_64.result | 115 +++++++++ .../slave_transaction_retries_basic_32.result | 119 +++++++++ .../slave_transaction_retries_basic_64.result | 115 +++++++++ .../r/sort_buffer_size_basic_32.result | 193 ++++++++++++++ .../r/sort_buffer_size_basic_64.result | 189 ++++++++++++++ .../sys_vars/r/sync_binlog_basic_32.result | 105 ++++++++ .../sys_vars/r/sync_binlog_basic_64.result | 105 ++++++++ .../sys_vars/r/timestamp_basic_32.result | 73 ++++++ .../sys_vars/r/timestamp_basic_64.result | 73 ++++++ .../sys_vars/r/tmp_table_size_basic_32.result | 172 +++++++++++++ .../sys_vars/r/tmp_table_size_basic_64.result | 172 +++++++++++++ ...ansaction_alloc_block_size_basic_32.result | 180 +++++++++++++ ...ansaction_alloc_block_size_basic_64.result | 176 +++++++++++++ .../transaction_prealloc_size_basic_32.result | 172 +++++++++++++ .../transaction_prealloc_size_basic_64.result | 170 ++++++++++++ .../sys_vars/r/wait_timeout_basic_32.result | 129 ++++++++++ .../sys_vars/r/wait_timeout_basic_64.result | 129 ++++++++++ .../t/binlog_cache_size_basic_32.test | 9 + .../t/binlog_cache_size_basic_64.test | 9 + .../t/bulk_insert_buffer_size_basic_32.test | 9 + .../t/bulk_insert_buffer_size_basic_64.test | 9 + .../t/delayed_insert_limit_basic_32.test | 9 + .../t/delayed_insert_limit_basic_64.test | 9 + .../t/delayed_queue_size_basic_32.test | 9 + .../t/delayed_queue_size_basic_64.test | 9 + .../innodb_concurrency_tickets_basic_32.test | 9 + .../innodb_concurrency_tickets_basic_64.test | 9 + .../t/innodb_max_purge_lag_basic_32.test | 9 + .../t/innodb_max_purge_lag_basic_64.test | 9 + .../t/innodb_sync_spin_loops_basic_32.test | 9 + .../t/innodb_sync_spin_loops_basic_64.test | 9 + .../sys_vars/t/join_buffer_size_basic_32.test | 9 + .../sys_vars/t/join_buffer_size_basic_64.test | 9 + .../sys_vars/t/key_buffer_size_basic_32.test | 9 + .../sys_vars/t/key_buffer_size_basic_64.test | 9 + .../t/key_cache_age_threshold_basic_32.test | 9 + .../t/key_cache_age_threshold_basic_64.test | 9 + .../t/key_cache_block_size_basic_32.test | 9 + .../t/key_cache_block_size_basic_64.test | 9 + .../t/key_cache_division_limit_basic_32.test | 9 + .../t/key_cache_division_limit_basic_64.test | 9 + .../sys_vars/t/log_warnings_basic_32.test | 9 + .../sys_vars/t/log_warnings_basic_64.test | 9 + .../t/max_binlog_cache_size_basic_32.test | 9 + .../t/max_binlog_cache_size_basic_64.test | 9 + .../t/max_connect_errors_basic_32.test | 9 + .../t/max_connect_errors_basic_64.test | 9 + .../t/max_heap_table_size_basic_32.test | 9 + .../t/max_heap_table_size_basic_64.test | 9 + .../t/max_seeks_for_key_basic_32.test | 9 + .../t/max_seeks_for_key_basic_64.test | 9 + .../sys_vars/t/max_tmp_tables_basic_32.test | 9 + .../sys_vars/t/max_tmp_tables_basic_64.test | 9 + .../t/max_write_lock_count_basic_32.test | 9 + .../t/max_write_lock_count_basic_64.test | 9 + .../t/min_examined_row_limit_basic_32.test | 9 + .../t/min_examined_row_limit_basic_64.test | 9 + .../t/multi_range_count_basic_32.test | 9 + .../t/multi_range_count_basic_64.test | 9 + .../t/myisam_max_sort_file_size_basic_32.test | 9 + .../t/myisam_max_sort_file_size_basic_64.test | 9 + .../t/myisam_repair_threads_basic_32.test | 9 + .../t/myisam_repair_threads_basic_64.test | 9 + .../t/myisam_sort_buffer_size_basic_32.test | 9 + .../t/myisam_sort_buffer_size_basic_64.test | 9 + .../sys_vars/t/net_retry_count_basic_32.test | 9 + .../sys_vars/t/net_retry_count_basic_64.test | 9 + .../t/query_alloc_block_size_basic_32.test | 9 + .../t/query_alloc_block_size_basic_64.test | 9 + .../t/query_cache_limit_basic_32.test | 9 + .../t/query_cache_limit_basic_64.test | 9 + .../t/query_cache_min_res_unit_basic_32.test | 9 + .../t/query_cache_min_res_unit_basic_64.test | 9 + .../sys_vars/t/query_cache_size_basic_32.test | 9 + .../sys_vars/t/query_cache_size_basic_64.test | 9 + .../t/query_prealloc_size_basic_32.test | 9 + .../t/query_prealloc_size_basic_64.test | 9 + .../t/range_alloc_block_size_basic_32.test | 9 + .../t/range_alloc_block_size_basic_64.test | 9 + .../t/rpl_recovery_rank_basic_32.test | 9 + .../t/rpl_recovery_rank_basic_64.test | 9 + .../suite/sys_vars/t/server_id_basic_32.test | 9 + .../suite/sys_vars/t/server_id_basic_64.test | 9 + .../t/slave_transaction_retries_basic_32.test | 9 + .../t/slave_transaction_retries_basic_64.test | 9 + .../sys_vars/t/sort_buffer_size_basic_32.test | 9 + .../sys_vars/t/sort_buffer_size_basic_64.test | 9 + .../sys_vars/t/sync_binlog_basic_32.test | 9 + .../sys_vars/t/sync_binlog_basic_64.test | 9 + .../suite/sys_vars/t/timestamp_basic_32.test | 9 + .../suite/sys_vars/t/timestamp_basic_64.test | 9 + .../sys_vars/t/tmp_table_size_basic_32.test | 9 + .../sys_vars/t/tmp_table_size_basic_64.test | 9 + ...transaction_alloc_block_size_basic_32.test | 9 + ...transaction_alloc_block_size_basic_64.test | 9 + .../t/transaction_prealloc_size_basic_32.test | 9 + .../t/transaction_prealloc_size_basic_64.test | 9 + .../sys_vars/t/wait_timeout_basic_32.test | 9 + .../sys_vars/t/wait_timeout_basic_64.test | 9 + 206 files changed, 20616 insertions(+) create mode 100644 mysql-test/suite/sys_vars/README create mode 100644 mysql-test/suite/sys_vars/inc/binlog_cache_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/log_warnings_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/multi_range_count_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/server_id_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/timestamp_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc create mode 100644 mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc create mode 100644 mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/log_warnings_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/log_warnings_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/multi_range_count_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/multi_range_count_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/server_id_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/server_id_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/timestamp_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/timestamp_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_64.result create mode 100644 mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result create mode 100644 mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result create mode 100644 mysql-test/suite/sys_vars/t/binlog_cache_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/binlog_cache_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/delayed_queue_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/delayed_queue_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/join_buffer_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/join_buffer_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/log_warnings_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/log_warnings_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/max_connect_errors_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/max_connect_errors_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/max_tmp_tables_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/max_tmp_tables_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/max_write_lock_count_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/max_write_lock_count_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/multi_range_count_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/multi_range_count_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/net_retry_count_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/net_retry_count_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/query_cache_limit_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/query_cache_limit_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/query_cache_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/query_cache_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/server_id_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/server_id_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/sort_buffer_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/sort_buffer_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/timestamp_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/timestamp_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_64.test create mode 100644 mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test create mode 100644 mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test diff --git a/mysql-test/suite/sys_vars/README b/mysql-test/suite/sys_vars/README new file mode 100644 index 00000000000..a84f00f1f62 --- /dev/null +++ b/mysql-test/suite/sys_vars/README @@ -0,0 +1,3 @@ +Some of these tests allocate more than 4GB RAM. +So, assure that the machine on which the suite will be executed has more than 4GB RAM. + diff --git a/mysql-test/suite/sys_vars/inc/binlog_cache_size_basic.inc b/mysql-test/suite/sys_vars/inc/binlog_cache_size_basic.inc new file mode 100644 index 00000000000..323e19c4d66 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/binlog_cache_size_basic.inc @@ -0,0 +1,154 @@ +################# mysql-test\t\binlog_cache_size_basic.test #################### +# # +# Variable Name: binlog_cache_size # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 32768 # +# Range: 4096 - 4294967295 # +# # +# # +# Creation Date: 2008-04-28 # +# Author: Salman Rawala/Horst Hunger # +# # +# Description: Test Cases of Dynamic System Variable "binlog_cache_size" # +# that checks 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#option_mysqld_binlog_cache_size # +# # +################################################################################ + +################################################################# +# START OF binlog_cache_size TESTS # +################################################################# + +######################################################################### +# Saving initial value of binlog_cache_size in a temporary variable # +######################################################################### + +SET @start_value = @@global.binlog_cache_size; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_006_01------------------------#' +######################################################################### +# Display the DEFAULT value of binlog_cache_size # +######################################################################### + +SET @@global.binlog_cache_size = 100; +SET @@global.binlog_cache_size = DEFAULT; +SELECT @@global.binlog_cache_size; + + +--echo '#---------------------FN_DYNVARS_006_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.binlog_cache_size = @start_value; +SELECT @@global.binlog_cache_size = 32768; + + +--echo '#--------------------FN_DYNVARS_006_03------------------------#' +######################################################################### +# Change the value of binlog_cache_size to a valid value # +######################################################################### + +SET @@global.binlog_cache_size = 4096; +SELECT @@global.binlog_cache_size; +SET @@global.binlog_cache_size = 4294967295; +SELECT @@global.binlog_cache_size; +SET @@global.binlog_cache_size = 10000; +SELECT @@global.binlog_cache_size; +SET @@global.binlog_cache_size = 21221204; +SELECT @@global.binlog_cache_size; +echo 'Bug: Invalid values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_006_04-------------------------#' +############################################################################ +# Change the value of binlog_cache_size to invalid value # +############################################################################ + +SET @@global.binlog_cache_size = 1024; +SELECT @@global.binlog_cache_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.binlog_cache_size = 10000.01; +SET @@global.binlog_cache_size = -1024; +SELECT @@global.binlog_cache_size; +SET @@global.binlog_cache_size = 42949672950; +SELECT @@global.binlog_cache_size; +echo 'Bug: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.binlog_cache_size = ON; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.binlog_cache_size = 'test'; + + +--echo '#-------------------FN_DYNVARS_006_05----------------------------#' +############################################################################ +# Test if accessing session binlog_cache_size gives error # +############################################################################ + +--Error ER_GLOBAL_VARIABLE +SET @@session.binlog_cache_size = 0; + + +--echo '#----------------------FN_DYNVARS_006_06------------------------#' +############################################################################## +# Check if the value in GLOBAL Tables matches values in variable # +############################################################################## + +SELECT @@global.binlog_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_cache_size'; + +--echo '#---------------------FN_DYNVARS_006_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.binlog_cache_size = TRUE; +SELECT @@global.binlog_cache_size; +SET @@global.binlog_cache_size = FALSE; +SELECT @@global.binlog_cache_size; +echo 'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; + +--echo '#---------------------FN_DYNVARS_006_08----------------------#' +############################################################################### +# Check if accessing variable without SCOPE points to same global variable # +############################################################################### + +SET @@global.binlog_cache_size = 1; +SELECT @@binlog_cache_size = @@global.binlog_cache_size; + +--echo '#---------------------FN_DYNVARS_006_09----------------------#' +########################################################################### +# Check if binlog_cache_size can be accessed with and without @@ sign # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET binlog_cache_size = 1; +--Error ER_PARSE_ERROR +SET global.binlog_cache_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.binlog_cache_size; +--Error ER_BAD_FIELD_ERROR +SELECT binlog_cache_size = @@session.binlog_cache_size; + + +############################## +# Restore initial value # +############################## + +SET @@global.binlog_cache_size = @start_value; +SELECT @@global.binlog_cache_size; + + +########################################################### +# END OF binlog_cache_size TESTS # +########################################################### diff --git a/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc new file mode 100644 index 00000000000..56ffbace173 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc @@ -0,0 +1,203 @@ +############## mysql-test\t\bulk_insert_buffer_size_basic.test ################# +# # +# Variable Name: bulk_insert_buffer_size # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 8388608 # +# Range: 0 - 4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "bulk_insert_buffer_size" # +# that checks 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#option_mysqld_bulk_insert_buffer_size # +# # +################################################################################ + +--source include/load_sysvars.inc + +####################################################################### +# START OF bulk_insert_buffer_size TESTS # +####################################################################### + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.bulk_insert_buffer_size; +SELECT @start_global_value; +SET @start_session_value = @@session.bulk_insert_buffer_size; +SELECT @start_session_value; + +--echo '#--------------------FN_DYNVARS_007_01-------------------------#' +####################################################################### +# Display the DEFAULT value of bulk_insert_buffer_size # +####################################################################### + +SET @@global.bulk_insert_buffer_size = 100; +SET @@global.bulk_insert_buffer_size = DEFAULT; +SELECT @@global.bulk_insert_buffer_size; + +SET @@session.bulk_insert_buffer_size = 200; +SET @@session.bulk_insert_buffer_size = DEFAULT; +SELECT @@session.bulk_insert_buffer_size; + + +--echo '#--------------------FN_DYNVARS_007_02-------------------------#' +####################################################################### +# Check the DEFAULT value of bulk_insert_buffer_size # +####################################################################### + +SET @@global.bulk_insert_buffer_size = @start_global_value; +SELECT @@global.bulk_insert_buffer_size = 8388608; + +SET @@session.bulk_insert_buffer_size = @start_session_value; +SELECT @@session.bulk_insert_buffer_size = 8388608; + + +--echo '#--------------------FN_DYNVARS_007_03-------------------------#' +############################################################################### +#Change the value of bulk_insert_buffer_size to valid values for GLOBAL Scope # +############################################################################### + +SET @@global.bulk_insert_buffer_size = 0; +SELECT @@global.bulk_insert_buffer_size; +SET @@global.bulk_insert_buffer_size = 1; +SELECT @@global.bulk_insert_buffer_size; +SET @@global.bulk_insert_buffer_size = 4294967295; +SELECT @@global.bulk_insert_buffer_size; +SET @@global.bulk_insert_buffer_size = 429496; +SELECT @@global.bulk_insert_buffer_size; + + +--echo '#--------------------FN_DYNVARS_007_04-------------------------#' +############################################################################### +#Change the value of bulk_insert_buffer_size to valid values for SESSION Scope# +############################################################################### + +SET @@session.bulk_insert_buffer_size = 0; +SELECT @@session.bulk_insert_buffer_size; +SET @@session.bulk_insert_buffer_size = 1; +SELECT @@session.bulk_insert_buffer_size; +SET @@session.bulk_insert_buffer_size = 4294967295; +SELECT @@session.bulk_insert_buffer_size; +SET @@session.bulk_insert_buffer_size = 429496; +SELECT @@session.bulk_insert_buffer_size; + + +--echo '#------------------FN_DYNVARS_007_05-----------------------#' +################################################################### +# Change the value of bulk_insert_buffer_size to an invalid value # +################################################################### + +SET @@global.bulk_insert_buffer_size = 42949672950; +SELECT @@global.bulk_insert_buffer_size; +SET @@global.bulk_insert_buffer_size = -1024; +SELECT @@global.bulk_insert_buffer_size; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.bulk_insert_buffer_size = test; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.bulk_insert_buffer_size = ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.bulk_insert_buffer_size = 429496.10; + +SET @@session.bulk_insert_buffer_size = 42949672950; +SELECT @@session.bulk_insert_buffer_size; +SET @@session.bulk_insert_buffer_size = -2; +SELECT @@session.bulk_insert_buffer_size; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.bulk_insert_buffer_size = test; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.bulk_insert_buffer_size = 429496.10; + + +--echo '#------------------FN_DYNVARS_007_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.bulk_insert_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='bulk_insert_buffer_size'; + +--echo '#------------------FN_DYNVARS_007_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.bulk_insert_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='bulk_insert_buffer_size'; + + +--echo '#------------------FN_DYNVARS_007_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.bulk_insert_buffer_size = TRUE; +SELECT @@global.bulk_insert_buffer_size; +SET @@global.bulk_insert_buffer_size = FALSE; +SELECT @@global.bulk_insert_buffer_size; + +SET @@session.bulk_insert_buffer_size = TRUE; +SELECT @@session.bulk_insert_buffer_size; +SET @@session.bulk_insert_buffer_size = FALSE; +SELECT @@session.bulk_insert_buffer_size; + + +--echo '#---------------------FN_DYNVARS_007_09----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points # +# to same session variable # +############################################################################## + +SET @@bulk_insert_buffer_size = 100; +SELECT @@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size; +SELECT @@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; + + +--echo '#---------------------FN_DYNVARS_007_10----------------------#' +############################################################################### +# Check if bulk_insert_buffer_size can be accessed with and without @@ sign # +############################################################################### + +SET bulk_insert_buffer_size = 1; +SELECT @@bulk_insert_buffer_size; +--Error ER_PARSE_ERROR +SET local.bulk_insert_buffer_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.bulk_insert_buffer_size; +--Error ER_PARSE_ERROR +SET session.bulk_insert_buffer_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT session.bulk_insert_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.bulk_insert_buffer_size = @start_global_value; +SELECT @@global.bulk_insert_buffer_size; +SET @@session.bulk_insert_buffer_size = @start_session_value; +SELECT @@session.bulk_insert_buffer_size; + + +#################################################### +# END OF bulk_insert_buffer_size TESTS # +#################################################### diff --git a/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc b/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc new file mode 100644 index 00000000000..ab158bc593e --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/delayed_insert_limit_basic.inc @@ -0,0 +1,167 @@ +############### mysql-test\t\delayed_insert_limit_basic.test ################### +# # +# Variable Name: delayed_insert_limit # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 100 # +# Range: 1 - 4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "delayed_insert_limit" # +# that checks 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#option_mysqld_delayed_insert_limit # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################# +# START OF delayed_insert_limit TESTS # +################################################################# + +######################################################################### +# Saving initial value of delayed_insert_limit in a temporary variable # +######################################################################### + +SET @start_value = @@global.delayed_insert_limit; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_024_01------------------------#' +######################################################################### +# Display the DEFAULT value of delayed_insert_limit # +######################################################################### + +SET @@global.delayed_insert_limit = 100; +SET @@global.delayed_insert_limit = DEFAULT; +SELECT @@global.delayed_insert_limit; + + +--echo '#---------------------FN_DYNVARS_024_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.delayed_insert_limit = @start_value; +SELECT @@global.delayed_insert_limit = 100; + + +--echo '#--------------------FN_DYNVARS_024_03------------------------#' +######################################################################### +# Change the value of delayed_insert_limit to a valid value # +######################################################################### + +SET @@global.delayed_insert_limit = 10000; +SELECT @@global.delayed_insert_limit; +SET @@global.delayed_insert_limit = 4294967295; +SELECT @@global.delayed_insert_limit; +SET @@global.delayed_insert_limit = 1; +SELECT @@global.delayed_insert_limit; + + +--echo '#--------------------FN_DYNVARS_024_04-------------------------#' +############################################################################ +# Change the value of delayed_insert_limit to invalid value # +############################################################################ + +SET @@global.delayed_insert_limit = 0; +SELECT @@global.delayed_insert_limit; +SET @@global.delayed_insert_limit = -1024; +SELECT @@global.delayed_insert_limit; +SET @@global.delayed_insert_limit = 42949672950; +SELECT @@global.delayed_insert_limit; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.delayed_insert_limit = 429496729.5; +SELECT @@global.delayed_insert_limit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.delayed_insert_limit = ON; +SELECT @@global.delayed_insert_limit; + + + +--echo '#-------------------FN_DYNVARS_024_05----------------------------#' +############################################################################ +# Test if accessing session delayed_insert_limit gives error # +############################################################################ + +--Error ER_GLOBAL_VARIABLE +SET @@session.delayed_insert_limit = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@Session.delayed_insert_limit; + + +--echo '#----------------------FN_DYNVARS_024_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.delayed_insert_limit = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='delayed_insert_limit'; + +SELECT @@delayed_insert_limit = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES + WHERE VARIABLE_NAME='delayed_insert_limit'; + + +--echo '#---------------------FN_DYNVARS_024_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.delayed_insert_limit = TRUE; +SELECT @@global.delayed_insert_limit; +SET @@global.delayed_insert_limit = FALSE; +SELECT @@global.delayed_insert_limit; + +--echo '#---------------------FN_DYNVARS_024_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.delayed_insert_limit = 1; +SELECT @@delayed_insert_limit = @@global.delayed_insert_limit; + + +--echo '#---------------------FN_DYNVARS_024_09----------------------#' +############################################################################## +# Check if delayed_insert_limit can be accessed with and without @@ sign # +############################################################################## + +--Error ER_GLOBAL_VARIABLE +SET delayed_insert_limit = 1; +SELECT @@delayed_insert_limit; +--Error ER_PARSE_ERROR +SET local.delayed_insert_limit = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.delayed_insert_limit; +--Error ER_PARSE_ERROR +SET global.delayed_insert_limit = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.delayed_insert_limit; +--Error ER_BAD_FIELD_ERROR +SELECT delayed_insert_limit = @@session.delayed_insert_limit; + +############################## +# Restore initial value # +############################## + +SET @@global.delayed_insert_limit = @start_value; +SELECT @@global.delayed_insert_limit; + + +########################################################### +# END OF delayed_insert_limit TESTS # +########################################################### + diff --git a/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc b/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc new file mode 100644 index 00000000000..2d16f75d4e1 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/delayed_queue_size_basic.inc @@ -0,0 +1,163 @@ +################# mysql-test\t\delayed_queue_size_basic.test ################### +# # +# Variable Name: delayed_queue_size # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1000 # +# Range: 1 - 4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable "delayed_queue_size" # +# that checks 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#option_mysqld_delayed_queue_size # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################# +# START OF delayed_queue_size TESTS # +################################################################# + +######################################################################### +# Saving initial value of delayed_queue_size in a temporary variable # +######################################################################### + +SET @start_value = @@global.delayed_queue_size; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_026_01------------------------#' +######################################################################### +# Display the DEFAULT value of delayed_queue_size # +######################################################################### + +SET @@global.delayed_queue_size = 100; +SET @@global.delayed_queue_size = DEFAULT; +SELECT @@global.delayed_queue_size; + +--echo '#---------------------FN_DYNVARS_026_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.delayed_queue_size = @start_value; +SELECT @@global.delayed_queue_size = 1000; + +--echo '#--------------------FN_DYNVARS_026_03------------------------#' +######################################################################### +# Change the value of delayed_queue_size to a valid value # +######################################################################### + +SET @@global.delayed_queue_size = 10000; +SELECT @@global.delayed_queue_size; +SET @@global.delayed_queue_size = 4294967295; +SELECT @@global.delayed_queue_size; +SET @@global.delayed_queue_size = 1; +SELECT @@global.delayed_queue_size; + + +--echo '#--------------------FN_DYNVARS_026_04-------------------------#' +############################################################################ +# Change the value of delayed_queue_size to invalid value # +############################################################################ + +SET @@global.delayed_queue_size = 0; +SELECT @@global.delayed_queue_size; +SET @@global.delayed_queue_size = -1024; +SELECT @@global.delayed_queue_size; +SET @@global.delayed_queue_size = 42949672950; +SELECT @@global.delayed_queue_size; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.delayed_queue_size = 429496729.5; +SELECT @@global.delayed_queue_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.delayed_queue_size = ON; +SELECT @@delayed_queue_size; + +--echo '#-------------------FN_DYNVARS_026_05----------------------------#' +############################################################################ +# Test if accessing session delayed_queue_size gives error # +############################################################################ + +--Error 1229 +SET @@session.delayed_queue_size = 0; +--Error 1238 +SELECT @@session.delayed_queue_size; + +--echo '#----------------------FN_DYNVARS_026_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.delayed_queue_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_queue_size'; + +SELECT @@delayed_queue_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_queue_size'; + + +--echo '#---------------------FN_DYNVARS_026_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.delayed_queue_size = TRUE; +SELECT @@global.delayed_queue_size; +SET @@global.delayed_queue_size = FALSE; +SELECT @@global.delayed_queue_size; + +--echo '#---------------------FN_DYNVARS_026_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.delayed_queue_size = 1; +SELECT @@delayed_queue_size = @@global.delayed_queue_size; + + +--echo '#---------------------FN_DYNVARS_026_09----------------------#' +########################################################################### +# Check if delayed_queue_size can be accessed with and without @@ sign # +########################################################################### + +--Error 1229 +SET delayed_queue_size = 1; +SELECT @@delayed_queue_size; +--Error ER_PARSE_ERROR +SET local.delayed_queue_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.delayed_queue_size; +--Error ER_PARSE_ERROR +SET global.delayed_queue_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.delayed_queue_size; +--Error ER_BAD_FIELD_ERROR +SELECT delayed_queue_size = @@session.delayed_queue_size; + + +############################## +# Restore initial value # +############################## + +SET @@global.delayed_queue_size = @start_value; +SELECT @@global.delayed_queue_size; + + +########################################################### +# END OF delayed_queue_size TESTS # +########################################################### + diff --git a/mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc b/mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc new file mode 100644 index 00000000000..67b0247d169 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc @@ -0,0 +1,147 @@ +################# mysql-test\t\innodb_concurrency_tickets_basic.test ########## +# # +# Variable Name: innodb_concurrency_tickets # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 500 # +# Range: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description:Test Cases of Dynamic System Variable innodb_concurrency_tickets # +# 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 # +# # +############################################################################### + +--source include/have_innodb.inc +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_concurrency_tickets TESTS # +######################################################################## + + +################################################################################ +# Saving initial value of innodb_concurrency_tickets in a temporary variable # +################################################################################ + +SET @global_start_value = @@global.innodb_concurrency_tickets; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_concurrency_tickets # +######################################################################## + +SET @@global.innodb_concurrency_tickets = 0; +SET @@global.innodb_concurrency_tickets = DEFAULT; +SELECT @@global.innodb_concurrency_tickets; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +################################################################################ +# Check if innodb_concurrency_tickets can be accessed with and without @@ sign # +################################################################################ + +--Error ER_GLOBAL_VARIABLE +SET innodb_concurrency_tickets = 1; +SELECT @@innodb_concurrency_tickets; + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_concurrency_tickets; + + +SET global innodb_concurrency_tickets = 0; +SELECT @@global.innodb_concurrency_tickets; + + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +########################################################################## +# change the value of innodb_concurrency_tickets to a valid value # +########################################################################## + + +SET @@global.innodb_concurrency_tickets = 1; +SELECT @@global.innodb_concurrency_tickets; + +SET @@global.innodb_concurrency_tickets = 1000; +SELECT @@global.innodb_concurrency_tickets; + +SET @@global.innodb_concurrency_tickets = 4294967295; +SELECT @@global.innodb_concurrency_tickets; + + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +########################################################################### +# Change the value of innodb_concurrency_tickets to invalid value # +########################################################################### + +SET @@global.innodb_concurrency_tickets = -1; +SELECT @@global.innodb_concurrency_tickets; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_concurrency_tickets = "T"; +SELECT @@global.innodb_concurrency_tickets; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_concurrency_tickets = "Y"; +SELECT @@global.innodb_concurrency_tickets; + +SET @@global.innodb_concurrency_tickets = 1001; +SELECT @@global.innodb_concurrency_tickets; + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_concurrency_tickets = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_concurrency_tickets'; +SELECT @@global.innodb_concurrency_tickets; +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_concurrency_tickets'; + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_concurrency_tickets = OFF; +SELECT @@global.innodb_concurrency_tickets; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_concurrency_tickets = ON; +SELECT @@global.innodb_concurrency_tickets; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.innodb_concurrency_tickets = TRUE; +SELECT @@global.innodb_concurrency_tickets; +SET @@global.innodb_concurrency_tickets = FALSE; +SELECT @@global.innodb_concurrency_tickets; + +############################## +# Restore initial value # +############################## + +SET @@global.innodb_concurrency_tickets = @global_start_value; +SELECT @@global.innodb_concurrency_tickets; + +############################################################### +# END OF innodb_concurrency_tickets TESTS # +############################################################### + diff --git a/mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc b/mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc new file mode 100644 index 00000000000..9e6b8201e3d --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/innodb_max_purge_lag_basic.inc @@ -0,0 +1,147 @@ +################# mysql-test\t\innodb_max_purge_lag_basic.test ################ +# # +# Variable Name: innodb_max_purge_lag # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 0 # +# Range: 0-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description:Test Cases of Dynamic System Variable innodb_max_purge_lag # +# 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 # +# # +############################################################################### + +--source include/have_innodb.inc +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_max_purge_lag TESTS # +######################################################################## + +################################################################################ +# Saving initial value of innodb_max_purge_lag in a temporary variable # +################################################################################ + +SET @global_start_value = @@global.innodb_max_purge_lag; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_max_purge_lag # +######################################################################## + +SET @@global.innodb_max_purge_lag = 0; +SET @@global.innodb_max_purge_lag = DEFAULT; +SELECT @@global.innodb_max_purge_lag; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +############################################################################ +# Check if innodb_max_purge_lag can be accessed with and without @@ sign # +############################################################################ + +--Error ER_GLOBAL_VARIABLE +SET innodb_max_purge_lag = 1; +SELECT @@innodb_max_purge_lag; + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_max_purge_lag; + +SET global innodb_max_purge_lag = 0; +SELECT @@global.innodb_max_purge_lag; + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +########################################################################## +# change the value of innodb_max_purge_lag to a valid value # +########################################################################## + + +SET @@global.innodb_max_purge_lag = 0; +SELECT @@global.innodb_max_purge_lag; + +SET @@global.innodb_max_purge_lag = 1; +SELECT @@global.innodb_max_purge_lag; +SET @@global.innodb_max_purge_lag = 4294967295; +SELECT @@global.innodb_max_purge_lag; + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +########################################################################### +# Change the value of innodb_max_purge_lag to invalid value # +########################################################################### + +SET @@global.innodb_max_purge_lag = -1; +SELECT @@global.innodb_max_purge_lag; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_purge_lag = "T"; +SELECT @@global.innodb_max_purge_lag; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_purge_lag = "Y"; +SELECT @@global.innodb_max_purge_lag; + + +SET @@global.innodb_max_purge_lag = 1001; +SELECT @@global.innodb_max_purge_lag; + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_max_purge_lag = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_max_purge_lag'; +SELECT @@global.innodb_max_purge_lag; +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_max_purge_lag'; + + + + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_purge_lag = OFF; +SELECT @@global.innodb_max_purge_lag; + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_max_purge_lag = ON; +SELECT @@global.innodb_max_purge_lag; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + + +SET @@global.innodb_max_purge_lag = TRUE; +SELECT @@global.innodb_max_purge_lag; +SET @@global.innodb_max_purge_lag = FALSE; +SELECT @@global.innodb_max_purge_lag; + +############################## +# Restore initial value # +############################## + + +SET @@global.innodb_max_purge_lag = @global_start_value; +SELECT @@global.innodb_max_purge_lag; + +############################################################### +# END OF innodb_max_purge_lag TESTS # +############################################################### diff --git a/mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc b/mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc new file mode 100644 index 00000000000..35460fe47f2 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc @@ -0,0 +1,142 @@ +################# mysql-test\t\innodb_sync_spin_loops_basic.test ############## +# # +# Variable Name: innodb_sync_spin_loops # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 20 # +# Range: 0-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +#Description:Test Cases of Dynamic System Variable innodb_sync_spin_loops # +# 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 # +# # +############################################################################### + +--source include/have_innodb.inc +--source include/load_sysvars.inc + +######################################################################## +# START OF innodb_sync_spin_loops TESTS # +######################################################################## + + +############################################################################ +# Saving initial value of innodb_sync_spin_loops in a temporary variable # +############################################################################ + +SET @global_start_value = @@global.innodb_sync_spin_loops; +SELECT @global_start_value; + +--echo '#--------------------FN_DYNVARS_046_01------------------------#' +######################################################################## +# Display the DEFAULT value of innodb_sync_spin_loops # +######################################################################## + +SET @@global.innodb_sync_spin_loops = 0; +SET @@global.innodb_sync_spin_loops = DEFAULT; +SELECT @@global.innodb_sync_spin_loops; + +--echo '#---------------------FN_DYNVARS_046_02-------------------------#' +############################################################################## +# Check if innodb_sync_spin_loops can be accessed with and without @@ sign # +############################################################################## + +--Error ER_GLOBAL_VARIABLE +SET innodb_sync_spin_loops = 1; +SELECT @@innodb_sync_spin_loops; + +--Error ER_UNKNOWN_TABLE +SELECT local.innodb_sync_spin_loops; + +SET global innodb_sync_spin_loops = 0; +SELECT @@global.innodb_sync_spin_loops; + +--echo '#--------------------FN_DYNVARS_046_03------------------------#' +########################################################################## +# change the value of innodb_sync_spin_loops to a valid value # +########################################################################## + +SET @@global.innodb_sync_spin_loops = 0; +SELECT @@global.innodb_sync_spin_loops; + +SET @@global.innodb_sync_spin_loops = 1; +SELECT @@global.innodb_sync_spin_loops; +SET @@global.innodb_sync_spin_loops = 1000; +SELECT @@global.innodb_sync_spin_loops; + +--echo '#--------------------FN_DYNVARS_046_04-------------------------#' +########################################################################### +# Change the value of innodb_sync_spin_loops to invalid value # +########################################################################### + +SET @@global.innodb_sync_spin_loops = -1; +SELECT @@global.innodb_sync_spin_loops; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_sync_spin_loops = "T"; +SELECT @@global.innodb_sync_spin_loops; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_sync_spin_loops = "Y"; +SELECT @@global.innodb_sync_spin_loops; + +SET @@global.innodb_sync_spin_loops = 1001; +SELECT @@global.innodb_sync_spin_loops; + +--echo '#----------------------FN_DYNVARS_046_05------------------------#' +######################################################################### +# Check if the value in GLOBAL Table matches value in variable # +######################################################################### + +SELECT @@global.innodb_sync_spin_loops = + VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_sync_spin_loops'; +SELECT @@global.innodb_sync_spin_loops; +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES + WHERE VARIABLE_NAME='innodb_sync_spin_loops'; + +--echo '#---------------------FN_DYNVARS_046_06-------------------------#' +################################################################### +# Check if ON and OFF values can be used on variable # +################################################################### + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_sync_spin_loops = OFF; +SELECT @@global.innodb_sync_spin_loops; + +--ERROR ER_WRONG_TYPE_FOR_VAR +SET @@global.innodb_sync_spin_loops = ON; +SELECT @@global.innodb_sync_spin_loops; + +--echo '#---------------------FN_DYNVARS_046_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + + +SET @@global.innodb_sync_spin_loops = TRUE; +SELECT @@global.innodb_sync_spin_loops; +SET @@global.innodb_sync_spin_loops = FALSE; +SELECT @@global.innodb_sync_spin_loops; + +############################## +# Restore initial value # +############################## + +SET @@global.innodb_sync_spin_loops = @global_start_value; +SELECT @@global.innodb_sync_spin_loops; + +############################################################### +# END OF innodb_sync_spin_loops TESTS # +############################################################### diff --git a/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc new file mode 100644 index 00000000000..880dac4cac4 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/join_buffer_size_basic.inc @@ -0,0 +1,216 @@ +############## mysql-test\t\join_buffer_size_basic.test ############### +# # +# Variable Name: join_buffer_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 131072 # +# Range: 8200-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable join_buffer_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################ +# START OF join_buffer_size TESTS # +################################################################ + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.join_buffer_size; +SELECT @start_global_value; +SET @start_session_value = @@session.join_buffer_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_053_01-------------------------#' +################################################################ +# Display the DEFAULT value of join_buffer_size # +################################################################ + +SET @@global.join_buffer_size = 8200; +SET @@global.join_buffer_size = DEFAULT; +SELECT @@global.join_buffer_size; + +SET @@session.join_buffer_size = 8200; +SET @@session.join_buffer_size = DEFAULT; +SELECT @@session.join_buffer_size; + + +--echo '#--------------------FN_DYNVARS_053_02-------------------------#' +################################################################### +# Check the DEFAULT value of join_buffer_size # +################################################################### + +SET @@global.join_buffer_size = DEFAULT; +SELECT @@global.join_buffer_size = 131072; + +SET @@session.join_buffer_size = DEFAULT; +SELECT @@session.join_buffer_size = 131072; + + +--echo '#--------------------FN_DYNVARS_053_03-------------------------#' +########################################################################## +# Change the value of join_buffer_size to a valid value for GLOBAL Scope # +########################################################################## + +SET @@global.join_buffer_size = 8200; +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +SET @@global.join_buffer_size = 65536; +SELECT @@global.join_buffer_size; +SET @@global.join_buffer_size = 4294967295; +SELECT @@global.join_buffer_size; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + + +--echo '#--------------------FN_DYNVARS_053_04-------------------------#' +########################################################################### +# Change the value of join_buffer_size to a valid value for SESSION Scope # +########################################################################### + +SET @@session.join_buffer_size = 8200; +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +SET @@session.join_buffer_size = 65536; +SELECT @@session.join_buffer_size; +SET @@session.join_buffer_size = 4294967295; +SELECT @@session.join_buffer_size; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + + +--echo '#------------------FN_DYNVARS_053_05-----------------------#' +############################################################ +# Change the value of join_buffer_size to an invalid value # +############################################################ + +SET @@global.join_buffer_size = 0; +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +SET @@global.join_buffer_size = -1024; +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +SET @@global.join_buffer_size = 8199; +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +SET @@global.join_buffer_size = 42949672951; +SELECT @@global.join_buffer_size; + +--Error ER_PARSE_ERROR +SET @@global.join_buffer_size = 65530.34.; +SELECT @@global.join_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.join_buffer_size = test; +SELECT @@global.join_buffer_size; + +SET @@session.join_buffer_size = 0; +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +SET @@session.join_buffer_size = -2; +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +SET @@session.join_buffer_size = 8199; +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +SET @@session.join_buffer_size = 42949672951; +SELECT @@session.join_buffer_size; + +--Error ER_PARSE_ERROR +SET @@session.join_buffer_size = 65530.34.; +SELECT @@session.join_buffer_size; +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.join_buffer_size = test; +SELECT @@session.join_buffer_size; + + +--echo '#------------------FN_DYNVARS_053_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.join_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='join_buffer_size'; + +--echo '#------------------FN_DYNVARS_053_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.join_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='join_buffer_size'; + + +--echo '#------------------FN_DYNVARS_053_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.join_buffer_size = TRUE; +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +SET @@global.join_buffer_size = FALSE; +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +--echo 'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.join_buffer_size = 10; +SELECT @@join_buffer_size = @@global.join_buffer_size; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@join_buffer_size = 100; +SELECT @@join_buffer_size = @@local.join_buffer_size; +SELECT @@local.join_buffer_size = @@session.join_buffer_size; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +############################################################################## +# Check if join_buffer_size can be accessed with and without @@ sign # +############################################################################## + +SET join_buffer_size = 1; +SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228; +--Error ER_UNKNOWN_TABLE +SELECT local.join_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT session.join_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT join_buffer_size = @@session.join_buffer_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.join_buffer_size = @start_global_value; +SELECT @@global.join_buffer_size; +SET @@session.join_buffer_size = @start_session_value; +SELECT @@session.join_buffer_size; + + +######################################################## +# END OF join_buffer_size TESTS # +######################################################## + 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 new file mode 100644 index 00000000000..996a9e712f9 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc @@ -0,0 +1,187 @@ +############## mysql-test\t\key_buffer_size_basic.test ######################## +# # +# Variable Name: key_buffer_size # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 131072 # +# Range:8-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable key_buffer_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 # +# # +############################################################################### +# Changes: # +# 2008-03-06 hhunger Got "lost connections with 5.1.24 # +######################################################################## + +--source include/load_sysvars.inc + +######################################################################## +# START OF key_buffer_size TESTS # +######################################################################## + +--disable_warnings +######################################################################## +# Saving initial value of key_buffer_size in a temporary variable # +######################################################################## + +SET @start_value = @@global.key_buffer_size; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_055_01------------------------#' +######################################################################## +# Display the DEFAULT value of key_buffer_size # +######################################################################## + +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; + + +--echo '#---------------------FN_DYNVARS_055_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.key_buffer_size = @start_value; +SELECT @@global.key_buffer_size = @start_value; + +--echo '#--------------------FN_DYNVARS_055_03------------------------#' +######################################################################## +# 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; +--disable_warnings +#Due to "lost connection" +#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; +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" +#SET @@global.key_buffer_size = -1; +#SELECT @@global.key_buffer_size; +#SET @@global.key_buffer_size = 100000000000; +#SELECT @@global.key_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_buffer_size = 10000.01; +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'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_buffer_size = ON; +SELECT @@global.key_buffer_size = @min_key_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_buffer_size = 'test'; +SELECT @@global.key_buffer_size = @min_key_buffer_size; + + +--echo '#-------------------FN_DYNVARS_055_05----------------------------#' +########################################################################### +# Test if accessing session key_buffer_size gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.key_buffer_size = 0; +SELECT @@key_buffer_size = @min_key_buffer_size; + + +--echo '#----------------------FN_DYNVARS_055_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.key_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_buffer_size'; + +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; +SET @@global.key_buffer_size = FALSE; +SELECT @@global.key_buffer_size = @min_key_buffer_size; + + +--echo '#---------------------FN_DYNVARS_055_08----------------------#' +##################################################################### +# Check if accessing variable with SESSION,LOCAL and without SCOPE # +# points to same session variable # +##################################################################### + +# due to differences in contents of the warnings +--disable_warnings +SET @@global.key_buffer_size = @min_key_buffer_size; +SELECT @@key_buffer_size = @@global.key_buffer_size; +--enable_warnings + +--echo '#---------------------FN_DYNVARS_055_09----------------------#' +########################################################################## +# Check if key_buffer_size can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET key_buffer_size = @min_key_buffer_size; +SELECT @@key_buffer_size = @min_key_buffer_size; +--Error ER_PARSE_ERROR +SET local.key_buffer_size = 10; +--Error ER_UNKNOWN_TABLE +SELECT local.key_buffer_size; +--Error ER_PARSE_ERROR +SET global.key_buffer_size = 10; +--Error ER_UNKNOWN_TABLE +SELECT global.key_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT key_buffer_size = @@session.key_buffer_size; + + +############################## +# Restore initial value # +############################## + +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/inc/key_cache_age_threshold_basic.inc b/mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc new file mode 100644 index 00000000000..7841ad2cedc --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/key_cache_age_threshold_basic.inc @@ -0,0 +1,180 @@ +############## mysql-test\t\key_cache_age_threshold_basic.test ############### +# # +# Variable Name: key_cache_age_threshold # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 300 # +# Range: 100-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable key_cache_age_threshold # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF key_cache_age_threshold TESTS # +######################################################################## + + +############################################################################# +# Saving initial value of key_cache_age_threshold in a temporary variable # +############################################################################# + +SET @start_value = @@global.key_cache_age_threshold; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_056_01------------------------#' +################################################################################ +# Display the DEFAULT value of key_cache_age_threshold # +################################################################################ + +SET @@global.key_cache_age_threshold = 99; +--Error ER_NO_DEFAULT +SET @@global.key_cache_age_threshold = DEFAULT; +--echo 'Bug# 34878: This variable has default value according to documentation'; +SELECT @@global.key_cache_age_threshold; + + +--echo '#---------------------FN_DYNVARS_056_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.key_cache_age_threshold = @start_value; +SELECT @@global.key_cache_age_threshold = 300; + + +--echo '#--------------------FN_DYNVARS_056_03------------------------#' +############################################################################### +# Change the value of key_cache_age_threshold to a valid value # +############################################################################### + +SET @@global.key_cache_age_threshold = 100; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = 4294967295; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = 1800; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = 65535; +SELECT @@global.key_cache_age_threshold; +--echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; + + +--echo '#--------------------FN_DYNVARS_056_04-------------------------#' +########################################################################### +# Change the value of key_cache_age_threshold to invalid value # +########################################################################### + +SET @@global.key_cache_age_threshold = -1; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = 42949672951; +SELECT @@global.key_cache_age_threshold; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_age_threshold = 10000.01; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = -1024; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = 99; +SELECT @@global.key_cache_age_threshold; + +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_age_threshold = ON; +SELECT @@global.key_cache_age_threshold; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_age_threshold = 'test'; +SELECT @@global.key_cache_age_threshold; + + +--echo '#-------------------FN_DYNVARS_056_05----------------------------#' +########################################################################### +# Test if accessing session key_cache_age_threshold gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.key_cache_age_threshold = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.key_cache_age_threshold; + + +--echo '#----------------------FN_DYNVARS_056_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.key_cache_age_threshold = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_age_threshold'; + +SELECT @@key_cache_age_threshold = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_age_threshold'; + + +--echo '#---------------------FN_DYNVARS_056_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.key_cache_age_threshold = TRUE; +SELECT @@global.key_cache_age_threshold; +SET @@global.key_cache_age_threshold = FALSE; +SELECT @@global.key_cache_age_threshold; + + +--echo '#---------------------FN_DYNVARS_056_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.key_cache_age_threshold = 101; +SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold; + + +--echo '#---------------------FN_DYNVARS_056_09----------------------#' +########################################################################## ####### +# Check if key_cache_age_threshold can be accessed with and without @@ sign # +################################################################################## + +--Error ER_GLOBAL_VARIABLE +SET key_cache_age_threshold = 8000; +SELECT @@key_cache_age_threshold; +--Error ER_PARSE_ERROR +SET local.key_cache_age_threshold = 10; +--Error ER_UNKNOWN_TABLE +SELECT local.key_cache_age_threshold; +--Error ER_PARSE_ERROR +SET global.key_cache_age_threshold = 10; +--Error ER_UNKNOWN_TABLE +SELECT global.key_cache_age_threshold; +--Error ER_BAD_FIELD_ERROR +SELECT key_cache_age_threshold = @@session.key_cache_age_threshold; + + +############################## +# Restore initial value # +############################## + +SET @@global.key_cache_age_threshold = @start_value; +SELECT @@global.key_cache_age_threshold; + + +######################################################################## +# END OF key_cache_age_threshold TESTS # +######################################################################## diff --git a/mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc new file mode 100644 index 00000000000..b12ea45b762 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/key_cache_block_size_basic.inc @@ -0,0 +1,185 @@ +############## mysql-test\t\key_cache_block_size_basic.test ############### +# # +# Variable Name: key_cache_block_size # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric 1024 # +# Default Value: # +# Range: 512-16384 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable key_cache_block_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +##################################################################### +# START OF key_cache_block_size TESTS # +##################################################################### + + +########################################################################## +# Saving initial value of key_cache_block_size in a temporary variable # +########################################################################## + +SET @start_value = @@global.key_cache_block_size; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_057_01------------------------#' +################################################################################ +# Display the DEFAULT value of key_cache_block_size # +################################################################################ + +SET @@global.key_cache_block_size = 600; +--Error ER_NO_DEFAULT +SET @@global.key_cache_block_size = DEFAULT; +--echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +SELECT @@global.key_cache_block_size; + + +--echo '#---------------------FN_DYNVARS_057_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.key_cache_block_size = @start_value; +SELECT @@global.key_cache_block_size = 1024; + + +--echo '#--------------------FN_DYNVARS_057_03------------------------#' +############################################################################### +# Change the value of key_cache_block_size to a valid value # +############################################################################### + +SET @@global.key_cache_block_size = 1024; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 16384; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 1800; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 16383; +SELECT @@global.key_cache_block_size; +--echo 'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; + + +--echo '#--------------------FN_DYNVARS_057_04-------------------------#' +########################################################################### +# Change the value of key_cache_block_size to invalid value # +########################################################################### + +SET @@global.key_cache_block_size = -1; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 42949672951; +SELECT @@global.key_cache_block_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_block_size = 10000.01; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = -1024; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 256; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 511; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = 16385; +SELECT @@global.key_cache_block_size; + +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_block_size = ON; +SELECT @@global.key_cache_block_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_block_size = 'test'; +SELECT @@global.key_cache_block_size; + + +--echo '#-------------------FN_DYNVARS_057_05----------------------------#' +########################################################################### +# Test if accessing session key_cache_block_size gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.key_cache_block_size = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.key_cache_block_size; + + +--echo '#----------------------FN_DYNVARS_057_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.key_cache_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_block_size'; + +SELECT @@key_cache_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_block_size'; + + +--echo '#---------------------FN_DYNVARS_057_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.key_cache_block_size = TRUE; +SELECT @@global.key_cache_block_size; +SET @@global.key_cache_block_size = FALSE; +SELECT @@global.key_cache_block_size; + + +--echo '#---------------------FN_DYNVARS_057_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.key_cache_block_size = 1024; +SELECT @@key_cache_block_size = @@global.key_cache_block_size; + + +--echo '#---------------------FN_DYNVARS_057_09----------------------#' +############################################################################### +# Check if key_cache_block_size can be accessed with and without @@ sign # +###############################################################################; + +--Error ER_GLOBAL_VARIABLE +SET key_cache_block_size = 8000; +SELECT @@key_cache_block_size; +--Error ER_PARSE_ERROR +SET local.key_cache_block_size = 10; +--Error ER_UNKNOWN_TABLE +SELECT local.key_cache_block_size; +--Error ER_PARSE_ERROR +SET global.key_cache_block_size = 10; +--Error ER_UNKNOWN_TABLE +SELECT global.key_cache_block_size; +--Error ER_BAD_FIELD_ERROR +SELECT key_cache_block_size = @@session.key_cache_block_size; + + +############################## +# Restore initial value # +############################## + +SET @@global.key_cache_block_size = @start_value; +SELECT @@global.key_cache_block_size; + + +##################################################################### +# END OF key_cache_block_size TESTS # +##################################################################### + diff --git a/mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc b/mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc new file mode 100644 index 00000000000..a2cc49a1f38 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/key_cache_division_limit_basic.inc @@ -0,0 +1,184 @@ +############## mysql-test\t\key_cache_division_limit_basic.test ############### +# # +# Variable Name: key_cache_division_limit # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 100 # +# Range: 1-100 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable key_cache_division_limit # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +##################################################################### +# START OF key_cache_division_limit TESTS # +##################################################################### + + +############################################################################## +# Saving initial value of key_cache_division_limit in a temporary variable # +############################################################################## + +SET @start_value = @@global.key_cache_division_limit; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_058_01------------------------#' +################################################################################ +# Display the DEFAULT value of key_cache_division_limit # +################################################################################ + +SET @@global.key_cache_division_limit = 50; +--Error ER_NO_DEFAULT +SET @@global.key_cache_division_limit = DEFAULT; +--echo 'Bug# 34878: This variable has default value according to documentation'; +SELECT @@global.key_cache_division_limit; + + +--echo '#---------------------FN_DYNVARS_058_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.key_cache_division_limit = @start_value; +SELECT @@global.key_cache_division_limit = 100; + + +--echo '#--------------------FN_DYNVARS_058_03------------------------#' +############################################################################### +# Change the value of key_cache_division_limit to a valid value # +############################################################################### + +SET @@global.key_cache_division_limit = 1; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 50; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 99; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 2; +SELECT @@global.key_cache_division_limit; + + +--echo '#--------------------FN_DYNVARS_058_04-------------------------#' +########################################################################### +# Change the value of key_cache_division_limit to invalid value # +########################################################################### + +SET @@global.key_cache_division_limit = -1; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 101; +SELECT @@global.key_cache_division_limit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_division_limit = 10000.01; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = -1024; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 0; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 200; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = 65535; +SELECT @@global.key_cache_division_limit; + +echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_division_limit = ON; +SELECT @@global.key_cache_division_limit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.key_cache_division_limit = 'test'; +SELECT @@global.key_cache_division_limit; + + +--echo '#-------------------FN_DYNVARS_058_05----------------------------#' +########################################################################### +# Test if accessing session key_cache_division_limit gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.key_cache_division_limit = 0; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.key_cache_division_limit; + + +--echo '#----------------------FN_DYNVARS_058_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.key_cache_division_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_division_limit'; + +SELECT @@key_cache_division_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_division_limit'; + + +--echo '#---------------------FN_DYNVARS_058_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.key_cache_division_limit = TRUE; +SELECT @@global.key_cache_division_limit; +SET @@global.key_cache_division_limit = FALSE; +SELECT @@global.key_cache_division_limit; + + +--echo '#---------------------FN_DYNVARS_058_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.key_cache_division_limit = 90; +SELECT @@key_cache_division_limit = @@global.key_cache_division_limit; + + +--echo '#---------------------FN_DYNVARS_058_09----------------------#' +############################################################################### +# Check if key_cache_division_limit can be accessed with and without @@ sign # +###############################################################################; + +--Error ER_GLOBAL_VARIABLE +SET key_cache_division_limit = 80; +SELECT @@key_cache_division_limit; +--Error ER_PARSE_ERROR +SET local.key_cache_division_limit = 10; +--Error ER_UNKNOWN_TABLE +SELECT local.key_cache_division_limit; +--Error ER_PARSE_ERROR +SET global.key_cache_division_limit = 10; +--Error ER_UNKNOWN_TABLE +SELECT global.key_cache_division_limit; +--Error ER_BAD_FIELD_ERROR +SELECT key_cache_division_limit = @@session.key_cache_division_limit; + + +############################## +# Restore initial value # +############################## + +SET @@global.key_cache_division_limit = @start_value; +SELECT @@global.key_cache_division_limit; + + +##################################################################### +# END OF key_cache_division_limit TESTS # +##################################################################### + diff --git a/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc b/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc new file mode 100644 index 00000000000..cd7e1023649 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/log_warnings_basic.inc @@ -0,0 +1,210 @@ +############## mysql-test\t\log_warnings_basic.test ############### +# # +# Variable Name: log_warnings # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 1 # +# Range: - # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable log_warnings # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +############################################################ +# START OF log_warnings TESTS # +############################################################ + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.log_warnings; +SELECT @start_global_value; +SET @start_session_value = @@session.log_warnings; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_067_01-------------------------#' +######################################################################## +# Display the DEFAULT value of log_warnings # +######################################################################## + +SET @@global.log_warnings = 100; +SET @@global.log_warnings = DEFAULT; +SELECT @@global.log_warnings; + +SET @@session.log_warnings = 200; +SET @@session.log_warnings = DEFAULT; +SELECT @@session.log_warnings; + + +--echo '#--------------------FN_DYNVARS_067_02-------------------------#' +######################################################################## +# Check the DEFAULT value of log_warnings # +######################################################################## + +SET @@global.log_warnings = DEFAULT; +SELECT @@global.log_warnings = 1; + +SET @@session.log_warnings = DEFAULT; +SELECT @@session.log_warnings = 1; + + +--echo '#--------------------FN_DYNVARS_067_03-------------------------#' +###################################################################### +# Change the value of log_warnings to a valid value for GLOBAL Scope # +###################################################################### + +SET @@global.log_warnings = 0; +SELECT @@global.log_warnings; +SET @@global.log_warnings = 1; +SELECT @@global.log_warnings; +SET @@global.log_warnings = 60020; +SELECT @@global.log_warnings; +SET @@global.log_warnings = 65535; +SELECT @@global.log_warnings; +SET @@global.log_warnings = 65536; +SELECT @@global.log_warnings; + + +--echo '#--------------------FN_DYNVARS_067_04-------------------------#' +####################################################################### +# Change the value of log_warnings to a valid value for SESSION Scope # +####################################################################### + +SET @@session.log_warnings = 0; +SELECT @@session.log_warnings; +SET @@session.log_warnings = 1; +SELECT @@session.log_warnings; +SET @@session.log_warnings = 50050; +SELECT @@session.log_warnings; +SET @@session.log_warnings = 65535; +SELECT @@session.log_warnings; +SET @@session.log_warnings = 65550; +SELECT @@session.log_warnings; + + +--echo '#------------------FN_DYNVARS_067_05-----------------------#' +######################################################## +# Change the value of log_warnings to an invalid value # +######################################################## + +SET @@global.log_warnings = 100000000000; +SELECT @@global.log_warnings; +SET @@global.log_warnings = -1024; +SELECT @@global.log_warnings; +--Error ER_PARSE_ERROR +SET @@global.log_warnings = 65530.34.; +SELECT @@global.log_warnings; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.log_warnings = test; +SELECT @@global.log_warnings; + +SET @@session.log_warnings = 100000000000; +SELECT @@session.log_warnings; +SET @@session.log_warnings = -2; +SELECT @@session.log_warnings; +--Error ER_PARSE_ERROR +SET @@session.log_warnings = 65530.34.; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.log_warnings = test; +SELECT @@session.log_warnings; + + +--echo '#------------------FN_DYNVARS_067_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.log_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_warnings'; + +--echo '#------------------FN_DYNVARS_067_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.log_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='log_warnings'; + + +--echo '#------------------FN_DYNVARS_067_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.log_warnings = TRUE; +SELECT @@global.log_warnings; +SET @@global.log_warnings = FALSE; +SELECT @@global.log_warnings; + + +--echo '#---------------------FN_DYNVARS_067_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.log_warnings = 10; +SELECT @@log_warnings = @@global.log_warnings; + + +--echo '#---------------------FN_DYNVARS_067_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@log_warnings = 100; +SELECT @@log_warnings = @@local.log_warnings; +SELECT @@local.log_warnings = @@session.log_warnings; + + +--echo '#---------------------FN_DYNVARS_067_11----------------------#' +####################################################################### +# Check if log_warnings can be accessed with and without @@ sign # +####################################################################### + +SET log_warnings = 1; +SELECT @@log_warnings; +--Error ER_UNKNOWN_TABLE +SELECT local.log_warnings; +--Error ER_UNKNOWN_TABLE +SELECT session.log_warnings; +--Error ER_BAD_FIELD_ERROR +SELECT log_warnings = @@session.log_warnings; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.log_warnings = @start_global_value; +SELECT @@global.log_warnings; +SET @@session.log_warnings = @start_session_value; +SELECT @@session.log_warnings; + + +############################################################# +# END OF log_warnings TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc b/mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc new file mode 100644 index 00000000000..9f3416d2e31 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/max_binlog_cache_size_basic.inc @@ -0,0 +1,187 @@ +############## mysql-test\t\max_binlog_cache_size_basic.test ############### +# # +# Variable Name: max_binlog_cache_size # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:4294967295 # +# Range: 4096-4294967295 # +# # +# # +# # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable max_binlog_cache_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF max_binlog_cache_size TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of max_binlog_cache_size in a temporary variable# +######################################################################## + +SET @start_value = @@global.max_binlog_cache_size; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_072_01------------------------#' +######################################################################## +# Display the DEFAULT value of max_binlog_cache_size # +######################################################################## + +SET @@global.max_binlog_cache_size = 5000; +SET @@global.max_binlog_cache_size = DEFAULT; +SELECT @@global.max_binlog_cache_size; + + +--echo '#---------------------FN_DYNVARS_072_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.max_binlog_cache_size = @start_value; +SELECT @@global.max_binlog_cache_size = 4294967295; +--echo 'Bug# 34876: Incorrect Default Value is assigned to variable'; + +--echo '#--------------------FN_DYNVARS_072_03------------------------#' +######################################################################## +# Change the value of max_binlog_cache_size to a valid value # +######################################################################## + +SET @@global.max_binlog_cache_size = 4096; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 4294967295; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 4294967294; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 4097; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 65535; +SELECT @@global.max_binlog_cache_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_072_04-------------------------#' +########################################################################### +# Change the value of max_binlog_cache_size to invalid value # +########################################################################### + +SET @@global.max_binlog_cache_size = -1; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 100000000000; +SELECT @@global.max_binlog_cache_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_binlog_cache_size = 10000.01; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = -1024; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 1024; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 4294967296; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = 4095; +SELECT @@global.max_binlog_cache_size; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_binlog_cache_size = ON; +SELECT @@global.max_binlog_cache_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_binlog_cache_size = 'test'; +SELECT @@global.max_binlog_cache_size; + + +--echo '#-------------------FN_DYNVARS_072_05----------------------------#' +########################################################################### +# Test if accessing session max_binlog_cache_size gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.max_binlog_cache_size = 4096; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.max_binlog_cache_size; + + +--echo '#----------------------FN_DYNVARS_072_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_binlog_cache_size'; + +SELECT @@max_binlog_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_binlog_cache_size'; + + +--echo '#---------------------FN_DYNVARS_072_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.max_binlog_cache_size = TRUE; +SELECT @@global.max_binlog_cache_size; +SET @@global.max_binlog_cache_size = FALSE; +SELECT @@global.max_binlog_cache_size; + + +--echo '#---------------------FN_DYNVARS_072_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.max_binlog_cache_size = 5000; +SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size; + + +--echo '#---------------------FN_DYNVARS_072_09----------------------#' +################################################################################ +# Check if max_binlog_cache_size can be accessed with and without @@ sign # +################################################################################ + +--Error ER_GLOBAL_VARIABLE +SET max_binlog_cache_size = 6000; +SELECT @@max_binlog_cache_size; +--Error ER_PARSE_ERROR +SET local.max_binlog_cache_size = 7000; +--Error ER_UNKNOWN_TABLE +SELECT local.max_binlog_cache_size; +--Error ER_PARSE_ERROR +SET global.max_binlog_cache_size = 8000; +--Error ER_UNKNOWN_TABLE +SELECT global.max_binlog_cache_size; +--Error ER_BAD_FIELD_ERROR +SELECT max_binlog_cache_size = @@session.max_binlog_cache_size; + + +############################## +# Restore initial value # +############################## + +SET @@global.max_binlog_cache_size = @start_value; +SELECT @@global.max_binlog_cache_size; + + +######################################################################## +# END OF max_binlog_cache_size TESTS # +######################################################################## diff --git a/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc b/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc new file mode 100644 index 00000000000..530022652a1 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/max_connect_errors_basic.inc @@ -0,0 +1,182 @@ +############## mysql-test\t\max_connect_errors_basic.test ############### +# # +# Variable Name: max_connect_errors # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 10 # +# Range: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable max_connect_errors # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################## +# START OF max_connect_errors TESTS # +################################################################## + + +###################################################################### +# Saving initial value of max_connect_errors in a temporary variable # +###################################################################### + +SET @start_value = @@global.max_connect_errors; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_073_01------------------------#' +################################################################## +# Display the DEFAULT value of max_connect_errors # +################################################################## + +SET @@global.max_connect_errors = 5000; +SET @@global.max_connect_errors = DEFAULT; +SELECT @@global.max_connect_errors; +--echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; + +--echo '#---------------------FN_DYNVARS_073_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.max_connect_errors = @start_value; +SELECT @@global.max_connect_errors = 10; + +--echo '#--------------------FN_DYNVARS_073_03------------------------#' +################################################################## +# Change the value of max_connect_errors to a valid value # +################################################################## + +SET @@global.max_connect_errors = 4096; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 4294967294; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 4294967295; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 1; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 2; +SELECT @@global.max_connect_errors; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_073_04-------------------------#' +##################################################################### +# Change the value of max_connect_errors to invalid value # +##################################################################### + +SET @@global.max_connect_errors = -1; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 100000000000; +SELECT @@global.max_connect_errors; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_connect_errors = 10000.01; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = -1024; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 0; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = 4294967296; +SELECT @@global.max_connect_errors; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_connect_errors = ON; +SELECT @@global.max_connect_errors; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_connect_errors = 'test'; +SELECT @@global.max_connect_errors; + + +--echo '#-------------------FN_DYNVARS_073_05----------------------------#' +##################################################################### +# Test if accessing session max_connect_errors gives error # +##################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.max_connect_errors = 4096; +--Error ER_INCORRECT_GLOBAL_LOCAL_VAR +SELECT @@session.max_connect_errors; + + +--echo '#----------------------FN_DYNVARS_073_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.max_connect_errors = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_connect_errors'; + +SELECT @@max_connect_errors = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_connect_errors'; + + +--echo '#---------------------FN_DYNVARS_073_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.max_connect_errors = TRUE; +SELECT @@global.max_connect_errors; +SET @@global.max_connect_errors = FALSE; +SELECT @@global.max_connect_errors; + + +--echo '#---------------------FN_DYNVARS_073_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.max_connect_errors = 5000; +SELECT @@max_connect_errors = @@global.max_connect_errors; + + +--echo '#---------------------FN_DYNVARS_073_09----------------------#' +########################################################################## +# Check if max_connect_errors can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET max_connect_errors = 6000; +SELECT @@max_connect_errors; +--Error ER_PARSE_ERROR +SET local.max_connect_errors = 7000; +--Error ER_UNKNOWN_TABLE +SELECT local.max_connect_errors; +--Error ER_PARSE_ERROR +SET global.max_connect_errors = 8000; +--Error ER_UNKNOWN_TABLE +SELECT global.max_connect_errors; +--Error ER_BAD_FIELD_ERROR +SELECT max_connect_errors = @@session.max_connect_errors; + + +############################## +# Restore initial value # +############################## + +SET @@global.max_connect_errors = @start_value; +SELECT @@global.max_connect_errors; + + +################################################################## +# END OF max_connect_errors TESTS # +################################################################## + diff --git a/mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc b/mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc new file mode 100644 index 00000000000..d07ae094cde --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/max_heap_table_size_basic.inc @@ -0,0 +1,222 @@ +############## mysql-test\t\max_heap_table_size_basic.test ############### +# # +# Variable Name: max_heap_table_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 16777216 # +# Range: 16384-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable max_heap_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +############################################################### +# START OF max_heap_table_size TESTS # +############################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.max_heap_table_size; +SELECT @start_global_value; +SET @start_session_value = @@session.max_heap_table_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_077_01-------------------------#' +############################################################### +# Display the DEFAULT value of max_heap_table_size # +############################################################### + +SET @@global.max_heap_table_size = 1677721610; +SET @@global.max_heap_table_size = DEFAULT; +SELECT @@global.max_heap_table_size; + +SET @@session.max_heap_table_size = 1677721610; +SET @@session.max_heap_table_size = DEFAULT; +SELECT @@session.max_heap_table_size; + + +--echo '#--------------------FN_DYNVARS_077_02-------------------------#' +################################################################## +# Check the DEFAULT value of max_heap_table_size # +################################################################## + +SET @@global.max_heap_table_size = DEFAULT; +SELECT @@global.max_heap_table_size = 16777216; + +SET @@session.max_heap_table_size = DEFAULT; +SELECT @@session.max_heap_table_size = 16777216; + + +--echo '#--------------------FN_DYNVARS_077_03-------------------------#' +############################################################################ +# Change the value of max_heap_table_size to a valid value for GLOBAL Scope # +############################################################################ + +SET @@global.max_heap_table_size = 16384; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 16385; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 65535; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 4294967294; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 4294967295; +SELECT @@global.max_heap_table_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_077_04-------------------------#' +############################################################################# +# Change the value of max_heap_table_size to a valid value for SESSION Scope # +############################################################################# + +SET @@session.max_heap_table_size = 16384; +SELECT @@session.max_heap_table_size; +SET @@session.max_heap_table_size = 16385; +SELECT @@session.max_heap_table_size; +SET @@session.max_heap_table_size = 65535; +SELECT @@session.max_heap_table_size; +SET @@session.max_heap_table_size = 4294967294; +SELECT @@session.max_heap_table_size; +SET @@session.max_heap_table_size = 4294967295; +SELECT @@session.max_heap_table_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#------------------FN_DYNVARS_077_05-----------------------#' +############################################################## +# Change the value of max_heap_table_size to an invalid value # +############################################################## + +SET @@global.max_heap_table_size = -1; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = -1024; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 1024; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 16383; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = 4294967296; +SELECT @@global.max_heap_table_size; +--Error ER_PARSE_ERROR +SET @@global.max_heap_table_size = 65530.34.; +SELECT @@global.max_heap_table_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_heap_table_size = test; +SELECT @@global.max_heap_table_size; + +SET @@session.max_heap_table_size = -1; +SELECT @@session.max_heap_table_size; +SET @@session.max_heap_table_size = 16383; +SELECT @@session.max_heap_table_size; +SET @@session.max_heap_table_size = 4294967296; +SELECT @@session.max_heap_table_size; +--Error ER_PARSE_ERROR +SET @@session.max_heap_table_size = 65530.34.; +SET @@session.max_heap_table_size = 10737418241; +SELECT @@session.max_heap_table_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.max_heap_table_size = test; +SELECT @@session.max_heap_table_size; + + +--echo '#------------------FN_DYNVARS_077_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.max_heap_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_heap_table_size'; + +--echo '#------------------FN_DYNVARS_077_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.max_heap_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_heap_table_size'; + + +--echo '#------------------FN_DYNVARS_077_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.max_heap_table_size = TRUE; +SELECT @@global.max_heap_table_size; +SET @@global.max_heap_table_size = FALSE; +SELECT @@global.max_heap_table_size; + + +--echo '#---------------------FN_DYNVARS_077_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.max_heap_table_size = 163845; +SELECT @@max_heap_table_size = @@global.max_heap_table_size; + + +--echo '#---------------------FN_DYNVARS_077_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@max_heap_table_size = 16777216; +SELECT @@max_heap_table_size = @@local.max_heap_table_size; +SELECT @@local.max_heap_table_size = @@session.max_heap_table_size; + + +--echo '#---------------------FN_DYNVARS_077_11----------------------#' +############################################################################# +# Check if max_heap_table_size can be accessed with and without @@ sign # +############################################################################# + +SET max_heap_table_size = 316777216; +SELECT @@max_heap_table_size; +--Error ER_UNKNOWN_TABLE +SELECT local.max_heap_table_size; +--Error ER_UNKNOWN_TABLE +SELECT session.max_heap_table_size; +--Error ER_BAD_FIELD_ERROR +SELECT max_heap_table_size = @@session.max_heap_table_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.max_heap_table_size = @start_global_value; +SELECT @@global.max_heap_table_size; +SET @@session.max_heap_table_size = @start_session_value; +SELECT @@session.max_heap_table_size; + + +####################################################### +# END OF max_heap_table_size TESTS # +####################################################### + diff --git a/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc b/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc new file mode 100644 index 00000000000..23c3c5b2a95 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/max_seeks_for_key_basic.inc @@ -0,0 +1,213 @@ +############## mysql-test\t\max_seeks_for_key_basic.test ############### +# # +# Variable Name: max_seeks_for_key # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 4294967295 # +# Range: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable max_seeks_for_key # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################# +# START OF max_seeks_for_key TESTS # +################################################################# + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.max_seeks_for_key; +SELECT @start_global_value; +SET @start_session_value = @@session.max_seeks_for_key; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_083_01-------------------------#' +################################################################# +# Display the DEFAULT value of max_seeks_for_key # +################################################################# + +SET @@global.max_seeks_for_key = 100; +SET @@global.max_seeks_for_key = DEFAULT; +SELECT @@global.max_seeks_for_key; + +SET @@session.max_seeks_for_key = 200; +SET @@session.max_seeks_for_key = DEFAULT; +SELECT @@session.max_seeks_for_key; + + +--echo '#--------------------FN_DYNVARS_083_02-------------------------#' +################################################################# +# Check the DEFAULT value of max_seeks_for_key # +################################################################# + +SET @@global.max_seeks_for_key = DEFAULT; +SELECT @@global.max_seeks_for_key = 4294967295; + +SET @@session.max_seeks_for_key = DEFAULT; +SELECT @@session.max_seeks_for_key = 4294967295; + + +--echo '#--------------------FN_DYNVARS_083_03-------------------------#' +########################################################################### +# Change the value of max_seeks_for_key to a valid value for GLOBAL Scope # +########################################################################### + +SET @@global.max_seeks_for_key = 1; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = 2; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = 65536; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = 4294967295; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = 4294967294; +SELECT @@global.max_seeks_for_key; + + +--echo '#--------------------FN_DYNVARS_083_04-------------------------#' +############################################################################ +# Change the value of max_seeks_for_key to a valid value for SESSION Scope # +############################################################################ +SET @@session.max_seeks_for_key = 1; +SELECT @@session.max_seeks_for_key; +SET @@session.max_seeks_for_key = 2; +SELECT @@session.max_seeks_for_key; +SET @@session.max_seeks_for_key = 4294967295; +SELECT @@session.max_seeks_for_key; +SET @@session.max_seeks_for_key = 4294967294; +SELECT @@session.max_seeks_for_key; +SET @@session.max_seeks_for_key = 65535; +SELECT @@session.max_seeks_for_key; + + +--echo '#------------------FN_DYNVARS_083_05-----------------------#' +############################################################# +# Change the value of max_seeks_for_key to an invalid value # +############################################################# + +SET @@global.max_seeks_for_key = 0; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = -1024; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = 4294967296; +SELECT @@global.max_seeks_for_key; +--Error ER_PARSE_ERROR +SET @@global.max_seeks_for_key = 65530.34.; +SELECT @@global.max_seeks_for_key; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_seeks_for_key = test; +SELECT @@global.max_seeks_for_key; + +SET @@session.max_seeks_for_key = 0; +SELECT @@session.max_seeks_for_key; +SET @@session.max_seeks_for_key = -2; +SELECT @@session.max_seeks_for_key; +--Error ER_PARSE_ERROR +SET @@session.max_seeks_for_key = 65530.34.; +SET @@session.max_seeks_for_key = 4294967296; +SELECT @@session.max_seeks_for_key; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.max_seeks_for_key = test; +SELECT @@session.max_seeks_for_key; + + +--echo '#------------------FN_DYNVARS_083_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.max_seeks_for_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_seeks_for_key'; + +--echo '#------------------FN_DYNVARS_083_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.max_seeks_for_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_seeks_for_key'; + + +--echo '#------------------FN_DYNVARS_083_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.max_seeks_for_key = TRUE; +SELECT @@global.max_seeks_for_key; +SET @@global.max_seeks_for_key = FALSE; +SELECT @@global.max_seeks_for_key; + + +--echo '#---------------------FN_DYNVARS_083_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.max_seeks_for_key = 10; +SELECT @@max_seeks_for_key = @@global.max_seeks_for_key; + + +--echo '#---------------------FN_DYNVARS_083_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@max_seeks_for_key = 100; +SELECT @@max_seeks_for_key = @@local.max_seeks_for_key; +SELECT @@local.max_seeks_for_key = @@session.max_seeks_for_key; + + +--echo '#---------------------FN_DYNVARS_083_11----------------------#' +############################################################################ +# Check if max_seeks_for_key can be accessed with and without @@ sign # +############################################################################ + +SET max_seeks_for_key = 1; +SELECT @@max_seeks_for_key; +--Error ER_UNKNOWN_TABLE +SELECT local.max_seeks_for_key; +--Error ER_UNKNOWN_TABLE +SELECT session.max_seeks_for_key; +--Error ER_BAD_FIELD_ERROR +SELECT max_seeks_for_key = @@session.max_seeks_for_key; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.max_seeks_for_key = @start_global_value; +SELECT @@global.max_seeks_for_key; +SET @@session.max_seeks_for_key = @start_session_value; +SELECT @@session.max_seeks_for_key; + + +############################################################# +# END OF max_seeks_for_key TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc b/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc new file mode 100644 index 00000000000..e24d97f47dd --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/max_tmp_tables_basic.inc @@ -0,0 +1,227 @@ +############## mysql-test\t\max_tmp_tables_basic.test ############### +# # +# Variable Name: max_tmp_tables # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 32 # +# Range: 1-4294967295 # +# # +# # +# # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable max_tmp_tables # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +#################################### +# START OF max_tmp_tables TESTS # +#################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.max_tmp_tables; +SELECT @start_global_value; +SET @start_session_value = @@session.max_tmp_tables; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_086_01-------------------------#' +###################################################### +# Display the DEFAULT value of max_tmp_tables # +###################################################### + +SET @@global.max_tmp_tables = 1000; +SET @@global.max_tmp_tables = DEFAULT; +SELECT @@global.max_tmp_tables; + + +SET @@session.max_tmp_tables = 1000; +SET @@session.max_tmp_tables = DEFAULT; +SELECT @@session.max_tmp_tables; + + +--echo '#--------------------FN_DYNVARS_086_02-------------------------#' +###################################################### +# Check the DEFAULT value of max_tmp_tables # +###################################################### + +SET @@global.max_tmp_tables = DEFAULT; +SELECT @@global.max_tmp_tables = 32; + +SET @@session.max_tmp_tables = DEFAULT; +SELECT @@session.max_tmp_tables = 32; + + + +--echo '#--------------------FN_DYNVARS_086_03-------------------------#' +######################################################################## +# Change the value of max_tmp_tables to a valid value for GLOBAL Scope # +######################################################################## + +SET @@global.max_tmp_tables = 1; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = 2; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = 65536; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = 4294967295; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = 4294967294; +SELECT @@global.max_tmp_tables; + +--echo '#--------------------FN_DYNVARS_086_04-------------------------#' +######################################################################### +# Change the value of max_tmp_tables to a valid value for SESSION Scope # +######################################################################### + +SET @@session.max_tmp_tables = 1; +SELECT @@session.max_tmp_tables; + +SET @@session.max_tmp_tables = 2; +SELECT @@session.max_tmp_tables; + +SET @@session.max_tmp_tables = 65536; +SELECT @@session.max_tmp_tables; + +SET @@session.max_tmp_tables = 4294967295; +SELECT @@session.max_tmp_tables; + +SET @@session.max_tmp_tables = 4294967294; +SELECT @@session.max_tmp_tables; + + +--echo '#------------------FN_DYNVARS_086_05-----------------------#' +########################################################## +# Change the value of max_tmp_tables to an invalid value # +########################################################## + +SET @@global.max_tmp_tables = -1024; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = 4294967296; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = -1; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = 429496729500; +SELECT @@global.max_tmp_tables; +--Error ER_PARSE_ERROR +SET @@global.max_tmp_tables = 65530.34.; +SELECT @@global.max_tmp_tables; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_tmp_tables = test; +SELECT @@global.max_tmp_tables; + +SET @@session.max_tmp_tables = 4294967296; +SELECT @@session.max_tmp_tables; +SET @@session.max_tmp_tables = -1; +SELECT @@session.max_tmp_tables; +SET @@session.max_tmp_tables = 429496729500; +SELECT @@session.max_tmp_tables; +SET @@session.max_tmp_tables = -001; +SELECT @@session.max_tmp_tables; +--Error ER_PARSE_ERROR +SET @@session.max_tmp_tables = 65530.34.; +SET @@session.max_tmp_tables = 10737418241; +SELECT @@session.max_tmp_tables; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.max_tmp_tables = test; +SELECT @@session.max_tmp_tables; + + +--echo '#------------------FN_DYNVARS_086_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.max_tmp_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_tmp_tables'; + +--echo '#------------------FN_DYNVARS_086_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.max_tmp_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_tmp_tables'; + + +--echo '#------------------FN_DYNVARS_086_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.max_tmp_tables = TRUE; +SELECT @@global.max_tmp_tables; +SET @@global.max_tmp_tables = FALSE; +SELECT @@global.max_tmp_tables; + + +--echo '#---------------------FN_DYNVARS_086_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.max_tmp_tables = 20; +SELECT @@max_tmp_tables = @@global.max_tmp_tables; + + +--echo '#---------------------FN_DYNVARS_086_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@max_tmp_tables = 255; +SELECT @@max_tmp_tables = @@local.max_tmp_tables; +SELECT @@local.max_tmp_tables = @@session.max_tmp_tables; + + +--echo '#---------------------FN_DYNVARS_086_11----------------------#' +######################################################################### +# Check if max_tmp_tables can be accessed with and without @@ sign # +######################################################################### + + +SET max_tmp_tables = 102; +SELECT @@max_tmp_tables; +--Error ER_UNKNOWN_TABLE +SELECT local.max_tmp_tables; +--Error ER_UNKNOWN_TABLE +SELECT session.max_tmp_tables; +--Error ER_BAD_FIELD_ERROR +SELECT max_tmp_tables = @@session.max_tmp_tables; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.max_tmp_tables = @start_global_value; +SELECT @@global.max_tmp_tables; +SET @@session.max_tmp_tables = @start_session_value; +SELECT @@session.max_tmp_tables; + + +################################################### +# END OF max_tmp_tables TESTS # +################################################### + diff --git a/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc b/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc new file mode 100644 index 00000000000..80d5b7cc747 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/max_write_lock_count_basic.inc @@ -0,0 +1,158 @@ +############## mysql-test\t\max_write_lock_count_basic.test ############### +# # +# Variable Name: max_write_lock_count # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 4294967295 # +# Range:1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable max_write_lock_count # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +########################################## +# START OF max_write_lock_count TESTS # +########################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.max_write_lock_count; +SELECT @start_global_value; + + +--echo '#--------------------FN_DYNVARS_088_01-------------------------#' +############################################################ +# Display the DEFAULT value of max_write_lock_count # +############################################################ + +SET @@global.max_write_lock_count = 1000; +SET @@global.max_write_lock_count = DEFAULT; +SELECT @@global.max_write_lock_count; + + +--echo '#--------------------FN_DYNVARS_088_02-------------------------#' +############################################################ +# Check the DEFAULT value of max_write_lock_count # +############################################################ + +SET @@global.max_write_lock_count = DEFAULT; +SELECT @@global.max_write_lock_count = 4294967295; + + +--echo '#--------------------FN_DYNVARS_088_03-------------------------#' +############################################################################## +# Change the value of max_write_lock_count to a valid value for GLOBAL Scope # +############################################################################## + +SET @@global.max_write_lock_count = 1; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = 2; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = 65536; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = 4294967295; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = 4294967294; +SELECT @@global.max_write_lock_count; + + + +--echo '#------------------FN_DYNVARS_088_04-----------------------#' +################################################################ +# Change the value of max_write_lock_count to an invalid value # +################################################################ + +SET @@global.max_write_lock_count = -1024; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = 4294967296; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = -1; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = 429496729500; +SELECT @@global.max_write_lock_count; +--Error ER_PARSE_ERROR +SET @@global.max_write_lock_count = 65530.34.; +SELECT @@global.max_write_lock_count; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.max_write_lock_count = test; +SELECT @@global.max_write_lock_count; + + + +--echo '#------------------FN_DYNVARS_088_05-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.max_write_lock_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_write_lock_count'; + + +--echo '#------------------FN_DYNVARS_088_06-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.max_write_lock_count = TRUE; +SELECT @@global.max_write_lock_count; +SET @@global.max_write_lock_count = FALSE; +SELECT @@global.max_write_lock_count; + + +--echo '#---------------------FN_DYNVARS_088_07----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.max_write_lock_count = 20; +SELECT @@max_write_lock_count = @@global.max_write_lock_count; + + +--echo '#---------------------FN_DYNVARS_088_08----------------------#' +############################################################################### +# Check if max_write_lock_count can be accessed with and without @@ sign # +############################################################################### + + +SET @@global.max_write_lock_count = 102; +SELECT @@max_write_lock_count; +--Error ER_UNKNOWN_TABLE +SELECT local.max_write_lock_count; +--Error ER_UNKNOWN_TABLE +SELECT global.max_write_lock_count; +--Error ER_BAD_FIELD_ERROR +SELECT max_write_lock_count = @@global.max_write_lock_count; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.max_write_lock_count = @start_global_value; +SELECT @@global.max_write_lock_count; + + +################################################### +# END OF max_write_lock_count TESTS # +################################################### + diff --git a/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc b/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc new file mode 100644 index 00000000000..c032d4a9d6d --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/min_examined_row_limit_basic.inc @@ -0,0 +1,219 @@ +############## mysql-test\t\min_examined_row_limit_basic.test ############### +# # +# Variable Name: min_examined_row_limit # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 0 # +# Range:0-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable min_examined_row_limit # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +###################################################################### +# START OF min_examined_row_limit TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.min_examined_row_limit; +SELECT @start_global_value; +SET @start_session_value = @@session.min_examined_row_limit; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_089_01-------------------------#' +###################################################################### +# Display the DEFAULT value of min_examined_row_limit # +###################################################################### + +SET @@global.min_examined_row_limit = 100; +SET @@global.min_examined_row_limit = DEFAULT; +SELECT @@global.min_examined_row_limit; + +SET @@session.min_examined_row_limit = 200; +SET @@session.min_examined_row_limit = DEFAULT; +SELECT @@session.min_examined_row_limit; + + +--echo '#--------------------FN_DYNVARS_089_02-------------------------#' +######################################################################## +# Check the DEFAULT value of min_examined_row_limit # +######################################################################## + +SET @@global.min_examined_row_limit = DEFAULT; +SELECT @@global.min_examined_row_limit = 0; + +SET @@session.min_examined_row_limit = DEFAULT; +SELECT @@session.min_examined_row_limit = 0; + + +--echo '#--------------------FN_DYNVARS_089_03-------------------------#' +################################################################################ +# Change the value of min_examined_row_limit to a valid value for GLOBAL Scope # +################################################################################ + +SET @@global.min_examined_row_limit = 0; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = 1; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = 60020; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = 65535; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = 4294967295; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = 4294967294; +SELECT @@global.min_examined_row_limit; + + + +--echo '#--------------------FN_DYNVARS_089_04-------------------------#' +################################################################################### +# Change the value of min_examined_row_limit to a valid value for SESSION Scope # +################################################################################### + +SET @@session.min_examined_row_limit = 0; +SELECT @@session.min_examined_row_limit; +SET @@session.min_examined_row_limit = 1; +SELECT @@session.min_examined_row_limit; +SET @@session.min_examined_row_limit = 50050; +SELECT @@session.min_examined_row_limit; +SET @@session.min_examined_row_limit = 65535; +SELECT @@session.min_examined_row_limit; +SET @@session.min_examined_row_limit = 4294967295; +SELECT @@session.min_examined_row_limit; +SET @@session.min_examined_row_limit = 4294967294; +SELECT @@session.min_examined_row_limit; + + +--echo '#------------------FN_DYNVARS_089_05-----------------------#' +#################################################################### +# Change the value of min_examined_row_limit to an invalid value # +#################################################################### + +SET @@global.min_examined_row_limit = 429496726; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = -1024; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = 429496729500; +SELECT @@global.min_examined_row_limit; +--Error ER_PARSE_ERROR +SET @@global.min_examined_row_limit = 65530.34.; +SELECT @@global.min_examined_row_limit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.min_examined_row_limit = test; +SELECT @@global.min_examined_row_limit; + +SET @@session.min_examined_row_limit = 4294967296; +SELECT @@session.min_examined_row_limit; +SET @@session.min_examined_row_limit = -1; +SELECT @@session.min_examined_row_limit; +--Error ER_PARSE_ERROR +SET @@session.min_examined_row_limit = 65530.34.; +SET @@session.min_examined_row_limit = 4294967295021; +SELECT @@session.min_examined_row_limit; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.min_examined_row_limit = test; +SELECT @@session.min_examined_row_limit; + + +--echo '#------------------FN_DYNVARS_089_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.min_examined_row_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='min_examined_row_limit'; + +--echo '#------------------FN_DYNVARS_089_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.min_examined_row_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='min_examined_row_limit'; + + +--echo '#------------------FN_DYNVARS_089_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.min_examined_row_limit = TRUE; +SELECT @@global.min_examined_row_limit; +SET @@global.min_examined_row_limit = FALSE; +SELECT @@global.min_examined_row_limit; + + +--echo '#---------------------FN_DYNVARS_089_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.min_examined_row_limit = 10; +SELECT @@min_examined_row_limit = @@global.min_examined_row_limit; + + +--echo '#---------------------FN_DYNVARS_089_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@min_examined_row_limit = 100; +SELECT @@min_examined_row_limit = @@local.min_examined_row_limit; +SELECT @@local.min_examined_row_limit = @@session.min_examined_row_limit; + + +--echo '#---------------------FN_DYNVARS_089_11----------------------#' +################################################################################### +# Check if min_examined_row_limit can be accessed with and without @@ sign # +################################################################################### + +SET min_examined_row_limit = 1; +SELECT @@min_examined_row_limit; +--Error ER_UNKNOWN_TABLE +SELECT local.min_examined_row_limit; +--Error ER_UNKNOWN_TABLE +SELECT session.min_examined_row_limit; +--Error ER_BAD_FIELD_ERROR +SELECT min_examined_row_limit = @@session.min_examined_row_limit; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.min_examined_row_limit = @start_global_value; +SELECT @@global.min_examined_row_limit; +SET @@session.min_examined_row_limit = @start_session_value; +SELECT @@session.min_examined_row_limit; + + +############################################################# +# END OF min_examined_row_limit TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/multi_range_count_basic.inc b/mysql-test/suite/sys_vars/inc/multi_range_count_basic.inc new file mode 100644 index 00000000000..47e8352196f --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/multi_range_count_basic.inc @@ -0,0 +1,219 @@ +############## mysql-test\t\multi_range_count_basic.test ############### +# # +# Variable Name: multi_range_count # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 256 # +# Range:1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable multi_range_count # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################# +# START OF multi_range_count TESTS # +################################################################# + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.multi_range_count; +SELECT @start_global_value; +SET @start_session_value = @@session.multi_range_count; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_090_01-------------------------#' +################################################################# +# Display the DEFAULT value of multi_range_count # +################################################################# + +SET @@global.multi_range_count = 100; +SET @@global.multi_range_count = DEFAULT; +SELECT @@global.multi_range_count; + +SET @@session.multi_range_count = 200; +SET @@session.multi_range_count = DEFAULT; +SELECT @@session.multi_range_count; + + +--echo '#--------------------FN_DYNVARS_090_02-------------------------#' +################################################################# +# Check the DEFAULT value of multi_range_count # +################################################################# + +SET @@global.multi_range_count = DEFAULT; +SELECT @@global.multi_range_count = 256; + +SET @@session.multi_range_count = DEFAULT; +SELECT @@session.multi_range_count = 256; + + +--echo '#--------------------FN_DYNVARS_090_03-------------------------#' +########################################################################### +# Change the value of multi_range_count to a valid value for GLOBAL Scope # +########################################################################### + +SET @@global.multi_range_count = 1; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = 60020; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = 65535; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = 4294967295; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = 4294967294; +SELECT @@global.multi_range_count; + + + +--echo '#--------------------FN_DYNVARS_090_04-------------------------#' +############################################################################ +# Change the value of multi_range_count to a valid value for SESSION Scope # +############################################################################ + +SET @@session.multi_range_count = 1; +SELECT @@session.multi_range_count; +SET @@session.multi_range_count = 50050; +SELECT @@session.multi_range_count; +SET @@session.multi_range_count = 65535; +SELECT @@session.multi_range_count; +SET @@session.multi_range_count = 4294967295; +SELECT @@session.multi_range_count; +SET @@session.multi_range_count = 4294967294; +SELECT @@session.multi_range_count; + + +--echo '#------------------FN_DYNVARS_090_05-----------------------#' +############################################################# +# Change the value of multi_range_count to an invalid value # +############################################################# + +SET @@global.multi_range_count = 0; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = 4294967296; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = -1024; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = 429496729500; +SELECT @@global.multi_range_count; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.multi_range_count = 65530.34; +SELECT @@global.multi_range_count; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.multi_range_count = test; +SELECT @@global.multi_range_count; + +SET @@session.multi_range_count = 0; +SELECT @@session.multi_range_count; +SET @@session.multi_range_count = 4294967296; +SELECT @@session.multi_range_count; +SET @@session.multi_range_count = -1; +SELECT @@session.multi_range_count; +--Error ER_PARSE_ERROR +SET @@session.multi_range_count = 65530.34.; +SET @@session.multi_range_count = 4294967295021; +SELECT @@session.multi_range_count; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.multi_range_count = test; +SELECT @@session.multi_range_count; + + +--echo '#------------------FN_DYNVARS_090_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.multi_range_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='multi_range_count'; + +--echo '#------------------FN_DYNVARS_090_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.multi_range_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='multi_range_count'; + + +--echo '#------------------FN_DYNVARS_090_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.multi_range_count = TRUE; +SELECT @@global.multi_range_count; +SET @@global.multi_range_count = FALSE; +SELECT @@global.multi_range_count; + + +--echo '#---------------------FN_DYNVARS_090_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.multi_range_count = 10; +SELECT @@multi_range_count = @@global.multi_range_count; + + +--echo '#---------------------FN_DYNVARS_090_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@multi_range_count = 100; +SELECT @@multi_range_count = @@local.multi_range_count; +SELECT @@local.multi_range_count = @@session.multi_range_count; + + +--echo '#---------------------FN_DYNVARS_090_11----------------------#' +############################################################################ +# Check if multi_range_count can be accessed with and without @@ sign # +############################################################################ + +SET multi_range_count = 1; +SELECT @@multi_range_count; +--Error ER_UNKNOWN_TABLE +SELECT local.multi_range_count; +--Error ER_UNKNOWN_TABLE +SELECT session.multi_range_count; +--Error ER_BAD_FIELD_ERROR +SELECT multi_range_count = @@session.multi_range_count; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.multi_range_count = @start_global_value; +SELECT @@global.multi_range_count; +SET @@session.multi_range_count = @start_session_value; +SELECT @@session.multi_range_count; + + +###################################################### +# END OF multi_range_count TESTS # +###################################################### + diff --git a/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc b/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc new file mode 100644 index 00000000000..23f0607b439 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc @@ -0,0 +1,184 @@ + +############## mysql-test\t\myisam_max_sort_file_size_basic.test ################ +# # +# Variable Name: myisam_max_sort_file_size # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable myisam_max_sort_file_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 # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################### +# START OF myisam_max_sort_file_size TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.myisam_max_sort_file_size; +SELECT @start_global_value; + +--echo '#--------------------FN_DYNVARS_094_01-------------------------#' +################################################################### +# Display the DEFAULT value of myisam_max_sort_file_size # +################################################################### + +SET @@global.myisam_max_sort_file_size = 500000; +SET @@global.myisam_max_sort_file_size = DEFAULT; +SELECT @@global.myisam_max_sort_file_size; + +--echo 'Bug# 34876: This variable has invalid default value as compared to documentation'; + +--echo '#--------------------FN_DYNVARS_094_02-------------------------#' +################################################################### +# Check the DEFAULT value of myisam_max_sort_file_size # +################################################################### + +SET @@global.myisam_max_sort_file_size = DEFAULT; +SELECT @@global.myisam_max_sort_file_size = 2147483648; + +--echo '#--------------------FN_DYNVARS_094_03-------------------------#' +################################################################################## +# Change the value of myisam_max_sort_file_size to a valid value for GLOBAL Scope # +################################################################################## + +SET @@global.myisam_max_sort_file_size = 0; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = 1024; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = 123456789; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = 2147483648*2; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = 2147483648*1024; +SELECT @@global.myisam_max_sort_file_size; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = 2147483648*2147483648; + +--echo '#--------------------FN_DYNVARS_094_04-------------------------#' +################################################################################# +# Check if variable can be access with session scope # +################################################################################# + +--Error ER_GLOBAL_VARIABLE +SET @@myisam_max_sort_file_size = 2; + +--Error ER_GLOBAL_VARIABLE +SET @@session.myisam_max_sort_file_size = 3; + +--Error ER_GLOBAL_VARIABLE +SET @@local.myisam_max_sort_file_size = 4; + + + +--echo '#------------------FN_DYNVARS_094_05-----------------------#' +#################################################################### +# Change the value of myisam_max_sort_file_size to an invalid value # +#################################################################### + +SET @@global.myisam_max_sort_file_size = -1; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = -2147483648; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = -2147483649; +SELECT @@global.myisam_max_sort_file_size; +--Error ER_PARSE_ERROR +SET @@global.myisam_max_sort_file_size = 65530.34.; +SELECT @@global.myisam_max_sort_file_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_max_sort_file_size = 2147483649.56; +SELECT @@global.myisam_max_sort_file_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_max_sort_file_size = 1G; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + + +--echo '#------------------FN_DYNVARS_094_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SET @@global.myisam_max_sort_file_size = 3000; +SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_max_sort_file_size'; + + +--echo '#------------------FN_DYNVARS_094_07-----------------------#' +########################################################################### +# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # +########################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_max_sort_file_size'; + + +--echo '#------------------FN_DYNVARS_094_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.myisam_max_sort_file_size = TRUE; +SELECT @@global.myisam_max_sort_file_size; +SET @@global.myisam_max_sort_file_size = FALSE; +SELECT @@global.myisam_max_sort_file_size; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + + +SET @@global.myisam_max_sort_file_size = 512; +SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +################################################################################## +# Check if myisam_max_sort_file_size can be accessed without @@ sign and scope # +################################################################################## + +--Error ER_GLOBAL_VARIABLE +SET myisam_max_sort_file_size = 2048; +--Error ER_BAD_FIELD_ERROR +SELECT myisam_max_sort_file_size; + +SELECT @@myisam_max_sort_file_size; + +#verifying another syntax for setting value# +SET global myisam_max_sort_file_size = 64; + +#################################### +# Restore initial value # +#################################### + +SET @@global.myisam_max_sort_file_size = @start_global_value; +SELECT @@global.myisam_max_sort_file_size; + +######################################################## +# END OF myisam_max_sort_file_size TESTS # +######################################################## + diff --git a/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc b/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc new file mode 100644 index 00000000000..8485e79ff03 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/myisam_repair_threads_basic.inc @@ -0,0 +1,242 @@ +############## mysql-test\t\myisam_repair_threads_basic.test ################## +# # +# Variable Name: myisam_repair_threads # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 1 # +# Range: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable myisam_repair_threads # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +###################################################################### +# START OF myisam_repair_threads TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.myisam_repair_threads; +SELECT @start_global_value; +SET @start_session_value = @@session.myisam_repair_threads; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +################################################################# +# Display the DEFAULT value of myisam_block_size # +################################################################# + +SET @@global.myisam_repair_threads = 100; +SET @@global.myisam_repair_threads = DEFAULT; +SELECT @@global.myisam_repair_threads ; + +SET @@session.myisam_repair_threads = 200; +SET @@session.myisam_repair_threads = DEFAULT; +SELECT @@session.myisam_repair_threads ; + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +###################################################################### +# Check the DEFAULT value of myisam_repair_threads # +###################################################################### + +SET @@global.myisam_repair_threads = DEFAULT; +SELECT @@global.myisam_repair_threads = 1; + +SET @@session.myisam_repair_threads = DEFAULT; +SELECT @@session.myisam_repair_threads = 1; + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +############################################################################### +# Change the value of myisam_repair_threads to a valid value for GLOBAL Scope# +############################################################################### + +SET @@global.myisam_repair_threads = 1; +SELECT @@global.myisam_repair_threads ; + +SET @@global.myisam_repair_threads = 4294967295; +SELECT @@global.myisam_repair_threads ; + +SET @@global.myisam_repair_threads = 655354; +SELECT @@global.myisam_repair_threads ; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +############################################################################### +# Change the value of myisam_repair_threads to a valid value for SESSION +# Scope +############################################################################### + +SET @@session.myisam_repair_threads = 1; +SELECT @@session.myisam_repair_threads ; + +SET @@session.myisam_repair_threads = 4294967295; +SELECT @@session.myisam_repair_threads ; + +SET @@session.myisam_repair_threads = 655345; +SELECT @@session.myisam_repair_threads ; + + + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +################################################################## +# Change the value of myisam_repair_threads to an invalid value # +################################################################## + +SET @@global.myisam_repair_threads = 0; +SELECT @@global.myisam_repair_threads ; + +SET @@global.myisam_repair_threads = -1024; +SELECT @@global.myisam_repair_threads ; + +SET @@global.myisam_repair_threads = 429496729533; +SELECT @@global.myisam_repair_threads ; + + +--Error ER_PARSE_ERROR +SET @@global.myisam_repair_threads = 65530.34.; +SELECT @@global.myisam_repair_threads ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_repair_threads = test; +SELECT @@global.myisam_repair_threads ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_repair_threads = "test"; +SELECT @@global.myisam_repair_threads ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_repair_threads = 'test'; +SELECT @@global.myisam_repair_threads ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_repair_threads = ON; +SELECT @@global.myisam_repair_threads ; + + +SET @@session.myisam_repair_threads = 0; +SELECT @@session.myisam_repair_threads ; + +SET @@session.myisam_repair_threads = -2; +SELECT @@session.myisam_repair_threads ; + +--Error ER_PARSE_ERROR + +SET @@session.myisam_repair_threads = 65530.34.; +SELECT @@session.myisam_repair_threads ; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.myisam_repair_threads = test; +SELECT @@session.myisam_repair_threads ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.myisam_repair_threads = "test"; +SELECT @@session.myisam_repair_threads ; + + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.myisam_repair_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_repair_threads '; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.myisam_repair_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_repair_threads '; + + +--echo '#------------------FN_DYNVARS_005_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.myisam_repair_threads = TRUE; +SELECT @@global.myisam_repair_threads ; +SET @@global.myisam_repair_threads = FALSE; +SELECT @@global.myisam_repair_threads ; + + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +############################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +############################################################################### + +SET @@global.myisam_repair_threads = 10; +SELECT @@myisam_repair_threads = @@global.myisam_repair_threads ; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to +# same session variable # +######################################################################################################## + +SET @@myisam_repair_threads = 100; +SELECT @@myisam_repair_threads = @@local.myisam_repair_threads ; +SELECT @@local.myisam_repair_threads = @@session.myisam_repair_threads ; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +################################################################################### +# Check if myisam_repair_threads can be accessed with and without @@ sign # +################################################################################### + +SET myisam_repair_threads = 1; +SELECT @@myisam_repair_threads ; +--Error ER_UNKNOWN_TABLE + +SELECT local.myisam_repair_threads ; + +--Error ER_UNKNOWN_TABLE +SELECT session.myisam_repair_threads ; + +--Error ER_BAD_FIELD_ERROR +SELECT myisam_repair_threads = @@session.myisam_repair_threads ; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.myisam_repair_threads = @start_global_value; +SELECT @@global.myisam_repair_threads ; +SET @@session.myisam_repair_threads = @start_session_value; +SELECT @@session.myisam_repair_threads ; + + +############################################################# +# END OF myisam_repair_threads TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc b/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc new file mode 100644 index 00000000000..8e36d8a2c70 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc @@ -0,0 +1,240 @@ +############## mysql-test\t\myisam_sort_buffer_size_basic.test ############### +# # +# Variable Name: myisam_sort_buffer_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable myisam_sort_buffer_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF myisam_sort_buffer_size TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.myisam_sort_buffer_size ; +SELECT @start_global_value; +SET @start_session_value = @@session.myisam_sort_buffer_size ; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +######################################################################## +# Display the DEFAULT value of myisam_block_size # +######################################################################## + +SET @@global.myisam_sort_buffer_size = 100; +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size ; + +SET @@session.myisam_sort_buffer_size = 200; +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size ; + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +######################################################################## +# Check the DEFAULT value of myisam_sort_buffer_size # +######################################################################## + +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size = 8388608; + +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size = 8388608; + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +################################################################################## +# Change the value of myisam_sort_buffer_size to a valid value for GLOBAL Scope # +################################################################################## + +SET @@global.myisam_sort_buffer_size = 4; +SELECT @@global.myisam_sort_buffer_size ; + +SET @@global.myisam_sort_buffer_size = 4294967295; +SELECT @@global.myisam_sort_buffer_size ; + +SET @@global.myisam_sort_buffer_size = 655354; +SELECT @@global.myisam_sort_buffer_size ; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +################################################################################### +# Change the value of myisam_sort_buffer_size to a valid value for SESSION Scope # +################################################################################### + +SET @@session.myisam_sort_buffer_size = 4; +SELECT @@session.myisam_sort_buffer_size ; + +SET @@session.myisam_sort_buffer_size = 4294967295; +SELECT @@session.myisam_sort_buffer_size ; + +SET @@session.myisam_sort_buffer_size = 655345; +SELECT @@session.myisam_sort_buffer_size ; + + + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +#################################################################### +# Change the value of myisam_sort_buffer_size to an invalid value # +#################################################################### + +SET @@global.myisam_sort_buffer_size = 0; +SELECT @@global.myisam_sort_buffer_size ; + +SET @@global.myisam_sort_buffer_size = -1024; +SELECT @@global.myisam_sort_buffer_size ; + +SET @@global.myisam_sort_buffer_size = 429496729533; +SELECT @@global.myisam_sort_buffer_size ; + + +--Error ER_PARSE_ERROR +SET @@global.myisam_sort_buffer_size = 65530.34.; +SELECT @@global.myisam_sort_buffer_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_sort_buffer_size = test; +SELECT @@global.myisam_sort_buffer_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_sort_buffer_size = "test"; +SELECT @@global.myisam_sort_buffer_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_sort_buffer_size = 'test'; +SELECT @@global.myisam_sort_buffer_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.myisam_sort_buffer_size = ON; +SELECT @@global.myisam_sort_buffer_size ; + + +SET @@session.myisam_sort_buffer_size = 0; +SELECT @@session.myisam_sort_buffer_size ; + +SET @@session.myisam_sort_buffer_size = -2; +SELECT @@session.myisam_sort_buffer_size ; + +--Error ER_PARSE_ERROR + +SET @@session.myisam_sort_buffer_size = 65530.34.; +SELECT @@session.myisam_sort_buffer_size ; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.myisam_sort_buffer_size = test; +SELECT @@session.myisam_sort_buffer_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.myisam_sort_buffer_size = "test"; +SELECT @@session.myisam_sort_buffer_size ; + + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; + + +--echo '#------------------FN_DYNVARS_005_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.myisam_sort_buffer_size = TRUE; +SELECT @@global.myisam_sort_buffer_size ; +SET @@global.myisam_sort_buffer_size = FALSE; +SELECT @@global.myisam_sort_buffer_size ; + + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.myisam_sort_buffer_size = 10; +SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@myisam_sort_buffer_size = 100; +SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; +SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +################################################################################### +# Check if myisam_sort_buffer_size can be accessed with and without @@ sign # +################################################################################### + +SET myisam_sort_buffer_size = 1; +SELECT @@myisam_sort_buffer_size ; +--Error ER_UNKNOWN_TABLE + +SELECT local.myisam_sort_buffer_size ; + +--Error ER_UNKNOWN_TABLE +SELECT session.myisam_sort_buffer_size ; + +--Error ER_BAD_FIELD_ERROR +SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.myisam_sort_buffer_size = @start_global_value; +SELECT @@global.myisam_sort_buffer_size ; +SET @@session.myisam_sort_buffer_size = @start_session_value; +SELECT @@session.myisam_sort_buffer_size ; + + +############################################################# +# END OF myisam_sort_buffer_size TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc b/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc new file mode 100644 index 00000000000..537d8eea6c6 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/net_retry_count_basic.inc @@ -0,0 +1,217 @@ +############## mysql-test\t\net_retry_count_basic.test ############### +# # +# Variable Name: net_retry_count # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:10 # +# Range: 1-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable net_retry_count # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +############################################################### +# START OF net_retry_count TESTS # +############################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.net_retry_count; +SELECT @start_global_value; +SET @start_session_value = @@session.net_retry_count; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_111_01-------------------------#' +############################################################### +# Display the DEFAULT value of net_retry_count # +############################################################### + +SET @@global.net_retry_count = 100; +SET @@global.net_retry_count = DEFAULT; +SELECT @@global.net_retry_count; + +SET @@session.net_retry_count = 200; +SET @@session.net_retry_count = DEFAULT; +SELECT @@session.net_retry_count; + + +--echo '#--------------------FN_DYNVARS_111_02-------------------------#' +############################################################### +# Check the DEFAULT value of net_retry_count # +############################################################### + +SET @@global.net_retry_count = DEFAULT; +SELECT @@global.net_retry_count = 10; + +SET @@session.net_retry_count = DEFAULT; +SELECT @@session.net_retry_count = 10; + + +--echo '#--------------------FN_DYNVARS_111_03-------------------------#' +######################################################################### +# Change the value of net_retry_count to a valid value for GLOBAL Scope # +######################################################################### + +SET @@global.net_retry_count = 1; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = 2; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = 4294967295; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = 4294967294; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = 65536; +SELECT @@global.net_retry_count; + +--echo '#--------------------FN_DYNVARS_111_04-------------------------#' +########################################################################## +# Change the value of net_retry_count to a valid value for SESSION Scope # +########################################################################## + +SET @@session.net_retry_count = 1; +SELECT @@session.net_retry_count; +SET @@session.net_retry_count = 2; +SELECT @@session.net_retry_count; +SET @@session.net_retry_count = 65535; +SELECT @@session.net_retry_count; +SET @@session.net_retry_count = 4294967295; +SELECT @@session.net_retry_count; +SET @@session.net_retry_count = 4294967294; +SELECT @@session.net_retry_count; + +--echo '#------------------FN_DYNVARS_111_05-----------------------#' +########################################################### +# Change the value of net_retry_count to an invalid value # +########################################################### + +SET @@global.net_retry_count = 0; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = -1024; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = 4294967296; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = 429496729500; +SELECT @@global.net_retry_count; +--Error ER_PARSE_ERROR +SET @@global.net_retry_count = 65530.34.; +SELECT @@global.net_retry_count; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.net_retry_count = test; +SELECT @@global.net_retry_count; + +SET @@session.net_retry_count = 0; +SELECT @@session.net_retry_count; +SET @@session.net_retry_count = -2; +SELECT @@session.net_retry_count; +--Error ER_PARSE_ERROR +SET @@session.net_retry_count = 65530.34.; +SET @@session.net_retry_count = 6555015425; +SELECT @@session.net_retry_count; +SET @@session.net_retry_count = 4294967296; +SELECT @@session.net_retry_count; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.net_retry_count = test; +SELECT @@session.net_retry_count; + + +--echo '#------------------FN_DYNVARS_111_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.net_retry_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_retry_count'; + +--echo '#------------------FN_DYNVARS_111_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.net_retry_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_retry_count'; + + +--echo '#------------------FN_DYNVARS_111_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.net_retry_count = TRUE; +SELECT @@global.net_retry_count; +SET @@global.net_retry_count = FALSE; +SELECT @@global.net_retry_count; + + +--echo '#---------------------FN_DYNVARS_111_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.net_retry_count = 10; +SELECT @@net_retry_count = @@global.net_retry_count; + + +--echo '#---------------------FN_DYNVARS_111_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@net_retry_count = 100; +SELECT @@net_retry_count = @@local.net_retry_count; +SELECT @@local.net_retry_count = @@session.net_retry_count; + + +--echo '#---------------------FN_DYNVARS_111_11----------------------#' +########################################################################## +# Check if net_retry_count can be accessed with and without @@ sign # +########################################################################## + +SET net_retry_count = 1; +SELECT @@net_retry_count; +--Error ER_UNKNOWN_TABLE +SELECT local.net_retry_count; +--Error ER_UNKNOWN_TABLE +SELECT session.net_retry_count; +--Error ER_BAD_FIELD_ERROR +SELECT net_retry_count = @@session.net_retry_count; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.net_retry_count = @start_global_value; +SELECT @@global.net_retry_count; +SET @@session.net_retry_count = @start_session_value; +SELECT @@session.net_retry_count; + + +#################################################### +# END OF net_retry_count TESTS # +#################################################### + diff --git a/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc new file mode 100644 index 00000000000..208fe6b3da4 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/query_alloc_block_size_basic.inc @@ -0,0 +1,225 @@ +############## mysql-test\t\query_alloc_block_size_basic.test ############### +# # +# Variable Name: query_alloc_block_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 8192 # +# Range: 1024-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable query_alloc_block_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################### +# START OF query_alloc_block_size TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.query_alloc_block_size; +SELECT @start_global_value; +SET @start_session_value = @@session.query_alloc_block_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_130_01-------------------------#' +################################################################### +# Display the DEFAULT value of query_alloc_block_size # +################################################################### + +SET @@global.query_alloc_block_size = 10000; +SET @@global.query_alloc_block_size = DEFAULT; +SELECT @@global.query_alloc_block_size; + +SET @@session.query_alloc_block_size = 20000; +SET @@session.query_alloc_block_size = DEFAULT; +SELECT @@session.query_alloc_block_size; + + +--echo '#--------------------FN_DYNVARS_130_02-------------------------#' +################################################################### +# Check the DEFAULT value of query_alloc_block_size # +################################################################### + +SET @@global.query_alloc_block_size = DEFAULT; +SELECT @@global.query_alloc_block_size = 8192; + +SET @@session.query_alloc_block_size = DEFAULT; +SELECT @@session.query_alloc_block_size = 8192; + + +--echo '#--------------------FN_DYNVARS_130_03-------------------------#' +############################################################################# +# Change the value of query_alloc_block_size to a valid value for GLOBAL Scope # +############################################################################# + +SET @@global.query_alloc_block_size = 1024; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = 1025; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = 4294967295; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = 4294967294; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = 65536; +SELECT @@global.query_alloc_block_size; + +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_130_04-------------------------#' +################################################################################# +# Change the value of query_alloc_block_size to a valid value for SESSION Scope # +################################################################################# + +SET @@session.query_alloc_block_size = 1024; +SELECT @@session.query_alloc_block_size; +SET @@session.query_alloc_block_size = 1025; +SELECT @@session.query_alloc_block_size; +SET @@session.query_alloc_block_size = 4294967295; +SELECT @@session.query_alloc_block_size; +SET @@session.query_alloc_block_size = 4294967294; +SELECT @@session.query_alloc_block_size; +SET @@session.query_alloc_block_size = 655536; +SELECT @@session.query_alloc_block_size; + +--echo '#------------------FN_DYNVARS_130_05-----------------------#' +################################################################## +# Change the value of query_alloc_block_size to an invalid value # +################################################################## + +SET @@global.query_alloc_block_size = 64; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = -1; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = 1023; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = 4294967296; +SELECT @@global.query_alloc_block_size; +--Error ER_PARSE_ERROR +SET @@global.query_alloc_block_size = 65530.34.; +SELECT @@global.query_alloc_block_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_alloc_block_size = test; +SELECT @@global.query_alloc_block_size; + +SET @@session.query_alloc_block_size = 64; +SELECT @@session.query_alloc_block_size; +SET @@session.query_alloc_block_size = -2; +SELECT @@session.query_alloc_block_size; +--Error ER_PARSE_ERROR +SET @@session.query_alloc_block_size = 65530.34.; +SET @@session.query_alloc_block_size = 1023; +SELECT @@session.query_alloc_block_size; +SET @@session.query_alloc_block_size = 4294967296; +SELECT @@session.query_alloc_block_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.query_alloc_block_size = test; +SELECT @@session.query_alloc_block_size; + +--echo '#------------------FN_DYNVARS_130_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +#SET @@global.query_alloc_block_size = 1; +#SET @@session.query_alloc_block_size = 12; +--echo 'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement'; + +SET @@global.query_alloc_block_size = 1; +SET @@session.query_alloc_block_size = 12; + +SELECT @@global.query_alloc_block_size = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_alloc_block_size'; + + +--echo '#------------------FN_DYNVARS_130_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.query_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_alloc_block_size'; + + +--echo '#------------------FN_DYNVARS_130_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.query_alloc_block_size = TRUE; +SELECT @@global.query_alloc_block_size; +SET @@global.query_alloc_block_size = FALSE; +SELECT @@global.query_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_130_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + +SET @@global.query_alloc_block_size = 2048; +SELECT @@query_alloc_block_size = @@global.query_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_130_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@query_alloc_block_size = 5000; +SELECT @@query_alloc_block_size = @@local.query_alloc_block_size; +SELECT @@local.query_alloc_block_size = @@session.query_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_130_11----------------------#' +############################################################################## +# Check if query_alloc_block_size can be accessed with and without @@ sign # +############################################################################## + +SET query_alloc_block_size = 1024; +SELECT @@query_alloc_block_size; +--Error ER_UNKNOWN_TABLE +SELECT local.query_alloc_block_size; +--Error ER_UNKNOWN_TABLE +SELECT session.query_alloc_block_size; +--Error ER_BAD_FIELD_ERROR +SELECT query_alloc_block_size = @@session.query_alloc_block_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.query_alloc_block_size = @start_global_value; +SELECT @@global.query_alloc_block_size; +SET @@session.query_alloc_block_size = @start_session_value; +SELECT @@session.query_alloc_block_size; + + +######################################################## +# END OF query_alloc_block_size TESTS # +######################################################## + diff --git a/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc b/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc new file mode 100644 index 00000000000..2eb4a597eef --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/query_cache_limit_basic.inc @@ -0,0 +1,178 @@ +############## mysql-test\t\query_cache_limit_basic.test ############### +# # +# Variable Name: query_cache_limit # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 1048576 # +# Min value: 0 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable query_cache_limit # +# 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 # +# # +############################################################################### + +--source include/have_query_cache.inc +--source include/load_sysvars.inc + +######################################################################## +# START OF query_cache_limit TESTS # +######################################################################## + + +######################################################################## +# Saving initial value of query_cache_limit in a temporary variable # +######################################################################## + +SET @start_value = @@global.query_cache_limit; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_131_01------------------------#' +######################################################################## +# Display the DEFAULT value of query_cache_limit # +######################################################################## + +SET @@global.query_cache_limit = 99; +SET @@global.query_cache_limit = DEFAULT; +SELECT @@global.query_cache_limit; + + +--echo '#---------------------FN_DYNVARS_131_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.query_cache_limit = @start_value; +SELECT @@global.query_cache_limit = 1048576; + + +--echo '#--------------------FN_DYNVARS_131_03------------------------#' +######################################################################## +# Change the value of query_cache_limit to a valid value # +######################################################################## + +SET @@global.query_cache_limit = 0; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = 1; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = 1048576; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = 1048575; +SELECT @@global.query_cache_limit; + + +--echo '#--------------------FN_DYNVARS_131_04-------------------------#' +########################################################################### +# Change the value of query_cache_limit to invalid value # +########################################################################### + +SET @@global.query_cache_limit = -1; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = 4294967296; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = 10240022115; +SELECT @@global.query_cache_limit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_limit = 10000.01; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = -1024; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = 42949672950; +SELECT @@global.query_cache_limit; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_limit = ON; +SELECT @@global.query_cache_limit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_limit = 'test'; +SELECT @@global.query_cache_limit; + + +--echo '#-------------------FN_DYNVARS_131_05----------------------------#' +########################################################################### +# Test if accessing session query_cache_limit gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.query_cache_limit = 0; +SELECT @@query_cache_limit; + + +--echo '#----------------------FN_DYNVARS_131_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.query_cache_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_limit'; + +SELECT @@query_cache_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_limit'; + + +--echo '#---------------------FN_DYNVARS_131_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.query_cache_limit = TRUE; +SELECT @@global.query_cache_limit; +SET @@global.query_cache_limit = FALSE; +SELECT @@global.query_cache_limit; + + +--echo '#---------------------FN_DYNVARS_131_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.query_cache_limit = 1; +SELECT @@query_cache_limit = @@global.query_cache_limit; + + +--echo '#---------------------FN_DYNVARS_131_09----------------------#' +########################################################################## +# Check if query_cache_limit can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET query_cache_limit = 1; +SELECT @@query_cache_limit; +--Error ER_PARSE_ERROR +SET local.query_cache_limit = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.query_cache_limit; +--Error ER_PARSE_ERROR +SET global.query_cache_limit = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.query_cache_limit; +--Error ER_BAD_FIELD_ERROR +SELECT query_cache_limit = @@session.query_cache_limit; + + +############################## +# Restore initial value # +############################## + +SET @@global.query_cache_limit = @start_value; +SELECT @@global.query_cache_limit; + + +######################################################################## +# END OF query_cache_limit TESTS # +######################################################################## diff --git a/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc b/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc new file mode 100644 index 00000000000..1b65e035b18 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/query_cache_min_res_unit_basic.inc @@ -0,0 +1,187 @@ +############## mysql-test\t\query_cache_min_res_unit_basic.test ############### +# # +# Variable Name: query_cache_min_res_unit # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:1024 # +# Min Value:0 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable query_cache_min_res_unit # +# 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 # +# # +############################################################################### + +--source include/have_query_cache.inc +--source include/load_sysvars.inc + +######################################################################## + + +######################################################################## +# START OF query_cache_min_res_unit TESTS # +######################################################################## + + +############################################################################### +# Saving initial value of query_cache_min_res_unit in a temporary variable # +############################################################################### + +SET @start_value = @@global.query_cache_min_res_unit; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_132_01------------------------#' +############################################################################### +# Display the DEFAULT value of query_cache_min_res_unit # +############################################################################### + +SET @@global.query_cache_min_res_unit = 99; +SET @@global.query_cache_min_res_unit = DEFAULT; +SELECT @@global.query_cache_min_res_unit; + + +--echo '#---------------------FN_DYNVARS_132_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.query_cache_min_res_unit = @start_value; +SELECT @@global.query_cache_min_res_unit = 4096; + + +--echo '#--------------------FN_DYNVARS_132_03------------------------#' +################################################################################ +# Change the value of query_cache_min_res_unit to a valid value # +################################################################################ + +SET @@global.query_cache_min_res_unit = 0; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = 1; +SELECT @@global.query_cache_min_res_unit; +--echo 'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512'; +SET @@global.query_cache_min_res_unit = 512; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = 513; +SELECT @@global.query_cache_min_res_unit; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.query_cache_min_res_unit = 1048576; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = 1048575; +SELECT @@global.query_cache_min_res_unit; + + +--echo '#--------------------FN_DYNVARS_132_04-------------------------#' +################################################################################### +# Change the value of query_cache_min_res_unit to invalid value # +################################################################################### + +SET @@global.query_cache_min_res_unit = -1; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = 4294967296; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = 511; +SELECT @@global.query_cache_min_res_unit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_min_res_unit = 10000.01; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = -1024; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = 42949672950; +SELECT @@global.query_cache_min_res_unit; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_min_res_unit = ON; +SELECT @@global.query_cache_min_res_unit; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_min_res_unit = 'test'; +SELECT @@global.query_cache_min_res_unit; + + +--echo '#-------------------FN_DYNVARS_132_05----------------------------#' +################################################################################### +# Test if accessing session query_cache_min_res_unit gives error # +################################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.query_cache_min_res_unit = 0; +SELECT @@query_cache_min_res_unit; + + +--echo '#----------------------FN_DYNVARS_132_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.query_cache_min_res_unit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_min_res_unit'; + +SELECT @@query_cache_min_res_unit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_min_res_unit'; + + +--echo '#---------------------FN_DYNVARS_132_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.query_cache_min_res_unit = TRUE; +SELECT @@global.query_cache_min_res_unit; +SET @@global.query_cache_min_res_unit = FALSE; +SELECT @@global.query_cache_min_res_unit; + + +--echo '#---------------------FN_DYNVARS_132_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.query_cache_min_res_unit = 1; +SELECT @@query_cache_min_res_unit = @@global.query_cache_min_res_unit; + + +--echo '#---------------------FN_DYNVARS_132_09----------------------#' +################################################################################## +# Check if query_cache_min_res_unit can be accessed with and without @@ sign # +################################################################################## + +--Error ER_GLOBAL_VARIABLE +SET query_cache_min_res_unit = 1; +SELECT @@query_cache_min_res_unit; +--Error ER_PARSE_ERROR +SET local.query_cache_min_res_unit = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.query_cache_min_res_unit; +--Error ER_PARSE_ERROR +SET global.query_cache_min_res_unit = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.query_cache_min_res_unit; +--Error ER_BAD_FIELD_ERROR +SELECT query_cache_min_res_unit = @@session.query_cache_min_res_unit; + + +############################## +# Restore initial value # +############################## + +SET @@global.query_cache_min_res_unit = @start_value; +SELECT @@global.query_cache_min_res_unit; + + +######################################################################## +# END OF query_cache_min_res_unit TESTS # +######################################################################## diff --git a/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc b/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc new file mode 100644 index 00000000000..1a3f9e1efe2 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc @@ -0,0 +1,175 @@ +############## mysql-test\t\query_cache_size_basic.test ############### +# # +# Variable Name: query_cache_size # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 0 # +# Range: - # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable query_cache_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 # +# # +############################################################################### + +--source include/have_query_cache.inc +--source include/load_sysvars.inc + +######################################################################## +# START OF query_cache_size TESTS # +######################################################################## + + +############################################################################### +# Saving initial value of query_cache_size in a temporary variable # +############################################################################### + +SET @start_value = @@global.query_cache_size; +SELECT @start_value; + +--echo '#--------------------FN_DYNVARS_133_01------------------------#' +############################################################################### +# Display the DEFAULT value of query_cache_size # +############################################################################### + +SET @@global.query_cache_size = 99; +SET @@global.query_cache_size = DEFAULT; +SELECT @@global.query_cache_size; + +--echo '#---------------------FN_DYNVARS_133_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.query_cache_size = @start_value; +SELECT @@global.query_cache_size = 0; + +--echo '#--------------------FN_DYNVARS_133_03------------------------#' +################################################################################ +# Change the value of query_cache_size to a valid value # +################################################################################ + +SET @@global.query_cache_size = 0; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = 1; +SELECT @@global.query_cache_size; + +SET @@global.query_cache_size = 512; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = 1024; +SELECT @@global.query_cache_size; +--echo : 'Bug#34880: Warnings are coming on assinging valid values to variable +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.query_cache_size = 1048576; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = 1048575; +SELECT @@global.query_cache_size; + +--echo '#--------------------FN_DYNVARS_133_04-------------------------#' +################################################################################### +# Change the value of query_cache_size to invalid value # +################################################################################### + +SET @@global.query_cache_size = -1; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = 4294967296; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = 511; +SELECT @@global.query_cache_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_size = 10000.01; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = -1024; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = 42949672950; +SELECT @@global.query_cache_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_size = ON; +SELECT @@global.query_cache_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_cache_size = 'test'; +SELECT @@global.query_cache_size; + +--echo '#-------------------FN_DYNVARS_133_05----------------------------#' +################################################################################### +# Test if accessing session query_cache_size gives error # +################################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.query_cache_size = 0; +SELECT @@query_cache_size; + +--echo '#----------------------FN_DYNVARS_133_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.query_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_size'; + +SELECT @@query_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_size'; + +--echo '#---------------------FN_DYNVARS_133_07----------------------#' +################################################################### +# Check if TRUE and FALSE values can be used on variable # +################################################################### + +SET @@global.query_cache_size = TRUE; +SELECT @@global.query_cache_size; +SET @@global.query_cache_size = FALSE; +SELECT @@global.query_cache_size; + +--echo '#---------------------FN_DYNVARS_133_08----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@global.query_cache_size = 1; +SELECT @@query_cache_size = @@global.query_cache_size; + +--echo '#---------------------FN_DYNVARS_133_09----------------------#' +################################################################################## +# Check if query_cache_size can be accessed with and without @@ sign # +################################################################################## + +--Error ER_GLOBAL_VARIABLE +SET query_cache_size = 1; +SELECT @@query_cache_size; +--Error ER_PARSE_ERROR +SET local.query_cache_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.query_cache_size; +--Error ER_PARSE_ERROR +SET global.query_cache_size = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.query_cache_size; +--Error ER_BAD_FIELD_ERROR +SELECT query_cache_size = @@session.query_cache_size; + +############################## +# Restore initial value # +############################## + +SET @@global.query_cache_size = @start_value; +SELECT @@global.query_cache_size; + +######################################################################## +# END OF query_cache_size TESTS # +######################################################################## + diff --git a/mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc b/mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc new file mode 100644 index 00000000000..3a8608736c5 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc @@ -0,0 +1,241 @@ +################# mysql-test\t\query_prealloc_size_basic.test ################## +# # +# Variable Name: query_prealloc_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 8192 # +# Range: 8192-4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable query_prealloc_size # +# that checks the behavior of this variable in the following ways # +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # +# # +################################################################################ + +--source include/load_sysvars.inc + +######################################################################## +# START OF query_prealloc_size TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.query_prealloc_size ; +SELECT @start_global_value; +SET @start_session_value = @@session.query_prealloc_size ; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +######################################################################## +# Display the DEFAULT value of myisam_block_size # +######################################################################## + +SET @@global.query_prealloc_size = 100; +SET @@global.query_prealloc_size = DEFAULT; +SELECT @@global.query_prealloc_size ; + +SET @@session.query_prealloc_size = 200; +SET @@session.query_prealloc_size = DEFAULT; +SELECT @@session.query_prealloc_size ; + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +######################################################################## +# Check the DEFAULT value of query_prealloc_size # +######################################################################## + +SET @@global.query_prealloc_size = DEFAULT; +SELECT @@global.query_prealloc_size = 8192; + +SET @@session.query_prealloc_size = DEFAULT; +SELECT @@session.query_prealloc_size = 8192; + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +################################################################################ +# Change the value of query_prealloc_size to a valid value for GLOBAL Scope # +################################################################################ + +SET @@global.query_prealloc_size = 8192; +SELECT @@global.query_prealloc_size ; + +SET @@global.query_prealloc_size = 4294967295; +SELECT @@global.query_prealloc_size ; + +SET @@global.query_prealloc_size = 655354; +SELECT @@global.query_prealloc_size ; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +################################################################################## +# Change the value of query_prealloc_size to a valid value for SESSION Scope # +################################################################################## + +SET @@session.query_prealloc_size = 8192; +SELECT @@session.query_prealloc_size ; + +SET @@session.query_prealloc_size = 4294967295; +SELECT @@session.query_prealloc_size ; + +SET @@session.query_prealloc_size = 655345; +SELECT @@session.query_prealloc_size ; + + + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +#################################################################### +# Change the value of query_prealloc_size to an invalid value # +#################################################################### + +SET @@global.query_prealloc_size = 0; +SELECT @@global.query_prealloc_size ; + +SET @@global.query_prealloc_size = -1024; +SELECT @@global.query_prealloc_size ; + +SET @@global.query_prealloc_size = 429496729533; +SELECT @@global.query_prealloc_size ; + + +--Error ER_PARSE_ERROR +SET @@global.query_prealloc_size = 65530.34.; +SELECT @@global.query_prealloc_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_prealloc_size = test; +SELECT @@global.query_prealloc_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_prealloc_size = "test"; +SELECT @@global.query_prealloc_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_prealloc_size = 'test'; +SELECT @@global.query_prealloc_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.query_prealloc_size = ON; +SELECT @@global.query_prealloc_size ; + + +SET @@session.query_prealloc_size = 0; +SELECT @@session.query_prealloc_size ; + +SET @@session.query_prealloc_size = -2; +SELECT @@session.query_prealloc_size ; + +--Error ER_PARSE_ERROR + +SET @@session.query_prealloc_size = 65530.34.; +SELECT @@session.query_prealloc_size ; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.query_prealloc_size = test; +SELECT @@session.query_prealloc_size ; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.query_prealloc_size = "test"; +SELECT @@session.query_prealloc_size ; + + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_prealloc_size '; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_prealloc_size '; + + +--echo '#------------------FN_DYNVARS_005_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.query_prealloc_size = TRUE; +SELECT @@global.query_prealloc_size ; +SET @@global.query_prealloc_size = FALSE; +SELECT @@global.query_prealloc_size ; + + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################################ +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################ + +SET @@global.query_prealloc_size = 10; +SELECT @@query_prealloc_size = @@global.query_prealloc_size ; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to # +# to the same session variable # +############################################################################## + +SET @@query_prealloc_size = 100; +SELECT @@query_prealloc_size = @@local.query_prealloc_size ; +SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +################################################################################ +# Check if query_prealloc_size can be accessed with and without @@ sign # +################################################################################ + +SET query_prealloc_size = 1; +SELECT @@query_prealloc_size ; +--Error ER_UNKNOWN_TABLE + +SELECT local.query_prealloc_size ; + +--Error ER_UNKNOWN_TABLE +SELECT session.query_prealloc_size ; + +--Error ER_BAD_FIELD_ERROR +SELECT query_prealloc_size = @@session.query_prealloc_size ; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.query_prealloc_size = @start_global_value; +SELECT @@global.query_prealloc_size ; +SET @@session.query_prealloc_size = @start_session_value; +SELECT @@session.query_prealloc_size ; + + +############################################################# +# END OF query_prealloc_size TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc new file mode 100644 index 00000000000..37692cc8c35 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/range_alloc_block_size_basic.inc @@ -0,0 +1,208 @@ +############## mysql-test\t\range_alloc_block_size_basic.test ############### +# # +# Variable Name: range_alloc_block_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value:2048 # +# Max value: 4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable range_alloc_block_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +###################################################################### +# START OF range_alloc_block_size TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.range_alloc_block_size; +SELECT @start_global_value; +SET @start_session_value = @@session.range_alloc_block_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_137_01-------------------------#' +###################################################################### +# Display the DEFAULT value of range_alloc_block_size # +###################################################################### + +SET @@global.range_alloc_block_size = 100; +SET @@global.range_alloc_block_size = DEFAULT; +SELECT @@global.range_alloc_block_size; + +SET @@session.range_alloc_block_size = 200; +SET @@session.range_alloc_block_size = DEFAULT; +SELECT @@session.range_alloc_block_size; + + +--echo '#--------------------FN_DYNVARS_137_02-------------------------#' +###################################################################### +# Check the DEFAULT value of range_alloc_block_size # +###################################################################### + +SET @@global.range_alloc_block_size = DEFAULT; +SELECT @@global.range_alloc_block_size = 2048; + +SET @@session.range_alloc_block_size = DEFAULT; +SELECT @@session.range_alloc_block_size = 2048; + + +--echo '#--------------------FN_DYNVARS_137_03-------------------------#' +################################################################################ +# Change the value of range_alloc_block_size to a valid value for GLOBAL Scope # +################################################################################ + +SET @@global.range_alloc_block_size = 2048; +SELECT @@global.range_alloc_block_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.range_alloc_block_size = 4294967295; +SELECT @@global.range_alloc_block_size; +SET @@global.range_alloc_block_size = 4294967294; +SELECT @@global.range_alloc_block_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#--------------------FN_DYNVARS_137_04-------------------------#' +################################################################################### +# Change the value of range_alloc_block_size to a valid value for SESSION Scope # +################################################################################### + +SET @@session.range_alloc_block_size = 2048; +SELECT @@session.range_alloc_block_size; +SET @@session.range_alloc_block_size = 4294967295; +SELECT @@session.range_alloc_block_size; +SET @@session.range_alloc_block_size = 4294967294; +SELECT @@session.range_alloc_block_size; + + +--echo '#------------------FN_DYNVARS_137_05-----------------------#' +################################################################## +# Change the value of range_alloc_block_size to an invalid value # +################################################################## + +SET @@global.range_alloc_block_size = 0; +SELECT @@global.range_alloc_block_size; +SET @@global.range_alloc_block_size = -1024; +SELECT @@global.range_alloc_block_size; +SET @@global.range_alloc_block_size = 42949672951; +SELECT @@global.range_alloc_block_size; +--Error ER_PARSE_ERROR +SET @@global.range_alloc_block_size = 65530.34.; +SELECT @@global.range_alloc_block_size; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.range_alloc_block_size = test; +SELECT @@global.range_alloc_block_size; + +SET @@session.range_alloc_block_size = 0; +SELECT @@session.range_alloc_block_size; +SET @@session.range_alloc_block_size = -2; +SELECT @@session.range_alloc_block_size; +--Error ER_PARSE_ERROR +SET @@session.range_alloc_block_size = 65530.34.; +SET @@session.range_alloc_block_size = 4294967296; +SELECT @@session.range_alloc_block_size; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.range_alloc_block_size = test; +SELECT @@session.range_alloc_block_size; + + +--echo '#------------------FN_DYNVARS_137_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.range_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='range_alloc_block_size'; + +--echo '#------------------FN_DYNVARS_137_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.range_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='range_alloc_block_size'; + + +--echo '#------------------FN_DYNVARS_137_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.range_alloc_block_size = TRUE; +SELECT @@global.range_alloc_block_size; +SET @@global.range_alloc_block_size = FALSE; +SELECT @@global.range_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_137_09----------------------#' +#################################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +#################################################################################### + +SET @@global.range_alloc_block_size = 10; +SELECT @@range_alloc_block_size = @@global.range_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_137_10----------------------#' +######################################################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable # +######################################################################################################## + +SET @@range_alloc_block_size = 100; +SELECT @@range_alloc_block_size = @@local.range_alloc_block_size; +SELECT @@local.range_alloc_block_size = @@session.range_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_137_11----------------------#' +################################################################################### +# Check if range_alloc_block_size can be accessed with and without @@ sign # +################################################################################### + +SET range_alloc_block_size = 1; +SELECT @@range_alloc_block_size; +--Error ER_UNKNOWN_TABLE +SELECT local.range_alloc_block_size; +--Error ER_UNKNOWN_TABLE +SELECT session.range_alloc_block_size; +--Error ER_BAD_FIELD_ERROR +SELECT range_alloc_block_size = @@session.range_alloc_block_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.range_alloc_block_size = @start_global_value; +SELECT @@global.range_alloc_block_size; +SET @@session.range_alloc_block_size = @start_session_value; +SELECT @@session.range_alloc_block_size; + + +############################################################# +# END OF range_alloc_block_size TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc b/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc new file mode 100644 index 00000000000..f9ae3968b31 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/rpl_recovery_rank_basic.inc @@ -0,0 +1,171 @@ +############## mysql-test\t\rpl_recovery_rank_basic.test ####################### +# # +# Variable Name: rpl_recovery_rank # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable rpl_recovery_rank # +# 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 # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################### +# START OF rpl_recovery_rank TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.rpl_recovery_rank; +SELECT @start_global_value; + +--echo '#--------------------FN_DYNVARS_142_01-------------------------#' +################################################################### +# Check the DEFAULT value of rpl_recovery_rank # +################################################################### + +SET @@global.rpl_recovery_rank = 500000; +SET @@global.rpl_recovery_rank = DEFAULT; +SELECT @@global.rpl_recovery_rank; + +--echo '#--------------------FN_DYNVARS_142_02-------------------------#' +################################################################################## +# Change the value of rpl_recovery_rank to a valid value for GLOBAL Scope # +################################################################################## + +SET @@global.rpl_recovery_rank = 0; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = 1024; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = 123456789; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = 2147483648*2; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = 2147483648*1024; +SELECT @@global.rpl_recovery_rank; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = 2147483648*2147483648; +SELECT @@global.rpl_recovery_rank; + + +--echo '#--------------------FN_DYNVARS_142_03-------------------------#' +################################################################################# +# Check if variable can be access with session scope # +################################################################################# + +--Error ER_GLOBAL_VARIABLE +SET @@rpl_recovery_rank = 2; + +--Error ER_GLOBAL_VARIABLE +SET @@session.rpl_recovery_rank = 3; + +--Error ER_GLOBAL_VARIABLE +SET @@local.rpl_recovery_rank = 4; + + + +--echo '#------------------FN_DYNVARS_142_04-----------------------#' +#################################################################### +# Change the value of rpl_recovery_rank to an invalid value # +#################################################################### + +SET @@global.rpl_recovery_rank = -1; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = -2147483648; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = -2147483649; +SELECT @@global.rpl_recovery_rank; +--Error ER_PARSE_ERROR +SET @@global.rpl_recovery_rank = 65530.34.; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.rpl_recovery_rank = 2147483649.56; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.rpl_recovery_rank = 1G; + + +--echo '#------------------FN_DYNVARS_142_05-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SET @@global.rpl_recovery_rank = 3000; +SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='rpl_recovery_rank'; + + +--echo '#------------------FN_DYNVARS_142_06-----------------------#' +########################################################################### +# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # +########################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='rpl_recovery_rank'; + + +--echo '#------------------FN_DYNVARS_142_07-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.rpl_recovery_rank = TRUE; +SELECT @@global.rpl_recovery_rank; +SET @@global.rpl_recovery_rank = FALSE; +SELECT @@global.rpl_recovery_rank; + + +--echo '#---------------------FN_DYNVARS_001_08----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + + +SET @@global.rpl_recovery_rank = 512; +SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################################## +# Check if rpl_recovery_rank can be accessed without @@ sign and scope # +################################################################################## + +--Error ER_GLOBAL_VARIABLE +SET rpl_recovery_rank = 2048; +--Error ER_BAD_FIELD_ERROR +SELECT rpl_recovery_rank; + +SELECT @@rpl_recovery_rank; + +#verifying another another syntax for setting value +SET global rpl_recovery_rank = 64; + +#################################### +# Restore initial value # +#################################### + +SET @@global.rpl_recovery_rank = @start_global_value; +SELECT @@global.rpl_recovery_rank; + +######################################################## +# END OF rpl_recovery_rank TESTS # +######################################################## + diff --git a/mysql-test/suite/sys_vars/inc/server_id_basic.inc b/mysql-test/suite/sys_vars/inc/server_id_basic.inc new file mode 100644 index 00000000000..47afadb5016 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/server_id_basic.inc @@ -0,0 +1,190 @@ +############## mysql-test\t\server_id_basic.test ################ +# # +# Variable Name: server_id # +# Scope: GLOBAL & SESSION # +# Access Type: Dynamic # +# Data Type: Numeric # +# Default Value: 1 # +# Range: 1 - 65536 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan Maredia # +# # +# Description: Test Cases of Dynamic System Variable server_id # +# 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 # +# # +################################################################################ + +--source include/load_sysvars.inc + +################################################################### +# START OF server_id TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +let $save_general_log= `SELECT @@global.general_log`; +SET @@global.general_log= 0; +SET @start_global_value = @@global.server_id; +SELECT @start_global_value; + +--echo '#--------------------FN_DYNVARS_144_01-------------------------#' +################################################################### +# Display the DEFAULT value of server_id # +################################################################### + +SET @@global.server_id = 500000; +SET @@global.server_id = DEFAULT; +SELECT @@global.server_id; + +--echo '#--------------------FN_DYNVARS_144_02-------------------------#' +################################################################### +# Check the DEFAULT value of server_id # +################################################################### + +SET @@global.server_id = DEFAULT; +SELECT @@global.server_id = 0; + +--echo '#--------------------FN_DYNVARS_144_03-------------------------#' +################################################################################## +# Change the value of server_id to a valid value for GLOBAL Scope # +################################################################################## + +SET @@global.server_id = 0; +SELECT @@global.server_id; +SET @@global.server_id = 1; +SELECT @@global.server_id; +SET @@global.server_id = 15; +SELECT @@global.server_id; +SET @@global.server_id = 1024; +SELECT @@global.server_id; +SET @@global.server_id = 123456789; +SELECT @@global.server_id; +SET @@global.server_id = 2147483648; +SELECT @@global.server_id; +SET @@global.server_id = 2147483648*2-1; +SELECT @@global.server_id; + + +--echo '#--------------------FN_DYNVARS_144_04-------------------------#' +################################################################################# +# Check if variable can be access with session scope # +################################################################################# + +--Error ER_GLOBAL_VARIABLE +SET @@server_id = 2; + +--Error ER_GLOBAL_VARIABLE +SET @@session.server_id = 3; + +--Error ER_GLOBAL_VARIABLE +SET @@local.server_id = 4; + + + +--echo '#------------------FN_DYNVARS_144_05-----------------------#' +#################################################################### +# Change the value of server_id to an invalid value # +#################################################################### + +SET @@global.server_id = -1; +SELECT @@global.server_id; + +SET @@global.server_id = -2147483648; +SELECT @@global.server_id; + +SET @@global.server_id = 2147483649*2; +SELECT @@global.server_id; + +--Error ER_PARSE_ERROR +SET @@global.server_id = 65530.34.; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.server_id = '125'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.server_id = 7483649.56; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.server_id = 1G; + +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#------------------FN_DYNVARS_144_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SET @@global.server_id = 3000; +SELECT @@global.server_id = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='server_id'; + + +--echo '#------------------FN_DYNVARS_144_07-----------------------#' +########################################################################### +# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # +########################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='server_id'; + + +--echo '#------------------FN_DYNVARS_144_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.server_id = TRUE; +SELECT @@global.server_id; +SET @@global.server_id = FALSE; +SELECT @@global.server_id; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +################################################################################# +# Check if accessing variable with and without GLOBAL point to same variable # +################################################################################# + + +SET @@global.server_id = 512; +SELECT @@server_id = @@global.server_id; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +################################################################################## +# Check if server_id can be accessed without @@ sign and scope # +################################################################################## + +--Error ER_GLOBAL_VARIABLE +SET server_id = 2048; +--Error ER_BAD_FIELD_ERROR +SELECT server_id; + +SELECT @@server_id; + +#verifying another another syntax for setting value +SET global server_id = 99; + +#################################### +# Restore initial value # +#################################### + +SET @@global.server_id = @start_global_value; +SELECT @@global.server_id; + +eval SET @@global.general_log= $save_general_log; +######################################################## +# END OF server_id TESTS # +######################################################## + diff --git a/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc b/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc new file mode 100644 index 00000000000..6bbed3b1982 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/slave_transaction_retries_basic.inc @@ -0,0 +1,188 @@ +############# mysql-test\t\slave_transaction_retries_basic.test ############### +# # +# Variable Name: slave_transaction_retries # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 10 # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable slave_transaction_retries# +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################### +# START OF slave_transaction_retries TESTS # +################################################################### + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.slave_transaction_retries; +SELECT @start_global_value; + +--echo '#--------------------FN_DYNVARS_149_01-------------------------#' +################################################################### +# Display the DEFAULT value of slave_transaction_retries # +################################################################### + +SET @@global.slave_transaction_retries = 50; +SET @@global.slave_transaction_retries = DEFAULT; +SELECT @@global.slave_transaction_retries; + +--echo '#--------------------FN_DYNVARS_149_02-------------------------#' +################################################################### +# Check the DEFAULT value of slave_transaction_retries # +################################################################### + +SET @@global.slave_transaction_retries = DEFAULT; +SELECT @@global.slave_transaction_retries = 10; + +--echo '#--------------------FN_DYNVARS_149_03-------------------------#' +################################################################################ +# Change the value of slave_transaction_retries to a valid value for +# GLOBAL Scope +################################################################################ + +SET @@global.slave_transaction_retries = 0; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 1; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 15; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 1024; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 2147483648; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 2147483648*2-1; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 2147483649*2; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = 4294967295; +SELECT @@global.slave_transaction_retries; + +--echo '#--------------------FN_DYNVARS_149_04-------------------------#' +############################################################################### +# Check if variable can be access with session scope # +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@slave_transaction_retries = 2; + +--Error ER_GLOBAL_VARIABLE +SET @@session.slave_transaction_retries = 3; + +--Error ER_GLOBAL_VARIABLE +SET @@local.slave_transaction_retries = 4; + + + +--echo '#------------------FN_DYNVARS_149_05-----------------------#' +#################################################################### +# Change the value of slave_transaction_retries to an invalid value# +#################################################################### + +SET @@global.slave_transaction_retries = -1; +SELECT @@global.slave_transaction_retries; + +SET @@global.slave_transaction_retries = 2147483649*2147483649; +SELECT @@global.slave_transaction_retries; + +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + +--Error ER_PARSE_ERROR +SET @@global.slave_transaction_retries = 65530.34.; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_transaction_retries = '100'; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_transaction_retries = 7483649.56; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_transaction_retries = ON; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.slave_transaction_retries = OFF; + +--echo '#------------------FN_DYNVARS_149_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SET @@global.slave_transaction_retries = 3000; +SELECT @@global.slave_transaction_retries = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_transaction_retries'; + + +--echo '#------------------FN_DYNVARS_149_07-----------------------#' +########################################################################### +# Check if the value is present in INFORMATION_SCHEMA.SESSION_VARIABLES # +########################################################################### + +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_transaction_retries'; + + +--echo '#------------------FN_DYNVARS_149_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.slave_transaction_retries = TRUE; +SELECT @@global.slave_transaction_retries; +SET @@global.slave_transaction_retries = FALSE; +SELECT @@global.slave_transaction_retries; + + +--echo '#---------------------FN_DYNVARS_149_09----------------------#' +############################################################################### +# Check if accessing variable with and without GLOBAL point to same variable # +############################################################################### + + +SET @@global.slave_transaction_retries = 60*60; +SELECT @@slave_transaction_retries = @@global.slave_transaction_retries; + + +--echo '#---------------------FN_DYNVARS_149_10----------------------#' +############################################################################### +# Check if slave_transaction_retries can be accessed without @@ sign +# and scope +############################################################################### + +--Error ER_GLOBAL_VARIABLE +SET slave_transaction_retries = 2048; +--Error ER_BAD_FIELD_ERROR +SELECT slave_transaction_retries; + +SELECT @@slave_transaction_retries; + +#verifying another another syntax for setting value +SET global slave_transaction_retries = 99; + +#################################### +# Restore initial value # +#################################### + +SET @@global.slave_transaction_retries = @start_global_value; +SELECT @@global.slave_transaction_retries; + +######################################################## +# END OF slave_transaction_retries TESTS # +######################################################## + 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 new file mode 100644 index 00000000000..4dbae7c8847 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc @@ -0,0 +1,213 @@ +############## mysql-test\t\sort_buffer_size_basic.test ####################### +# # +# Variable Name: sort_buffer_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 2097144 # +# Range:max value:4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable sort_buffer_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## + + +###################################################################### +# START OF sort_buffer_size TESTS # +###################################################################### + + +############################################################# +# Save initial value # +############################################################# + +# due to difference 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; + + +--echo '#--------------------FN_DYNVARS_151_01-------------------------#' +###################################################################### +# 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; + +SET @@session.sort_buffer_size = 2000; +SET @@session.sort_buffer_size = DEFAULT; +SELECT @@session.sort_buffer_size= 2097144 OR @@session.sort_buffer_size= 2097116; + + +--echo '#--------------------FN_DYNVARS_151_02-------------------------#' +###################################################################### +# 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; + +SET @@session.sort_buffer_size = DEFAULT; +SELECT @@session.sort_buffer_size = 2097144 OR @@session.sort_buffer_size= 2097116; + + +--echo '#--------------------FN_DYNVARS_151_03-------------------------#' +################################################################################ +# 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; +SET @@global.sort_buffer_size = 32777; +SELECT @@global.sort_buffer_size= 32777 OR @@global.sort_buffer_size= 32804; +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 # +################################################################################### + +SET @@session.sort_buffer_size = 32776; +SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; +SET @@session.sort_buffer_size = 32777; +SELECT @@session.sort_buffer_size= 32777 OR @@session.sort_buffer_size= 32804; +SET @@session.sort_buffer_size = 4294967295; +SELECT @@session.sort_buffer_size; +SET @@session.sort_buffer_size = 4294967294; +SELECT @@session.sort_buffer_size; + + +--echo '#------------------FN_DYNVARS_151_05-----------------------#' +################################################################## +# 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; +SET @@global.sort_buffer_size = -1024; +SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; +SET @@global.sort_buffer_size = 4294967296; +SELECT @@global.sort_buffer_size; +--Error ER_PARSE_ERROR +SET @@global.sort_buffer_size = 65530.34.; +SELECT @@global.sort_buffer_size; +--Error ER_WRONG_TYPE_FOR_VAR +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; +SET @@session.sort_buffer_size = -2; +SELECT @@session.sort_buffer_size= 32776 OR @@session.sort_buffer_size= 32804; +--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-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +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'; + + +--echo '#------------------FN_DYNVARS_151_08-----------------------#' +#################################################################### +# Check if TRUE and FALSE values can be used on variable # +#################################################################### + +SET @@global.sort_buffer_size = TRUE; +SELECT @@global.sort_buffer_size= 32776 OR @@global.sort_buffer_size= 32804; +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'; + + +--echo '#---------------------FN_DYNVARS_151_09----------------------#' +#################################################################################### +# 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 # +######################################################################################################## + +SET @@sort_buffer_size = 9000; +SELECT @@sort_buffer_size = @@local.sort_buffer_size; +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 # +################################################################################### + +SET sort_buffer_size = 9100; +SELECT @sort_buffer_size= 32776 OR @@sort_buffer_size= 32804; +SELECT @@sort_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT local.sort_buffer_size; +--Error ER_UNKNOWN_TABLE +SELECT session.sort_buffer_size; +--Error ER_BAD_FIELD_ERROR +SELECT sort_buffer_size = @@session.sort_buffer_size; + + +#################################### +# Restore initial value # +#################################### + +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; + + +############################################################# +# END OF sort_buffer_size TESTS # +############################################################# diff --git a/mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc b/mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc new file mode 100644 index 00000000000..b66509bbb5e --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/sync_binlog_basic.inc @@ -0,0 +1,156 @@ +#################### mysql-test\t\sync_binlog_basic.test ###################### +# # +# Variable Name: sync_binlog # +# Scope: GLOBAL # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 0 # +# Range: 0 - 4294967295 # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Salman Rawala # +# # +# Description: Test Cases of Dynamic System Variable sync_binlog # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +################################################################## +# START OF sync_binlog TESTS # +################################################################## + + +################################################################## +# Saving initial value of sync_binlog in a temporary variable # +################################################################## + +SET @start_value = @@global.sync_binlog; +SELECT @start_value; + + +--echo '#--------------------FN_DYNVARS_168_01------------------------#' +################################################################## +# Display the DEFAULT value of sync_binlog # +################################################################## + +SET @@global.sync_binlog = 99; +SET @@global.sync_binlog = DEFAULT; +SELECT @@global.sync_binlog; + + +--echo '#---------------------FN_DYNVARS_168_02-------------------------#' +############################################### +# Verify default value of variable # +############################################### + +SET @@global.sync_binlog = @start_value; +SELECT @@global.sync_binlog = 0; + + +--echo '#--------------------FN_DYNVARS_168_03------------------------#' +################################################################### +# Change the value of sync_binlog to a valid value # +################################################################### + +SET @@global.sync_binlog = 0; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 1; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 4294967295; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 4294967294; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 65536; +SELECT @@global.sync_binlog; + + +--echo '#--------------------FN_DYNVARS_168_04-------------------------#' +###################################################################### +# Change the value of sync_binlog to invalid value # +###################################################################### + +SET @@global.sync_binlog = -1; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 4294967296; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 10240022115; +SELECT @@global.sync_binlog; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sync_binlog = 10000.01; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = -1024; +SELECT @@global.sync_binlog; +SET @@global.sync_binlog = 42949672950; +SELECT @@global.sync_binlog; +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sync_binlog = ON; +SELECT @@global.sync_binlog; +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.sync_binlog = 'test'; +SELECT @@global.sync_binlog; + + +--echo '#-------------------FN_DYNVARS_168_05----------------------------#' +########################################################################### +# Test if accessing session sync_binlog gives error # +########################################################################### + +--Error ER_GLOBAL_VARIABLE +SET @@session.sync_binlog = 0; +SELECT @@sync_binlog; + + +--echo '#----------------------FN_DYNVARS_168_06------------------------#' +############################################################################## +# Check if the value in GLOBAL & SESSION Tables matches values in variable # +############################################################################## + +SELECT @@global.sync_binlog = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sync_binlog'; + + + +--echo '#---------------------FN_DYNVARS_168_07----------------------#' +########################################################################## +# Check if sync_binlog can be accessed with and without @@ sign # +########################################################################## + +--Error ER_GLOBAL_VARIABLE +SET sync_binlog = 1; +SELECT @@sync_binlog; +--Error ER_PARSE_ERROR +SET local.sync_binlog = 1; +--Error ER_UNKNOWN_TABLE +SELECT local.sync_binlog; +--Error ER_PARSE_ERROR +SET global.sync_binlog = 1; +--Error ER_UNKNOWN_TABLE +SELECT global.sync_binlog; +--Error ER_BAD_FIELD_ERROR +SELECT sync_binlog = @@session.sync_binlog; + + +############################## +# Restore initial value # +############################## + +SET @@global.sync_binlog = @start_value; +SELECT @@global.sync_binlog; + + +######################################################################## +# END OF sync_binlog TESTS # +######################################################################## diff --git a/mysql-test/suite/sys_vars/inc/timestamp_basic.inc b/mysql-test/suite/sys_vars/inc/timestamp_basic.inc new file mode 100644 index 00000000000..d7ad620ec26 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/timestamp_basic.inc @@ -0,0 +1,162 @@ +################## mysql-test\t\timestamp_basic.test ########################## +# # +# Variable Name: timestamp # +# Scope: SESSION # +# Access Type: Dynamic # +# Data Type: string # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Rizwan # +# # +# Description: Test Cases of Dynamic System Variable timestamp # +# 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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +####################################################################### +# START OF timestamp TESTS # +####################################################################### + + +####################################################################### +# Saving initial value of timestamp in a temporary variable # +####################################################################### + +SET @session_start_value = @@session.timestamp; + +--echo '#--------------------FN_DYNVARS_001_01------------------------#' +######################################################################## +# Display the DEFAULT value of timestamp # +######################################################################## + + +SET @@timestamp = DEFAULT; +#SELECT @@timestamp; + +--echo 'timestamp does not have any DEFAULT value' + +--echo '#---------------------FN_DYNVARS_001_02-------------------------#' +############################################################## +# see if accessable using global scope # +############################################################## + +--Error ER_LOCAL_VARIABLE +SET @@global.timestamp = "1000"; + + +--echo '#--------------------FN_DYNVARS_001_03------------------------#' +######################################################################## +# Change the value of timestamp to a valid value # +######################################################################## + +SET @@timestamp = 0; +#SELECT @@timestamp; + +--echo 'Setting 0 resets timestamp to session default timestamp' + +SET @@timestamp = 123456789123456; +SELECT @@timestamp; +SET @@timestamp = 60*60*60*60*365; +SELECT @@timestamp; +SET @@timestamp = -1000000000; +SELECT @@timestamp; + +SET @temp_ts = @@timestamp - @@timestamp; +SELECT @temp_ts; + +--echo '#--------------------FN_DYNVARS_001_04-------------------------#' +########################################################################### +# Change the value of timestamp to invalid value # +########################################################################### + +# for session scope +--Error ER_WRONG_TYPE_FOR_VAR +SET @@timestamp = "100"; +--echo 'Bug# 34836: Documentation says its a string variable but infact its numeric' + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@timestamp = " "; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@timestamp = 1.1; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@timestamp = 9999999999999999999999; + + + +--echo '#----------------------FN_DYNVARS_001_06------------------------#' +######################################################################### +# Check if the value in SESSION Table matches value in variable # +######################################################################### + +SELECT @@timestamp = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='timestamp'; + +--echo '#---------------------FN_DYNVARS_001_08-------------------------#' +############################################################################# +# Check if ON, OFF, TRUE and FALSE values can be used on variable # +############################################################################# +--Error ER_WRONG_TYPE_FOR_VAR +SET @@timestamp = OFF; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@timestamp = ON; + +SET @@timestamp = TRUE; +SELECT @@timestamp; + +SET @@timestamp = FALSE; +#SELECT @@timestamp; + + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +############################################################################# +# Check if accessing variable with SESSION,LOCAL and without SCOPE points +# to same session variable +############################################################################# + +SET @@timestamp = 123456; +SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; +SET @@timestamp = 654321; +SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +##################################################################### +# Check if timestamp can be accessed with and without @@ sign # +##################################################################### + +SET timestamp = 1; +SELECT @@timestamp; +--Error ER_UNKNOWN_TABLE +SELECT local.timestamp; +--Error ER_UNKNOWN_TABLE +SELECT session.timestamp; +--Error ER_BAD_FIELD_ERROR +SELECT timestamp = @@session.timestamp; + +############################## +# Restore initial value # +############################## + +SET @@timestamp = @session_start_value; + +####################################################################### +# END OF timestamp TESTS # +####################################################################### + 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 new file mode 100644 index 00000000000..7f69bcd1f8c --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc @@ -0,0 +1,233 @@ +############## 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#option_mysqld_tmp_table_size # +# # +############################################################################### + +--source include/load_sysvars.inc + +############################################################## +# START OF tmp_table_size TESTS # +############################################################## + + +############################################################# +# Save initial value # +############################################################# + +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 '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 # +############################################################## + +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 # +######################################################################## + +SET @@global.tmp_table_size = DEFAULT; +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 # +######################################################################## + +SET @@global.tmp_table_size = 1024; +SELECT @@global.tmp_table_size; +SET @@global.tmp_table_size = 60020; +SELECT @@global.tmp_table_size; +SET @@global.tmp_table_size = 4294967295; +SELECT @@global.tmp_table_size; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +######################################################################### +# 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; +SELECT @@session.tmp_table_size; +SET @@session.tmp_table_size = 65535; +SELECT @@session.tmp_table_size; + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +########################################################## +# Change the value of tmp_table_size to an invalid value # +########################################################## + +SET @@global.tmp_table_size = 0; +SELECT @@global.tmp_table_size; + +SET @@global.tmp_table_size = -1024; +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; + +-- 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; + +SET @@session.tmp_table_size = True; +SELECT @@session.tmp_table_size; + +SET @@session.tmp_table_size = False; +SELECT @@session.tmp_table_size; + +-- Error ER_WRONG_TYPE_FOR_VAR +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'; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +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 # +######################################################################## + +SET @@global.tmp_table_size = 1024; +SET @@tmp_table_size = 4294967295; +SELECT @@tmp_table_size = @@global.tmp_table_size; + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +################################################################## +# Check if accessing variable with SESSION,LOCAL and without # +# SCOPE points to same session variable # +################################################################## + +SET @@tmp_table_size = 100; +SELECT @@tmp_table_size = @@local.tmp_table_size; +SELECT @@local.tmp_table_size = @@session.tmp_table_size; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +######################################################################### +# Check if tmp_table_size can be accessed with and without @@ sign # +######################################################################### + +SET tmp_table_size = 1027; +SELECT @@tmp_table_size; + +--Error ER_UNKNOWN_TABLE +SELECT local.tmp_table_size; + +--Error ER_UNKNOWN_TABLE +SELECT global.tmp_table_size; + +--Error ER_BAD_FIELD_ERROR +SELECT tmp_table_size = @@session.tmp_table_size; + + +#################################### +# Restore initial value # +#################################### + +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/inc/transaction_alloc_block_size_basic.inc b/mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc new file mode 100644 index 00000000000..c14383b86c6 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/transaction_alloc_block_size_basic.inc @@ -0,0 +1,240 @@ +############## mysql-test\t\transaction_alloc_block_size_basic.test ########### +# # +# Variable Name: transaction_alloc_block_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 8192 # +# Range: 1024-4294967295 # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Salman # +# # +# Description: Test Cases of Dynamic System Variable # +# transaction_alloc_block_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 # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF transaction_alloc_block_size TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.transaction_alloc_block_size; +SELECT @start_global_value; +SET @start_session_value = @@session.transaction_alloc_block_size; +SELECT @start_session_value; + + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +######################################################################## +# Display the DEFAULT value of transaction_alloc_block_size # +######################################################################## + +SET @@global.transaction_alloc_block_size = 100; +SET @@global.transaction_alloc_block_size = DEFAULT; +SELECT @@global.transaction_alloc_block_size; + + +SET @@session.transaction_alloc_block_size = 200; +SET @@session.transaction_alloc_block_size = DEFAULT; +SELECT @@session.transaction_alloc_block_size; + + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +######################################################################## +# Check the DEFAULT value of transaction_alloc_block_size # +######################################################################## + +SET @@global.transaction_alloc_block_size = DEFAULT; +SELECT @@global.transaction_alloc_block_size = 8192; + +SET @@session.transaction_alloc_block_size = DEFAULT; +SELECT @@session.transaction_alloc_block_size = 8192; + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +################################################################## +# Change the value of variable to a valid value for GLOBAL Scope # +################################################################## + +SET @@global.transaction_alloc_block_size = 1024; +SELECT @@global.transaction_alloc_block_size; + +SET @@global.transaction_alloc_block_size = 60020; +SELECT @@global.transaction_alloc_block_size; + +SET @@global.transaction_alloc_block_size = 4294967295; +SELECT @@global.transaction_alloc_block_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +################################################################### +# Change the value of variable to a valid value for SESSION Scope # +################################################################### + +SET @@session.transaction_alloc_block_size = 1024; +SELECT @@session.transaction_alloc_block_size; + +SET @@session.transaction_alloc_block_size =4294967295; +SELECT @@session.transaction_alloc_block_size; + +SET @@session.transaction_alloc_block_size = 65535; +SELECT @@session.transaction_alloc_block_size; +--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +######################################################################## +# Change the value of transaction_alloc_block_size to an invalid value # +######################################################################## + +SET @@global.transaction_alloc_block_size = 0; +SELECT @@global.transaction_alloc_block_size; + +SET @@global.transaction_alloc_block_size = -1024; +SELECT @@global.transaction_alloc_block_size; + + +SET @@global.transaction_alloc_block_size = 123456789201; +SELECT @@global.transaction_alloc_block_size; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_alloc_block_size = ON; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_alloc_block_size = OFF; + + +SET @@global.transaction_alloc_block_size = True; +SELECT @@global.transaction_alloc_block_size; + +SET @@global.transaction_alloc_block_size = False; +SELECT @@global.transaction_alloc_block_size; + + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_alloc_block_size = 65530.34; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_alloc_block_size ="Test"; + +SET @@global.transaction_alloc_block_size = 1000; +SELECT @@global.transaction_alloc_block_size; + +SET @@session.transaction_alloc_block_size = 12345678901; +SELECT @@session.transaction_alloc_block_size; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_alloc_block_size = ON; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_alloc_block_size = OFF; + +SET @@session.transaction_alloc_block_size = True; +SELECT @@session.transaction_alloc_block_size; + +SET @@session.transaction_alloc_block_size = False; +SELECT @@session.transaction_alloc_block_size; + + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_alloc_block_size = "Test"; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_alloc_block_size = 'test'; + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.transaction_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='transaction_alloc_block_size'; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.transaction_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='transaction_alloc_block_size'; + + +--echo '#---------------------FN_DYNVARS_001_08----------------------#' +########################################################################### +# Check if global and session variable are independent of each other # +########################################################################### + +SET @@transaction_alloc_block_size = 1024; +SET @@global.transaction_alloc_block_size = 4294967295; +SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +######################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE # +# points to same session variable # +######################################################################## + +SET @@transaction_alloc_block_size = 100; +SELECT @@transaction_alloc_block_size = @@local.transaction_alloc_block_size; +SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +################################################################ +# Check if variable can be accessed with and without @@ sign # +################################################################ + +SET transaction_alloc_block_size = 1027; +SELECT @@transaction_alloc_block_size; + +--Error ER_UNKNOWN_TABLE +SELECT local.transaction_alloc_block_size; + +--Error ER_UNKNOWN_TABLE +SELECT session.transaction_alloc_block_size; + +--Error ER_BAD_FIELD_ERROR +SELECT transaction_alloc_block_size = @@session.transaction_alloc_block_size; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.transaction_alloc_block_size = @start_global_value; +SELECT @@global.transaction_alloc_block_size; +SET @@session.tmp_table_size = @start_session_value; +SELECT @@session.transaction_alloc_block_size; + + +############################################################# +# END OF transaction_alloc_block_size TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc b/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc new file mode 100644 index 00000000000..1ca302a19e0 --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/transaction_prealloc_size_basic.inc @@ -0,0 +1,229 @@ +############## mysql-test\t\transaction_prealloc_size_basic.test ############## +# # +# Variable Name: transaction_prealloc_size # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: 4096 # +# Range: # +# # +# # +# Creation Date: 2008-02-14 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable transaction_prealloc_size# +# that checks the behavior of this variable in the following ways# +# * Default Value # +# * Valid & Invalid values # +# * Scope & Access method # +# * Data Integrity # +# # +# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # +# server-system-variables.html#option_mysqld_transaction_prealloc_size # +# # +############################################################################### + +--source include/load_sysvars.inc + +######################################################################## +# START OF transaction_prealloc_size TESTS # +######################################################################## + + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.transaction_prealloc_size; +SELECT @start_global_value; +SET @start_session_value = @@session.transaction_prealloc_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 transaction_prealloc_size # +######################################################################## + +SET @@global.transaction_prealloc_size = 100; +SET @@global.transaction_prealloc_size = DEFAULT; +SELECT @@global.transaction_prealloc_size; + + +SET @@session.transaction_prealloc_size = 200; +SET @@session.transaction_prealloc_size = DEFAULT; +SELECT @@session.transaction_prealloc_size; + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +######################################################################## +# Check the DEFAULT value of transaction_prealloc_size # +######################################################################## + +SET @@global.transaction_prealloc_size = DEFAULT; +SELECT @@global.transaction_prealloc_size = 4096; + +SET @@session.transaction_prealloc_size = DEFAULT; +SELECT @@session.transaction_prealloc_size = 4096; + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +################################################################## +# Change the value of variable to a valid value for GLOBAL Scope # +################################################################## + +SET @@global.transaction_prealloc_size = 1024; +SELECT @@global.transaction_prealloc_size; + +SET @@global.transaction_prealloc_size = 60020; +SELECT @@global.transaction_prealloc_size; + +SET @@global.transaction_prealloc_size = 4294966272; +SELECT @@global.transaction_prealloc_size; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +################################################################### +# Change the value of variable to a valid value for SESSION Scope # +################################################################### + +SET @@session.transaction_prealloc_size = 1024; +SELECT @@session.transaction_prealloc_size; + +SET @@session.transaction_prealloc_size =4294966272; +SELECT @@session.transaction_prealloc_size; +SET @@session.transaction_prealloc_size = 65535; +SELECT @@session.transaction_prealloc_size; + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +##################################################################### +# Change the value of transaction_prealloc_size to an invalid value # +##################################################################### + +SET @@global.transaction_prealloc_size = 0; +SELECT @@global.transaction_prealloc_size; + +SET @@global.transaction_prealloc_size = -1024; +SELECT @@global.transaction_prealloc_size; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_prealloc_size = ON; + + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_prealloc_size = OFF; + + +SET @@global.transaction_prealloc_size = True; +SELECT @@global.transaction_prealloc_size; + +SET @@global.transaction_prealloc_size = False; +SELECT @@global.transaction_prealloc_size; + + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_prealloc_size = 65530.34; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@global.transaction_prealloc_size ="Test"; + +SET @@global.transaction_prealloc_size = 1000; +SELECT @@global.transaction_prealloc_size; + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_prealloc_size = ON; + + +-- Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_prealloc_size = OFF; + +SET @@session.transaction_prealloc_size = True; +SELECT @@session.transaction_prealloc_size; + +SET @@session.transaction_prealloc_size = False; +SELECT @@session.transaction_prealloc_size; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.transaction_prealloc_size = "Test"; + +SET @@session.transaction_prealloc_size = 123456789031; +SELECT @@session.transaction_prealloc_size; + + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + + +SELECT @@global.transaction_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='transaction_prealloc_size'; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.transaction_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='transaction_prealloc_size'; + + + + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +########################################################################### +# Check if global and session variable are independent of each other # +########################################################################### + +SET @@global.transaction_prealloc_size = 1024; +SET @@global.transaction_prealloc_size = 10; + +SELECT @@transaction_prealloc_size = @@global.transaction_prealloc_size; + + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +######################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE # +# points to same session variable # +######################################################################## + +SET @@transaction_prealloc_size = 100; +SELECT @@transaction_prealloc_size = @@local.transaction_prealloc_size; +SELECT @@local.transaction_prealloc_size = @@session.transaction_prealloc_size; + + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +############################################################################### +# Check if transaction_prealloc_size can be accessed with and without @@ sign # +############################################################################### + +SET transaction_prealloc_size = 1027; +SELECT @@transaction_prealloc_size; + +--Error ER_UNKNOWN_TABLE +SELECT local.transaction_prealloc_size; + +--Error ER_UNKNOWN_TABLE +SELECT session.transaction_prealloc_size; + +--Error ER_BAD_FIELD_ERROR +SELECT transaction_prealloc_size = @@session.transaction_prealloc_size; + +#################################### +# Restore initial value # +#################################### + +SET @@global.transaction_prealloc_size = @start_global_value; +SELECT @@global.transaction_prealloc_size; +SET @@session.transaction_prealloc_size = @start_session_value; +SELECT @@session.transaction_prealloc_size; + + +############################################################# +# END OF transaction_prealloc_size TESTS # +############################################################# + diff --git a/mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc b/mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc new file mode 100644 index 00000000000..b6e19e235ba --- /dev/null +++ b/mysql-test/suite/sys_vars/inc/wait_timeout_basic.inc @@ -0,0 +1,218 @@ +############## mysql-test\t\wait_timeout_basic.test ########################### +# # +# Variable Name: wait_timeout # +# Scope: GLOBAL | SESSION # +# Access Type: Dynamic # +# Data Type: numeric # +# Default Value: # +# Range: # +# # +# # +# Creation Date: 2008-02-07 # +# Author: Sharique Abdullah # +# # +# Description: Test Cases of Dynamic System Variable wait_timeout # +# 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#option_mysqld_wait_timeouts # +# # +############################################################################### +# Due to differnces between linux and windows in the results + +--source include/not_windows.inc +--source include/load_sysvars.inc + +############################################################ +# START OF wait_timeout TESTS # +############################################################ + +############################################################# +# Save initial value # +############################################################# + +SET @start_global_value = @@global.wait_timeout; +SET @start_session_value = @@session.wait_timeout; + +--echo '#--------------------FN_DYNVARS_005_01-------------------------#' +############################################################ +# Display the DEFAULT value of wait_timeout # +############################################################ + +SET @@global.wait_timeout = 100; +SET @@global.wait_timeout = DEFAULT; +SELECT @@global.wait_timeout; + +SET @@session.wait_timeout = 200; +SET @@session.wait_timeout = DEFAULT; +SELECT @@session.wait_timeout; + + +--echo '#--------------------FN_DYNVARS_005_02-------------------------#' +############################################################ +# Check the DEFAULT value of wait_timeout # +############################################################ + +SET @@global.wait_timeout = DEFAULT; +SELECT @@global.wait_timeout = @default_wait_timeout; + +SET @@session.wait_timeout = DEFAULT; +SELECT @@session.wait_timeout = @default_wait_timeout; + + + +--echo '#--------------------FN_DYNVARS_005_03-------------------------#' +###################################################################### +# Change the value of wait_timeout to a valid value for GLOBAL Scope # +###################################################################### + +#SET @@global.wait_timeout= @min_wait_timeout; +SET @@global.wait_timeout= 1; +SELECT @@global.wait_timeout; + +SET @@global.wait_timeout = 60020; +SELECT @@global.wait_timeout; + +#SET @@global.wait_timeout = @max_wait_timeout; +SET @@global.wait_timeout = 31536000; +SELECT @@global.wait_timeout = @max_wait_timeout; + + +--echo '#--------------------FN_DYNVARS_005_04-------------------------#' +####################################################################### +# Change the value of wait_timeout to a valid value for SESSION Scope # +####################################################################### +#SET @@session.wait_timeout = @min_wait_timeout; +#SELECT @@session.wait_timeout; + +SET @@session.wait_timeout =6000; +SELECT @@session.wait_timeout; + +#SET @@session.wait_timeout = @max_wait_timeout; +#SELECT @@session.wait_timeout = @max_wait_timeout; + + +--echo '#------------------FN_DYNVARS_005_05-----------------------#' +######################################################## +# Change the value of wait_timeout to an invalid value # +######################################################## + +SET @@global.wait_timeout = 0; +SET @@global.wait_timeout = -1024; + +--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable'; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.wait_timeout = ON; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.wait_timeout = OFF; + +SET @@global.wait_timeout = True; +SELECT @@global.wait_timeout; + +SET @@global.wait_timeout = False; +SELECT @@global.wait_timeout; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.wait_timeout = 65530.34; + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@global.wait_timeout ="Test"; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.wait_timeout = ON; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.wait_timeout = OFF; + +SET @@session.wait_timeout = True; +SELECT @@session.wait_timeout; + +SET @@session.wait_timeout = False; +SELECT @@session.wait_timeout; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.wait_timeout = "Test"; + + +--Error ER_WRONG_TYPE_FOR_VAR +SET @@session.wait_timeout = 'test'; + +SET @@session.wait_timeout = 123456789031; +SELECT @@session.wait_timeout = @max_wait_timeout; + + +--echo '#------------------FN_DYNVARS_005_06-----------------------#' +#################################################################### +# Check if the value in GLOBAL Table matches value in variable # +#################################################################### + +SELECT @@global.wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='wait_timeout'; + +--echo '#------------------FN_DYNVARS_005_07-----------------------#' +#################################################################### +# Check if the value in SESSION Table matches value in variable # +#################################################################### + +SELECT @@session.wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='wait_timeout'; + +--echo '#---------------------FN_DYNVARS_001_09----------------------#' +########################################################################### +# Check if global and session variable are independent of each other # +########################################################################### + +SET @@global.wait_timeout = 30000; +SET @@global.wait_timeout = 40000; +SELECT @@wait_timeout = @@global.wait_timeout; + +--echo '#---------------------FN_DYNVARS_001_10----------------------#' +######################################################################## +# Check if accessing variable with SESSION,LOCAL and without SCOPE # +# points to same session variable # +######################################################################## + +SET @@wait_timeout = 100; +SELECT @@wait_timeout = @@local.wait_timeout; +SELECT @@local.wait_timeout = @@session.wait_timeout; + +--echo '#---------------------FN_DYNVARS_001_11----------------------#' +####################################################################### +# Check if wait_timeout can be accessed with and without @@ sign # +####################################################################### + +SET wait_timeout = 1027; +SELECT @@wait_timeout; + + +--Error ER_UNKNOWN_TABLE +SELECT local.wait_timeout; + +--Error ER_UNKNOWN_TABLE +SELECT session.wait_timeout; + +--Error ER_BAD_FIELD_ERROR +SELECT wait_timeout = @@session.wait_timeout; + + +#################################### +# Restore initial value # +#################################### + +SET @@global.wait_timeout = @start_global_value; +SET @@session.wait_timeout = @start_session_value; + +################################################# +# END OF wait_timeout TESTS # +################################################# diff --git a/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result new file mode 100644 index 00000000000..6267c5493da --- /dev/null +++ b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_32.result @@ -0,0 +1,102 @@ +SET @start_value = @@global.binlog_cache_size; +SELECT @start_value; +@start_value +32768 +'#--------------------FN_DYNVARS_006_01------------------------#' +SET @@global.binlog_cache_size = 100; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '100' +SET @@global.binlog_cache_size = DEFAULT; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +32768 +'#---------------------FN_DYNVARS_006_02-------------------------#' +SET @@global.binlog_cache_size = @start_value; +SELECT @@global.binlog_cache_size = 32768; +@@global.binlog_cache_size = 32768 +1 +'#--------------------FN_DYNVARS_006_03------------------------#' +SET @@global.binlog_cache_size = 4096; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = 4294967295; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4294963200 +SET @@global.binlog_cache_size = 10000; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +8192 +SET @@global.binlog_cache_size = 21221204; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +21217280 +'Bug: Invalid values are coming in variable on assigning valid values' +'#--------------------FN_DYNVARS_006_04-------------------------#' +SET @@global.binlog_cache_size = 1024; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '1024' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' +SET @@global.binlog_cache_size = -1024; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '0' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = 42949672950; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '42949672950' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4294963200 +'Bug: Errors are not coming on assigning invalid values to variable' +SET @@global.binlog_cache_size = ON; +ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' +SET @@global.binlog_cache_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' +'#-------------------FN_DYNVARS_006_05----------------------------#' +SET @@session.binlog_cache_size = 0; +ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +'#----------------------FN_DYNVARS_006_06------------------------#' +SELECT @@global.binlog_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_cache_size'; +@@global.binlog_cache_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_006_07----------------------#' +SET @@global.binlog_cache_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '1' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '0' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +'Bug: Errors are not coming on assigning TRUE/FALSE to variable' +'#---------------------FN_DYNVARS_006_08----------------------#' +SET @@global.binlog_cache_size = 1; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '1' +SELECT @@binlog_cache_size = @@global.binlog_cache_size; +@@binlog_cache_size = @@global.binlog_cache_size +1 +'#---------------------FN_DYNVARS_006_09----------------------#' +SET binlog_cache_size = 1; +ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SET global.binlog_cache_size = 1; +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 'binlog_cache_size = 1' at line 1 +SELECT global.binlog_cache_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT binlog_cache_size = @@session.binlog_cache_size; +ERROR 42S22: Unknown column 'binlog_cache_size' in 'field list' +SET @@global.binlog_cache_size = @start_value; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +32768 diff --git a/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result new file mode 100644 index 00000000000..45ed43589a3 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result @@ -0,0 +1,100 @@ +SET @start_value = @@global.binlog_cache_size; +SELECT @start_value; +@start_value +32768 +'#--------------------FN_DYNVARS_006_01------------------------#' +SET @@global.binlog_cache_size = 100; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '100' +SET @@global.binlog_cache_size = DEFAULT; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +32768 +'#---------------------FN_DYNVARS_006_02-------------------------#' +SET @@global.binlog_cache_size = @start_value; +SELECT @@global.binlog_cache_size = 32768; +@@global.binlog_cache_size = 32768 +1 +'#--------------------FN_DYNVARS_006_03------------------------#' +SET @@global.binlog_cache_size = 4096; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = 4294967295; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4294963200 +SET @@global.binlog_cache_size = 10000; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +8192 +SET @@global.binlog_cache_size = 21221204; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +21217280 +'Bug: Invalid values are coming in variable on assigning valid values' +'#--------------------FN_DYNVARS_006_04-------------------------#' +SET @@global.binlog_cache_size = 1024; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '1024' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' +SET @@global.binlog_cache_size = -1024; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '0' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = 42949672950; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +42949668864 +'Bug: Errors are not coming on assigning invalid values to variable' +SET @@global.binlog_cache_size = ON; +ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' +SET @@global.binlog_cache_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'binlog_cache_size' +'#-------------------FN_DYNVARS_006_05----------------------------#' +SET @@session.binlog_cache_size = 0; +ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +'#----------------------FN_DYNVARS_006_06------------------------#' +SELECT @@global.binlog_cache_size = VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME='binlog_cache_size'; +@@global.binlog_cache_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_006_07----------------------#' +SET @@global.binlog_cache_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '1' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +SET @@global.binlog_cache_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '0' +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +4096 +'Bug: Errors are not coming on assigning TRUE/FALSE to variable' +'#---------------------FN_DYNVARS_006_08----------------------#' +SET @@global.binlog_cache_size = 1; +Warnings: +Warning 1292 Truncated incorrect binlog_cache_size value: '1' +SELECT @@binlog_cache_size = @@global.binlog_cache_size; +@@binlog_cache_size = @@global.binlog_cache_size +1 +'#---------------------FN_DYNVARS_006_09----------------------#' +SET binlog_cache_size = 1; +ERROR HY000: Variable 'binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SET global.binlog_cache_size = 1; +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 'binlog_cache_size = 1' at line 1 +SELECT global.binlog_cache_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT binlog_cache_size = @@session.binlog_cache_size; +ERROR 42S22: Unknown column 'binlog_cache_size' in 'field list' +SET @@global.binlog_cache_size = @start_value; +SELECT @@global.binlog_cache_size; +@@global.binlog_cache_size +32768 diff --git a/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result new file mode 100644 index 00000000000..1194a0e7ce7 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_32.result @@ -0,0 +1,154 @@ +SET @start_global_value = @@global.bulk_insert_buffer_size; +SELECT @start_global_value; +@start_global_value +8388608 +SET @start_session_value = @@session.bulk_insert_buffer_size; +SELECT @start_session_value; +@start_session_value +8388608 +'#--------------------FN_DYNVARS_007_01-------------------------#' +SET @@global.bulk_insert_buffer_size = 100; +SET @@global.bulk_insert_buffer_size = DEFAULT; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +8388608 +SET @@session.bulk_insert_buffer_size = 200; +SET @@session.bulk_insert_buffer_size = DEFAULT; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +8388608 +'#--------------------FN_DYNVARS_007_02-------------------------#' +SET @@global.bulk_insert_buffer_size = @start_global_value; +SELECT @@global.bulk_insert_buffer_size = 8388608; +@@global.bulk_insert_buffer_size = 8388608 +1 +SET @@session.bulk_insert_buffer_size = @start_session_value; +SELECT @@session.bulk_insert_buffer_size = 8388608; +@@session.bulk_insert_buffer_size = 8388608 +1 +'#--------------------FN_DYNVARS_007_03-------------------------#' +SET @@global.bulk_insert_buffer_size = 0; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +0 +SET @@global.bulk_insert_buffer_size = 1; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +1 +SET @@global.bulk_insert_buffer_size = 4294967295; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +4294967295 +SET @@global.bulk_insert_buffer_size = 429496; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +429496 +'#--------------------FN_DYNVARS_007_04-------------------------#' +SET @@session.bulk_insert_buffer_size = 0; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +0 +SET @@session.bulk_insert_buffer_size = 1; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +1 +SET @@session.bulk_insert_buffer_size = 4294967295; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +4294967295 +SET @@session.bulk_insert_buffer_size = 429496; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +429496 +'#------------------FN_DYNVARS_007_05-----------------------#' +SET @@global.bulk_insert_buffer_size = 42949672950; +Warnings: +Warning 1292 Truncated incorrect bulk_insert_buffer_size value: '42949672950' +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +4294967295 +SET @@global.bulk_insert_buffer_size = -1024; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +0 +SET @@global.bulk_insert_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@global.bulk_insert_buffer_size = ON; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@global.bulk_insert_buffer_size = 429496.10; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@session.bulk_insert_buffer_size = 42949672950; +Warnings: +Warning 1292 Truncated incorrect bulk_insert_buffer_size value: '42949672950' +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +4294967295 +SET @@session.bulk_insert_buffer_size = -2; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.bulk_insert_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@session.bulk_insert_buffer_size = 429496.10; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +'#------------------FN_DYNVARS_007_06-----------------------#' +SELECT @@global.bulk_insert_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='bulk_insert_buffer_size'; +@@global.bulk_insert_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_007_07-----------------------#' +SELECT @@session.bulk_insert_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='bulk_insert_buffer_size'; +@@session.bulk_insert_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_007_08-----------------------#' +SET @@global.bulk_insert_buffer_size = TRUE; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +1 +SET @@global.bulk_insert_buffer_size = FALSE; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +0 +SET @@session.bulk_insert_buffer_size = TRUE; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +1 +SET @@session.bulk_insert_buffer_size = FALSE; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +0 +'#---------------------FN_DYNVARS_007_09----------------------#' +SET @@bulk_insert_buffer_size = 100; +SELECT @@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size; +@@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size +1 +SELECT @@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; +@@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size +1 +'#---------------------FN_DYNVARS_007_10----------------------#' +SET bulk_insert_buffer_size = 1; +SELECT @@bulk_insert_buffer_size; +@@bulk_insert_buffer_size +1 +SET local.bulk_insert_buffer_size = 1; +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 'bulk_insert_buffer_size = 1' at line 1 +SELECT local.bulk_insert_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SET session.bulk_insert_buffer_size = 1; +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 'bulk_insert_buffer_size = 1' at line 1 +SELECT session.bulk_insert_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; +ERROR 42S22: Unknown column 'bulk_insert_buffer_size' in 'field list' +SET @@global.bulk_insert_buffer_size = @start_global_value; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +8388608 +SET @@session.bulk_insert_buffer_size = @start_session_value; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +8388608 diff --git a/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result new file mode 100644 index 00000000000..9e0e8e07470 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result @@ -0,0 +1,150 @@ +SET @start_global_value = @@global.bulk_insert_buffer_size; +SELECT @start_global_value; +@start_global_value +8388608 +SET @start_session_value = @@session.bulk_insert_buffer_size; +SELECT @start_session_value; +@start_session_value +8388608 +'#--------------------FN_DYNVARS_007_01-------------------------#' +SET @@global.bulk_insert_buffer_size = 100; +SET @@global.bulk_insert_buffer_size = DEFAULT; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +8388608 +SET @@session.bulk_insert_buffer_size = 200; +SET @@session.bulk_insert_buffer_size = DEFAULT; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +8388608 +'#--------------------FN_DYNVARS_007_02-------------------------#' +SET @@global.bulk_insert_buffer_size = @start_global_value; +SELECT @@global.bulk_insert_buffer_size = 8388608; +@@global.bulk_insert_buffer_size = 8388608 +1 +SET @@session.bulk_insert_buffer_size = @start_session_value; +SELECT @@session.bulk_insert_buffer_size = 8388608; +@@session.bulk_insert_buffer_size = 8388608 +1 +'#--------------------FN_DYNVARS_007_03-------------------------#' +SET @@global.bulk_insert_buffer_size = 0; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +0 +SET @@global.bulk_insert_buffer_size = 1; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +1 +SET @@global.bulk_insert_buffer_size = 4294967295; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +4294967295 +SET @@global.bulk_insert_buffer_size = 429496; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +429496 +'#--------------------FN_DYNVARS_007_04-------------------------#' +SET @@session.bulk_insert_buffer_size = 0; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +0 +SET @@session.bulk_insert_buffer_size = 1; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +1 +SET @@session.bulk_insert_buffer_size = 4294967295; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +4294967295 +SET @@session.bulk_insert_buffer_size = 429496; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +429496 +'#------------------FN_DYNVARS_007_05-----------------------#' +SET @@global.bulk_insert_buffer_size = 42949672950; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +42949672950 +SET @@global.bulk_insert_buffer_size = -1024; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +0 +SET @@global.bulk_insert_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@global.bulk_insert_buffer_size = ON; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@global.bulk_insert_buffer_size = 429496.10; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@session.bulk_insert_buffer_size = 42949672950; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +42949672950 +SET @@session.bulk_insert_buffer_size = -2; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.bulk_insert_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +SET @@session.bulk_insert_buffer_size = 429496.10; +ERROR 42000: Incorrect argument type to variable 'bulk_insert_buffer_size' +'#------------------FN_DYNVARS_007_06-----------------------#' +SELECT @@global.bulk_insert_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='bulk_insert_buffer_size'; +@@global.bulk_insert_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_007_07-----------------------#' +SELECT @@session.bulk_insert_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='bulk_insert_buffer_size'; +@@session.bulk_insert_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_007_08-----------------------#' +SET @@global.bulk_insert_buffer_size = TRUE; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +1 +SET @@global.bulk_insert_buffer_size = FALSE; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +0 +SET @@session.bulk_insert_buffer_size = TRUE; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +1 +SET @@session.bulk_insert_buffer_size = FALSE; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +0 +'#---------------------FN_DYNVARS_007_09----------------------#' +SET @@bulk_insert_buffer_size = 100; +SELECT @@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size; +@@bulk_insert_buffer_size = @@local.bulk_insert_buffer_size +1 +SELECT @@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; +@@local.bulk_insert_buffer_size = @@session.bulk_insert_buffer_size +1 +'#---------------------FN_DYNVARS_007_10----------------------#' +SET bulk_insert_buffer_size = 1; +SELECT @@bulk_insert_buffer_size; +@@bulk_insert_buffer_size +1 +SET local.bulk_insert_buffer_size = 1; +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 'bulk_insert_buffer_size = 1' at line 1 +SELECT local.bulk_insert_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SET session.bulk_insert_buffer_size = 1; +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 'bulk_insert_buffer_size = 1' at line 1 +SELECT session.bulk_insert_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT bulk_insert_buffer_size = @@session.bulk_insert_buffer_size; +ERROR 42S22: Unknown column 'bulk_insert_buffer_size' in 'field list' +SET @@global.bulk_insert_buffer_size = @start_global_value; +SELECT @@global.bulk_insert_buffer_size; +@@global.bulk_insert_buffer_size +8388608 +SET @@session.bulk_insert_buffer_size = @start_session_value; +SELECT @@session.bulk_insert_buffer_size; +@@session.bulk_insert_buffer_size +8388608 diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result new file mode 100644 index 00000000000..cb6820b2941 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_32.result @@ -0,0 +1,112 @@ +SET @start_value = @@global.delayed_insert_limit; +SELECT @start_value; +@start_value +100 +'#--------------------FN_DYNVARS_024_01------------------------#' +SET @@global.delayed_insert_limit = 100; +SET @@global.delayed_insert_limit = DEFAULT; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +100 +'#---------------------FN_DYNVARS_024_02-------------------------#' +SET @@global.delayed_insert_limit = @start_value; +SELECT @@global.delayed_insert_limit = 100; +@@global.delayed_insert_limit = 100 +1 +'#--------------------FN_DYNVARS_024_03------------------------#' +SET @@global.delayed_insert_limit = 10000; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +10000 +SET @@global.delayed_insert_limit = 4294967295; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +4294967295 +SET @@global.delayed_insert_limit = 1; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +'#--------------------FN_DYNVARS_024_04-------------------------#' +SET @@global.delayed_insert_limit = 0; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '0' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +SET @@global.delayed_insert_limit = -1024; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '0' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +SET @@global.delayed_insert_limit = 42949672950; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '42949672950' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.delayed_insert_limit = 429496729.5; +ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +4294967295 +SET @@global.delayed_insert_limit = ON; +ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +4294967295 +'#-------------------FN_DYNVARS_024_05----------------------------#' +SET @@session.delayed_insert_limit = 0; +ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@Session.delayed_insert_limit; +ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable +'#----------------------FN_DYNVARS_024_06------------------------#' +SELECT @@global.delayed_insert_limit = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_limit'; +@@global.delayed_insert_limit = +VARIABLE_VALUE +1 +SELECT @@delayed_insert_limit = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_limit'; +@@delayed_insert_limit = +VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_024_07----------------------#' +SET @@global.delayed_insert_limit = TRUE; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +SET @@global.delayed_insert_limit = FALSE; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '0' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +'#---------------------FN_DYNVARS_024_08----------------------#' +SET @@global.delayed_insert_limit = 1; +SELECT @@delayed_insert_limit = @@global.delayed_insert_limit; +@@delayed_insert_limit = @@global.delayed_insert_limit +1 +'#---------------------FN_DYNVARS_024_09----------------------#' +SET delayed_insert_limit = 1; +ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@delayed_insert_limit; +@@delayed_insert_limit +1 +SET local.delayed_insert_limit = 1; +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 'delayed_insert_limit = 1' at line 1 +SELECT local.delayed_insert_limit; +ERROR 42S02: Unknown table 'local' in field list +SET global.delayed_insert_limit = 1; +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 'delayed_insert_limit = 1' at line 1 +SELECT global.delayed_insert_limit; +ERROR 42S02: Unknown table 'global' in field list +SELECT delayed_insert_limit = @@session.delayed_insert_limit; +ERROR 42S22: Unknown column 'delayed_insert_limit' in 'field list' +SET @@global.delayed_insert_limit = @start_value; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +100 diff --git a/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result new file mode 100644 index 00000000000..246bf0e8734 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result @@ -0,0 +1,110 @@ +SET @start_value = @@global.delayed_insert_limit; +SELECT @start_value; +@start_value +100 +'#--------------------FN_DYNVARS_024_01------------------------#' +SET @@global.delayed_insert_limit = 100; +SET @@global.delayed_insert_limit = DEFAULT; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +100 +'#---------------------FN_DYNVARS_024_02-------------------------#' +SET @@global.delayed_insert_limit = @start_value; +SELECT @@global.delayed_insert_limit = 100; +@@global.delayed_insert_limit = 100 +1 +'#--------------------FN_DYNVARS_024_03------------------------#' +SET @@global.delayed_insert_limit = 10000; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +10000 +SET @@global.delayed_insert_limit = 4294967295; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +4294967295 +SET @@global.delayed_insert_limit = 1; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +'#--------------------FN_DYNVARS_024_04-------------------------#' +SET @@global.delayed_insert_limit = 0; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '0' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +SET @@global.delayed_insert_limit = -1024; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '0' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +SET @@global.delayed_insert_limit = 42949672950; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +42949672950 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.delayed_insert_limit = 429496729.5; +ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +42949672950 +SET @@global.delayed_insert_limit = ON; +ERROR 42000: Incorrect argument type to variable 'delayed_insert_limit' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +42949672950 +'#-------------------FN_DYNVARS_024_05----------------------------#' +SET @@session.delayed_insert_limit = 0; +ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@Session.delayed_insert_limit; +ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable +'#----------------------FN_DYNVARS_024_06------------------------#' +SELECT @@global.delayed_insert_limit = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_limit'; +@@global.delayed_insert_limit = +VARIABLE_VALUE +1 +SELECT @@delayed_insert_limit = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_insert_limit'; +@@delayed_insert_limit = +VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_024_07----------------------#' +SET @@global.delayed_insert_limit = TRUE; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +SET @@global.delayed_insert_limit = FALSE; +Warnings: +Warning 1292 Truncated incorrect delayed_insert_limit value: '0' +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +1 +'#---------------------FN_DYNVARS_024_08----------------------#' +SET @@global.delayed_insert_limit = 1; +SELECT @@delayed_insert_limit = @@global.delayed_insert_limit; +@@delayed_insert_limit = @@global.delayed_insert_limit +1 +'#---------------------FN_DYNVARS_024_09----------------------#' +SET delayed_insert_limit = 1; +ERROR HY000: Variable 'delayed_insert_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@delayed_insert_limit; +@@delayed_insert_limit +1 +SET local.delayed_insert_limit = 1; +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 'delayed_insert_limit = 1' at line 1 +SELECT local.delayed_insert_limit; +ERROR 42S02: Unknown table 'local' in field list +SET global.delayed_insert_limit = 1; +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 'delayed_insert_limit = 1' at line 1 +SELECT global.delayed_insert_limit; +ERROR 42S02: Unknown table 'global' in field list +SELECT delayed_insert_limit = @@session.delayed_insert_limit; +ERROR 42S22: Unknown column 'delayed_insert_limit' in 'field list' +SET @@global.delayed_insert_limit = @start_value; +SELECT @@global.delayed_insert_limit; +@@global.delayed_insert_limit +100 diff --git a/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result new file mode 100644 index 00000000000..6bfa6f0de40 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_32.result @@ -0,0 +1,110 @@ +SET @start_value = @@global.delayed_queue_size; +SELECT @start_value; +@start_value +1000 +'#--------------------FN_DYNVARS_026_01------------------------#' +SET @@global.delayed_queue_size = 100; +SET @@global.delayed_queue_size = DEFAULT; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1000 +'#---------------------FN_DYNVARS_026_02-------------------------#' +SET @@global.delayed_queue_size = @start_value; +SELECT @@global.delayed_queue_size = 1000; +@@global.delayed_queue_size = 1000 +1 +'#--------------------FN_DYNVARS_026_03------------------------#' +SET @@global.delayed_queue_size = 10000; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +10000 +SET @@global.delayed_queue_size = 4294967295; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +4294967295 +SET @@global.delayed_queue_size = 1; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +'#--------------------FN_DYNVARS_026_04-------------------------#' +SET @@global.delayed_queue_size = 0; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '0' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +SET @@global.delayed_queue_size = -1024; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '0' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +SET @@global.delayed_queue_size = 42949672950; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '42949672950' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.delayed_queue_size = 429496729.5; +ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +4294967295 +SET @@global.delayed_queue_size = ON; +ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' +SELECT @@delayed_queue_size; +@@delayed_queue_size +4294967295 +'#-------------------FN_DYNVARS_026_05----------------------------#' +SET @@session.delayed_queue_size = 0; +ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.delayed_queue_size; +ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_026_06------------------------#' +SELECT @@global.delayed_queue_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_queue_size'; +@@global.delayed_queue_size = VARIABLE_VALUE +1 +SELECT @@delayed_queue_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_queue_size'; +@@delayed_queue_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_026_07----------------------#' +SET @@global.delayed_queue_size = TRUE; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +SET @@global.delayed_queue_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '0' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +'#---------------------FN_DYNVARS_026_08----------------------#' +SET @@global.delayed_queue_size = 1; +SELECT @@delayed_queue_size = @@global.delayed_queue_size; +@@delayed_queue_size = @@global.delayed_queue_size +1 +'#---------------------FN_DYNVARS_026_09----------------------#' +SET delayed_queue_size = 1; +ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@delayed_queue_size; +@@delayed_queue_size +1 +SET local.delayed_queue_size = 1; +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 'delayed_queue_size = 1' at line 1 +SELECT local.delayed_queue_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.delayed_queue_size = 1; +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 'delayed_queue_size = 1' at line 1 +SELECT global.delayed_queue_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT delayed_queue_size = @@session.delayed_queue_size; +ERROR 42S22: Unknown column 'delayed_queue_size' in 'field list' +SET @@global.delayed_queue_size = @start_value; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1000 diff --git a/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result new file mode 100644 index 00000000000..d575626b0a1 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result @@ -0,0 +1,108 @@ +SET @start_value = @@global.delayed_queue_size; +SELECT @start_value; +@start_value +1000 +'#--------------------FN_DYNVARS_026_01------------------------#' +SET @@global.delayed_queue_size = 100; +SET @@global.delayed_queue_size = DEFAULT; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1000 +'#---------------------FN_DYNVARS_026_02-------------------------#' +SET @@global.delayed_queue_size = @start_value; +SELECT @@global.delayed_queue_size = 1000; +@@global.delayed_queue_size = 1000 +1 +'#--------------------FN_DYNVARS_026_03------------------------#' +SET @@global.delayed_queue_size = 10000; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +10000 +SET @@global.delayed_queue_size = 4294967295; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +4294967295 +SET @@global.delayed_queue_size = 1; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +'#--------------------FN_DYNVARS_026_04-------------------------#' +SET @@global.delayed_queue_size = 0; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '0' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +SET @@global.delayed_queue_size = -1024; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '0' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +SET @@global.delayed_queue_size = 42949672950; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +42949672950 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.delayed_queue_size = 429496729.5; +ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +42949672950 +SET @@global.delayed_queue_size = ON; +ERROR 42000: Incorrect argument type to variable 'delayed_queue_size' +SELECT @@delayed_queue_size; +@@delayed_queue_size +42949672950 +'#-------------------FN_DYNVARS_026_05----------------------------#' +SET @@session.delayed_queue_size = 0; +ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.delayed_queue_size; +ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_026_06------------------------#' +SELECT @@global.delayed_queue_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='delayed_queue_size'; +@@global.delayed_queue_size = VARIABLE_VALUE +1 +SELECT @@delayed_queue_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='delayed_queue_size'; +@@delayed_queue_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_026_07----------------------#' +SET @@global.delayed_queue_size = TRUE; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +SET @@global.delayed_queue_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect delayed_queue_size value: '0' +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1 +'#---------------------FN_DYNVARS_026_08----------------------#' +SET @@global.delayed_queue_size = 1; +SELECT @@delayed_queue_size = @@global.delayed_queue_size; +@@delayed_queue_size = @@global.delayed_queue_size +1 +'#---------------------FN_DYNVARS_026_09----------------------#' +SET delayed_queue_size = 1; +ERROR HY000: Variable 'delayed_queue_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@delayed_queue_size; +@@delayed_queue_size +1 +SET local.delayed_queue_size = 1; +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 'delayed_queue_size = 1' at line 1 +SELECT local.delayed_queue_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.delayed_queue_size = 1; +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 'delayed_queue_size = 1' at line 1 +SELECT global.delayed_queue_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT delayed_queue_size = @@session.delayed_queue_size; +ERROR 42S22: Unknown column 'delayed_queue_size' in 'field list' +SET @@global.delayed_queue_size = @start_value; +SELECT @@global.delayed_queue_size; +@@global.delayed_queue_size +1000 diff --git a/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result new file mode 100644 index 00000000000..1d1317d0d5e --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_32.result @@ -0,0 +1,100 @@ +SET @global_start_value = @@global.innodb_concurrency_tickets; +SELECT @global_start_value; +@global_start_value +500 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_concurrency_tickets = 0; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '0' +SET @@global.innodb_concurrency_tickets = DEFAULT; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +500 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_concurrency_tickets = 1; +ERROR HY000: Variable 'innodb_concurrency_tickets' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_concurrency_tickets; +@@innodb_concurrency_tickets +500 +SELECT local.innodb_concurrency_tickets; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_concurrency_tickets = 0; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '0' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_concurrency_tickets = 1; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +SET @@global.innodb_concurrency_tickets = 1000; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1000 +SET @@global.innodb_concurrency_tickets = 4294967295; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +4294967295 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_concurrency_tickets = -1; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '18446744073709551615' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +4294967295 +SET @@global.innodb_concurrency_tickets = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +4294967295 +SET @@global.innodb_concurrency_tickets = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +4294967295 +SET @@global.innodb_concurrency_tickets = 1001; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_concurrency_tickets = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_concurrency_tickets'; +@@global.innodb_concurrency_tickets = +VARIABLE_VALUE +1 +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_concurrency_tickets'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_concurrency_tickets = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +SET @@global.innodb_concurrency_tickets = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_concurrency_tickets = TRUE; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +SET @@global.innodb_concurrency_tickets = FALSE; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '0' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +SET @@global.innodb_concurrency_tickets = @global_start_value; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +500 diff --git a/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result new file mode 100644 index 00000000000..40d307d8733 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_concurrency_tickets_basic_64.result @@ -0,0 +1,98 @@ +SET @global_start_value = @@global.innodb_concurrency_tickets; +SELECT @global_start_value; +@global_start_value +500 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_concurrency_tickets = 0; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '0' +SET @@global.innodb_concurrency_tickets = DEFAULT; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +500 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_concurrency_tickets = 1; +ERROR HY000: Variable 'innodb_concurrency_tickets' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_concurrency_tickets; +@@innodb_concurrency_tickets +500 +SELECT local.innodb_concurrency_tickets; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_concurrency_tickets = 0; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '0' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_concurrency_tickets = 1; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +SET @@global.innodb_concurrency_tickets = 1000; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1000 +SET @@global.innodb_concurrency_tickets = 4294967295; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +4294967295 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_concurrency_tickets = -1; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +18446744073709551615 +SET @@global.innodb_concurrency_tickets = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +18446744073709551615 +SET @@global.innodb_concurrency_tickets = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +18446744073709551615 +SET @@global.innodb_concurrency_tickets = 1001; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_concurrency_tickets = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_concurrency_tickets'; +@@global.innodb_concurrency_tickets = +VARIABLE_VALUE +1 +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_concurrency_tickets'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_concurrency_tickets = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +SET @@global.innodb_concurrency_tickets = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_concurrency_tickets' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_concurrency_tickets = TRUE; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +SET @@global.innodb_concurrency_tickets = FALSE; +Warnings: +Warning 1292 Truncated incorrect concurrency_tickets value: '0' +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +1 +SET @@global.innodb_concurrency_tickets = @global_start_value; +SELECT @@global.innodb_concurrency_tickets; +@@global.innodb_concurrency_tickets +500 diff --git a/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result new file mode 100644 index 00000000000..ed960f12ff1 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_32.result @@ -0,0 +1,94 @@ +SET @global_start_value = @@global.innodb_max_purge_lag; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_max_purge_lag = 0; +SET @@global.innodb_max_purge_lag = DEFAULT; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_max_purge_lag = 1; +ERROR HY000: Variable 'innodb_max_purge_lag' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_max_purge_lag; +@@innodb_max_purge_lag +0 +SELECT local.innodb_max_purge_lag; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_max_purge_lag = 0; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_max_purge_lag = 0; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +SET @@global.innodb_max_purge_lag = 1; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1 +SET @@global.innodb_max_purge_lag = 4294967295; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +4294967295 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_max_purge_lag = -1; +Warnings: +Warning 1292 Truncated incorrect max_purge_lag value: '18446744073709551615' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +4294967295 +SET @@global.innodb_max_purge_lag = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +4294967295 +SET @@global.innodb_max_purge_lag = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +4294967295 +SET @@global.innodb_max_purge_lag = 1001; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_max_purge_lag = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_max_purge_lag'; +@@global.innodb_max_purge_lag = +VARIABLE_VALUE +1 +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_max_purge_lag'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_max_purge_lag = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +SET @@global.innodb_max_purge_lag = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_max_purge_lag = TRUE; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1 +SET @@global.innodb_max_purge_lag = FALSE; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +SET @@global.innodb_max_purge_lag = @global_start_value; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 diff --git a/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result new file mode 100644 index 00000000000..a6b669dde83 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_max_purge_lag_basic_64.result @@ -0,0 +1,92 @@ +SET @global_start_value = @@global.innodb_max_purge_lag; +SELECT @global_start_value; +@global_start_value +0 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_max_purge_lag = 0; +SET @@global.innodb_max_purge_lag = DEFAULT; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_max_purge_lag = 1; +ERROR HY000: Variable 'innodb_max_purge_lag' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_max_purge_lag; +@@innodb_max_purge_lag +0 +SELECT local.innodb_max_purge_lag; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_max_purge_lag = 0; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_max_purge_lag = 0; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +SET @@global.innodb_max_purge_lag = 1; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1 +SET @@global.innodb_max_purge_lag = 4294967295; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +4294967295 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_max_purge_lag = -1; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +18446744073709551615 +SET @@global.innodb_max_purge_lag = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +18446744073709551615 +SET @@global.innodb_max_purge_lag = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +18446744073709551615 +SET @@global.innodb_max_purge_lag = 1001; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_max_purge_lag = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_max_purge_lag'; +@@global.innodb_max_purge_lag = +VARIABLE_VALUE +1 +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_max_purge_lag'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_max_purge_lag = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +SET @@global.innodb_max_purge_lag = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_max_purge_lag' +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_max_purge_lag = TRUE; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +1 +SET @@global.innodb_max_purge_lag = FALSE; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 +SET @@global.innodb_max_purge_lag = @global_start_value; +SELECT @@global.innodb_max_purge_lag; +@@global.innodb_max_purge_lag +0 diff --git a/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result new file mode 100644 index 00000000000..2b976e65b14 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_32.result @@ -0,0 +1,94 @@ +SET @global_start_value = @@global.innodb_sync_spin_loops; +SELECT @global_start_value; +@global_start_value +20 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_sync_spin_loops = 0; +SET @@global.innodb_sync_spin_loops = DEFAULT; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +20 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_sync_spin_loops = 1; +ERROR HY000: Variable 'innodb_sync_spin_loops' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_sync_spin_loops; +@@innodb_sync_spin_loops +20 +SELECT local.innodb_sync_spin_loops; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_sync_spin_loops = 0; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_sync_spin_loops = 0; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +0 +SET @@global.innodb_sync_spin_loops = 1; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1 +SET @@global.innodb_sync_spin_loops = 1000; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1000 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_sync_spin_loops = -1; +Warnings: +Warning 1292 Truncated incorrect sync_spin_loops value: '18446744073709551615' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +4294967295 +SET @@global.innodb_sync_spin_loops = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +4294967295 +SET @@global.innodb_sync_spin_loops = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +4294967295 +SET @@global.innodb_sync_spin_loops = 1001; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_sync_spin_loops = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_sync_spin_loops'; +@@global.innodb_sync_spin_loops = +VARIABLE_VALUE +1 +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_sync_spin_loops'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_sync_spin_loops = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +SET @@global.innodb_sync_spin_loops = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_sync_spin_loops = TRUE; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1 +SET @@global.innodb_sync_spin_loops = FALSE; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +0 +SET @@global.innodb_sync_spin_loops = @global_start_value; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +20 diff --git a/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result new file mode 100644 index 00000000000..1b99ad8e3db --- /dev/null +++ b/mysql-test/suite/sys_vars/r/innodb_sync_spin_loops_basic_64.result @@ -0,0 +1,92 @@ +SET @global_start_value = @@global.innodb_sync_spin_loops; +SELECT @global_start_value; +@global_start_value +20 +'#--------------------FN_DYNVARS_046_01------------------------#' +SET @@global.innodb_sync_spin_loops = 0; +SET @@global.innodb_sync_spin_loops = DEFAULT; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +20 +'#---------------------FN_DYNVARS_046_02-------------------------#' +SET innodb_sync_spin_loops = 1; +ERROR HY000: Variable 'innodb_sync_spin_loops' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@innodb_sync_spin_loops; +@@innodb_sync_spin_loops +20 +SELECT local.innodb_sync_spin_loops; +ERROR 42S02: Unknown table 'local' in field list +SET global innodb_sync_spin_loops = 0; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +0 +'#--------------------FN_DYNVARS_046_03------------------------#' +SET @@global.innodb_sync_spin_loops = 0; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +0 +SET @@global.innodb_sync_spin_loops = 1; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1 +SET @@global.innodb_sync_spin_loops = 1000; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1000 +'#--------------------FN_DYNVARS_046_04-------------------------#' +SET @@global.innodb_sync_spin_loops = -1; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +18446744073709551615 +SET @@global.innodb_sync_spin_loops = "T"; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +18446744073709551615 +SET @@global.innodb_sync_spin_loops = "Y"; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +18446744073709551615 +SET @@global.innodb_sync_spin_loops = 1001; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +'#----------------------FN_DYNVARS_046_05------------------------#' +SELECT @@global.innodb_sync_spin_loops = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_sync_spin_loops'; +@@global.innodb_sync_spin_loops = +VARIABLE_VALUE +1 +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='innodb_sync_spin_loops'; +VARIABLE_VALUE +1001 +'#---------------------FN_DYNVARS_046_06-------------------------#' +SET @@global.innodb_sync_spin_loops = OFF; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +SET @@global.innodb_sync_spin_loops = ON; +ERROR 42000: Incorrect argument type to variable 'innodb_sync_spin_loops' +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1001 +'#---------------------FN_DYNVARS_046_07----------------------#' +SET @@global.innodb_sync_spin_loops = TRUE; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +1 +SET @@global.innodb_sync_spin_loops = FALSE; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +0 +SET @@global.innodb_sync_spin_loops = @global_start_value; +SELECT @@global.innodb_sync_spin_loops; +@@global.innodb_sync_spin_loops +20 diff --git a/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result new file mode 100644 index 00000000000..fc3061d2f59 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_32.result @@ -0,0 +1,198 @@ +SET @start_global_value = @@global.join_buffer_size; +SELECT @start_global_value; +@start_global_value +131072 +SET @start_session_value = @@session.join_buffer_size; +SELECT @start_session_value; +@start_session_value +131072 +'#--------------------FN_DYNVARS_053_01-------------------------#' +SET @@global.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SET @@global.join_buffer_size = DEFAULT; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +131072 +SET @@session.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SET @@session.join_buffer_size = DEFAULT; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +131072 +'#--------------------FN_DYNVARS_053_02-------------------------#' +SET @@global.join_buffer_size = DEFAULT; +SELECT @@global.join_buffer_size = 131072; +@@global.join_buffer_size = 131072 +1 +SET @@session.join_buffer_size = DEFAULT; +SELECT @@session.join_buffer_size = 131072; +@@session.join_buffer_size = 131072 +1 +'#--------------------FN_DYNVARS_053_03-------------------------#' +SET @@global.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = 65536; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +65536 +SET @@global.join_buffer_size = 4294967295; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +4294963200 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +'#--------------------FN_DYNVARS_053_04-------------------------#' +SET @@session.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = 65536; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +65536 +SET @@session.join_buffer_size = 4294967295; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +4294963200 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +'#------------------FN_DYNVARS_053_05-----------------------#' +SET @@global.join_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8199' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = 42949672951; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '42949672951' +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +4294963200 +SET @@global.join_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 +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +4294963200 +SET @@global.join_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'join_buffer_size' +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +4294963200 +SET @@session.join_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8199' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = 42949672951; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '42949672951' +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +4294963200 +SET @@session.join_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 +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +4294963200 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.join_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'join_buffer_size' +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +4294963200 +'#------------------FN_DYNVARS_053_06-----------------------#' +SELECT @@global.join_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='join_buffer_size'; +@@global.join_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_053_07-----------------------#' +SELECT @@session.join_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='join_buffer_size'; +@@session.join_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_053_08-----------------------#' +SET @@global.join_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '1' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.join_buffer_size = 10; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '10' +SELECT @@join_buffer_size = @@global.join_buffer_size; +@@join_buffer_size = @@global.join_buffer_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@join_buffer_size = 100; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '100' +SELECT @@join_buffer_size = @@local.join_buffer_size; +@@join_buffer_size = @@local.join_buffer_size +1 +SELECT @@local.join_buffer_size = @@session.join_buffer_size; +@@local.join_buffer_size = @@session.join_buffer_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET join_buffer_size = 1; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '1' +SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228; +@@join_buffer_size=8200 OR @@join_buffer_size= 8228 +1 +SELECT local.join_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.join_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT join_buffer_size = @@session.join_buffer_size; +ERROR 42S22: Unknown column 'join_buffer_size' in 'field list' +SET @@global.join_buffer_size = @start_global_value; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +131072 +SET @@session.join_buffer_size = @start_session_value; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +131072 diff --git a/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result new file mode 100644 index 00000000000..ed652af67d2 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result @@ -0,0 +1,194 @@ +SET @start_global_value = @@global.join_buffer_size; +SELECT @start_global_value; +@start_global_value +131072 +SET @start_session_value = @@session.join_buffer_size; +SELECT @start_session_value; +@start_session_value +131072 +'#--------------------FN_DYNVARS_053_01-------------------------#' +SET @@global.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SET @@global.join_buffer_size = DEFAULT; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +131072 +SET @@session.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SET @@session.join_buffer_size = DEFAULT; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +131072 +'#--------------------FN_DYNVARS_053_02-------------------------#' +SET @@global.join_buffer_size = DEFAULT; +SELECT @@global.join_buffer_size = 131072; +@@global.join_buffer_size = 131072 +1 +SET @@session.join_buffer_size = DEFAULT; +SELECT @@session.join_buffer_size = 131072; +@@session.join_buffer_size = 131072 +1 +'#--------------------FN_DYNVARS_053_03-------------------------#' +SET @@global.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = 65536; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +65536 +SET @@global.join_buffer_size = 4294967295; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +4294963200 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +'#--------------------FN_DYNVARS_053_04-------------------------#' +SET @@session.join_buffer_size = 8200; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8200' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = 65536; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +65536 +SET @@session.join_buffer_size = 4294967295; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +4294963200 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +'#------------------FN_DYNVARS_053_05-----------------------#' +SET @@global.join_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8199' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = 42949672951; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +42949668864 +SET @@global.join_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 +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +42949668864 +SET @@global.join_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'join_buffer_size' +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +42949668864 +SET @@session.join_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = 8199; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '8199' +SELECT @@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228; +@@session.join_buffer_size=8200 OR @@session.join_buffer_size= 8228 +1 +SET @@session.join_buffer_size = 42949672951; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +42949668864 +SET @@session.join_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 +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +42949668864 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@session.join_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'join_buffer_size' +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +42949668864 +'#------------------FN_DYNVARS_053_06-----------------------#' +SELECT @@global.join_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='join_buffer_size'; +@@global.join_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_053_07-----------------------#' +SELECT @@session.join_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='join_buffer_size'; +@@session.join_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_053_08-----------------------#' +SET @@global.join_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '1' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +SET @@global.join_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '0' +SELECT @@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228; +@@global.join_buffer_size=8200 OR @@global.join_buffer_size= 8228 +1 +'Bug: Errors are not coming on assigning TRUE/FALSE to variable'; +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.join_buffer_size = 10; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '10' +SELECT @@join_buffer_size = @@global.join_buffer_size; +@@join_buffer_size = @@global.join_buffer_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@join_buffer_size = 100; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '100' +SELECT @@join_buffer_size = @@local.join_buffer_size; +@@join_buffer_size = @@local.join_buffer_size +1 +SELECT @@local.join_buffer_size = @@session.join_buffer_size; +@@local.join_buffer_size = @@session.join_buffer_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET join_buffer_size = 1; +Warnings: +Warning 1292 Truncated incorrect join_buffer_size value: '1' +SELECT @@join_buffer_size=8200 OR @@join_buffer_size= 8228; +@@join_buffer_size=8200 OR @@join_buffer_size= 8228 +1 +SELECT local.join_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.join_buffer_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT join_buffer_size = @@session.join_buffer_size; +ERROR 42S22: Unknown column 'join_buffer_size' in 'field list' +SET @@global.join_buffer_size = @start_global_value; +SELECT @@global.join_buffer_size; +@@global.join_buffer_size +131072 +SET @@session.join_buffer_size = @start_session_value; +SELECT @@session.join_buffer_size; +@@session.join_buffer_size +131072 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 new file mode 100644 index 00000000000..981988a1d4d --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result @@ -0,0 +1,111 @@ +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 +1 +'#---------------------FN_DYNVARS_055_02-------------------------#' +SET @@global.key_buffer_size = @start_value; +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 +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 +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' +SELECT @@global.key_buffer_size; +@@global.key_buffer_size +61440 +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 +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 +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 +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 +1 +'#----------------------FN_DYNVARS_055_06------------------------#' +SELECT @@global.key_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_buffer_size'; +@@global.key_buffer_size = VARIABLE_VALUE +1 +SELECT @@key_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_buffer_size'; +@@key_buffer_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_055_07----------------------#' +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 +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 +1 +'#---------------------FN_DYNVARS_055_08----------------------#' +SET @@global.key_buffer_size = @min_key_buffer_size; +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; +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 +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 +SELECT local.key_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.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 +SELECT global.key_buffer_size; +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 new file mode 100644 index 00000000000..981988a1d4d --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result @@ -0,0 +1,111 @@ +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 +1 +'#---------------------FN_DYNVARS_055_02-------------------------#' +SET @@global.key_buffer_size = @start_value; +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 +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 +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' +SELECT @@global.key_buffer_size; +@@global.key_buffer_size +61440 +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 +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 +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 +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 +1 +'#----------------------FN_DYNVARS_055_06------------------------#' +SELECT @@global.key_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_buffer_size'; +@@global.key_buffer_size = VARIABLE_VALUE +1 +SELECT @@key_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_buffer_size'; +@@key_buffer_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_055_07----------------------#' +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 +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 +1 +'#---------------------FN_DYNVARS_055_08----------------------#' +SET @@global.key_buffer_size = @min_key_buffer_size; +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; +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 +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 +SELECT local.key_buffer_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.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 +SELECT global.key_buffer_size; +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_cache_age_threshold_basic_32.result b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result new file mode 100644 index 00000000000..023b23ea425 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_32.result @@ -0,0 +1,126 @@ +SET @start_value = @@global.key_cache_age_threshold; +SELECT @start_value; +@start_value +300 +'#--------------------FN_DYNVARS_056_01------------------------#' +SET @@global.key_cache_age_threshold = 99; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' +SET @@global.key_cache_age_threshold = DEFAULT; +ERROR 42000: Variable 'key_cache_age_threshold' doesn't have a default value +'Bug# 34878: This variable has default value according to documentation'; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'#---------------------FN_DYNVARS_056_02-------------------------#' +SET @@global.key_cache_age_threshold = @start_value; +SELECT @@global.key_cache_age_threshold = 300; +@@global.key_cache_age_threshold = 300 +1 +'#--------------------FN_DYNVARS_056_03------------------------#' +SET @@global.key_cache_age_threshold = 100; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +SET @@global.key_cache_age_threshold = 4294967295; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +4294967200 +SET @@global.key_cache_age_threshold = 1800; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +1800 +SET @@global.key_cache_age_threshold = 65535; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +65500 +'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +'#--------------------FN_DYNVARS_056_04-------------------------#' +SET @@global.key_cache_age_threshold = -1; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +4294967200 +SET @@global.key_cache_age_threshold = 42949672951; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +4294967200 +SET @@global.key_cache_age_threshold = 10000.01; +ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +4294967200 +SET @@global.key_cache_age_threshold = -1024; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +4294966200 +SET @@global.key_cache_age_threshold = 99; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.key_cache_age_threshold = ON; +ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +SET @@global.key_cache_age_threshold = 'test'; +ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'#-------------------FN_DYNVARS_056_05----------------------------#' +SET @@session.key_cache_age_threshold = 0; +ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.key_cache_age_threshold; +ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable +'#----------------------FN_DYNVARS_056_06------------------------#' +SELECT @@global.key_cache_age_threshold = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_age_threshold'; +@@global.key_cache_age_threshold = VARIABLE_VALUE +1 +SELECT @@key_cache_age_threshold = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_age_threshold'; +@@key_cache_age_threshold = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_056_07----------------------#' +SET @@global.key_cache_age_threshold = TRUE; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '1' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +SET @@global.key_cache_age_threshold = FALSE; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '0' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'#---------------------FN_DYNVARS_056_08----------------------#' +SET @@global.key_cache_age_threshold = 101; +SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold; +@@key_cache_age_threshold = @@global.key_cache_age_threshold +1 +'#---------------------FN_DYNVARS_056_09----------------------#' +SET key_cache_age_threshold = 8000; +ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@key_cache_age_threshold; +@@key_cache_age_threshold +100 +SET local.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 +SELECT local.key_cache_age_threshold; +ERROR 42S02: Unknown table 'local' in field list +SET global.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 +SELECT global.key_cache_age_threshold; +ERROR 42S02: Unknown table 'global' in field list +SELECT key_cache_age_threshold = @@session.key_cache_age_threshold; +ERROR 42S22: Unknown column 'key_cache_age_threshold' in 'field list' +SET @@global.key_cache_age_threshold = @start_value; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +300 diff --git a/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result new file mode 100644 index 00000000000..5e05dd7bacf --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_cache_age_threshold_basic_64.result @@ -0,0 +1,126 @@ +SET @start_value = @@global.key_cache_age_threshold; +SELECT @start_value; +@start_value +300 +'#--------------------FN_DYNVARS_056_01------------------------#' +SET @@global.key_cache_age_threshold = 99; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' +SET @@global.key_cache_age_threshold = DEFAULT; +ERROR 42000: Variable 'key_cache_age_threshold' doesn't have a default value +'Bug# 34878: This variable has default value according to documentation'; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'#---------------------FN_DYNVARS_056_02-------------------------#' +SET @@global.key_cache_age_threshold = @start_value; +SELECT @@global.key_cache_age_threshold = 300; +@@global.key_cache_age_threshold = 300 +1 +'#--------------------FN_DYNVARS_056_03------------------------#' +SET @@global.key_cache_age_threshold = 100; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +SET @@global.key_cache_age_threshold = 4294967295; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +4294967200 +SET @@global.key_cache_age_threshold = 1800; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +1800 +SET @@global.key_cache_age_threshold = 65535; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +65500 +'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +'#--------------------FN_DYNVARS_056_04-------------------------#' +SET @@global.key_cache_age_threshold = -1; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +18446744073709551600 +SET @@global.key_cache_age_threshold = 42949672951; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +42949672900 +SET @@global.key_cache_age_threshold = 10000.01; +ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +42949672900 +SET @@global.key_cache_age_threshold = -1024; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +18446744073709550500 +SET @@global.key_cache_age_threshold = 99; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '99' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.key_cache_age_threshold = ON; +ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +SET @@global.key_cache_age_threshold = 'test'; +ERROR 42000: Incorrect argument type to variable 'key_cache_age_threshold' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'#-------------------FN_DYNVARS_056_05----------------------------#' +SET @@session.key_cache_age_threshold = 0; +ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.key_cache_age_threshold; +ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable +'#----------------------FN_DYNVARS_056_06------------------------#' +SELECT @@global.key_cache_age_threshold = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_age_threshold'; +@@global.key_cache_age_threshold = VARIABLE_VALUE +1 +SELECT @@key_cache_age_threshold = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_age_threshold'; +@@key_cache_age_threshold = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_056_07----------------------#' +SET @@global.key_cache_age_threshold = TRUE; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '1' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +SET @@global.key_cache_age_threshold = FALSE; +Warnings: +Warning 1292 Truncated incorrect key_cache_age_threshold value: '0' +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +100 +'#---------------------FN_DYNVARS_056_08----------------------#' +SET @@global.key_cache_age_threshold = 101; +SELECT @@key_cache_age_threshold = @@global.key_cache_age_threshold; +@@key_cache_age_threshold = @@global.key_cache_age_threshold +1 +'#---------------------FN_DYNVARS_056_09----------------------#' +SET key_cache_age_threshold = 8000; +ERROR HY000: Variable 'key_cache_age_threshold' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@key_cache_age_threshold; +@@key_cache_age_threshold +100 +SET local.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 +SELECT local.key_cache_age_threshold; +ERROR 42S02: Unknown table 'local' in field list +SET global.key_cache_age_threshold = 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_cache_age_threshold = 10' at line 1 +SELECT global.key_cache_age_threshold; +ERROR 42S02: Unknown table 'global' in field list +SELECT key_cache_age_threshold = @@session.key_cache_age_threshold; +ERROR 42S22: Unknown column 'key_cache_age_threshold' in 'field list' +SET @@global.key_cache_age_threshold = @start_value; +SELECT @@global.key_cache_age_threshold; +@@global.key_cache_age_threshold +300 diff --git a/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result new file mode 100644 index 00000000000..ac78acb8244 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_32.result @@ -0,0 +1,142 @@ +SET @start_value = @@global.key_cache_block_size; +SELECT @start_value; +@start_value +1024 +'#--------------------FN_DYNVARS_057_01------------------------#' +SET @@global.key_cache_block_size = 600; +SET @@global.key_cache_block_size = DEFAULT; +ERROR 42000: Variable 'key_cache_block_size' doesn't have a default value +'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +'#---------------------FN_DYNVARS_057_02-------------------------#' +SET @@global.key_cache_block_size = @start_value; +SELECT @@global.key_cache_block_size = 1024; +@@global.key_cache_block_size = 1024 +1 +'#--------------------FN_DYNVARS_057_03------------------------#' +SET @@global.key_cache_block_size = 1024; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +1024 +SET @@global.key_cache_block_size = 16384; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 1800; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +1536 +SET @@global.key_cache_block_size = 16383; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +15872 +'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +'#--------------------FN_DYNVARS_057_04-------------------------#' +SET @@global.key_cache_block_size = -1; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '4294967295' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 42949672951; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '4294967287' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = -1024; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '4294966272' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 256; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '256' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +SET @@global.key_cache_block_size = 511; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '511' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +SET @@global.key_cache_block_size = 16385; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '16385' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.key_cache_block_size = ON; +ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +'#-------------------FN_DYNVARS_057_05----------------------------#' +SET @@session.key_cache_block_size = 0; +ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.key_cache_block_size; +ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_057_06------------------------#' +SELECT @@global.key_cache_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_block_size'; +@@global.key_cache_block_size = VARIABLE_VALUE +1 +SELECT @@key_cache_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_block_size'; +@@key_cache_block_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_057_07----------------------#' +SET @@global.key_cache_block_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '1' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +SET @@global.key_cache_block_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '0' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +'#---------------------FN_DYNVARS_057_08----------------------#' +SET @@global.key_cache_block_size = 1024; +SELECT @@key_cache_block_size = @@global.key_cache_block_size; +@@key_cache_block_size = @@global.key_cache_block_size +1 +'#---------------------FN_DYNVARS_057_09----------------------#' +SET key_cache_block_size = 8000; +ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@key_cache_block_size; +@@key_cache_block_size +1024 +SET local.key_cache_block_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_cache_block_size = 10' at line 1 +SELECT local.key_cache_block_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.key_cache_block_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_cache_block_size = 10' at line 1 +SELECT global.key_cache_block_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT key_cache_block_size = @@session.key_cache_block_size; +ERROR 42S22: Unknown column 'key_cache_block_size' in 'field list' +SET @@global.key_cache_block_size = @start_value; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +1024 diff --git a/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result new file mode 100644 index 00000000000..46ce1f26b29 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_cache_block_size_basic_64.result @@ -0,0 +1,142 @@ +SET @start_value = @@global.key_cache_block_size; +SELECT @start_value; +@start_value +1024 +'#--------------------FN_DYNVARS_057_01------------------------#' +SET @@global.key_cache_block_size = 600; +SET @@global.key_cache_block_size = DEFAULT; +ERROR 42000: Variable 'key_cache_block_size' doesn't have a default value +'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +'#---------------------FN_DYNVARS_057_02-------------------------#' +SET @@global.key_cache_block_size = @start_value; +SELECT @@global.key_cache_block_size = 1024; +@@global.key_cache_block_size = 1024 +1 +'#--------------------FN_DYNVARS_057_03------------------------#' +SET @@global.key_cache_block_size = 1024; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +1024 +SET @@global.key_cache_block_size = 16384; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 1800; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +1536 +SET @@global.key_cache_block_size = 16383; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +15872 +'Bug# 34877 : Invalid Values are coming in variable on assigning valid values and Out Of Memory Warnings are coming'; +'#--------------------FN_DYNVARS_057_04-------------------------#' +SET @@global.key_cache_block_size = -1; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709551615' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 42949672951; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '42949672951' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = -1024; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '18446744073709550592' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 256; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '256' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +SET @@global.key_cache_block_size = 511; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '511' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +SET @@global.key_cache_block_size = 16385; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '16385' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.key_cache_block_size = ON; +ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +SET @@global.key_cache_block_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'key_cache_block_size' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +16384 +'#-------------------FN_DYNVARS_057_05----------------------------#' +SET @@session.key_cache_block_size = 0; +ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.key_cache_block_size; +ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_057_06------------------------#' +SELECT @@global.key_cache_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_block_size'; +@@global.key_cache_block_size = VARIABLE_VALUE +1 +SELECT @@key_cache_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_block_size'; +@@key_cache_block_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_057_07----------------------#' +SET @@global.key_cache_block_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '1' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +SET @@global.key_cache_block_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect key_cache_block_size value: '0' +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +512 +'#---------------------FN_DYNVARS_057_08----------------------#' +SET @@global.key_cache_block_size = 1024; +SELECT @@key_cache_block_size = @@global.key_cache_block_size; +@@key_cache_block_size = @@global.key_cache_block_size +1 +'#---------------------FN_DYNVARS_057_09----------------------#' +SET key_cache_block_size = 8000; +ERROR HY000: Variable 'key_cache_block_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@key_cache_block_size; +@@key_cache_block_size +1024 +SET local.key_cache_block_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_cache_block_size = 10' at line 1 +SELECT local.key_cache_block_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.key_cache_block_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_cache_block_size = 10' at line 1 +SELECT global.key_cache_block_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT key_cache_block_size = @@session.key_cache_block_size; +ERROR 42S22: Unknown column 'key_cache_block_size' in 'field list' +SET @@global.key_cache_block_size = @start_value; +SELECT @@global.key_cache_block_size; +@@global.key_cache_block_size +1024 diff --git a/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result new file mode 100644 index 00000000000..5902dbcdf89 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_32.result @@ -0,0 +1,139 @@ +SET @start_value = @@global.key_cache_division_limit; +SELECT @start_value; +@start_value +100 +'#--------------------FN_DYNVARS_058_01------------------------#' +SET @@global.key_cache_division_limit = 50; +SET @@global.key_cache_division_limit = DEFAULT; +ERROR 42000: Variable 'key_cache_division_limit' doesn't have a default value +'Bug# 34878: This variable has default value according to documentation'; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +50 +'#---------------------FN_DYNVARS_058_02-------------------------#' +SET @@global.key_cache_division_limit = @start_value; +SELECT @@global.key_cache_division_limit = 100; +@@global.key_cache_division_limit = 100 +1 +'#--------------------FN_DYNVARS_058_03------------------------#' +SET @@global.key_cache_division_limit = 1; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +SET @@global.key_cache_division_limit = 50; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +50 +SET @@global.key_cache_division_limit = 99; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +99 +SET @@global.key_cache_division_limit = 2; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +2 +'#--------------------FN_DYNVARS_058_04-------------------------#' +SET @@global.key_cache_division_limit = -1; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '4294967295' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 101; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '101' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 10000.01; +ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = -1024; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '4294966272' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 0; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '0' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +SET @@global.key_cache_division_limit = 200; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '200' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 65535; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '65535' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.key_cache_division_limit = ON; +ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 'test'; +ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +'#-------------------FN_DYNVARS_058_05----------------------------#' +SET @@session.key_cache_division_limit = 0; +ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.key_cache_division_limit; +ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable +'#----------------------FN_DYNVARS_058_06------------------------#' +SELECT @@global.key_cache_division_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_division_limit'; +@@global.key_cache_division_limit = VARIABLE_VALUE +1 +SELECT @@key_cache_division_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_division_limit'; +@@key_cache_division_limit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_058_07----------------------#' +SET @@global.key_cache_division_limit = TRUE; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +SET @@global.key_cache_division_limit = FALSE; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '0' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +'#---------------------FN_DYNVARS_058_08----------------------#' +SET @@global.key_cache_division_limit = 90; +SELECT @@key_cache_division_limit = @@global.key_cache_division_limit; +@@key_cache_division_limit = @@global.key_cache_division_limit +1 +'#---------------------FN_DYNVARS_058_09----------------------#' +SET key_cache_division_limit = 80; +ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@key_cache_division_limit; +@@key_cache_division_limit +90 +SET local.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 +SELECT local.key_cache_division_limit; +ERROR 42S02: Unknown table 'local' in field list +SET global.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 +SELECT global.key_cache_division_limit; +ERROR 42S02: Unknown table 'global' in field list +SELECT key_cache_division_limit = @@session.key_cache_division_limit; +ERROR 42S22: Unknown column 'key_cache_division_limit' in 'field list' +SET @@global.key_cache_division_limit = @start_value; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 diff --git a/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result new file mode 100644 index 00000000000..cd0cdcbca05 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/key_cache_division_limit_basic_64.result @@ -0,0 +1,139 @@ +SET @start_value = @@global.key_cache_division_limit; +SELECT @start_value; +@start_value +100 +'#--------------------FN_DYNVARS_058_01------------------------#' +SET @@global.key_cache_division_limit = 50; +SET @@global.key_cache_division_limit = DEFAULT; +ERROR 42000: Variable 'key_cache_division_limit' doesn't have a default value +'Bug# 34878: This variable has default value according to documentation'; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +50 +'#---------------------FN_DYNVARS_058_02-------------------------#' +SET @@global.key_cache_division_limit = @start_value; +SELECT @@global.key_cache_division_limit = 100; +@@global.key_cache_division_limit = 100 +1 +'#--------------------FN_DYNVARS_058_03------------------------#' +SET @@global.key_cache_division_limit = 1; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +SET @@global.key_cache_division_limit = 50; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +50 +SET @@global.key_cache_division_limit = 99; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +99 +SET @@global.key_cache_division_limit = 2; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +2 +'#--------------------FN_DYNVARS_058_04-------------------------#' +SET @@global.key_cache_division_limit = -1; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709551615' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 101; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '101' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 10000.01; +ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = -1024; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '18446744073709550592' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 0; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '0' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +SET @@global.key_cache_division_limit = 200; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '200' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 65535; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '65535' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +'Bug # 34837: Errors are not coming on assigning invalid values to variable' +SET @@global.key_cache_division_limit = ON; +ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +SET @@global.key_cache_division_limit = 'test'; +ERROR 42000: Incorrect argument type to variable 'key_cache_division_limit' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 +'#-------------------FN_DYNVARS_058_05----------------------------#' +SET @@session.key_cache_division_limit = 0; +ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.key_cache_division_limit; +ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable +'#----------------------FN_DYNVARS_058_06------------------------#' +SELECT @@global.key_cache_division_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='key_cache_division_limit'; +@@global.key_cache_division_limit = VARIABLE_VALUE +1 +SELECT @@key_cache_division_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='key_cache_division_limit'; +@@key_cache_division_limit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_058_07----------------------#' +SET @@global.key_cache_division_limit = TRUE; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +SET @@global.key_cache_division_limit = FALSE; +Warnings: +Warning 1292 Truncated incorrect key_cache_division_limit value: '0' +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +1 +'#---------------------FN_DYNVARS_058_08----------------------#' +SET @@global.key_cache_division_limit = 90; +SELECT @@key_cache_division_limit = @@global.key_cache_division_limit; +@@key_cache_division_limit = @@global.key_cache_division_limit +1 +'#---------------------FN_DYNVARS_058_09----------------------#' +SET key_cache_division_limit = 80; +ERROR HY000: Variable 'key_cache_division_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@key_cache_division_limit; +@@key_cache_division_limit +90 +SET local.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 +SELECT local.key_cache_division_limit; +ERROR 42S02: Unknown table 'local' in field list +SET global.key_cache_division_limit = 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_cache_division_limit = 10' at line 1 +SELECT global.key_cache_division_limit; +ERROR 42S02: Unknown table 'global' in field list +SELECT key_cache_division_limit = @@session.key_cache_division_limit; +ERROR 42S22: Unknown column 'key_cache_division_limit' in 'field list' +SET @@global.key_cache_division_limit = @start_value; +SELECT @@global.key_cache_division_limit; +@@global.key_cache_division_limit +100 diff --git a/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result b/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result new file mode 100644 index 00000000000..702e95b1383 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/log_warnings_basic_32.result @@ -0,0 +1,162 @@ +SET @start_global_value = @@global.log_warnings; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.log_warnings; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_067_01-------------------------#' +SET @@global.log_warnings = 100; +SET @@global.log_warnings = DEFAULT; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@session.log_warnings = 200; +SET @@session.log_warnings = DEFAULT; +SELECT @@session.log_warnings; +@@session.log_warnings +1 +'#--------------------FN_DYNVARS_067_02-------------------------#' +SET @@global.log_warnings = DEFAULT; +SELECT @@global.log_warnings = 1; +@@global.log_warnings = 1 +1 +SET @@session.log_warnings = DEFAULT; +SELECT @@session.log_warnings = 1; +@@session.log_warnings = 1 +1 +'#--------------------FN_DYNVARS_067_03-------------------------#' +SET @@global.log_warnings = 0; +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@global.log_warnings = 1; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@global.log_warnings = 60020; +SELECT @@global.log_warnings; +@@global.log_warnings +60020 +SET @@global.log_warnings = 65535; +SELECT @@global.log_warnings; +@@global.log_warnings +65535 +SET @@global.log_warnings = 65536; +SELECT @@global.log_warnings; +@@global.log_warnings +65536 +'#--------------------FN_DYNVARS_067_04-------------------------#' +SET @@session.log_warnings = 0; +SELECT @@session.log_warnings; +@@session.log_warnings +0 +SET @@session.log_warnings = 1; +SELECT @@session.log_warnings; +@@session.log_warnings +1 +SET @@session.log_warnings = 50050; +SELECT @@session.log_warnings; +@@session.log_warnings +50050 +SET @@session.log_warnings = 65535; +SELECT @@session.log_warnings; +@@session.log_warnings +65535 +SET @@session.log_warnings = 65550; +SELECT @@session.log_warnings; +@@session.log_warnings +65550 +'#------------------FN_DYNVARS_067_05-----------------------#' +SET @@global.log_warnings = 100000000000; +Warnings: +Warning 1292 Truncated incorrect log-warnings value: '100000000000' +SELECT @@global.log_warnings; +@@global.log_warnings +4294967295 +SET @@global.log_warnings = -1024; +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@global.log_warnings = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@global.log_warnings = test; +ERROR 42000: Incorrect argument type to variable 'log_warnings' +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@session.log_warnings = 100000000000; +Warnings: +Warning 1292 Truncated incorrect log-warnings value: '100000000000' +SELECT @@session.log_warnings; +@@session.log_warnings +4294967295 +SET @@session.log_warnings = -2; +SELECT @@session.log_warnings; +@@session.log_warnings +0 +SET @@session.log_warnings = 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 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.log_warnings = test; +ERROR 42000: Incorrect argument type to variable 'log_warnings' +SELECT @@session.log_warnings; +@@session.log_warnings +0 +'#------------------FN_DYNVARS_067_06-----------------------#' +SELECT @@global.log_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_warnings'; +@@global.log_warnings = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_067_07-----------------------#' +SELECT @@session.log_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='log_warnings'; +@@session.log_warnings = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_067_08-----------------------#' +SET @@global.log_warnings = TRUE; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@global.log_warnings = FALSE; +SELECT @@global.log_warnings; +@@global.log_warnings +0 +'#---------------------FN_DYNVARS_067_09----------------------#' +SET @@global.log_warnings = 10; +SELECT @@log_warnings = @@global.log_warnings; +@@log_warnings = @@global.log_warnings +0 +'#---------------------FN_DYNVARS_067_10----------------------#' +SET @@log_warnings = 100; +SELECT @@log_warnings = @@local.log_warnings; +@@log_warnings = @@local.log_warnings +1 +SELECT @@local.log_warnings = @@session.log_warnings; +@@local.log_warnings = @@session.log_warnings +1 +'#---------------------FN_DYNVARS_067_11----------------------#' +SET log_warnings = 1; +SELECT @@log_warnings; +@@log_warnings +1 +SELECT local.log_warnings; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.log_warnings; +ERROR 42S02: Unknown table 'session' in field list +SELECT log_warnings = @@session.log_warnings; +ERROR 42S22: Unknown column 'log_warnings' in 'field list' +SET @@global.log_warnings = @start_global_value; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@session.log_warnings = @start_session_value; +SELECT @@session.log_warnings; +@@session.log_warnings +1 diff --git a/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result b/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result new file mode 100644 index 00000000000..ba6671c87a4 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/log_warnings_basic_64.result @@ -0,0 +1,158 @@ +SET @start_global_value = @@global.log_warnings; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.log_warnings; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_067_01-------------------------#' +SET @@global.log_warnings = 100; +SET @@global.log_warnings = DEFAULT; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@session.log_warnings = 200; +SET @@session.log_warnings = DEFAULT; +SELECT @@session.log_warnings; +@@session.log_warnings +1 +'#--------------------FN_DYNVARS_067_02-------------------------#' +SET @@global.log_warnings = DEFAULT; +SELECT @@global.log_warnings = 1; +@@global.log_warnings = 1 +1 +SET @@session.log_warnings = DEFAULT; +SELECT @@session.log_warnings = 1; +@@session.log_warnings = 1 +1 +'#--------------------FN_DYNVARS_067_03-------------------------#' +SET @@global.log_warnings = 0; +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@global.log_warnings = 1; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@global.log_warnings = 60020; +SELECT @@global.log_warnings; +@@global.log_warnings +60020 +SET @@global.log_warnings = 65535; +SELECT @@global.log_warnings; +@@global.log_warnings +65535 +SET @@global.log_warnings = 65536; +SELECT @@global.log_warnings; +@@global.log_warnings +65536 +'#--------------------FN_DYNVARS_067_04-------------------------#' +SET @@session.log_warnings = 0; +SELECT @@session.log_warnings; +@@session.log_warnings +0 +SET @@session.log_warnings = 1; +SELECT @@session.log_warnings; +@@session.log_warnings +1 +SET @@session.log_warnings = 50050; +SELECT @@session.log_warnings; +@@session.log_warnings +50050 +SET @@session.log_warnings = 65535; +SELECT @@session.log_warnings; +@@session.log_warnings +65535 +SET @@session.log_warnings = 65550; +SELECT @@session.log_warnings; +@@session.log_warnings +65550 +'#------------------FN_DYNVARS_067_05-----------------------#' +SET @@global.log_warnings = 100000000000; +SELECT @@global.log_warnings; +@@global.log_warnings +100000000000 +SET @@global.log_warnings = -1024; +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@global.log_warnings = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@global.log_warnings = test; +ERROR 42000: Incorrect argument type to variable 'log_warnings' +SELECT @@global.log_warnings; +@@global.log_warnings +0 +SET @@session.log_warnings = 100000000000; +SELECT @@session.log_warnings; +@@session.log_warnings +100000000000 +SET @@session.log_warnings = -2; +SELECT @@session.log_warnings; +@@session.log_warnings +0 +SET @@session.log_warnings = 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 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.log_warnings = test; +ERROR 42000: Incorrect argument type to variable 'log_warnings' +SELECT @@session.log_warnings; +@@session.log_warnings +0 +'#------------------FN_DYNVARS_067_06-----------------------#' +SELECT @@global.log_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='log_warnings'; +@@global.log_warnings = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_067_07-----------------------#' +SELECT @@session.log_warnings = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='log_warnings'; +@@session.log_warnings = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_067_08-----------------------#' +SET @@global.log_warnings = TRUE; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@global.log_warnings = FALSE; +SELECT @@global.log_warnings; +@@global.log_warnings +0 +'#---------------------FN_DYNVARS_067_09----------------------#' +SET @@global.log_warnings = 10; +SELECT @@log_warnings = @@global.log_warnings; +@@log_warnings = @@global.log_warnings +0 +'#---------------------FN_DYNVARS_067_10----------------------#' +SET @@log_warnings = 100; +SELECT @@log_warnings = @@local.log_warnings; +@@log_warnings = @@local.log_warnings +1 +SELECT @@local.log_warnings = @@session.log_warnings; +@@local.log_warnings = @@session.log_warnings +1 +'#---------------------FN_DYNVARS_067_11----------------------#' +SET log_warnings = 1; +SELECT @@log_warnings; +@@log_warnings +1 +SELECT local.log_warnings; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.log_warnings; +ERROR 42S02: Unknown table 'session' in field list +SELECT log_warnings = @@session.log_warnings; +ERROR 42S22: Unknown column 'log_warnings' in 'field list' +SET @@global.log_warnings = @start_global_value; +SELECT @@global.log_warnings; +@@global.log_warnings +1 +SET @@session.log_warnings = @start_session_value; +SELECT @@session.log_warnings; +@@session.log_warnings +1 diff --git a/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result new file mode 100644 index 00000000000..1dbeb50ff90 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_32.result @@ -0,0 +1,145 @@ +SET @start_value = @@global.max_binlog_cache_size; +SELECT @start_value; +@start_value +4294967295 +'#--------------------FN_DYNVARS_072_01------------------------#' +SET @@global.max_binlog_cache_size = 5000; +SET @@global.max_binlog_cache_size = DEFAULT; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +'#---------------------FN_DYNVARS_072_02-------------------------#' +SET @@global.max_binlog_cache_size = @start_value; +SELECT @@global.max_binlog_cache_size = 4294967295; +@@global.max_binlog_cache_size = 4294967295 +0 +'Bug# 34876: Incorrect Default Value is assigned to variable'; +'#--------------------FN_DYNVARS_072_03------------------------#' +SET @@global.max_binlog_cache_size = 4096; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 4294967295; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = 4294967294; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = 4097; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 65535; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +61440 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_072_04-------------------------#' +SET @@global.max_binlog_cache_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 100000000000; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '100000000000' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = -1024; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 1024; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '1024' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '4294967296' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = 4095; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '4095' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_binlog_cache_size = ON; +ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +'#-------------------FN_DYNVARS_072_05----------------------------#' +SET @@session.max_binlog_cache_size = 4096; +ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_binlog_cache_size; +ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_072_06------------------------#' +SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_binlog_cache_size'; +@@global.max_binlog_cache_size = VARIABLE_VALUE +1 +SELECT @@max_binlog_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_binlog_cache_size'; +@@max_binlog_cache_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_072_07----------------------#' +SET @@global.max_binlog_cache_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '1' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +'#---------------------FN_DYNVARS_072_08----------------------#' +SET @@global.max_binlog_cache_size = 5000; +SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size; +@@max_binlog_cache_size = @@global.max_binlog_cache_size +1 +'#---------------------FN_DYNVARS_072_09----------------------#' +SET max_binlog_cache_size = 6000; +ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_binlog_cache_size; +@@max_binlog_cache_size +4096 +SET local.max_binlog_cache_size = 7000; +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 'max_binlog_cache_size = 7000' at line 1 +SELECT local.max_binlog_cache_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_binlog_cache_size = 8000; +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 'max_binlog_cache_size = 8000' at line 1 +SELECT global.max_binlog_cache_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_binlog_cache_size = @@session.max_binlog_cache_size; +ERROR 42S22: Unknown column 'max_binlog_cache_size' in 'field list' +SET @@global.max_binlog_cache_size = @start_value; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 diff --git a/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result new file mode 100644 index 00000000000..30db3f14dd4 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result @@ -0,0 +1,141 @@ +SET @start_value = @@global.max_binlog_cache_size; +SELECT @start_value; +@start_value +18446744073709551615 +'#--------------------FN_DYNVARS_072_01------------------------#' +SET @@global.max_binlog_cache_size = 5000; +SET @@global.max_binlog_cache_size = DEFAULT; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +18446744073709547520 +'#---------------------FN_DYNVARS_072_02-------------------------#' +SET @@global.max_binlog_cache_size = @start_value; +SELECT @@global.max_binlog_cache_size = 4294967295; +@@global.max_binlog_cache_size = 4294967295 +0 +'Bug# 34876: Incorrect Default Value is assigned to variable'; +'#--------------------FN_DYNVARS_072_03------------------------#' +SET @@global.max_binlog_cache_size = 4096; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 4294967295; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = 4294967294; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294963200 +SET @@global.max_binlog_cache_size = 4097; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 65535; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +61440 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_072_04-------------------------#' +SET @@global.max_binlog_cache_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 100000000000; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +99999997952 +SET @@global.max_binlog_cache_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +99999997952 +SET @@global.max_binlog_cache_size = -1024; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 1024; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '1024' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 4294967296; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4294967296 +SET @@global.max_binlog_cache_size = 4095; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '4095' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_binlog_cache_size = ON; +ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_binlog_cache_size' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +'#-------------------FN_DYNVARS_072_05----------------------------#' +SET @@session.max_binlog_cache_size = 4096; +ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_binlog_cache_size; +ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable +'#----------------------FN_DYNVARS_072_06------------------------#' +SELECT @@global.max_binlog_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_binlog_cache_size'; +@@global.max_binlog_cache_size = VARIABLE_VALUE +1 +SELECT @@max_binlog_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_binlog_cache_size'; +@@max_binlog_cache_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_072_07----------------------#' +SET @@global.max_binlog_cache_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '1' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +SET @@global.max_binlog_cache_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_binlog_cache_size value: '0' +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +4096 +'#---------------------FN_DYNVARS_072_08----------------------#' +SET @@global.max_binlog_cache_size = 5000; +SELECT @@max_binlog_cache_size = @@global.max_binlog_cache_size; +@@max_binlog_cache_size = @@global.max_binlog_cache_size +1 +'#---------------------FN_DYNVARS_072_09----------------------#' +SET max_binlog_cache_size = 6000; +ERROR HY000: Variable 'max_binlog_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_binlog_cache_size; +@@max_binlog_cache_size +4096 +SET local.max_binlog_cache_size = 7000; +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 'max_binlog_cache_size = 7000' at line 1 +SELECT local.max_binlog_cache_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_binlog_cache_size = 8000; +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 'max_binlog_cache_size = 8000' at line 1 +SELECT global.max_binlog_cache_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_binlog_cache_size = @@session.max_binlog_cache_size; +ERROR 42S22: Unknown column 'max_binlog_cache_size' in 'field list' +SET @@global.max_binlog_cache_size = @start_value; +SELECT @@global.max_binlog_cache_size; +@@global.max_binlog_cache_size +18446744073709547520 diff --git a/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result new file mode 100644 index 00000000000..b786e0ce31a --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_32.result @@ -0,0 +1,137 @@ +SET @start_value = @@global.max_connect_errors; +SELECT @start_value; +@start_value +10 +'#--------------------FN_DYNVARS_073_01------------------------#' +SET @@global.max_connect_errors = 5000; +SET @@global.max_connect_errors = DEFAULT; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +10 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#---------------------FN_DYNVARS_073_02-------------------------#' +SET @@global.max_connect_errors = @start_value; +SELECT @@global.max_connect_errors = 10; +@@global.max_connect_errors = 10 +1 +'#--------------------FN_DYNVARS_073_03------------------------#' +SET @@global.max_connect_errors = 4096; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4096 +SET @@global.max_connect_errors = 4294967294; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967294 +SET @@global.max_connect_errors = 4294967295; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +SET @@global.max_connect_errors = 1; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 2; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +2 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_073_04-------------------------#' +SET @@global.max_connect_errors = -1; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 100000000000; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '100000000000' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +SET @@global.max_connect_errors = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_connect_errors' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +SET @@global.max_connect_errors = -1024; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 0; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '4294967296' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_connect_errors = ON; +ERROR 42000: Incorrect argument type to variable 'max_connect_errors' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +SET @@global.max_connect_errors = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_connect_errors' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +'#-------------------FN_DYNVARS_073_05----------------------------#' +SET @@session.max_connect_errors = 4096; +ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_connect_errors; +ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable +'#----------------------FN_DYNVARS_073_06------------------------#' +SELECT @@global.max_connect_errors = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_connect_errors'; +@@global.max_connect_errors = VARIABLE_VALUE +1 +SELECT @@max_connect_errors = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_connect_errors'; +@@max_connect_errors = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_073_07----------------------#' +SET @@global.max_connect_errors = TRUE; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +'#---------------------FN_DYNVARS_073_08----------------------#' +SET @@global.max_connect_errors = 5000; +SELECT @@max_connect_errors = @@global.max_connect_errors; +@@max_connect_errors = @@global.max_connect_errors +1 +'#---------------------FN_DYNVARS_073_09----------------------#' +SET max_connect_errors = 6000; +ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_connect_errors; +@@max_connect_errors +5000 +SET local.max_connect_errors = 7000; +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 'max_connect_errors = 7000' at line 1 +SELECT local.max_connect_errors; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_connect_errors = 8000; +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 'max_connect_errors = 8000' at line 1 +SELECT global.max_connect_errors; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_connect_errors = @@session.max_connect_errors; +ERROR 42S22: Unknown column 'max_connect_errors' in 'field list' +SET @@global.max_connect_errors = @start_value; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +10 diff --git a/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result new file mode 100644 index 00000000000..8117b650651 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result @@ -0,0 +1,133 @@ +SET @start_value = @@global.max_connect_errors; +SELECT @start_value; +@start_value +10 +'#--------------------FN_DYNVARS_073_01------------------------#' +SET @@global.max_connect_errors = 5000; +SET @@global.max_connect_errors = DEFAULT; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +10 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#---------------------FN_DYNVARS_073_02-------------------------#' +SET @@global.max_connect_errors = @start_value; +SELECT @@global.max_connect_errors = 10; +@@global.max_connect_errors = 10 +1 +'#--------------------FN_DYNVARS_073_03------------------------#' +SET @@global.max_connect_errors = 4096; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4096 +SET @@global.max_connect_errors = 4294967294; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967294 +SET @@global.max_connect_errors = 4294967295; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967295 +SET @@global.max_connect_errors = 1; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 2; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +2 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_073_04-------------------------#' +SET @@global.max_connect_errors = -1; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 100000000000; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +100000000000 +SET @@global.max_connect_errors = 10000.01; +ERROR 42000: Incorrect argument type to variable 'max_connect_errors' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +100000000000 +SET @@global.max_connect_errors = -1024; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 0; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = 4294967296; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967296 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.max_connect_errors = ON; +ERROR 42000: Incorrect argument type to variable 'max_connect_errors' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967296 +SET @@global.max_connect_errors = 'test'; +ERROR 42000: Incorrect argument type to variable 'max_connect_errors' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +4294967296 +'#-------------------FN_DYNVARS_073_05----------------------------#' +SET @@session.max_connect_errors = 4096; +ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@session.max_connect_errors; +ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable +'#----------------------FN_DYNVARS_073_06------------------------#' +SELECT @@global.max_connect_errors = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_connect_errors'; +@@global.max_connect_errors = VARIABLE_VALUE +1 +SELECT @@max_connect_errors = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_connect_errors'; +@@max_connect_errors = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_073_07----------------------#' +SET @@global.max_connect_errors = TRUE; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +SET @@global.max_connect_errors = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_connect_errors value: '0' +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +1 +'#---------------------FN_DYNVARS_073_08----------------------#' +SET @@global.max_connect_errors = 5000; +SELECT @@max_connect_errors = @@global.max_connect_errors; +@@max_connect_errors = @@global.max_connect_errors +1 +'#---------------------FN_DYNVARS_073_09----------------------#' +SET max_connect_errors = 6000; +ERROR HY000: Variable 'max_connect_errors' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@max_connect_errors; +@@max_connect_errors +5000 +SET local.max_connect_errors = 7000; +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 'max_connect_errors = 7000' at line 1 +SELECT local.max_connect_errors; +ERROR 42S02: Unknown table 'local' in field list +SET global.max_connect_errors = 8000; +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 'max_connect_errors = 8000' at line 1 +SELECT global.max_connect_errors; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_connect_errors = @@session.max_connect_errors; +ERROR 42S22: Unknown column 'max_connect_errors' in 'field list' +SET @@global.max_connect_errors = @start_value; +SELECT @@global.max_connect_errors; +@@global.max_connect_errors +10 diff --git a/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result new file mode 100644 index 00000000000..04eaa3ddd19 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_32.result @@ -0,0 +1,196 @@ +SET @start_global_value = @@global.max_heap_table_size; +SELECT @start_global_value; +@start_global_value +1048576 +SET @start_session_value = @@session.max_heap_table_size; +SELECT @start_session_value; +@start_session_value +1048576 +'#--------------------FN_DYNVARS_077_01-------------------------#' +SET @@global.max_heap_table_size = 1677721610; +SET @@global.max_heap_table_size = DEFAULT; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16777216 +SET @@session.max_heap_table_size = 1677721610; +SET @@session.max_heap_table_size = DEFAULT; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16777216 +'#--------------------FN_DYNVARS_077_02-------------------------#' +SET @@global.max_heap_table_size = DEFAULT; +SELECT @@global.max_heap_table_size = 16777216; +@@global.max_heap_table_size = 16777216 +1 +SET @@session.max_heap_table_size = DEFAULT; +SELECT @@session.max_heap_table_size = 16777216; +@@session.max_heap_table_size = 16777216 +1 +'#--------------------FN_DYNVARS_077_03-------------------------#' +SET @@global.max_heap_table_size = 16384; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 16385; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 65535; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +64512 +SET @@global.max_heap_table_size = 4294967294; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +SET @@global.max_heap_table_size = 4294967295; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_077_04-------------------------#' +SET @@session.max_heap_table_size = 16384; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 16385; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 65535; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +64512 +SET @@session.max_heap_table_size = 4294967294; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +SET @@session.max_heap_table_size = 4294967295; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_077_05-----------------------#' +SET @@global.max_heap_table_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = -1024; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 1024; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '1024' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 16383; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '16383' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 4294967296; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +SET @@global.max_heap_table_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +SET @@global.max_heap_table_size = test; +ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +SET @@session.max_heap_table_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 16383; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '16383' +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 4294967296; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +SET @@session.max_heap_table_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.max_heap_table_size = 10737418241; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.max_heap_table_size = test; +ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +'#------------------FN_DYNVARS_077_06-----------------------#' +SELECT @@global.max_heap_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_heap_table_size'; +@@global.max_heap_table_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_077_07-----------------------#' +SELECT @@session.max_heap_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_heap_table_size'; +@@session.max_heap_table_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_077_08-----------------------#' +SET @@global.max_heap_table_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '1' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +'#---------------------FN_DYNVARS_077_09----------------------#' +SET @@global.max_heap_table_size = 163845; +SELECT @@max_heap_table_size = @@global.max_heap_table_size; +@@max_heap_table_size = @@global.max_heap_table_size +0 +'#---------------------FN_DYNVARS_077_10----------------------#' +SET @@max_heap_table_size = 16777216; +SELECT @@max_heap_table_size = @@local.max_heap_table_size; +@@max_heap_table_size = @@local.max_heap_table_size +1 +SELECT @@local.max_heap_table_size = @@session.max_heap_table_size; +@@local.max_heap_table_size = @@session.max_heap_table_size +1 +'#---------------------FN_DYNVARS_077_11----------------------#' +SET max_heap_table_size = 316777216; +SELECT @@max_heap_table_size; +@@max_heap_table_size +316776448 +SELECT local.max_heap_table_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_heap_table_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_heap_table_size = @@session.max_heap_table_size; +ERROR 42S22: Unknown column 'max_heap_table_size' in 'field list' +SET @@global.max_heap_table_size = @start_global_value; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +1048576 +SET @@session.max_heap_table_size = @start_session_value; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +1048576 diff --git a/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result new file mode 100644 index 00000000000..ebab80f376b --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result @@ -0,0 +1,196 @@ +SET @start_global_value = @@global.max_heap_table_size; +SELECT @start_global_value; +@start_global_value +1048576 +SET @start_session_value = @@session.max_heap_table_size; +SELECT @start_session_value; +@start_session_value +1048576 +'#--------------------FN_DYNVARS_077_01-------------------------#' +SET @@global.max_heap_table_size = 1677721610; +SET @@global.max_heap_table_size = DEFAULT; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16777216 +SET @@session.max_heap_table_size = 1677721610; +SET @@session.max_heap_table_size = DEFAULT; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16777216 +'#--------------------FN_DYNVARS_077_02-------------------------#' +SET @@global.max_heap_table_size = DEFAULT; +SELECT @@global.max_heap_table_size = 16777216; +@@global.max_heap_table_size = 16777216 +1 +SET @@session.max_heap_table_size = DEFAULT; +SELECT @@session.max_heap_table_size = 16777216; +@@session.max_heap_table_size = 16777216 +1 +'#--------------------FN_DYNVARS_077_03-------------------------#' +SET @@global.max_heap_table_size = 16384; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 16385; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 65535; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +64512 +SET @@global.max_heap_table_size = 4294967294; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +SET @@global.max_heap_table_size = 4294967295; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_077_04-------------------------#' +SET @@session.max_heap_table_size = 16384; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 16385; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 65535; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +64512 +SET @@session.max_heap_table_size = 4294967294; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +SET @@session.max_heap_table_size = 4294967295; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_077_05-----------------------#' +SET @@global.max_heap_table_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = -1024; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 1024; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '1024' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 16383; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '16383' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = 4294967296; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294967296 +SET @@global.max_heap_table_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294967296 +SET @@global.max_heap_table_size = test; +ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +4294967296 +SET @@session.max_heap_table_size = -1; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 16383; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '16383' +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +16384 +SET @@session.max_heap_table_size = 4294967296; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +4294967296 +SET @@session.max_heap_table_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.max_heap_table_size = 10737418241; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +10737418240 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.max_heap_table_size = test; +ERROR 42000: Incorrect argument type to variable 'max_heap_table_size' +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +10737418240 +'#------------------FN_DYNVARS_077_06-----------------------#' +SELECT @@global.max_heap_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_heap_table_size'; +@@global.max_heap_table_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_077_07-----------------------#' +SELECT @@session.max_heap_table_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_heap_table_size'; +@@session.max_heap_table_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_077_08-----------------------#' +SET @@global.max_heap_table_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '1' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +SET @@global.max_heap_table_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_heap_table_size value: '0' +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +16384 +'#---------------------FN_DYNVARS_077_09----------------------#' +SET @@global.max_heap_table_size = 163845; +SELECT @@max_heap_table_size = @@global.max_heap_table_size; +@@max_heap_table_size = @@global.max_heap_table_size +0 +'#---------------------FN_DYNVARS_077_10----------------------#' +SET @@max_heap_table_size = 16777216; +SELECT @@max_heap_table_size = @@local.max_heap_table_size; +@@max_heap_table_size = @@local.max_heap_table_size +1 +SELECT @@local.max_heap_table_size = @@session.max_heap_table_size; +@@local.max_heap_table_size = @@session.max_heap_table_size +1 +'#---------------------FN_DYNVARS_077_11----------------------#' +SET max_heap_table_size = 316777216; +SELECT @@max_heap_table_size; +@@max_heap_table_size +316776448 +SELECT local.max_heap_table_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_heap_table_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_heap_table_size = @@session.max_heap_table_size; +ERROR 42S22: Unknown column 'max_heap_table_size' in 'field list' +SET @@global.max_heap_table_size = @start_global_value; +SELECT @@global.max_heap_table_size; +@@global.max_heap_table_size +1048576 +SET @@session.max_heap_table_size = @start_session_value; +SELECT @@session.max_heap_table_size; +@@session.max_heap_table_size +1048576 diff --git a/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result new file mode 100644 index 00000000000..64828fbe619 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_32.result @@ -0,0 +1,180 @@ +SET @start_global_value = @@global.max_seeks_for_key; +SELECT @start_global_value; +@start_global_value +4294967295 +SET @start_session_value = @@session.max_seeks_for_key; +SELECT @start_session_value; +@start_session_value +4294967295 +'#--------------------FN_DYNVARS_083_01-------------------------#' +SET @@global.max_seeks_for_key = 100; +SET @@global.max_seeks_for_key = DEFAULT; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@session.max_seeks_for_key = 200; +SET @@session.max_seeks_for_key = DEFAULT; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967295 +'#--------------------FN_DYNVARS_083_02-------------------------#' +SET @@global.max_seeks_for_key = DEFAULT; +SELECT @@global.max_seeks_for_key = 4294967295; +@@global.max_seeks_for_key = 4294967295 +1 +SET @@session.max_seeks_for_key = DEFAULT; +SELECT @@session.max_seeks_for_key = 4294967295; +@@session.max_seeks_for_key = 4294967295 +1 +'#--------------------FN_DYNVARS_083_03-------------------------#' +SET @@global.max_seeks_for_key = 1; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = 2; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +2 +SET @@global.max_seeks_for_key = 65536; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +65536 +SET @@global.max_seeks_for_key = 4294967295; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@global.max_seeks_for_key = 4294967294; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967294 +'#--------------------FN_DYNVARS_083_04-------------------------#' +SET @@session.max_seeks_for_key = 1; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +1 +SET @@session.max_seeks_for_key = 2; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +2 +SET @@session.max_seeks_for_key = 4294967295; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967295 +SET @@session.max_seeks_for_key = 4294967294; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967294 +SET @@session.max_seeks_for_key = 65535; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +65535 +'#------------------FN_DYNVARS_083_05-----------------------#' +SET @@global.max_seeks_for_key = 0; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = -1024; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '4294967296' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@global.max_seeks_for_key = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@global.max_seeks_for_key = test; +ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@session.max_seeks_for_key = 0; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +1 +SET @@session.max_seeks_for_key = -2; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +1 +SET @@session.max_seeks_for_key = 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.max_seeks_for_key = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '4294967296' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.max_seeks_for_key = test; +ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967295 +'#------------------FN_DYNVARS_083_06-----------------------#' +SELECT @@global.max_seeks_for_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_seeks_for_key'; +@@global.max_seeks_for_key = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_083_07-----------------------#' +SELECT @@session.max_seeks_for_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_seeks_for_key'; +@@session.max_seeks_for_key = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_083_08-----------------------#' +SET @@global.max_seeks_for_key = TRUE; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +'#---------------------FN_DYNVARS_083_09----------------------#' +SET @@global.max_seeks_for_key = 10; +SELECT @@max_seeks_for_key = @@global.max_seeks_for_key; +@@max_seeks_for_key = @@global.max_seeks_for_key +0 +'#---------------------FN_DYNVARS_083_10----------------------#' +SET @@max_seeks_for_key = 100; +SELECT @@max_seeks_for_key = @@local.max_seeks_for_key; +@@max_seeks_for_key = @@local.max_seeks_for_key +1 +SELECT @@local.max_seeks_for_key = @@session.max_seeks_for_key; +@@local.max_seeks_for_key = @@session.max_seeks_for_key +1 +'#---------------------FN_DYNVARS_083_11----------------------#' +SET max_seeks_for_key = 1; +SELECT @@max_seeks_for_key; +@@max_seeks_for_key +1 +SELECT local.max_seeks_for_key; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_seeks_for_key; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_seeks_for_key = @@session.max_seeks_for_key; +ERROR 42S22: Unknown column 'max_seeks_for_key' in 'field list' +SET @@global.max_seeks_for_key = @start_global_value; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@session.max_seeks_for_key = @start_session_value; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967295 diff --git a/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result new file mode 100644 index 00000000000..eefb829cdae --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result @@ -0,0 +1,176 @@ +SET @start_global_value = @@global.max_seeks_for_key; +SELECT @start_global_value; +@start_global_value +18446744073709551615 +SET @start_session_value = @@session.max_seeks_for_key; +SELECT @start_session_value; +@start_session_value +18446744073709551615 +'#--------------------FN_DYNVARS_083_01-------------------------#' +SET @@global.max_seeks_for_key = 100; +SET @@global.max_seeks_for_key = DEFAULT; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +18446744073709551615 +SET @@session.max_seeks_for_key = 200; +SET @@session.max_seeks_for_key = DEFAULT; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +18446744073709551615 +'#--------------------FN_DYNVARS_083_02-------------------------#' +SET @@global.max_seeks_for_key = DEFAULT; +SELECT @@global.max_seeks_for_key = 4294967295; +@@global.max_seeks_for_key = 4294967295 +0 +SET @@session.max_seeks_for_key = DEFAULT; +SELECT @@session.max_seeks_for_key = 4294967295; +@@session.max_seeks_for_key = 4294967295 +0 +'#--------------------FN_DYNVARS_083_03-------------------------#' +SET @@global.max_seeks_for_key = 1; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = 2; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +2 +SET @@global.max_seeks_for_key = 65536; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +65536 +SET @@global.max_seeks_for_key = 4294967295; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967295 +SET @@global.max_seeks_for_key = 4294967294; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967294 +'#--------------------FN_DYNVARS_083_04-------------------------#' +SET @@session.max_seeks_for_key = 1; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +1 +SET @@session.max_seeks_for_key = 2; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +2 +SET @@session.max_seeks_for_key = 4294967295; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967295 +SET @@session.max_seeks_for_key = 4294967294; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967294 +SET @@session.max_seeks_for_key = 65535; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +65535 +'#------------------FN_DYNVARS_083_05-----------------------#' +SET @@global.max_seeks_for_key = 0; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = -1024; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = 4294967296; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967296 +SET @@global.max_seeks_for_key = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967296 +SET @@global.max_seeks_for_key = test; +ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +4294967296 +SET @@session.max_seeks_for_key = 0; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +1 +SET @@session.max_seeks_for_key = -2; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +1 +SET @@session.max_seeks_for_key = 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.max_seeks_for_key = 4294967296; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967296 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.max_seeks_for_key = test; +ERROR 42000: Incorrect argument type to variable 'max_seeks_for_key' +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +4294967296 +'#------------------FN_DYNVARS_083_06-----------------------#' +SELECT @@global.max_seeks_for_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_seeks_for_key'; +@@global.max_seeks_for_key = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_083_07-----------------------#' +SELECT @@session.max_seeks_for_key = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_seeks_for_key'; +@@session.max_seeks_for_key = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_083_08-----------------------#' +SET @@global.max_seeks_for_key = TRUE; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +SET @@global.max_seeks_for_key = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_seeks_for_key value: '0' +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +1 +'#---------------------FN_DYNVARS_083_09----------------------#' +SET @@global.max_seeks_for_key = 10; +SELECT @@max_seeks_for_key = @@global.max_seeks_for_key; +@@max_seeks_for_key = @@global.max_seeks_for_key +0 +'#---------------------FN_DYNVARS_083_10----------------------#' +SET @@max_seeks_for_key = 100; +SELECT @@max_seeks_for_key = @@local.max_seeks_for_key; +@@max_seeks_for_key = @@local.max_seeks_for_key +1 +SELECT @@local.max_seeks_for_key = @@session.max_seeks_for_key; +@@local.max_seeks_for_key = @@session.max_seeks_for_key +1 +'#---------------------FN_DYNVARS_083_11----------------------#' +SET max_seeks_for_key = 1; +SELECT @@max_seeks_for_key; +@@max_seeks_for_key +1 +SELECT local.max_seeks_for_key; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_seeks_for_key; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_seeks_for_key = @@session.max_seeks_for_key; +ERROR 42S22: Unknown column 'max_seeks_for_key' in 'field list' +SET @@global.max_seeks_for_key = @start_global_value; +SELECT @@global.max_seeks_for_key; +@@global.max_seeks_for_key +18446744073709551615 +SET @@session.max_seeks_for_key = @start_session_value; +SELECT @@session.max_seeks_for_key; +@@session.max_seeks_for_key +18446744073709551615 diff --git a/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result new file mode 100644 index 00000000000..5f959069661 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_32.result @@ -0,0 +1,197 @@ +SET @start_global_value = @@global.max_tmp_tables; +SELECT @start_global_value; +@start_global_value +32 +SET @start_session_value = @@session.max_tmp_tables; +SELECT @start_session_value; +@start_session_value +32 +'#--------------------FN_DYNVARS_086_01-------------------------#' +SET @@global.max_tmp_tables = 1000; +SET @@global.max_tmp_tables = DEFAULT; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +32 +SET @@session.max_tmp_tables = 1000; +SET @@session.max_tmp_tables = DEFAULT; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +32 +'#--------------------FN_DYNVARS_086_02-------------------------#' +SET @@global.max_tmp_tables = DEFAULT; +SELECT @@global.max_tmp_tables = 32; +@@global.max_tmp_tables = 32 +1 +SET @@session.max_tmp_tables = DEFAULT; +SELECT @@session.max_tmp_tables = 32; +@@session.max_tmp_tables = 32 +1 +'#--------------------FN_DYNVARS_086_03-------------------------#' +SET @@global.max_tmp_tables = 1; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = 2; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +2 +SET @@global.max_tmp_tables = 65536; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +65536 +SET @@global.max_tmp_tables = 4294967295; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967295 +SET @@global.max_tmp_tables = 4294967294; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967294 +'#--------------------FN_DYNVARS_086_04-------------------------#' +SET @@session.max_tmp_tables = 1; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +1 +SET @@session.max_tmp_tables = 2; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +2 +SET @@session.max_tmp_tables = 65536; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +65536 +SET @@session.max_tmp_tables = 4294967295; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967295 +SET @@session.max_tmp_tables = 4294967294; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967294 +'#------------------FN_DYNVARS_086_05-----------------------#' +SET @@global.max_tmp_tables = -1024; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '4294967296' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967295 +SET @@global.max_tmp_tables = -1; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = 429496729500; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '429496729500' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967295 +SET @@global.max_tmp_tables = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967295 +SET @@global.max_tmp_tables = test; +ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967295 +SET @@session.max_tmp_tables = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '4294967296' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967295 +SET @@session.max_tmp_tables = -1; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +1 +SET @@session.max_tmp_tables = 429496729500; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '429496729500' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967295 +SET @@session.max_tmp_tables = -001; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +1 +SET @@session.max_tmp_tables = 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.max_tmp_tables = 10737418241; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '10737418241' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967295 +SET @@session.max_tmp_tables = test; +ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967295 +'#------------------FN_DYNVARS_086_06-----------------------#' +SELECT @@global.max_tmp_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_tmp_tables'; +@@global.max_tmp_tables = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_086_07-----------------------#' +SELECT @@session.max_tmp_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_tmp_tables'; +@@session.max_tmp_tables = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_086_08-----------------------#' +SET @@global.max_tmp_tables = TRUE; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +'#---------------------FN_DYNVARS_086_09----------------------#' +SET @@global.max_tmp_tables = 20; +SELECT @@max_tmp_tables = @@global.max_tmp_tables; +@@max_tmp_tables = @@global.max_tmp_tables +0 +'#---------------------FN_DYNVARS_086_10----------------------#' +SET @@max_tmp_tables = 255; +SELECT @@max_tmp_tables = @@local.max_tmp_tables; +@@max_tmp_tables = @@local.max_tmp_tables +1 +SELECT @@local.max_tmp_tables = @@session.max_tmp_tables; +@@local.max_tmp_tables = @@session.max_tmp_tables +1 +'#---------------------FN_DYNVARS_086_11----------------------#' +SET max_tmp_tables = 102; +SELECT @@max_tmp_tables; +@@max_tmp_tables +102 +SELECT local.max_tmp_tables; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_tmp_tables; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_tmp_tables = @@session.max_tmp_tables; +ERROR 42S22: Unknown column 'max_tmp_tables' in 'field list' +SET @@global.max_tmp_tables = @start_global_value; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +32 +SET @@session.max_tmp_tables = @start_session_value; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +32 diff --git a/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result new file mode 100644 index 00000000000..4b9f68c509e --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result @@ -0,0 +1,187 @@ +SET @start_global_value = @@global.max_tmp_tables; +SELECT @start_global_value; +@start_global_value +32 +SET @start_session_value = @@session.max_tmp_tables; +SELECT @start_session_value; +@start_session_value +32 +'#--------------------FN_DYNVARS_086_01-------------------------#' +SET @@global.max_tmp_tables = 1000; +SET @@global.max_tmp_tables = DEFAULT; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +32 +SET @@session.max_tmp_tables = 1000; +SET @@session.max_tmp_tables = DEFAULT; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +32 +'#--------------------FN_DYNVARS_086_02-------------------------#' +SET @@global.max_tmp_tables = DEFAULT; +SELECT @@global.max_tmp_tables = 32; +@@global.max_tmp_tables = 32 +1 +SET @@session.max_tmp_tables = DEFAULT; +SELECT @@session.max_tmp_tables = 32; +@@session.max_tmp_tables = 32 +1 +'#--------------------FN_DYNVARS_086_03-------------------------#' +SET @@global.max_tmp_tables = 1; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = 2; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +2 +SET @@global.max_tmp_tables = 65536; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +65536 +SET @@global.max_tmp_tables = 4294967295; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967295 +SET @@global.max_tmp_tables = 4294967294; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967294 +'#--------------------FN_DYNVARS_086_04-------------------------#' +SET @@session.max_tmp_tables = 1; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +1 +SET @@session.max_tmp_tables = 2; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +2 +SET @@session.max_tmp_tables = 65536; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +65536 +SET @@session.max_tmp_tables = 4294967295; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967295 +SET @@session.max_tmp_tables = 4294967294; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967294 +'#------------------FN_DYNVARS_086_05-----------------------#' +SET @@global.max_tmp_tables = -1024; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = 4294967296; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +4294967296 +SET @@global.max_tmp_tables = -1; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = 429496729500; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +429496729500 +SET @@global.max_tmp_tables = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +429496729500 +SET @@global.max_tmp_tables = test; +ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +429496729500 +SET @@session.max_tmp_tables = 4294967296; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +4294967296 +SET @@session.max_tmp_tables = -1; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +1 +SET @@session.max_tmp_tables = 429496729500; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +429496729500 +SET @@session.max_tmp_tables = -001; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +1 +SET @@session.max_tmp_tables = 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.max_tmp_tables = 10737418241; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +10737418241 +SET @@session.max_tmp_tables = test; +ERROR 42000: Incorrect argument type to variable 'max_tmp_tables' +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +10737418241 +'#------------------FN_DYNVARS_086_06-----------------------#' +SELECT @@global.max_tmp_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_tmp_tables'; +@@global.max_tmp_tables = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_086_07-----------------------#' +SELECT @@session.max_tmp_tables = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='max_tmp_tables'; +@@session.max_tmp_tables = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_086_08-----------------------#' +SET @@global.max_tmp_tables = TRUE; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +SET @@global.max_tmp_tables = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_tmp_tables value: '0' +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +1 +'#---------------------FN_DYNVARS_086_09----------------------#' +SET @@global.max_tmp_tables = 20; +SELECT @@max_tmp_tables = @@global.max_tmp_tables; +@@max_tmp_tables = @@global.max_tmp_tables +0 +'#---------------------FN_DYNVARS_086_10----------------------#' +SET @@max_tmp_tables = 255; +SELECT @@max_tmp_tables = @@local.max_tmp_tables; +@@max_tmp_tables = @@local.max_tmp_tables +1 +SELECT @@local.max_tmp_tables = @@session.max_tmp_tables; +@@local.max_tmp_tables = @@session.max_tmp_tables +1 +'#---------------------FN_DYNVARS_086_11----------------------#' +SET max_tmp_tables = 102; +SELECT @@max_tmp_tables; +@@max_tmp_tables +102 +SELECT local.max_tmp_tables; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.max_tmp_tables; +ERROR 42S02: Unknown table 'session' in field list +SELECT max_tmp_tables = @@session.max_tmp_tables; +ERROR 42S22: Unknown column 'max_tmp_tables' in 'field list' +SET @@global.max_tmp_tables = @start_global_value; +SELECT @@global.max_tmp_tables; +@@global.max_tmp_tables +32 +SET @@session.max_tmp_tables = @start_session_value; +SELECT @@session.max_tmp_tables; +@@session.max_tmp_tables +32 diff --git a/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result new file mode 100644 index 00000000000..0c9c3c00c1f --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_32.result @@ -0,0 +1,108 @@ +SET @start_global_value = @@global.max_write_lock_count; +SELECT @start_global_value; +@start_global_value +4294967295 +'#--------------------FN_DYNVARS_088_01-------------------------#' +SET @@global.max_write_lock_count = 1000; +SET @@global.max_write_lock_count = DEFAULT; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +'#--------------------FN_DYNVARS_088_02-------------------------#' +SET @@global.max_write_lock_count = DEFAULT; +SELECT @@global.max_write_lock_count = 4294967295; +@@global.max_write_lock_count = 4294967295 +1 +'#--------------------FN_DYNVARS_088_03-------------------------#' +SET @@global.max_write_lock_count = 1; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = 2; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +2 +SET @@global.max_write_lock_count = 65536; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +65536 +SET @@global.max_write_lock_count = 4294967295; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +SET @@global.max_write_lock_count = 4294967294; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967294 +'#------------------FN_DYNVARS_088_04-----------------------#' +SET @@global.max_write_lock_count = -1024; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '0' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = 4294967296; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '4294967296' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +SET @@global.max_write_lock_count = -1; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '0' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = 429496729500; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '429496729500' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +SET @@global.max_write_lock_count = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +SET @@global.max_write_lock_count = test; +ERROR 42000: Incorrect argument type to variable 'max_write_lock_count' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +'#------------------FN_DYNVARS_088_05-----------------------#' +SELECT @@global.max_write_lock_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_write_lock_count'; +@@global.max_write_lock_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_088_06-----------------------#' +SET @@global.max_write_lock_count = TRUE; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '0' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +'#---------------------FN_DYNVARS_088_07----------------------#' +SET @@global.max_write_lock_count = 20; +SELECT @@max_write_lock_count = @@global.max_write_lock_count; +@@max_write_lock_count = @@global.max_write_lock_count +1 +'#---------------------FN_DYNVARS_088_08----------------------#' +SET @@global.max_write_lock_count = 102; +SELECT @@max_write_lock_count; +@@max_write_lock_count +102 +SELECT local.max_write_lock_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.max_write_lock_count; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_write_lock_count = @@global.max_write_lock_count; +ERROR 42S22: Unknown column 'max_write_lock_count' in 'field list' +SET @@global.max_write_lock_count = @start_global_value; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 diff --git a/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result new file mode 100644 index 00000000000..d74586841dd --- /dev/null +++ b/mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result @@ -0,0 +1,104 @@ +SET @start_global_value = @@global.max_write_lock_count; +SELECT @start_global_value; +@start_global_value +18446744073709551615 +'#--------------------FN_DYNVARS_088_01-------------------------#' +SET @@global.max_write_lock_count = 1000; +SET @@global.max_write_lock_count = DEFAULT; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +18446744073709551615 +'#--------------------FN_DYNVARS_088_02-------------------------#' +SET @@global.max_write_lock_count = DEFAULT; +SELECT @@global.max_write_lock_count = 4294967295; +@@global.max_write_lock_count = 4294967295 +0 +'#--------------------FN_DYNVARS_088_03-------------------------#' +SET @@global.max_write_lock_count = 1; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = 2; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +2 +SET @@global.max_write_lock_count = 65536; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +65536 +SET @@global.max_write_lock_count = 4294967295; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967295 +SET @@global.max_write_lock_count = 4294967294; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967294 +'#------------------FN_DYNVARS_088_04-----------------------#' +SET @@global.max_write_lock_count = -1024; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '0' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = 4294967296; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +4294967296 +SET @@global.max_write_lock_count = -1; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '0' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = 429496729500; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +429496729500 +SET @@global.max_write_lock_count = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +429496729500 +SET @@global.max_write_lock_count = test; +ERROR 42000: Incorrect argument type to variable 'max_write_lock_count' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +429496729500 +'#------------------FN_DYNVARS_088_05-----------------------#' +SELECT @@global.max_write_lock_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='max_write_lock_count'; +@@global.max_write_lock_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_088_06-----------------------#' +SET @@global.max_write_lock_count = TRUE; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +SET @@global.max_write_lock_count = FALSE; +Warnings: +Warning 1292 Truncated incorrect max_write_lock_count value: '0' +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +1 +'#---------------------FN_DYNVARS_088_07----------------------#' +SET @@global.max_write_lock_count = 20; +SELECT @@max_write_lock_count = @@global.max_write_lock_count; +@@max_write_lock_count = @@global.max_write_lock_count +1 +'#---------------------FN_DYNVARS_088_08----------------------#' +SET @@global.max_write_lock_count = 102; +SELECT @@max_write_lock_count; +@@max_write_lock_count +102 +SELECT local.max_write_lock_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT global.max_write_lock_count; +ERROR 42S02: Unknown table 'global' in field list +SELECT max_write_lock_count = @@global.max_write_lock_count; +ERROR 42S22: Unknown column 'max_write_lock_count' in 'field list' +SET @@global.max_write_lock_count = @start_global_value; +SELECT @@global.max_write_lock_count; +@@global.max_write_lock_count +18446744073709551615 diff --git a/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result new file mode 100644 index 00000000000..c0315944a8a --- /dev/null +++ b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_32.result @@ -0,0 +1,180 @@ +SET @start_global_value = @@global.min_examined_row_limit; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.min_examined_row_limit; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_089_01-------------------------#' +SET @@global.min_examined_row_limit = 100; +SET @@global.min_examined_row_limit = DEFAULT; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = 200; +SET @@session.min_examined_row_limit = DEFAULT; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 +'#--------------------FN_DYNVARS_089_02-------------------------#' +SET @@global.min_examined_row_limit = DEFAULT; +SELECT @@global.min_examined_row_limit = 0; +@@global.min_examined_row_limit = 0 +1 +SET @@session.min_examined_row_limit = DEFAULT; +SELECT @@session.min_examined_row_limit = 0; +@@session.min_examined_row_limit = 0 +1 +'#--------------------FN_DYNVARS_089_03-------------------------#' +SET @@global.min_examined_row_limit = 0; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@global.min_examined_row_limit = 1; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +1 +SET @@global.min_examined_row_limit = 60020; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +60020 +SET @@global.min_examined_row_limit = 65535; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +65535 +SET @@global.min_examined_row_limit = 4294967295; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967295 +SET @@global.min_examined_row_limit = 4294967294; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967294 +'#--------------------FN_DYNVARS_089_04-------------------------#' +SET @@session.min_examined_row_limit = 0; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = 1; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +1 +SET @@session.min_examined_row_limit = 50050; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +50050 +SET @@session.min_examined_row_limit = 65535; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +65535 +SET @@session.min_examined_row_limit = 4294967295; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295 +SET @@session.min_examined_row_limit = 4294967294; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967294 +'#------------------FN_DYNVARS_089_05-----------------------#' +SET @@global.min_examined_row_limit = 429496726; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +429496726 +SET @@global.min_examined_row_limit = -1024; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@global.min_examined_row_limit = 429496729500; +Warnings: +Warning 1292 Truncated incorrect min_examined_row_limit value: '429496729500' +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967295 +SET @@global.min_examined_row_limit = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967295 +SET @@global.min_examined_row_limit = test; +ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967295 +SET @@session.min_examined_row_limit = 4294967296; +Warnings: +Warning 1292 Truncated incorrect min_examined_row_limit value: '4294967296' +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295 +SET @@session.min_examined_row_limit = -1; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = 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.min_examined_row_limit = 4294967295021; +Warnings: +Warning 1292 Truncated incorrect min_examined_row_limit value: '4294967295021' +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.min_examined_row_limit = test; +ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295 +'#------------------FN_DYNVARS_089_06-----------------------#' +SELECT @@global.min_examined_row_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='min_examined_row_limit'; +@@global.min_examined_row_limit = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_089_07-----------------------#' +SELECT @@session.min_examined_row_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='min_examined_row_limit'; +@@session.min_examined_row_limit = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_089_08-----------------------#' +SET @@global.min_examined_row_limit = TRUE; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +1 +SET @@global.min_examined_row_limit = FALSE; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +'#---------------------FN_DYNVARS_089_09----------------------#' +SET @@global.min_examined_row_limit = 10; +SELECT @@min_examined_row_limit = @@global.min_examined_row_limit; +@@min_examined_row_limit = @@global.min_examined_row_limit +0 +'#---------------------FN_DYNVARS_089_10----------------------#' +SET @@min_examined_row_limit = 100; +SELECT @@min_examined_row_limit = @@local.min_examined_row_limit; +@@min_examined_row_limit = @@local.min_examined_row_limit +1 +SELECT @@local.min_examined_row_limit = @@session.min_examined_row_limit; +@@local.min_examined_row_limit = @@session.min_examined_row_limit +1 +'#---------------------FN_DYNVARS_089_11----------------------#' +SET min_examined_row_limit = 1; +SELECT @@min_examined_row_limit; +@@min_examined_row_limit +1 +SELECT local.min_examined_row_limit; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.min_examined_row_limit; +ERROR 42S02: Unknown table 'session' in field list +SELECT min_examined_row_limit = @@session.min_examined_row_limit; +ERROR 42S22: Unknown column 'min_examined_row_limit' in 'field list' +SET @@global.min_examined_row_limit = @start_global_value; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = @start_session_value; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 diff --git a/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result new file mode 100644 index 00000000000..fa11659c6c5 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result @@ -0,0 +1,174 @@ +SET @start_global_value = @@global.min_examined_row_limit; +SELECT @start_global_value; +@start_global_value +0 +SET @start_session_value = @@session.min_examined_row_limit; +SELECT @start_session_value; +@start_session_value +0 +'#--------------------FN_DYNVARS_089_01-------------------------#' +SET @@global.min_examined_row_limit = 100; +SET @@global.min_examined_row_limit = DEFAULT; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = 200; +SET @@session.min_examined_row_limit = DEFAULT; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 +'#--------------------FN_DYNVARS_089_02-------------------------#' +SET @@global.min_examined_row_limit = DEFAULT; +SELECT @@global.min_examined_row_limit = 0; +@@global.min_examined_row_limit = 0 +1 +SET @@session.min_examined_row_limit = DEFAULT; +SELECT @@session.min_examined_row_limit = 0; +@@session.min_examined_row_limit = 0 +1 +'#--------------------FN_DYNVARS_089_03-------------------------#' +SET @@global.min_examined_row_limit = 0; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@global.min_examined_row_limit = 1; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +1 +SET @@global.min_examined_row_limit = 60020; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +60020 +SET @@global.min_examined_row_limit = 65535; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +65535 +SET @@global.min_examined_row_limit = 4294967295; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967295 +SET @@global.min_examined_row_limit = 4294967294; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +4294967294 +'#--------------------FN_DYNVARS_089_04-------------------------#' +SET @@session.min_examined_row_limit = 0; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = 1; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +1 +SET @@session.min_examined_row_limit = 50050; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +50050 +SET @@session.min_examined_row_limit = 65535; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +65535 +SET @@session.min_examined_row_limit = 4294967295; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295 +SET @@session.min_examined_row_limit = 4294967294; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967294 +'#------------------FN_DYNVARS_089_05-----------------------#' +SET @@global.min_examined_row_limit = 429496726; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +429496726 +SET @@global.min_examined_row_limit = -1024; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@global.min_examined_row_limit = 429496729500; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +429496729500 +SET @@global.min_examined_row_limit = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +429496729500 +SET @@global.min_examined_row_limit = test; +ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +429496729500 +SET @@session.min_examined_row_limit = 4294967296; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967296 +SET @@session.min_examined_row_limit = -1; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = 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.min_examined_row_limit = 4294967295021; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295021 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.min_examined_row_limit = test; +ERROR 42000: Incorrect argument type to variable 'min_examined_row_limit' +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +4294967295021 +'#------------------FN_DYNVARS_089_06-----------------------#' +SELECT @@global.min_examined_row_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='min_examined_row_limit'; +@@global.min_examined_row_limit = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_089_07-----------------------#' +SELECT @@session.min_examined_row_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='min_examined_row_limit'; +@@session.min_examined_row_limit = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_089_08-----------------------#' +SET @@global.min_examined_row_limit = TRUE; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +1 +SET @@global.min_examined_row_limit = FALSE; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +'#---------------------FN_DYNVARS_089_09----------------------#' +SET @@global.min_examined_row_limit = 10; +SELECT @@min_examined_row_limit = @@global.min_examined_row_limit; +@@min_examined_row_limit = @@global.min_examined_row_limit +0 +'#---------------------FN_DYNVARS_089_10----------------------#' +SET @@min_examined_row_limit = 100; +SELECT @@min_examined_row_limit = @@local.min_examined_row_limit; +@@min_examined_row_limit = @@local.min_examined_row_limit +1 +SELECT @@local.min_examined_row_limit = @@session.min_examined_row_limit; +@@local.min_examined_row_limit = @@session.min_examined_row_limit +1 +'#---------------------FN_DYNVARS_089_11----------------------#' +SET min_examined_row_limit = 1; +SELECT @@min_examined_row_limit; +@@min_examined_row_limit +1 +SELECT local.min_examined_row_limit; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.min_examined_row_limit; +ERROR 42S02: Unknown table 'session' in field list +SELECT min_examined_row_limit = @@session.min_examined_row_limit; +ERROR 42S22: Unknown column 'min_examined_row_limit' in 'field list' +SET @@global.min_examined_row_limit = @start_global_value; +SELECT @@global.min_examined_row_limit; +@@global.min_examined_row_limit +0 +SET @@session.min_examined_row_limit = @start_session_value; +SELECT @@session.min_examined_row_limit; +@@session.min_examined_row_limit +0 diff --git a/mysql-test/suite/sys_vars/r/multi_range_count_basic_32.result b/mysql-test/suite/sys_vars/r/multi_range_count_basic_32.result new file mode 100644 index 00000000000..f6ac6490479 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/multi_range_count_basic_32.result @@ -0,0 +1,192 @@ +SET @start_global_value = @@global.multi_range_count; +SELECT @start_global_value; +@start_global_value +256 +SET @start_session_value = @@session.multi_range_count; +SELECT @start_session_value; +@start_session_value +256 +'#--------------------FN_DYNVARS_090_01-------------------------#' +SET @@global.multi_range_count = 100; +SET @@global.multi_range_count = DEFAULT; +SELECT @@global.multi_range_count; +@@global.multi_range_count +256 +SET @@session.multi_range_count = 200; +SET @@session.multi_range_count = DEFAULT; +SELECT @@session.multi_range_count; +@@session.multi_range_count +256 +'#--------------------FN_DYNVARS_090_02-------------------------#' +SET @@global.multi_range_count = DEFAULT; +SELECT @@global.multi_range_count = 256; +@@global.multi_range_count = 256 +1 +SET @@session.multi_range_count = DEFAULT; +SELECT @@session.multi_range_count = 256; +@@session.multi_range_count = 256 +1 +'#--------------------FN_DYNVARS_090_03-------------------------#' +SET @@global.multi_range_count = 1; +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = 60020; +SELECT @@global.multi_range_count; +@@global.multi_range_count +60020 +SET @@global.multi_range_count = 65535; +SELECT @@global.multi_range_count; +@@global.multi_range_count +65535 +SET @@global.multi_range_count = 4294967295; +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967295 +SET @@global.multi_range_count = 4294967294; +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967294 +'#--------------------FN_DYNVARS_090_04-------------------------#' +SET @@session.multi_range_count = 1; +SELECT @@session.multi_range_count; +@@session.multi_range_count +1 +SET @@session.multi_range_count = 50050; +SELECT @@session.multi_range_count; +@@session.multi_range_count +50050 +SET @@session.multi_range_count = 65535; +SELECT @@session.multi_range_count; +@@session.multi_range_count +65535 +SET @@session.multi_range_count = 4294967295; +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295 +SET @@session.multi_range_count = 4294967294; +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967294 +'#------------------FN_DYNVARS_090_05-----------------------#' +SET @@global.multi_range_count = 0; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = 4294967296; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '4294967296' +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967295 +SET @@global.multi_range_count = -1024; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = 429496729500; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '429496729500' +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967295 +SET @@global.multi_range_count = 65530.34; +ERROR 42000: Incorrect argument type to variable 'multi_range_count' +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967295 +SET @@global.multi_range_count = test; +ERROR 42000: Incorrect argument type to variable 'multi_range_count' +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967295 +SET @@session.multi_range_count = 0; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@session.multi_range_count; +@@session.multi_range_count +1 +SET @@session.multi_range_count = 4294967296; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '4294967296' +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295 +SET @@session.multi_range_count = -1; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@session.multi_range_count; +@@session.multi_range_count +1 +SET @@session.multi_range_count = 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.multi_range_count = 4294967295021; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '4294967295021' +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.multi_range_count = test; +ERROR 42000: Incorrect argument type to variable 'multi_range_count' +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295 +'#------------------FN_DYNVARS_090_06-----------------------#' +SELECT @@global.multi_range_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='multi_range_count'; +@@global.multi_range_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_090_07-----------------------#' +SELECT @@session.multi_range_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='multi_range_count'; +@@session.multi_range_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_090_08-----------------------#' +SET @@global.multi_range_count = TRUE; +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = FALSE; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +'#---------------------FN_DYNVARS_090_09----------------------#' +SET @@global.multi_range_count = 10; +SELECT @@multi_range_count = @@global.multi_range_count; +@@multi_range_count = @@global.multi_range_count +0 +'#---------------------FN_DYNVARS_090_10----------------------#' +SET @@multi_range_count = 100; +SELECT @@multi_range_count = @@local.multi_range_count; +@@multi_range_count = @@local.multi_range_count +1 +SELECT @@local.multi_range_count = @@session.multi_range_count; +@@local.multi_range_count = @@session.multi_range_count +1 +'#---------------------FN_DYNVARS_090_11----------------------#' +SET multi_range_count = 1; +SELECT @@multi_range_count; +@@multi_range_count +1 +SELECT local.multi_range_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.multi_range_count; +ERROR 42S02: Unknown table 'session' in field list +SELECT multi_range_count = @@session.multi_range_count; +ERROR 42S22: Unknown column 'multi_range_count' in 'field list' +SET @@global.multi_range_count = @start_global_value; +SELECT @@global.multi_range_count; +@@global.multi_range_count +256 +SET @@session.multi_range_count = @start_session_value; +SELECT @@session.multi_range_count; +@@session.multi_range_count +256 diff --git a/mysql-test/suite/sys_vars/r/multi_range_count_basic_64.result b/mysql-test/suite/sys_vars/r/multi_range_count_basic_64.result new file mode 100644 index 00000000000..f2115aec2e2 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/multi_range_count_basic_64.result @@ -0,0 +1,184 @@ +SET @start_global_value = @@global.multi_range_count; +SELECT @start_global_value; +@start_global_value +256 +SET @start_session_value = @@session.multi_range_count; +SELECT @start_session_value; +@start_session_value +256 +'#--------------------FN_DYNVARS_090_01-------------------------#' +SET @@global.multi_range_count = 100; +SET @@global.multi_range_count = DEFAULT; +SELECT @@global.multi_range_count; +@@global.multi_range_count +256 +SET @@session.multi_range_count = 200; +SET @@session.multi_range_count = DEFAULT; +SELECT @@session.multi_range_count; +@@session.multi_range_count +256 +'#--------------------FN_DYNVARS_090_02-------------------------#' +SET @@global.multi_range_count = DEFAULT; +SELECT @@global.multi_range_count = 256; +@@global.multi_range_count = 256 +1 +SET @@session.multi_range_count = DEFAULT; +SELECT @@session.multi_range_count = 256; +@@session.multi_range_count = 256 +1 +'#--------------------FN_DYNVARS_090_03-------------------------#' +SET @@global.multi_range_count = 1; +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = 60020; +SELECT @@global.multi_range_count; +@@global.multi_range_count +60020 +SET @@global.multi_range_count = 65535; +SELECT @@global.multi_range_count; +@@global.multi_range_count +65535 +SET @@global.multi_range_count = 4294967295; +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967295 +SET @@global.multi_range_count = 4294967294; +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967294 +'#--------------------FN_DYNVARS_090_04-------------------------#' +SET @@session.multi_range_count = 1; +SELECT @@session.multi_range_count; +@@session.multi_range_count +1 +SET @@session.multi_range_count = 50050; +SELECT @@session.multi_range_count; +@@session.multi_range_count +50050 +SET @@session.multi_range_count = 65535; +SELECT @@session.multi_range_count; +@@session.multi_range_count +65535 +SET @@session.multi_range_count = 4294967295; +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295 +SET @@session.multi_range_count = 4294967294; +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967294 +'#------------------FN_DYNVARS_090_05-----------------------#' +SET @@global.multi_range_count = 0; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = 4294967296; +SELECT @@global.multi_range_count; +@@global.multi_range_count +4294967296 +SET @@global.multi_range_count = -1024; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = 429496729500; +SELECT @@global.multi_range_count; +@@global.multi_range_count +429496729500 +SET @@global.multi_range_count = 65530.34; +ERROR 42000: Incorrect argument type to variable 'multi_range_count' +SELECT @@global.multi_range_count; +@@global.multi_range_count +429496729500 +SET @@global.multi_range_count = test; +ERROR 42000: Incorrect argument type to variable 'multi_range_count' +SELECT @@global.multi_range_count; +@@global.multi_range_count +429496729500 +SET @@session.multi_range_count = 0; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@session.multi_range_count; +@@session.multi_range_count +1 +SET @@session.multi_range_count = 4294967296; +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967296 +SET @@session.multi_range_count = -1; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@session.multi_range_count; +@@session.multi_range_count +1 +SET @@session.multi_range_count = 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.multi_range_count = 4294967295021; +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295021 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.multi_range_count = test; +ERROR 42000: Incorrect argument type to variable 'multi_range_count' +SELECT @@session.multi_range_count; +@@session.multi_range_count +4294967295021 +'#------------------FN_DYNVARS_090_06-----------------------#' +SELECT @@global.multi_range_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='multi_range_count'; +@@global.multi_range_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_090_07-----------------------#' +SELECT @@session.multi_range_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='multi_range_count'; +@@session.multi_range_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_090_08-----------------------#' +SET @@global.multi_range_count = TRUE; +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +SET @@global.multi_range_count = FALSE; +Warnings: +Warning 1292 Truncated incorrect multi_range_count value: '0' +SELECT @@global.multi_range_count; +@@global.multi_range_count +1 +'#---------------------FN_DYNVARS_090_09----------------------#' +SET @@global.multi_range_count = 10; +SELECT @@multi_range_count = @@global.multi_range_count; +@@multi_range_count = @@global.multi_range_count +0 +'#---------------------FN_DYNVARS_090_10----------------------#' +SET @@multi_range_count = 100; +SELECT @@multi_range_count = @@local.multi_range_count; +@@multi_range_count = @@local.multi_range_count +1 +SELECT @@local.multi_range_count = @@session.multi_range_count; +@@local.multi_range_count = @@session.multi_range_count +1 +'#---------------------FN_DYNVARS_090_11----------------------#' +SET multi_range_count = 1; +SELECT @@multi_range_count; +@@multi_range_count +1 +SELECT local.multi_range_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.multi_range_count; +ERROR 42S02: Unknown table 'session' in field list +SELECT multi_range_count = @@session.multi_range_count; +ERROR 42S22: Unknown column 'multi_range_count' in 'field list' +SET @@global.multi_range_count = @start_global_value; +SELECT @@global.multi_range_count; +@@global.multi_range_count +256 +SET @@session.multi_range_count = @start_session_value; +SELECT @@session.multi_range_count; +@@session.multi_range_count +256 diff --git a/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result new file mode 100644 index 00000000000..64d1168685c --- /dev/null +++ b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_32.result @@ -0,0 +1,114 @@ +SET @start_global_value = @@global.myisam_max_sort_file_size; +SELECT @start_global_value; +@start_global_value +2147483647 +'#--------------------FN_DYNVARS_094_01-------------------------#' +SET @@global.myisam_max_sort_file_size = 500000; +SET @@global.myisam_max_sort_file_size = DEFAULT; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +2146435072 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_094_02-------------------------#' +SET @@global.myisam_max_sort_file_size = DEFAULT; +SELECT @@global.myisam_max_sort_file_size = 2147483648; +@@global.myisam_max_sort_file_size = 2147483648 +0 +'#--------------------FN_DYNVARS_094_03-------------------------#' +SET @@global.myisam_max_sort_file_size = 0; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 1024; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 123456789; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +122683392 +SET @@global.myisam_max_sort_file_size = 2147483648*2; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +4294967296 +SET @@global.myisam_max_sort_file_size = 2147483648*1024; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +2199023255552 +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +2199023255552 +SET @@global.myisam_max_sort_file_size = 2147483648*2147483648; +'#--------------------FN_DYNVARS_094_04-------------------------#' +SET @@myisam_max_sort_file_size = 2; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.myisam_max_sort_file_size = 3; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.myisam_max_sort_file_size = 4; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_094_05-----------------------#' +SET @@global.myisam_max_sort_file_size = -1; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = -2147483648; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = -2147483649; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 2147483649.56; +ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 1G; +ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +'#------------------FN_DYNVARS_094_06-----------------------#' +SET @@global.myisam_max_sort_file_size = 3000; +SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_max_sort_file_size'; +@@global.myisam_max_sort_file_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_094_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_max_sort_file_size'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_094_08-----------------------#' +SET @@global.myisam_max_sort_file_size = TRUE; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = FALSE; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_max_sort_file_size = 512; +SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size; +@@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET myisam_max_sort_file_size = 2048; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT myisam_max_sort_file_size; +ERROR 42S22: Unknown column 'myisam_max_sort_file_size' in 'field list' +SELECT @@myisam_max_sort_file_size; +@@myisam_max_sort_file_size +0 +SET global myisam_max_sort_file_size = 64; +SET @@global.myisam_max_sort_file_size = @start_global_value; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +2146435072 diff --git a/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result new file mode 100644 index 00000000000..00ff1dfc1ab --- /dev/null +++ b/mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result @@ -0,0 +1,114 @@ +SET @start_global_value = @@global.myisam_max_sort_file_size; +SELECT @start_global_value; +@start_global_value +9223372036854775807 +'#--------------------FN_DYNVARS_094_01-------------------------#' +SET @@global.myisam_max_sort_file_size = 500000; +SET @@global.myisam_max_sort_file_size = DEFAULT; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +9223372036853727232 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_094_02-------------------------#' +SET @@global.myisam_max_sort_file_size = DEFAULT; +SELECT @@global.myisam_max_sort_file_size = 2147483648; +@@global.myisam_max_sort_file_size = 2147483648 +0 +'#--------------------FN_DYNVARS_094_03-------------------------#' +SET @@global.myisam_max_sort_file_size = 0; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 1024; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 123456789; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +122683392 +SET @@global.myisam_max_sort_file_size = 2147483648*2; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +4294967296 +SET @@global.myisam_max_sort_file_size = 2147483648*1024; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +2199023255552 +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +2199023255552 +SET @@global.myisam_max_sort_file_size = 2147483648*2147483648; +'#--------------------FN_DYNVARS_094_04-------------------------#' +SET @@myisam_max_sort_file_size = 2; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.myisam_max_sort_file_size = 3; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.myisam_max_sort_file_size = 4; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_094_05-----------------------#' +SET @@global.myisam_max_sort_file_size = -1; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = -2147483648; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = -2147483649; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 2147483649.56; +ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = 1G; +ERROR 42000: Incorrect argument type to variable 'myisam_max_sort_file_size' +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +'#------------------FN_DYNVARS_094_06-----------------------#' +SET @@global.myisam_max_sort_file_size = 3000; +SELECT @@global.myisam_max_sort_file_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_max_sort_file_size'; +@@global.myisam_max_sort_file_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_094_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_max_sort_file_size'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_094_08-----------------------#' +SET @@global.myisam_max_sort_file_size = TRUE; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +SET @@global.myisam_max_sort_file_size = FALSE; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_max_sort_file_size = 512; +SELECT @@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size; +@@myisam_max_sort_file_size = @@global.myisam_max_sort_file_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET myisam_max_sort_file_size = 2048; +ERROR HY000: Variable 'myisam_max_sort_file_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT myisam_max_sort_file_size; +ERROR 42S22: Unknown column 'myisam_max_sort_file_size' in 'field list' +SELECT @@myisam_max_sort_file_size; +@@myisam_max_sort_file_size +0 +SET global myisam_max_sort_file_size = 64; +SET @@global.myisam_max_sort_file_size = @start_global_value; +SELECT @@global.myisam_max_sort_file_size; +@@global.myisam_max_sort_file_size +9223372036853727232 diff --git a/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result new file mode 100644 index 00000000000..c91128e3f4c --- /dev/null +++ b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_32.result @@ -0,0 +1,180 @@ +SET @start_global_value = @@global.myisam_repair_threads; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.myisam_repair_threads; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.myisam_repair_threads = 100; +SET @@global.myisam_repair_threads = DEFAULT; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = 200; +SET @@session.myisam_repair_threads = DEFAULT; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.myisam_repair_threads = DEFAULT; +SELECT @@global.myisam_repair_threads = 1; +@@global.myisam_repair_threads = 1 +1 +SET @@session.myisam_repair_threads = DEFAULT; +SELECT @@session.myisam_repair_threads = 1; +@@session.myisam_repair_threads = 1 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.myisam_repair_threads = 1; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = 4294967295; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = 655354; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +655354 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.myisam_repair_threads = 1; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = 4294967295; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +4294967295 +SET @@session.myisam_repair_threads = 655345; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +655345 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.myisam_repair_threads = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = -1024; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = 429496729533; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '429496729533' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = test; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = 'test'; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = ON; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@session.myisam_repair_threads = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = -2; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = test; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.myisam_repair_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_repair_threads '; +@@global.myisam_repair_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.myisam_repair_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_repair_threads '; +@@session.myisam_repair_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.myisam_repair_threads = TRUE; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = FALSE; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_repair_threads = 10; +SELECT @@myisam_repair_threads = @@global.myisam_repair_threads ; +@@myisam_repair_threads = @@global.myisam_repair_threads +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@myisam_repair_threads = 100; +SELECT @@myisam_repair_threads = @@local.myisam_repair_threads ; +@@myisam_repair_threads = @@local.myisam_repair_threads +1 +SELECT @@local.myisam_repair_threads = @@session.myisam_repair_threads ; +@@local.myisam_repair_threads = @@session.myisam_repair_threads +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET myisam_repair_threads = 1; +SELECT @@myisam_repair_threads ; +@@myisam_repair_threads +1 +SELECT local.myisam_repair_threads ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.myisam_repair_threads ; +ERROR 42S02: Unknown table 'session' in field list +SELECT myisam_repair_threads = @@session.myisam_repair_threads ; +ERROR 42S22: Unknown column 'myisam_repair_threads' in 'field list' +SET @@global.myisam_repair_threads = @start_global_value; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = @start_session_value; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 diff --git a/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result new file mode 100644 index 00000000000..8271451cc9e --- /dev/null +++ b/mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result @@ -0,0 +1,178 @@ +SET @start_global_value = @@global.myisam_repair_threads; +SELECT @start_global_value; +@start_global_value +1 +SET @start_session_value = @@session.myisam_repair_threads; +SELECT @start_session_value; +@start_session_value +1 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.myisam_repair_threads = 100; +SET @@global.myisam_repair_threads = DEFAULT; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = 200; +SET @@session.myisam_repair_threads = DEFAULT; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.myisam_repair_threads = DEFAULT; +SELECT @@global.myisam_repair_threads = 1; +@@global.myisam_repair_threads = 1 +1 +SET @@session.myisam_repair_threads = DEFAULT; +SELECT @@session.myisam_repair_threads = 1; +@@session.myisam_repair_threads = 1 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.myisam_repair_threads = 1; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = 4294967295; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +4294967295 +SET @@global.myisam_repair_threads = 655354; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +655354 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.myisam_repair_threads = 1; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = 4294967295; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +4294967295 +SET @@session.myisam_repair_threads = 655345; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +655345 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.myisam_repair_threads = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = -1024; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = 429496729533; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +429496729533 +SET @@global.myisam_repair_threads = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +429496729533 +SET @@global.myisam_repair_threads = test; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +429496729533 +SET @@global.myisam_repair_threads = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +429496729533 +SET @@global.myisam_repair_threads = 'test'; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +429496729533 +SET @@global.myisam_repair_threads = ON; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +429496729533 +SET @@session.myisam_repair_threads = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = -2; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = test; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_repair_threads' +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.myisam_repair_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_repair_threads '; +@@global.myisam_repair_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.myisam_repair_threads = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_repair_threads '; +@@session.myisam_repair_threads = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.myisam_repair_threads = TRUE; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@global.myisam_repair_threads = FALSE; +Warnings: +Warning 1292 Truncated incorrect myisam_repair_threads value: '0' +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_repair_threads = 10; +SELECT @@myisam_repair_threads = @@global.myisam_repair_threads ; +@@myisam_repair_threads = @@global.myisam_repair_threads +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@myisam_repair_threads = 100; +SELECT @@myisam_repair_threads = @@local.myisam_repair_threads ; +@@myisam_repair_threads = @@local.myisam_repair_threads +1 +SELECT @@local.myisam_repair_threads = @@session.myisam_repair_threads ; +@@local.myisam_repair_threads = @@session.myisam_repair_threads +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET myisam_repair_threads = 1; +SELECT @@myisam_repair_threads ; +@@myisam_repair_threads +1 +SELECT local.myisam_repair_threads ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.myisam_repair_threads ; +ERROR 42S02: Unknown table 'session' in field list +SELECT myisam_repair_threads = @@session.myisam_repair_threads ; +ERROR 42S22: Unknown column 'myisam_repair_threads' in 'field list' +SET @@global.myisam_repair_threads = @start_global_value; +SELECT @@global.myisam_repair_threads ; +@@global.myisam_repair_threads +1 +SET @@session.myisam_repair_threads = @start_session_value; +SELECT @@session.myisam_repair_threads ; +@@session.myisam_repair_threads +1 diff --git a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result new file mode 100644 index 00000000000..74d2fb3ec86 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_32.result @@ -0,0 +1,184 @@ +SET @start_global_value = @@global.myisam_sort_buffer_size ; +SELECT @start_global_value; +@start_global_value +8388608 +SET @start_session_value = @@session.myisam_sort_buffer_size ; +SELECT @start_session_value; +@start_session_value +8388608 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.myisam_sort_buffer_size = 100; +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +8388608 +SET @@session.myisam_sort_buffer_size = 200; +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +8388608 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size = 8388608; +@@global.myisam_sort_buffer_size = 8388608 +1 +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size = 8388608; +@@session.myisam_sort_buffer_size = 8388608 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.myisam_sort_buffer_size = 4; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = 4294967295; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = 655354; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +655354 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.myisam_sort_buffer_size = 4; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = 4294967295; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4294967295 +SET @@session.myisam_sort_buffer_size = 655345; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +655345 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.myisam_sort_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = 429496729533; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '429496729533' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_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 +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = ON; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@session.myisam_sort_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_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 +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; +@@global.myisam_sort_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; +@@session.myisam_sort_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.myisam_sort_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_sort_buffer_size = 10; +SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; +@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@myisam_sort_buffer_size = 100; +SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; +@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size +1 +SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; +@@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET myisam_sort_buffer_size = 1; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' +SELECT @@myisam_sort_buffer_size ; +@@myisam_sort_buffer_size +4 +SELECT local.myisam_sort_buffer_size ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.myisam_sort_buffer_size ; +ERROR 42S02: Unknown table 'session' in field list +SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; +ERROR 42S22: Unknown column 'myisam_sort_buffer_size' in 'field list' +SET @@global.myisam_sort_buffer_size = @start_global_value; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +8388608 +SET @@session.myisam_sort_buffer_size = @start_session_value; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +8388608 diff --git a/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result new file mode 100644 index 00000000000..bfcada76a46 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result @@ -0,0 +1,182 @@ +SET @start_global_value = @@global.myisam_sort_buffer_size ; +SELECT @start_global_value; +@start_global_value +8388608 +SET @start_session_value = @@session.myisam_sort_buffer_size ; +SELECT @start_session_value; +@start_session_value +8388608 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.myisam_sort_buffer_size = 100; +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +8388608 +SET @@session.myisam_sort_buffer_size = 200; +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +8388608 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.myisam_sort_buffer_size = DEFAULT; +SELECT @@global.myisam_sort_buffer_size = 8388608; +@@global.myisam_sort_buffer_size = 8388608 +1 +SET @@session.myisam_sort_buffer_size = DEFAULT; +SELECT @@session.myisam_sort_buffer_size = 8388608; +@@session.myisam_sort_buffer_size = 8388608 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.myisam_sort_buffer_size = 4; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = 4294967295; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4294967295 +SET @@global.myisam_sort_buffer_size = 655354; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +655354 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.myisam_sort_buffer_size = 4; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = 4294967295; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4294967295 +SET @@session.myisam_sort_buffer_size = 655345; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +655345 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.myisam_sort_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = -1024; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = 429496729533; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +429496729533 +SET @@global.myisam_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 +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +429496729533 +SET @@global.myisam_sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +429496729533 +SET @@global.myisam_sort_buffer_size = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +429496729533 +SET @@global.myisam_sort_buffer_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +429496729533 +SET @@global.myisam_sort_buffer_size = ON; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +429496729533 +SET @@session.myisam_sort_buffer_size = 0; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = -2; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_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 +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +SET @@session.myisam_sort_buffer_size = "test"; +ERROR 42000: Incorrect argument type to variable 'myisam_sort_buffer_size' +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +4 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; +@@global.myisam_sort_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.myisam_sort_buffer_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='myisam_sort_buffer_size '; +@@session.myisam_sort_buffer_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.myisam_sort_buffer_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +SET @@global.myisam_sort_buffer_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '0' +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +4 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.myisam_sort_buffer_size = 10; +SELECT @@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size ; +@@myisam_sort_buffer_size = @@global.myisam_sort_buffer_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@myisam_sort_buffer_size = 100; +SELECT @@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size ; +@@myisam_sort_buffer_size = @@local.myisam_sort_buffer_size +1 +SELECT @@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; +@@local.myisam_sort_buffer_size = @@session.myisam_sort_buffer_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET myisam_sort_buffer_size = 1; +Warnings: +Warning 1292 Truncated incorrect myisam_sort_buffer_size value: '1' +SELECT @@myisam_sort_buffer_size ; +@@myisam_sort_buffer_size +4 +SELECT local.myisam_sort_buffer_size ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.myisam_sort_buffer_size ; +ERROR 42S02: Unknown table 'session' in field list +SELECT myisam_sort_buffer_size = @@session.myisam_sort_buffer_size ; +ERROR 42S22: Unknown column 'myisam_sort_buffer_size' in 'field list' +SET @@global.myisam_sort_buffer_size = @start_global_value; +SELECT @@global.myisam_sort_buffer_size ; +@@global.myisam_sort_buffer_size +8388608 +SET @@session.myisam_sort_buffer_size = @start_session_value; +SELECT @@session.myisam_sort_buffer_size ; +@@session.myisam_sort_buffer_size +8388608 diff --git a/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result b/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result new file mode 100644 index 00000000000..3923df539e7 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/net_retry_count_basic_32.result @@ -0,0 +1,192 @@ +SET @start_global_value = @@global.net_retry_count; +SELECT @start_global_value; +@start_global_value +10 +SET @start_session_value = @@session.net_retry_count; +SELECT @start_session_value; +@start_session_value +10 +'#--------------------FN_DYNVARS_111_01-------------------------#' +SET @@global.net_retry_count = 100; +SET @@global.net_retry_count = DEFAULT; +SELECT @@global.net_retry_count; +@@global.net_retry_count +10 +SET @@session.net_retry_count = 200; +SET @@session.net_retry_count = DEFAULT; +SELECT @@session.net_retry_count; +@@session.net_retry_count +10 +'#--------------------FN_DYNVARS_111_02-------------------------#' +SET @@global.net_retry_count = DEFAULT; +SELECT @@global.net_retry_count = 10; +@@global.net_retry_count = 10 +1 +SET @@session.net_retry_count = DEFAULT; +SELECT @@session.net_retry_count = 10; +@@session.net_retry_count = 10 +1 +'#--------------------FN_DYNVARS_111_03-------------------------#' +SET @@global.net_retry_count = 1; +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = 2; +SELECT @@global.net_retry_count; +@@global.net_retry_count +2 +SET @@global.net_retry_count = 4294967295; +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967295 +SET @@global.net_retry_count = 4294967294; +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967294 +SET @@global.net_retry_count = 65536; +SELECT @@global.net_retry_count; +@@global.net_retry_count +65536 +'#--------------------FN_DYNVARS_111_04-------------------------#' +SET @@session.net_retry_count = 1; +SELECT @@session.net_retry_count; +@@session.net_retry_count +1 +SET @@session.net_retry_count = 2; +SELECT @@session.net_retry_count; +@@session.net_retry_count +2 +SET @@session.net_retry_count = 65535; +SELECT @@session.net_retry_count; +@@session.net_retry_count +65535 +SET @@session.net_retry_count = 4294967295; +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967295 +SET @@session.net_retry_count = 4294967294; +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967294 +'#------------------FN_DYNVARS_111_05-----------------------#' +SET @@global.net_retry_count = 0; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = -1024; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = 4294967296; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '4294967296' +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967295 +SET @@global.net_retry_count = 429496729500; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '429496729500' +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967295 +SET @@global.net_retry_count = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967295 +SET @@global.net_retry_count = test; +ERROR 42000: Incorrect argument type to variable 'net_retry_count' +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967295 +SET @@session.net_retry_count = 0; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@session.net_retry_count; +@@session.net_retry_count +1 +SET @@session.net_retry_count = -2; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@session.net_retry_count; +@@session.net_retry_count +1 +SET @@session.net_retry_count = 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.net_retry_count = 6555015425; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '6555015425' +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967295 +SET @@session.net_retry_count = 4294967296; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '4294967296' +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.net_retry_count = test; +ERROR 42000: Incorrect argument type to variable 'net_retry_count' +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967295 +'#------------------FN_DYNVARS_111_06-----------------------#' +SELECT @@global.net_retry_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_retry_count'; +@@global.net_retry_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_111_07-----------------------#' +SELECT @@session.net_retry_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_retry_count'; +@@session.net_retry_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_111_08-----------------------#' +SET @@global.net_retry_count = TRUE; +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = FALSE; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +'#---------------------FN_DYNVARS_111_09----------------------#' +SET @@global.net_retry_count = 10; +SELECT @@net_retry_count = @@global.net_retry_count; +@@net_retry_count = @@global.net_retry_count +0 +'#---------------------FN_DYNVARS_111_10----------------------#' +SET @@net_retry_count = 100; +SELECT @@net_retry_count = @@local.net_retry_count; +@@net_retry_count = @@local.net_retry_count +1 +SELECT @@local.net_retry_count = @@session.net_retry_count; +@@local.net_retry_count = @@session.net_retry_count +1 +'#---------------------FN_DYNVARS_111_11----------------------#' +SET net_retry_count = 1; +SELECT @@net_retry_count; +@@net_retry_count +1 +SELECT local.net_retry_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.net_retry_count; +ERROR 42S02: Unknown table 'session' in field list +SELECT net_retry_count = @@session.net_retry_count; +ERROR 42S22: Unknown column 'net_retry_count' in 'field list' +SET @@global.net_retry_count = @start_global_value; +SELECT @@global.net_retry_count; +@@global.net_retry_count +10 +SET @@session.net_retry_count = @start_session_value; +SELECT @@session.net_retry_count; +@@session.net_retry_count +10 diff --git a/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result b/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result new file mode 100644 index 00000000000..db133d23f79 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result @@ -0,0 +1,184 @@ +SET @start_global_value = @@global.net_retry_count; +SELECT @start_global_value; +@start_global_value +10 +SET @start_session_value = @@session.net_retry_count; +SELECT @start_session_value; +@start_session_value +10 +'#--------------------FN_DYNVARS_111_01-------------------------#' +SET @@global.net_retry_count = 100; +SET @@global.net_retry_count = DEFAULT; +SELECT @@global.net_retry_count; +@@global.net_retry_count +10 +SET @@session.net_retry_count = 200; +SET @@session.net_retry_count = DEFAULT; +SELECT @@session.net_retry_count; +@@session.net_retry_count +10 +'#--------------------FN_DYNVARS_111_02-------------------------#' +SET @@global.net_retry_count = DEFAULT; +SELECT @@global.net_retry_count = 10; +@@global.net_retry_count = 10 +1 +SET @@session.net_retry_count = DEFAULT; +SELECT @@session.net_retry_count = 10; +@@session.net_retry_count = 10 +1 +'#--------------------FN_DYNVARS_111_03-------------------------#' +SET @@global.net_retry_count = 1; +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = 2; +SELECT @@global.net_retry_count; +@@global.net_retry_count +2 +SET @@global.net_retry_count = 4294967295; +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967295 +SET @@global.net_retry_count = 4294967294; +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967294 +SET @@global.net_retry_count = 65536; +SELECT @@global.net_retry_count; +@@global.net_retry_count +65536 +'#--------------------FN_DYNVARS_111_04-------------------------#' +SET @@session.net_retry_count = 1; +SELECT @@session.net_retry_count; +@@session.net_retry_count +1 +SET @@session.net_retry_count = 2; +SELECT @@session.net_retry_count; +@@session.net_retry_count +2 +SET @@session.net_retry_count = 65535; +SELECT @@session.net_retry_count; +@@session.net_retry_count +65535 +SET @@session.net_retry_count = 4294967295; +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967295 +SET @@session.net_retry_count = 4294967294; +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967294 +'#------------------FN_DYNVARS_111_05-----------------------#' +SET @@global.net_retry_count = 0; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = -1024; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = 4294967296; +SELECT @@global.net_retry_count; +@@global.net_retry_count +4294967296 +SET @@global.net_retry_count = 429496729500; +SELECT @@global.net_retry_count; +@@global.net_retry_count +429496729500 +SET @@global.net_retry_count = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.net_retry_count; +@@global.net_retry_count +429496729500 +SET @@global.net_retry_count = test; +ERROR 42000: Incorrect argument type to variable 'net_retry_count' +SELECT @@global.net_retry_count; +@@global.net_retry_count +429496729500 +SET @@session.net_retry_count = 0; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@session.net_retry_count; +@@session.net_retry_count +1 +SET @@session.net_retry_count = -2; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@session.net_retry_count; +@@session.net_retry_count +1 +SET @@session.net_retry_count = 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.net_retry_count = 6555015425; +SELECT @@session.net_retry_count; +@@session.net_retry_count +6555015425 +SET @@session.net_retry_count = 4294967296; +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967296 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.net_retry_count = test; +ERROR 42000: Incorrect argument type to variable 'net_retry_count' +SELECT @@session.net_retry_count; +@@session.net_retry_count +4294967296 +'#------------------FN_DYNVARS_111_06-----------------------#' +SELECT @@global.net_retry_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='net_retry_count'; +@@global.net_retry_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_111_07-----------------------#' +SELECT @@session.net_retry_count = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='net_retry_count'; +@@session.net_retry_count = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_111_08-----------------------#' +SET @@global.net_retry_count = TRUE; +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +SET @@global.net_retry_count = FALSE; +Warnings: +Warning 1292 Truncated incorrect net_retry_count value: '0' +SELECT @@global.net_retry_count; +@@global.net_retry_count +1 +'#---------------------FN_DYNVARS_111_09----------------------#' +SET @@global.net_retry_count = 10; +SELECT @@net_retry_count = @@global.net_retry_count; +@@net_retry_count = @@global.net_retry_count +0 +'#---------------------FN_DYNVARS_111_10----------------------#' +SET @@net_retry_count = 100; +SELECT @@net_retry_count = @@local.net_retry_count; +@@net_retry_count = @@local.net_retry_count +1 +SELECT @@local.net_retry_count = @@session.net_retry_count; +@@local.net_retry_count = @@session.net_retry_count +1 +'#---------------------FN_DYNVARS_111_11----------------------#' +SET net_retry_count = 1; +SELECT @@net_retry_count; +@@net_retry_count +1 +SELECT local.net_retry_count; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.net_retry_count; +ERROR 42S02: Unknown table 'session' in field list +SELECT net_retry_count = @@session.net_retry_count; +ERROR 42S22: Unknown column 'net_retry_count' in 'field list' +SET @@global.net_retry_count = @start_global_value; +SELECT @@global.net_retry_count; +@@global.net_retry_count +10 +SET @@session.net_retry_count = @start_session_value; +SELECT @@session.net_retry_count; +@@session.net_retry_count +10 diff --git a/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result new file mode 100644 index 00000000000..3b7f06c8f81 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result @@ -0,0 +1,203 @@ +SET @start_global_value = @@global.query_alloc_block_size; +SELECT @start_global_value; +@start_global_value +8192 +SET @start_session_value = @@session.query_alloc_block_size; +SELECT @start_session_value; +@start_session_value +8192 +'#--------------------FN_DYNVARS_130_01-------------------------#' +SET @@global.query_alloc_block_size = 10000; +SET @@global.query_alloc_block_size = DEFAULT; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +8192 +SET @@session.query_alloc_block_size = 20000; +SET @@session.query_alloc_block_size = DEFAULT; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +8192 +'#--------------------FN_DYNVARS_130_02-------------------------#' +SET @@global.query_alloc_block_size = DEFAULT; +SELECT @@global.query_alloc_block_size = 8192; +@@global.query_alloc_block_size = 8192 +1 +SET @@session.query_alloc_block_size = DEFAULT; +SELECT @@session.query_alloc_block_size = 8192; +@@session.query_alloc_block_size = 8192 +1 +'#--------------------FN_DYNVARS_130_03-------------------------#' +SET @@global.query_alloc_block_size = 1024; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 1025; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 4294967295; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@global.query_alloc_block_size = 4294967294; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@global.query_alloc_block_size = 65536; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +65536 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_130_04-------------------------#' +SET @@session.query_alloc_block_size = 1024; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = 1025; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = 4294967295; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294966272 +SET @@session.query_alloc_block_size = 4294967294; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294966272 +SET @@session.query_alloc_block_size = 655536; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +655360 +'#------------------FN_DYNVARS_130_05-----------------------#' +SET @@global.query_alloc_block_size = 64; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '64' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = -1; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '0' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 1023; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967296' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@global.query_alloc_block_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@global.query_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@session.query_alloc_block_size = 64; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '64' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = -2; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '0' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_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.query_alloc_block_size = 1023; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '4294967296' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294966272 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.query_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294966272 +'#------------------FN_DYNVARS_130_06-----------------------#' +'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement'; +SET @@global.query_alloc_block_size = 1; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1' +SET @@session.query_alloc_block_size = 12; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '12' +SELECT @@global.query_alloc_block_size = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_alloc_block_size'; +@@global.query_alloc_block_size = +VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_130_07-----------------------#' +SELECT @@session.query_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_alloc_block_size'; +@@session.query_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_130_08-----------------------#' +SET @@global.query_alloc_block_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '0' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +'#---------------------FN_DYNVARS_130_09----------------------#' +SET @@global.query_alloc_block_size = 2048; +SELECT @@query_alloc_block_size = @@global.query_alloc_block_size; +@@query_alloc_block_size = @@global.query_alloc_block_size +0 +'#---------------------FN_DYNVARS_130_10----------------------#' +SET @@query_alloc_block_size = 5000; +SELECT @@query_alloc_block_size = @@local.query_alloc_block_size; +@@query_alloc_block_size = @@local.query_alloc_block_size +1 +SELECT @@local.query_alloc_block_size = @@session.query_alloc_block_size; +@@local.query_alloc_block_size = @@session.query_alloc_block_size +1 +'#---------------------FN_DYNVARS_130_11----------------------#' +SET query_alloc_block_size = 1024; +SELECT @@query_alloc_block_size; +@@query_alloc_block_size +1024 +SELECT local.query_alloc_block_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.query_alloc_block_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT query_alloc_block_size = @@session.query_alloc_block_size; +ERROR 42S22: Unknown column 'query_alloc_block_size' in 'field list' +SET @@global.query_alloc_block_size = @start_global_value; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +8192 +SET @@session.query_alloc_block_size = @start_session_value; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +8192 diff --git a/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result new file mode 100644 index 00000000000..57c96a8168a --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result @@ -0,0 +1,199 @@ +SET @start_global_value = @@global.query_alloc_block_size; +SELECT @start_global_value; +@start_global_value +8192 +SET @start_session_value = @@session.query_alloc_block_size; +SELECT @start_session_value; +@start_session_value +8192 +'#--------------------FN_DYNVARS_130_01-------------------------#' +SET @@global.query_alloc_block_size = 10000; +SET @@global.query_alloc_block_size = DEFAULT; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +8192 +SET @@session.query_alloc_block_size = 20000; +SET @@session.query_alloc_block_size = DEFAULT; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +8192 +'#--------------------FN_DYNVARS_130_02-------------------------#' +SET @@global.query_alloc_block_size = DEFAULT; +SELECT @@global.query_alloc_block_size = 8192; +@@global.query_alloc_block_size = 8192 +1 +SET @@session.query_alloc_block_size = DEFAULT; +SELECT @@session.query_alloc_block_size = 8192; +@@session.query_alloc_block_size = 8192 +1 +'#--------------------FN_DYNVARS_130_03-------------------------#' +SET @@global.query_alloc_block_size = 1024; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 1025; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 4294967295; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@global.query_alloc_block_size = 4294967294; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294966272 +SET @@global.query_alloc_block_size = 65536; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +65536 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_130_04-------------------------#' +SET @@session.query_alloc_block_size = 1024; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = 1025; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = 4294967295; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294966272 +SET @@session.query_alloc_block_size = 4294967294; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294966272 +SET @@session.query_alloc_block_size = 655536; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +655360 +'#------------------FN_DYNVARS_130_05-----------------------#' +SET @@global.query_alloc_block_size = 64; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '64' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = -1; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '0' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 1023; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = 4294967296; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294967296 +SET @@global.query_alloc_block_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294967296 +SET @@global.query_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +4294967296 +SET @@session.query_alloc_block_size = 64; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '64' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = -2; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '0' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_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.query_alloc_block_size = 1023; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1023' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +1024 +SET @@session.query_alloc_block_size = 4294967296; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294967296 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.query_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'query_alloc_block_size' +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +4294967296 +'#------------------FN_DYNVARS_130_06-----------------------#' +'Bug# 34877: OutOFMemeory errors are coming if we dont assign these values to variable before comparision statement'; +SET @@global.query_alloc_block_size = 1; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1' +SET @@session.query_alloc_block_size = 12; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '12' +SELECT @@global.query_alloc_block_size = +VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_alloc_block_size'; +@@global.query_alloc_block_size = +VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_130_07-----------------------#' +SELECT @@session.query_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_alloc_block_size'; +@@session.query_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_130_08-----------------------#' +SET @@global.query_alloc_block_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '1' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +SET @@global.query_alloc_block_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect query_alloc_block_size value: '0' +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +1024 +'#---------------------FN_DYNVARS_130_09----------------------#' +SET @@global.query_alloc_block_size = 2048; +SELECT @@query_alloc_block_size = @@global.query_alloc_block_size; +@@query_alloc_block_size = @@global.query_alloc_block_size +0 +'#---------------------FN_DYNVARS_130_10----------------------#' +SET @@query_alloc_block_size = 5000; +SELECT @@query_alloc_block_size = @@local.query_alloc_block_size; +@@query_alloc_block_size = @@local.query_alloc_block_size +1 +SELECT @@local.query_alloc_block_size = @@session.query_alloc_block_size; +@@local.query_alloc_block_size = @@session.query_alloc_block_size +1 +'#---------------------FN_DYNVARS_130_11----------------------#' +SET query_alloc_block_size = 1024; +SELECT @@query_alloc_block_size; +@@query_alloc_block_size +1024 +SELECT local.query_alloc_block_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.query_alloc_block_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT query_alloc_block_size = @@session.query_alloc_block_size; +ERROR 42S22: Unknown column 'query_alloc_block_size' in 'field list' +SET @@global.query_alloc_block_size = @start_global_value; +SELECT @@global.query_alloc_block_size; +@@global.query_alloc_block_size +8192 +SET @@session.query_alloc_block_size = @start_session_value; +SELECT @@session.query_alloc_block_size; +@@session.query_alloc_block_size +8192 diff --git a/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result new file mode 100644 index 00000000000..bb66233732d --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_32.result @@ -0,0 +1,126 @@ +SET @start_value = @@global.query_cache_limit; +SELECT @start_value; +@start_value +1048576 +'#--------------------FN_DYNVARS_131_01------------------------#' +SET @@global.query_cache_limit = 99; +SET @@global.query_cache_limit = DEFAULT; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048576 +'#---------------------FN_DYNVARS_131_02-------------------------#' +SET @@global.query_cache_limit = @start_value; +SELECT @@global.query_cache_limit = 1048576; +@@global.query_cache_limit = 1048576 +1 +'#--------------------FN_DYNVARS_131_03------------------------#' +SET @@global.query_cache_limit = 0; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +SET @@global.query_cache_limit = 1; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1 +SET @@global.query_cache_limit = 1048576; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048576 +SET @@global.query_cache_limit = 1048575; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048575 +'#--------------------FN_DYNVARS_131_04-------------------------#' +SET @@global.query_cache_limit = -1; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +SET @@global.query_cache_limit = 4294967296; +Warnings: +Warning 1292 Truncated incorrect query_cache_limit value: '4294967296' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967295 +SET @@global.query_cache_limit = 10240022115; +Warnings: +Warning 1292 Truncated incorrect query_cache_limit value: '10240022115' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967295 +SET @@global.query_cache_limit = 10000.01; +ERROR 42000: Incorrect argument type to variable 'query_cache_limit' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967295 +SET @@global.query_cache_limit = -1024; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +SET @@global.query_cache_limit = 42949672950; +Warnings: +Warning 1292 Truncated incorrect query_cache_limit value: '42949672950' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967295 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.query_cache_limit = ON; +ERROR 42000: Incorrect argument type to variable 'query_cache_limit' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967295 +SET @@global.query_cache_limit = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_cache_limit' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967295 +'#-------------------FN_DYNVARS_131_05----------------------------#' +SET @@session.query_cache_limit = 0; +ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_limit; +@@query_cache_limit +4294967295 +'#----------------------FN_DYNVARS_131_06------------------------#' +SELECT @@global.query_cache_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_limit'; +@@global.query_cache_limit = VARIABLE_VALUE +1 +SELECT @@query_cache_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_limit'; +@@query_cache_limit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_131_07----------------------#' +SET @@global.query_cache_limit = TRUE; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1 +SET @@global.query_cache_limit = FALSE; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +'#---------------------FN_DYNVARS_131_08----------------------#' +SET @@global.query_cache_limit = 1; +SELECT @@query_cache_limit = @@global.query_cache_limit; +@@query_cache_limit = @@global.query_cache_limit +1 +'#---------------------FN_DYNVARS_131_09----------------------#' +SET query_cache_limit = 1; +ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_limit; +@@query_cache_limit +1 +SET local.query_cache_limit = 1; +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 'query_cache_limit = 1' at line 1 +SELECT local.query_cache_limit; +ERROR 42S02: Unknown table 'local' in field list +SET global.query_cache_limit = 1; +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 'query_cache_limit = 1' at line 1 +SELECT global.query_cache_limit; +ERROR 42S02: Unknown table 'global' in field list +SELECT query_cache_limit = @@session.query_cache_limit; +ERROR 42S22: Unknown column 'query_cache_limit' in 'field list' +SET @@global.query_cache_limit = @start_value; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048576 diff --git a/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result new file mode 100644 index 00000000000..a592883ef91 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result @@ -0,0 +1,120 @@ +SET @start_value = @@global.query_cache_limit; +SELECT @start_value; +@start_value +1048576 +'#--------------------FN_DYNVARS_131_01------------------------#' +SET @@global.query_cache_limit = 99; +SET @@global.query_cache_limit = DEFAULT; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048576 +'#---------------------FN_DYNVARS_131_02-------------------------#' +SET @@global.query_cache_limit = @start_value; +SELECT @@global.query_cache_limit = 1048576; +@@global.query_cache_limit = 1048576 +1 +'#--------------------FN_DYNVARS_131_03------------------------#' +SET @@global.query_cache_limit = 0; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +SET @@global.query_cache_limit = 1; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1 +SET @@global.query_cache_limit = 1048576; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048576 +SET @@global.query_cache_limit = 1048575; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048575 +'#--------------------FN_DYNVARS_131_04-------------------------#' +SET @@global.query_cache_limit = -1; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +SET @@global.query_cache_limit = 4294967296; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +4294967296 +SET @@global.query_cache_limit = 10240022115; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +10240022115 +SET @@global.query_cache_limit = 10000.01; +ERROR 42000: Incorrect argument type to variable 'query_cache_limit' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +10240022115 +SET @@global.query_cache_limit = -1024; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +SET @@global.query_cache_limit = 42949672950; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +42949672950 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.query_cache_limit = ON; +ERROR 42000: Incorrect argument type to variable 'query_cache_limit' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +42949672950 +SET @@global.query_cache_limit = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_cache_limit' +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +42949672950 +'#-------------------FN_DYNVARS_131_05----------------------------#' +SET @@session.query_cache_limit = 0; +ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_limit; +@@query_cache_limit +42949672950 +'#----------------------FN_DYNVARS_131_06------------------------#' +SELECT @@global.query_cache_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_limit'; +@@global.query_cache_limit = VARIABLE_VALUE +1 +SELECT @@query_cache_limit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_limit'; +@@query_cache_limit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_131_07----------------------#' +SET @@global.query_cache_limit = TRUE; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1 +SET @@global.query_cache_limit = FALSE; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +0 +'#---------------------FN_DYNVARS_131_08----------------------#' +SET @@global.query_cache_limit = 1; +SELECT @@query_cache_limit = @@global.query_cache_limit; +@@query_cache_limit = @@global.query_cache_limit +1 +'#---------------------FN_DYNVARS_131_09----------------------#' +SET query_cache_limit = 1; +ERROR HY000: Variable 'query_cache_limit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_limit; +@@query_cache_limit +1 +SET local.query_cache_limit = 1; +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 'query_cache_limit = 1' at line 1 +SELECT local.query_cache_limit; +ERROR 42S02: Unknown table 'local' in field list +SET global.query_cache_limit = 1; +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 'query_cache_limit = 1' at line 1 +SELECT global.query_cache_limit; +ERROR 42S02: Unknown table 'global' in field list +SELECT query_cache_limit = @@session.query_cache_limit; +ERROR 42S22: Unknown column 'query_cache_limit' in 'field list' +SET @@global.query_cache_limit = @start_value; +SELECT @@global.query_cache_limit; +@@global.query_cache_limit +1048576 diff --git a/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result new file mode 100644 index 00000000000..e0d8a0d2a30 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_32.result @@ -0,0 +1,134 @@ +SET @start_value = @@global.query_cache_min_res_unit; +SELECT @start_value; +@start_value +4096 +'#--------------------FN_DYNVARS_132_01------------------------#' +SET @@global.query_cache_min_res_unit = 99; +SET @@global.query_cache_min_res_unit = DEFAULT; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +4096 +'#---------------------FN_DYNVARS_132_02-------------------------#' +SET @@global.query_cache_min_res_unit = @start_value; +SELECT @@global.query_cache_min_res_unit = 4096; +@@global.query_cache_min_res_unit = 4096 +1 +'#--------------------FN_DYNVARS_132_03------------------------#' +SET @@global.query_cache_min_res_unit = 0; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 1; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512'; +SET @@global.query_cache_min_res_unit = 512; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 513; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +520 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.query_cache_min_res_unit = 1048576; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +1048576 +SET @@global.query_cache_min_res_unit = 1048575; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +1048576 +'#--------------------FN_DYNVARS_132_04-------------------------#' +SET @@global.query_cache_min_res_unit = -1; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 4294967296; +Warnings: +Warning 1292 Truncated incorrect query_cache_min_res_unit value: '4294967296' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +0 +SET @@global.query_cache_min_res_unit = 511; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 10000.01; +ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = -1024; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 42949672950; +Warnings: +Warning 1292 Truncated incorrect query_cache_min_res_unit value: '42949672950' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.query_cache_min_res_unit = ON; +ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +0 +SET @@global.query_cache_min_res_unit = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +0 +'#-------------------FN_DYNVARS_132_05----------------------------#' +SET @@session.query_cache_min_res_unit = 0; +ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_min_res_unit; +@@query_cache_min_res_unit +0 +'#----------------------FN_DYNVARS_132_06------------------------#' +SELECT @@global.query_cache_min_res_unit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_min_res_unit'; +@@global.query_cache_min_res_unit = VARIABLE_VALUE +1 +SELECT @@query_cache_min_res_unit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_min_res_unit'; +@@query_cache_min_res_unit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_132_07----------------------#' +SET @@global.query_cache_min_res_unit = TRUE; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = FALSE; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +'#---------------------FN_DYNVARS_132_08----------------------#' +SET @@global.query_cache_min_res_unit = 1; +SELECT @@query_cache_min_res_unit = @@global.query_cache_min_res_unit; +@@query_cache_min_res_unit = @@global.query_cache_min_res_unit +1 +'#---------------------FN_DYNVARS_132_09----------------------#' +SET query_cache_min_res_unit = 1; +ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_min_res_unit; +@@query_cache_min_res_unit +512 +SET local.query_cache_min_res_unit = 1; +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 'query_cache_min_res_unit = 1' at line 1 +SELECT local.query_cache_min_res_unit; +ERROR 42S02: Unknown table 'local' in field list +SET global.query_cache_min_res_unit = 1; +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 'query_cache_min_res_unit = 1' at line 1 +SELECT global.query_cache_min_res_unit; +ERROR 42S02: Unknown table 'global' in field list +SELECT query_cache_min_res_unit = @@session.query_cache_min_res_unit; +ERROR 42S22: Unknown column 'query_cache_min_res_unit' in 'field list' +SET @@global.query_cache_min_res_unit = @start_value; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +4096 diff --git a/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result new file mode 100644 index 00000000000..e1c74d2bbc1 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result @@ -0,0 +1,130 @@ +SET @start_value = @@global.query_cache_min_res_unit; +SELECT @start_value; +@start_value +4096 +'#--------------------FN_DYNVARS_132_01------------------------#' +SET @@global.query_cache_min_res_unit = 99; +SET @@global.query_cache_min_res_unit = DEFAULT; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +4096 +'#---------------------FN_DYNVARS_132_02-------------------------#' +SET @@global.query_cache_min_res_unit = @start_value; +SELECT @@global.query_cache_min_res_unit = 4096; +@@global.query_cache_min_res_unit = 4096 +1 +'#--------------------FN_DYNVARS_132_03------------------------#' +SET @@global.query_cache_min_res_unit = 0; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 1; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +'Bug#34842: FN_DYNVARS_132_03 - Minimum value according to documentation is 0, and here it is 512'; +SET @@global.query_cache_min_res_unit = 512; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 513; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +520 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.query_cache_min_res_unit = 1048576; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +1048576 +SET @@global.query_cache_min_res_unit = 1048575; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +1048576 +'#--------------------FN_DYNVARS_132_04-------------------------#' +SET @@global.query_cache_min_res_unit = -1; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 4294967296; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +4294967296 +SET @@global.query_cache_min_res_unit = 511; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 10000.01; +ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = -1024; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = 42949672950; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +42949672952 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.query_cache_min_res_unit = ON; +ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +42949672952 +SET @@global.query_cache_min_res_unit = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_cache_min_res_unit' +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +42949672952 +'#-------------------FN_DYNVARS_132_05----------------------------#' +SET @@session.query_cache_min_res_unit = 0; +ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_min_res_unit; +@@query_cache_min_res_unit +42949672952 +'#----------------------FN_DYNVARS_132_06------------------------#' +SELECT @@global.query_cache_min_res_unit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_min_res_unit'; +@@global.query_cache_min_res_unit = VARIABLE_VALUE +1 +SELECT @@query_cache_min_res_unit = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_min_res_unit'; +@@query_cache_min_res_unit = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_132_07----------------------#' +SET @@global.query_cache_min_res_unit = TRUE; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +SET @@global.query_cache_min_res_unit = FALSE; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +512 +'#---------------------FN_DYNVARS_132_08----------------------#' +SET @@global.query_cache_min_res_unit = 1; +SELECT @@query_cache_min_res_unit = @@global.query_cache_min_res_unit; +@@query_cache_min_res_unit = @@global.query_cache_min_res_unit +1 +'#---------------------FN_DYNVARS_132_09----------------------#' +SET query_cache_min_res_unit = 1; +ERROR HY000: Variable 'query_cache_min_res_unit' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_min_res_unit; +@@query_cache_min_res_unit +512 +SET local.query_cache_min_res_unit = 1; +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 'query_cache_min_res_unit = 1' at line 1 +SELECT local.query_cache_min_res_unit; +ERROR 42S02: Unknown table 'local' in field list +SET global.query_cache_min_res_unit = 1; +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 'query_cache_min_res_unit = 1' at line 1 +SELECT global.query_cache_min_res_unit; +ERROR 42S02: Unknown table 'global' in field list +SELECT query_cache_min_res_unit = @@session.query_cache_min_res_unit; +ERROR 42S22: Unknown column 'query_cache_min_res_unit' in 'field list' +SET @@global.query_cache_min_res_unit = @start_value; +SELECT @@global.query_cache_min_res_unit; +@@global.query_cache_min_res_unit +4096 diff --git a/mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result b/mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result new file mode 100644 index 00000000000..1af70b3af84 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result @@ -0,0 +1,138 @@ +SET @start_value = @@global.query_cache_size; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_133_01------------------------#' +SET @@global.query_cache_size = 99; +SET @@global.query_cache_size = DEFAULT; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'#---------------------FN_DYNVARS_133_02-------------------------#' +SET @@global.query_cache_size = @start_value; +SELECT @@global.query_cache_size = 0; +@@global.query_cache_size = 0 +1 +'#--------------------FN_DYNVARS_133_03------------------------#' +SET @@global.query_cache_size = 0; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 1; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 512; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 1024; +Warnings: +Warning 1282 Query cache failed to set size 1024; new query cache size is 0 +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +: 'Bug#34880: Warnings are coming on assinging valid values to variable +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.query_cache_size = 1048576; +SELECT @@global.query_cache_size; +@@global.query_cache_size +1048576 +SET @@global.query_cache_size = 1048575; +SELECT @@global.query_cache_size; +@@global.query_cache_size +1047552 +'#--------------------FN_DYNVARS_133_04-------------------------#' +SET @@global.query_cache_size = -1; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect query_cache_size value: '4294967296' +Warning 1282 Query cache failed to set size 4294966272; new query cache size is 0 +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 511; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'query_cache_size' +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = -1024; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 42949672950; +Warnings: +Warning 1292 Truncated incorrect query_cache_size value: '42949672950' +Warning 1282 Query cache failed to set size 4294966272; new query cache size is 0 +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.query_cache_size = ON; +ERROR 42000: Incorrect argument type to variable 'query_cache_size' +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_cache_size' +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'#-------------------FN_DYNVARS_133_05----------------------------#' +SET @@session.query_cache_size = 0; +ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_size; +@@query_cache_size +0 +'#----------------------FN_DYNVARS_133_06------------------------#' +SELECT @@global.query_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_size'; +@@global.query_cache_size = VARIABLE_VALUE +1 +SELECT @@query_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_size'; +@@query_cache_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_133_07----------------------#' +SET @@global.query_cache_size = TRUE; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = FALSE; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'#---------------------FN_DYNVARS_133_08----------------------#' +SET @@global.query_cache_size = 1; +SELECT @@query_cache_size = @@global.query_cache_size; +@@query_cache_size = @@global.query_cache_size +1 +'#---------------------FN_DYNVARS_133_09----------------------#' +SET query_cache_size = 1; +ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_size; +@@query_cache_size +0 +SET local.query_cache_size = 1; +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 'query_cache_size = 1' at line 1 +SELECT local.query_cache_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.query_cache_size = 1; +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 'query_cache_size = 1' at line 1 +SELECT global.query_cache_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT query_cache_size = @@session.query_cache_size; +ERROR 42S22: Unknown column 'query_cache_size' in 'field list' +SET @@global.query_cache_size = @start_value; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 diff --git a/mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result b/mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result new file mode 100644 index 00000000000..0d67eec1ccc --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result @@ -0,0 +1,134 @@ +SET @start_value = @@global.query_cache_size; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_133_01------------------------#' +SET @@global.query_cache_size = 99; +SET @@global.query_cache_size = DEFAULT; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'#---------------------FN_DYNVARS_133_02-------------------------#' +SET @@global.query_cache_size = @start_value; +SELECT @@global.query_cache_size = 0; +@@global.query_cache_size = 0 +1 +'#--------------------FN_DYNVARS_133_03------------------------#' +SET @@global.query_cache_size = 0; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 1; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 512; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 1024; +Warnings: +Warning 1282 Query cache failed to set size 1024; new query cache size is 0 +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +: 'Bug#34880: Warnings are coming on assinging valid values to variable +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.query_cache_size = 1048576; +SELECT @@global.query_cache_size; +@@global.query_cache_size +1048576 +SET @@global.query_cache_size = 1048575; +SELECT @@global.query_cache_size; +@@global.query_cache_size +1047552 +'#--------------------FN_DYNVARS_133_04-------------------------#' +SET @@global.query_cache_size = -1; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 4294967296; +SELECT @@global.query_cache_size; +@@global.query_cache_size +4294967296 +SET @@global.query_cache_size = 511; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 10000.01; +ERROR 42000: Incorrect argument type to variable 'query_cache_size' +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = -1024; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 42949672950; +Warnings: +Warning 1282 Query cache failed to set size 42949671936; new query cache size is 0 +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.query_cache_size = ON; +ERROR 42000: Incorrect argument type to variable 'query_cache_size' +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_cache_size' +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'#-------------------FN_DYNVARS_133_05----------------------------#' +SET @@session.query_cache_size = 0; +ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_size; +@@query_cache_size +0 +'#----------------------FN_DYNVARS_133_06------------------------#' +SELECT @@global.query_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_cache_size'; +@@global.query_cache_size = VARIABLE_VALUE +1 +SELECT @@query_cache_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_cache_size'; +@@query_cache_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_133_07----------------------#' +SET @@global.query_cache_size = TRUE; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +SET @@global.query_cache_size = FALSE; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 +'#---------------------FN_DYNVARS_133_08----------------------#' +SET @@global.query_cache_size = 1; +SELECT @@query_cache_size = @@global.query_cache_size; +@@query_cache_size = @@global.query_cache_size +1 +'#---------------------FN_DYNVARS_133_09----------------------#' +SET query_cache_size = 1; +ERROR HY000: Variable 'query_cache_size' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@query_cache_size; +@@query_cache_size +0 +SET local.query_cache_size = 1; +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 'query_cache_size = 1' at line 1 +SELECT local.query_cache_size; +ERROR 42S02: Unknown table 'local' in field list +SET global.query_cache_size = 1; +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 'query_cache_size = 1' at line 1 +SELECT global.query_cache_size; +ERROR 42S02: Unknown table 'global' in field list +SELECT query_cache_size = @@session.query_cache_size; +ERROR 42S22: Unknown column 'query_cache_size' in 'field list' +SET @@global.query_cache_size = @start_value; +SELECT @@global.query_cache_size; +@@global.query_cache_size +0 diff --git a/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result new file mode 100644 index 00000000000..cd5f1727d41 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result @@ -0,0 +1,192 @@ +SET @start_global_value = @@global.query_prealloc_size ; +SELECT @start_global_value; +@start_global_value +8192 +SET @start_session_value = @@session.query_prealloc_size ; +SELECT @start_session_value; +@start_session_value +8192 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.query_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '100' +SET @@global.query_prealloc_size = DEFAULT; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@session.query_prealloc_size = 200; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '200' +SET @@session.query_prealloc_size = DEFAULT; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.query_prealloc_size = DEFAULT; +SELECT @@global.query_prealloc_size = 8192; +@@global.query_prealloc_size = 8192 +1 +SET @@session.query_prealloc_size = DEFAULT; +SELECT @@session.query_prealloc_size = 8192; +@@session.query_prealloc_size = 8192 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.query_prealloc_size = 8192; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = 4294967295; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = 655354; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +654336 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.query_prealloc_size = 8192; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = 4294967295; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +4294966272 +SET @@session.query_prealloc_size = 655345; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +654336 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.query_prealloc_size = 0; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = -1024; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = 429496729533; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '429496729533' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = test; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = "test"; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = ON; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@session.query_prealloc_size = 0; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = -2; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = test; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = "test"; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_prealloc_size '; +@@global.query_prealloc_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_prealloc_size '; +@@session.query_prealloc_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.query_prealloc_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '1' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.query_prealloc_size = 10; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '10' +SELECT @@query_prealloc_size = @@global.query_prealloc_size ; +@@query_prealloc_size = @@global.query_prealloc_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@query_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '100' +SELECT @@query_prealloc_size = @@local.query_prealloc_size ; +@@query_prealloc_size = @@local.query_prealloc_size +1 +SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; +@@local.query_prealloc_size = @@session.query_prealloc_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET query_prealloc_size = 1; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '1' +SELECT @@query_prealloc_size ; +@@query_prealloc_size +8192 +SELECT local.query_prealloc_size ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.query_prealloc_size ; +ERROR 42S02: Unknown table 'session' in field list +SELECT query_prealloc_size = @@session.query_prealloc_size ; +ERROR 42S22: Unknown column 'query_prealloc_size' in 'field list' +SET @@global.query_prealloc_size = @start_global_value; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@session.query_prealloc_size = @start_session_value; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 diff --git a/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result new file mode 100644 index 00000000000..0e61fbcd4b5 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result @@ -0,0 +1,190 @@ +SET @start_global_value = @@global.query_prealloc_size ; +SELECT @start_global_value; +@start_global_value +8192 +SET @start_session_value = @@session.query_prealloc_size ; +SELECT @start_session_value; +@start_session_value +8192 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.query_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '100' +SET @@global.query_prealloc_size = DEFAULT; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@session.query_prealloc_size = 200; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '200' +SET @@session.query_prealloc_size = DEFAULT; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.query_prealloc_size = DEFAULT; +SELECT @@global.query_prealloc_size = 8192; +@@global.query_prealloc_size = 8192 +1 +SET @@session.query_prealloc_size = DEFAULT; +SELECT @@session.query_prealloc_size = 8192; +@@session.query_prealloc_size = 8192 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.query_prealloc_size = 8192; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = 4294967295; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +4294966272 +SET @@global.query_prealloc_size = 655354; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +654336 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.query_prealloc_size = 8192; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = 4294967295; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +4294966272 +SET @@session.query_prealloc_size = 655345; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +654336 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.query_prealloc_size = 0; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = -1024; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = 429496729533; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +429496728576 +SET @@global.query_prealloc_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +429496728576 +SET @@global.query_prealloc_size = test; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +429496728576 +SET @@global.query_prealloc_size = "test"; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +429496728576 +SET @@global.query_prealloc_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +429496728576 +SET @@global.query_prealloc_size = ON; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +429496728576 +SET @@session.query_prealloc_size = 0; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = -2; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = test; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +SET @@session.query_prealloc_size = "test"; +ERROR 42000: Incorrect argument type to variable 'query_prealloc_size' +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='query_prealloc_size '; +@@global.query_prealloc_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.query_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='query_prealloc_size '; +@@session.query_prealloc_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_08-----------------------#' +SET @@global.query_prealloc_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '1' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@global.query_prealloc_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '0' +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.query_prealloc_size = 10; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '10' +SELECT @@query_prealloc_size = @@global.query_prealloc_size ; +@@query_prealloc_size = @@global.query_prealloc_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@query_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '100' +SELECT @@query_prealloc_size = @@local.query_prealloc_size ; +@@query_prealloc_size = @@local.query_prealloc_size +1 +SELECT @@local.query_prealloc_size = @@session.query_prealloc_size ; +@@local.query_prealloc_size = @@session.query_prealloc_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET query_prealloc_size = 1; +Warnings: +Warning 1292 Truncated incorrect query_prealloc_size value: '1' +SELECT @@query_prealloc_size ; +@@query_prealloc_size +8192 +SELECT local.query_prealloc_size ; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.query_prealloc_size ; +ERROR 42S02: Unknown table 'session' in field list +SELECT query_prealloc_size = @@session.query_prealloc_size ; +ERROR 42S22: Unknown column 'query_prealloc_size' in 'field list' +SET @@global.query_prealloc_size = @start_global_value; +SELECT @@global.query_prealloc_size ; +@@global.query_prealloc_size +8192 +SET @@session.query_prealloc_size = @start_session_value; +SELECT @@session.query_prealloc_size ; +@@session.query_prealloc_size +8192 diff --git a/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result new file mode 100644 index 00000000000..93441448d90 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_32.result @@ -0,0 +1,182 @@ +SET @start_global_value = @@global.range_alloc_block_size; +SELECT @start_global_value; +@start_global_value +4096 +SET @start_session_value = @@session.range_alloc_block_size; +SELECT @start_session_value; +@start_session_value +4096 +'#--------------------FN_DYNVARS_137_01-------------------------#' +SET @@global.range_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '100' +SET @@global.range_alloc_block_size = DEFAULT; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = 200; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '200' +SET @@session.range_alloc_block_size = DEFAULT; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +'#--------------------FN_DYNVARS_137_02-------------------------#' +SET @@global.range_alloc_block_size = DEFAULT; +SELECT @@global.range_alloc_block_size = 2048; +@@global.range_alloc_block_size = 2048 +0 +SET @@session.range_alloc_block_size = DEFAULT; +SELECT @@session.range_alloc_block_size = 2048; +@@session.range_alloc_block_size = 2048 +0 +'#--------------------FN_DYNVARS_137_03-------------------------#' +SET @@global.range_alloc_block_size = 2048; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.range_alloc_block_size = 4294967295; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +SET @@global.range_alloc_block_size = 4294967294; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_137_04-------------------------#' +SET @@session.range_alloc_block_size = 2048; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = 4294967295; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294966272 +SET @@session.range_alloc_block_size = 4294967294; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294966272 +'#------------------FN_DYNVARS_137_05-----------------------#' +SET @@global.range_alloc_block_size = 0; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@global.range_alloc_block_size = -1024; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@global.range_alloc_block_size = 42949672951; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '42949672951' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +SET @@global.range_alloc_block_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +SET @@global.range_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +SET @@session.range_alloc_block_size = 0; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = -2; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +SET @@session.range_alloc_block_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.range_alloc_block_size = 4294967296; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '4294967296' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294966272 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.range_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294966272 +'#------------------FN_DYNVARS_137_06-----------------------#' +SELECT @@global.range_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='range_alloc_block_size'; +@@global.range_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_137_07-----------------------#' +SELECT @@session.range_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='range_alloc_block_size'; +@@session.range_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_137_08-----------------------#' +SET @@global.range_alloc_block_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '1' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@global.range_alloc_block_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +'#---------------------FN_DYNVARS_137_09----------------------#' +SET @@global.range_alloc_block_size = 10; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '10' +SELECT @@range_alloc_block_size = @@global.range_alloc_block_size; +@@range_alloc_block_size = @@global.range_alloc_block_size +0 +'#---------------------FN_DYNVARS_137_10----------------------#' +SET @@range_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '100' +SELECT @@range_alloc_block_size = @@local.range_alloc_block_size; +@@range_alloc_block_size = @@local.range_alloc_block_size +1 +SELECT @@local.range_alloc_block_size = @@session.range_alloc_block_size; +@@local.range_alloc_block_size = @@session.range_alloc_block_size +1 +'#---------------------FN_DYNVARS_137_11----------------------#' +SET range_alloc_block_size = 1; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '1' +SELECT @@range_alloc_block_size; +@@range_alloc_block_size +4096 +SELECT local.range_alloc_block_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.range_alloc_block_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT range_alloc_block_size = @@session.range_alloc_block_size; +ERROR 42S22: Unknown column 'range_alloc_block_size' in 'field list' +SET @@global.range_alloc_block_size = @start_global_value; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = @start_session_value; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 diff --git a/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result new file mode 100644 index 00000000000..26ddfdd2bae --- /dev/null +++ b/mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result @@ -0,0 +1,178 @@ +SET @start_global_value = @@global.range_alloc_block_size; +SELECT @start_global_value; +@start_global_value +4096 +SET @start_session_value = @@session.range_alloc_block_size; +SELECT @start_session_value; +@start_session_value +4096 +'#--------------------FN_DYNVARS_137_01-------------------------#' +SET @@global.range_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '100' +SET @@global.range_alloc_block_size = DEFAULT; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = 200; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '200' +SET @@session.range_alloc_block_size = DEFAULT; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +'#--------------------FN_DYNVARS_137_02-------------------------#' +SET @@global.range_alloc_block_size = DEFAULT; +SELECT @@global.range_alloc_block_size = 2048; +@@global.range_alloc_block_size = 2048 +0 +SET @@session.range_alloc_block_size = DEFAULT; +SELECT @@session.range_alloc_block_size = 2048; +@@session.range_alloc_block_size = 2048 +0 +'#--------------------FN_DYNVARS_137_03-------------------------#' +SET @@global.range_alloc_block_size = 2048; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.range_alloc_block_size = 4294967295; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +SET @@global.range_alloc_block_size = 4294967294; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_137_04-------------------------#' +SET @@session.range_alloc_block_size = 2048; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '2048' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = 4294967295; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294966272 +SET @@session.range_alloc_block_size = 4294967294; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294966272 +'#------------------FN_DYNVARS_137_05-----------------------#' +SET @@global.range_alloc_block_size = 0; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@global.range_alloc_block_size = -1024; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@global.range_alloc_block_size = 42949672951; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +42949671936 +SET @@global.range_alloc_block_size = 65530.34.; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1 +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +42949671936 +SET @@global.range_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +42949671936 +SET @@session.range_alloc_block_size = 0; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = -2; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 +SET @@session.range_alloc_block_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.range_alloc_block_size = 4294967296; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294967296 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.range_alloc_block_size = test; +ERROR 42000: Incorrect argument type to variable 'range_alloc_block_size' +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4294967296 +'#------------------FN_DYNVARS_137_06-----------------------#' +SELECT @@global.range_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='range_alloc_block_size'; +@@global.range_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_137_07-----------------------#' +SELECT @@session.range_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='range_alloc_block_size'; +@@session.range_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_137_08-----------------------#' +SET @@global.range_alloc_block_size = TRUE; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '1' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@global.range_alloc_block_size = FALSE; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '0' +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +'#---------------------FN_DYNVARS_137_09----------------------#' +SET @@global.range_alloc_block_size = 10; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '10' +SELECT @@range_alloc_block_size = @@global.range_alloc_block_size; +@@range_alloc_block_size = @@global.range_alloc_block_size +0 +'#---------------------FN_DYNVARS_137_10----------------------#' +SET @@range_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '100' +SELECT @@range_alloc_block_size = @@local.range_alloc_block_size; +@@range_alloc_block_size = @@local.range_alloc_block_size +1 +SELECT @@local.range_alloc_block_size = @@session.range_alloc_block_size; +@@local.range_alloc_block_size = @@session.range_alloc_block_size +1 +'#---------------------FN_DYNVARS_137_11----------------------#' +SET range_alloc_block_size = 1; +Warnings: +Warning 1292 Truncated incorrect range_alloc_block_size value: '1' +SELECT @@range_alloc_block_size; +@@range_alloc_block_size +4096 +SELECT local.range_alloc_block_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.range_alloc_block_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT range_alloc_block_size = @@session.range_alloc_block_size; +ERROR 42S22: Unknown column 'range_alloc_block_size' in 'field list' +SET @@global.range_alloc_block_size = @start_global_value; +SELECT @@global.range_alloc_block_size; +@@global.range_alloc_block_size +4096 +SET @@session.range_alloc_block_size = @start_session_value; +SELECT @@session.range_alloc_block_size; +@@session.range_alloc_block_size +4096 diff --git a/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result new file mode 100644 index 00000000000..d4dd46eba71 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_32.result @@ -0,0 +1,110 @@ +SET @start_global_value = @@global.rpl_recovery_rank; +SELECT @start_global_value; +@start_global_value +0 +'#--------------------FN_DYNVARS_142_01-------------------------#' +SET @@global.rpl_recovery_rank = 500000; +SET @@global.rpl_recovery_rank = DEFAULT; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +'#--------------------FN_DYNVARS_142_02-------------------------#' +SET @@global.rpl_recovery_rank = 0; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = 1024; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +1024 +SET @@global.rpl_recovery_rank = 123456789; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +123456789 +SET @@global.rpl_recovery_rank = 2147483648*2; +Warnings: +Warning 1292 Truncated incorrect rpl-recovery-rank value: '4294967296' +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +4294967295 +SET @@global.rpl_recovery_rank = 2147483648*1024; +Warnings: +Warning 1292 Truncated incorrect rpl-recovery-rank value: '2199023255552' +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +4294967295 +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +4294967295 +SET @@global.rpl_recovery_rank = 2147483648*2147483648; +Warnings: +Warning 1292 Truncated incorrect rpl-recovery-rank value: '4611686018427387904' +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +4294967295 +'#--------------------FN_DYNVARS_142_03-------------------------#' +SET @@rpl_recovery_rank = 2; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.rpl_recovery_rank = 3; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.rpl_recovery_rank = 4; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_142_04-----------------------#' +SET @@global.rpl_recovery_rank = -1; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = -2147483648; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = -2147483649; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = 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 @@global.rpl_recovery_rank = 2147483649.56; +ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' +SET @@global.rpl_recovery_rank = 1G; +ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' +'#------------------FN_DYNVARS_142_05-----------------------#' +SET @@global.rpl_recovery_rank = 3000; +SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='rpl_recovery_rank'; +@@global.rpl_recovery_rank = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_142_06-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='rpl_recovery_rank'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_142_07-----------------------#' +SET @@global.rpl_recovery_rank = TRUE; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +1 +SET @@global.rpl_recovery_rank = FALSE; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@global.rpl_recovery_rank = 512; +SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank; +@@rpl_recovery_rank = @@global.rpl_recovery_rank +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET rpl_recovery_rank = 2048; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +SELECT rpl_recovery_rank; +ERROR 42S22: Unknown column 'rpl_recovery_rank' in 'field list' +SELECT @@rpl_recovery_rank; +@@rpl_recovery_rank +512 +SET global rpl_recovery_rank = 64; +SET @@global.rpl_recovery_rank = @start_global_value; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 diff --git a/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result new file mode 100644 index 00000000000..74a47fa0f08 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result @@ -0,0 +1,104 @@ +SET @start_global_value = @@global.rpl_recovery_rank; +SELECT @start_global_value; +@start_global_value +0 +'#--------------------FN_DYNVARS_142_01-------------------------#' +SET @@global.rpl_recovery_rank = 500000; +SET @@global.rpl_recovery_rank = DEFAULT; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +'#--------------------FN_DYNVARS_142_02-------------------------#' +SET @@global.rpl_recovery_rank = 0; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = 1024; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +1024 +SET @@global.rpl_recovery_rank = 123456789; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +123456789 +SET @@global.rpl_recovery_rank = 2147483648*2; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +4294967296 +SET @@global.rpl_recovery_rank = 2147483648*1024; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +2199023255552 +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +2199023255552 +SET @@global.rpl_recovery_rank = 2147483648*2147483648; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +4611686018427387904 +'#--------------------FN_DYNVARS_142_03-------------------------#' +SET @@rpl_recovery_rank = 2; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.rpl_recovery_rank = 3; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.rpl_recovery_rank = 4; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_142_04-----------------------#' +SET @@global.rpl_recovery_rank = -1; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = -2147483648; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = -2147483649; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +SET @@global.rpl_recovery_rank = 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 @@global.rpl_recovery_rank = 2147483649.56; +ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' +SET @@global.rpl_recovery_rank = 1G; +ERROR 42000: Incorrect argument type to variable 'rpl_recovery_rank' +'#------------------FN_DYNVARS_142_05-----------------------#' +SET @@global.rpl_recovery_rank = 3000; +SELECT @@global.rpl_recovery_rank = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='rpl_recovery_rank'; +@@global.rpl_recovery_rank = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_142_06-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='rpl_recovery_rank'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_142_07-----------------------#' +SET @@global.rpl_recovery_rank = TRUE; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +1 +SET @@global.rpl_recovery_rank = FALSE; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@global.rpl_recovery_rank = 512; +SELECT @@rpl_recovery_rank = @@global.rpl_recovery_rank; +@@rpl_recovery_rank = @@global.rpl_recovery_rank +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET rpl_recovery_rank = 2048; +ERROR HY000: Variable 'rpl_recovery_rank' is a GLOBAL variable and should be set with SET GLOBAL +SELECT rpl_recovery_rank; +ERROR 42S22: Unknown column 'rpl_recovery_rank' in 'field list' +SELECT @@rpl_recovery_rank; +@@rpl_recovery_rank +512 +SET global rpl_recovery_rank = 64; +SET @@global.rpl_recovery_rank = @start_global_value; +SELECT @@global.rpl_recovery_rank; +@@global.rpl_recovery_rank +0 diff --git a/mysql-test/suite/sys_vars/r/server_id_basic_32.result b/mysql-test/suite/sys_vars/r/server_id_basic_32.result new file mode 100644 index 00000000000..6f801fc627b --- /dev/null +++ b/mysql-test/suite/sys_vars/r/server_id_basic_32.result @@ -0,0 +1,117 @@ +SET @@global.general_log= 0; +SET @start_global_value = @@global.server_id; +SELECT @start_global_value; +@start_global_value +1 +'#--------------------FN_DYNVARS_144_01-------------------------#' +SET @@global.server_id = 500000; +SET @@global.server_id = DEFAULT; +SELECT @@global.server_id; +@@global.server_id +0 +'#--------------------FN_DYNVARS_144_02-------------------------#' +SET @@global.server_id = DEFAULT; +SELECT @@global.server_id = 0; +@@global.server_id = 0 +1 +'#--------------------FN_DYNVARS_144_03-------------------------#' +SET @@global.server_id = 0; +SELECT @@global.server_id; +@@global.server_id +0 +SET @@global.server_id = 1; +SELECT @@global.server_id; +@@global.server_id +1 +SET @@global.server_id = 15; +SELECT @@global.server_id; +@@global.server_id +15 +SET @@global.server_id = 1024; +SELECT @@global.server_id; +@@global.server_id +1024 +SET @@global.server_id = 123456789; +SELECT @@global.server_id; +@@global.server_id +123456789 +SET @@global.server_id = 2147483648; +SELECT @@global.server_id; +@@global.server_id +2147483648 +SET @@global.server_id = 2147483648*2-1; +SELECT @@global.server_id; +@@global.server_id +4294967295 +'#--------------------FN_DYNVARS_144_04-------------------------#' +SET @@server_id = 2; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.server_id = 3; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.server_id = 4; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_144_05-----------------------#' +SET @@global.server_id = -1; +SELECT @@global.server_id; +@@global.server_id +0 +SET @@global.server_id = -2147483648; +SELECT @@global.server_id; +@@global.server_id +0 +SET @@global.server_id = 2147483649*2; +Warnings: +Warning 1292 Truncated incorrect server-id value: '4294967298' +SELECT @@global.server_id; +@@global.server_id +4294967295 +SET @@global.server_id = 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 @@global.server_id = '125'; +ERROR 42000: Incorrect argument type to variable 'server_id' +SET @@global.server_id = 7483649.56; +ERROR 42000: Incorrect argument type to variable 'server_id' +SET @@global.server_id = 1G; +ERROR 42000: Incorrect argument type to variable 'server_id' +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_144_06-----------------------#' +SET @@global.server_id = 3000; +SELECT @@global.server_id = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='server_id'; +@@global.server_id = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_144_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='server_id'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_144_08-----------------------#' +SET @@global.server_id = TRUE; +SELECT @@global.server_id; +@@global.server_id +1 +SET @@global.server_id = FALSE; +SELECT @@global.server_id; +@@global.server_id +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.server_id = 512; +SELECT @@server_id = @@global.server_id; +@@server_id = @@global.server_id +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET server_id = 2048; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +SELECT server_id; +ERROR 42S22: Unknown column 'server_id' in 'field list' +SELECT @@server_id; +@@server_id +512 +SET global server_id = 99; +SET @@global.server_id = @start_global_value; +SELECT @@global.server_id; +@@global.server_id +1 +SET @@global.general_log= 1; diff --git a/mysql-test/suite/sys_vars/r/server_id_basic_64.result b/mysql-test/suite/sys_vars/r/server_id_basic_64.result new file mode 100644 index 00000000000..b6f3095ccfe --- /dev/null +++ b/mysql-test/suite/sys_vars/r/server_id_basic_64.result @@ -0,0 +1,115 @@ +SET @@global.general_log= 0; +SET @start_global_value = @@global.server_id; +SELECT @start_global_value; +@start_global_value +1 +'#--------------------FN_DYNVARS_144_01-------------------------#' +SET @@global.server_id = 500000; +SET @@global.server_id = DEFAULT; +SELECT @@global.server_id; +@@global.server_id +0 +'#--------------------FN_DYNVARS_144_02-------------------------#' +SET @@global.server_id = DEFAULT; +SELECT @@global.server_id = 0; +@@global.server_id = 0 +1 +'#--------------------FN_DYNVARS_144_03-------------------------#' +SET @@global.server_id = 0; +SELECT @@global.server_id; +@@global.server_id +0 +SET @@global.server_id = 1; +SELECT @@global.server_id; +@@global.server_id +1 +SET @@global.server_id = 15; +SELECT @@global.server_id; +@@global.server_id +15 +SET @@global.server_id = 1024; +SELECT @@global.server_id; +@@global.server_id +1024 +SET @@global.server_id = 123456789; +SELECT @@global.server_id; +@@global.server_id +123456789 +SET @@global.server_id = 2147483648; +SELECT @@global.server_id; +@@global.server_id +2147483648 +SET @@global.server_id = 2147483648*2-1; +SELECT @@global.server_id; +@@global.server_id +4294967295 +'#--------------------FN_DYNVARS_144_04-------------------------#' +SET @@server_id = 2; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.server_id = 3; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.server_id = 4; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_144_05-----------------------#' +SET @@global.server_id = -1; +SELECT @@global.server_id; +@@global.server_id +0 +SET @@global.server_id = -2147483648; +SELECT @@global.server_id; +@@global.server_id +0 +SET @@global.server_id = 2147483649*2; +SELECT @@global.server_id; +@@global.server_id +4294967298 +SET @@global.server_id = 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 @@global.server_id = '125'; +ERROR 42000: Incorrect argument type to variable 'server_id' +SET @@global.server_id = 7483649.56; +ERROR 42000: Incorrect argument type to variable 'server_id' +SET @@global.server_id = 1G; +ERROR 42000: Incorrect argument type to variable 'server_id' +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_144_06-----------------------#' +SET @@global.server_id = 3000; +SELECT @@global.server_id = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='server_id'; +@@global.server_id = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_144_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='server_id'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_144_08-----------------------#' +SET @@global.server_id = TRUE; +SELECT @@global.server_id; +@@global.server_id +1 +SET @@global.server_id = FALSE; +SELECT @@global.server_id; +@@global.server_id +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.server_id = 512; +SELECT @@server_id = @@global.server_id; +@@server_id = @@global.server_id +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET server_id = 2048; +ERROR HY000: Variable 'server_id' is a GLOBAL variable and should be set with SET GLOBAL +SELECT server_id; +ERROR 42S22: Unknown column 'server_id' in 'field list' +SELECT @@server_id; +@@server_id +512 +SET global server_id = 99; +SET @@global.server_id = @start_global_value; +SELECT @@global.server_id; +@@global.server_id +1 +SET @@global.general_log= 1; diff --git a/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result new file mode 100644 index 00000000000..5b77c500aa0 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_32.result @@ -0,0 +1,119 @@ +SET @start_global_value = @@global.slave_transaction_retries; +SELECT @start_global_value; +@start_global_value +10 +'#--------------------FN_DYNVARS_149_01-------------------------#' +SET @@global.slave_transaction_retries = 50; +SET @@global.slave_transaction_retries = DEFAULT; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +10 +'#--------------------FN_DYNVARS_149_02-------------------------#' +SET @@global.slave_transaction_retries = DEFAULT; +SELECT @@global.slave_transaction_retries = 10; +@@global.slave_transaction_retries = 10 +1 +'#--------------------FN_DYNVARS_149_03-------------------------#' +SET @@global.slave_transaction_retries = 0; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +0 +SET @@global.slave_transaction_retries = 1; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +1 +SET @@global.slave_transaction_retries = 15; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +15 +SET @@global.slave_transaction_retries = 1024; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +1024 +SET @@global.slave_transaction_retries = 2147483648; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +2147483648 +SET @@global.slave_transaction_retries = 2147483648*2-1; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967295 +SET @@global.slave_transaction_retries = 2147483649*2; +Warnings: +Warning 1292 Truncated incorrect slave_transaction_retries value: '4294967298' +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967295 +SET @@global.slave_transaction_retries = 4294967295; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967295 +'#--------------------FN_DYNVARS_149_04-------------------------#' +SET @@slave_transaction_retries = 2; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.slave_transaction_retries = 3; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.slave_transaction_retries = 4; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_149_05-----------------------#' +SET @@global.slave_transaction_retries = -1; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +0 +SET @@global.slave_transaction_retries = 2147483649*2147483649; +Warnings: +Warning 1292 Truncated incorrect slave_transaction_retries value: '4611686022722355201' +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967295 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.slave_transaction_retries = 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 @@global.slave_transaction_retries = '100'; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +SET @@global.slave_transaction_retries = 7483649.56; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +SET @@global.slave_transaction_retries = ON; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +SET @@global.slave_transaction_retries = OFF; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +'#------------------FN_DYNVARS_149_06-----------------------#' +SET @@global.slave_transaction_retries = 3000; +SELECT @@global.slave_transaction_retries = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_transaction_retries'; +@@global.slave_transaction_retries = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_149_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_transaction_retries'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_149_08-----------------------#' +SET @@global.slave_transaction_retries = TRUE; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +1 +SET @@global.slave_transaction_retries = FALSE; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +0 +'#---------------------FN_DYNVARS_149_09----------------------#' +SET @@global.slave_transaction_retries = 60*60; +SELECT @@slave_transaction_retries = @@global.slave_transaction_retries; +@@slave_transaction_retries = @@global.slave_transaction_retries +1 +'#---------------------FN_DYNVARS_149_10----------------------#' +SET slave_transaction_retries = 2048; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +SELECT slave_transaction_retries; +ERROR 42S22: Unknown column 'slave_transaction_retries' in 'field list' +SELECT @@slave_transaction_retries; +@@slave_transaction_retries +3600 +SET global slave_transaction_retries = 99; +SET @@global.slave_transaction_retries = @start_global_value; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +10 diff --git a/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result new file mode 100644 index 00000000000..9434b14b238 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result @@ -0,0 +1,115 @@ +SET @start_global_value = @@global.slave_transaction_retries; +SELECT @start_global_value; +@start_global_value +10 +'#--------------------FN_DYNVARS_149_01-------------------------#' +SET @@global.slave_transaction_retries = 50; +SET @@global.slave_transaction_retries = DEFAULT; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +10 +'#--------------------FN_DYNVARS_149_02-------------------------#' +SET @@global.slave_transaction_retries = DEFAULT; +SELECT @@global.slave_transaction_retries = 10; +@@global.slave_transaction_retries = 10 +1 +'#--------------------FN_DYNVARS_149_03-------------------------#' +SET @@global.slave_transaction_retries = 0; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +0 +SET @@global.slave_transaction_retries = 1; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +1 +SET @@global.slave_transaction_retries = 15; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +15 +SET @@global.slave_transaction_retries = 1024; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +1024 +SET @@global.slave_transaction_retries = 2147483648; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +2147483648 +SET @@global.slave_transaction_retries = 2147483648*2-1; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967295 +SET @@global.slave_transaction_retries = 2147483649*2; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967298 +SET @@global.slave_transaction_retries = 4294967295; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4294967295 +'#--------------------FN_DYNVARS_149_04-------------------------#' +SET @@slave_transaction_retries = 2; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +SET @@session.slave_transaction_retries = 3; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +SET @@local.slave_transaction_retries = 4; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +'#------------------FN_DYNVARS_149_05-----------------------#' +SET @@global.slave_transaction_retries = -1; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +0 +SET @@global.slave_transaction_retries = 2147483649*2147483649; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +4611686022722355201 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +SET @@global.slave_transaction_retries = 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 @@global.slave_transaction_retries = '100'; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +SET @@global.slave_transaction_retries = 7483649.56; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +SET @@global.slave_transaction_retries = ON; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +SET @@global.slave_transaction_retries = OFF; +ERROR 42000: Incorrect argument type to variable 'slave_transaction_retries' +'#------------------FN_DYNVARS_149_06-----------------------#' +SET @@global.slave_transaction_retries = 3000; +SELECT @@global.slave_transaction_retries = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='slave_transaction_retries'; +@@global.slave_transaction_retries = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_149_07-----------------------#' +SELECT count(VARIABLE_VALUE) +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='slave_transaction_retries'; +count(VARIABLE_VALUE) +1 +'#------------------FN_DYNVARS_149_08-----------------------#' +SET @@global.slave_transaction_retries = TRUE; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +1 +SET @@global.slave_transaction_retries = FALSE; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +0 +'#---------------------FN_DYNVARS_149_09----------------------#' +SET @@global.slave_transaction_retries = 60*60; +SELECT @@slave_transaction_retries = @@global.slave_transaction_retries; +@@slave_transaction_retries = @@global.slave_transaction_retries +1 +'#---------------------FN_DYNVARS_149_10----------------------#' +SET slave_transaction_retries = 2048; +ERROR HY000: Variable 'slave_transaction_retries' is a GLOBAL variable and should be set with SET GLOBAL +SELECT slave_transaction_retries; +ERROR 42S22: Unknown column 'slave_transaction_retries' in 'field list' +SELECT @@slave_transaction_retries; +@@slave_transaction_retries +3600 +SET global slave_transaction_retries = 99; +SET @@global.slave_transaction_retries = @start_global_value; +SELECT @@global.slave_transaction_retries; +@@global.slave_transaction_retries +10 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 new file mode 100644 index 00000000000..09a1fe59046 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result @@ -0,0 +1,193 @@ +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 +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 +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 +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 +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 +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 +1 +SET @@global.sort_buffer_size = 4294967295; +SELECT @@global.sort_buffer_size; +@@global.sort_buffer_size +4294967295 +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 +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 +1 +SET @@session.sort_buffer_size = 4294967295; +SELECT @@session.sort_buffer_size; +@@session.sort_buffer_size +4294967295 +SET @@session.sort_buffer_size = 4294967294; +SELECT @@session.sort_buffer_size; +@@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 +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 +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 +SET @@global.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 +SELECT @@global.sort_buffer_size; +@@global.sort_buffer_size +4294967295 +SET @@global.sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'sort_buffer_size' +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 +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 +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'; +@@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'; +@@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 +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 +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 +SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; +@@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 +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; +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 new file mode 100644 index 00000000000..e9bd14abc67 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result @@ -0,0 +1,189 @@ +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 +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 +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 +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 +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 +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 +1 +SET @@global.sort_buffer_size = 4294967295; +SELECT @@global.sort_buffer_size; +@@global.sort_buffer_size +4294967295 +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 +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 +1 +SET @@session.sort_buffer_size = 4294967295; +SELECT @@session.sort_buffer_size; +@@session.sort_buffer_size +4294967295 +SET @@session.sort_buffer_size = 4294967294; +SELECT @@session.sort_buffer_size; +@@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 +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 +1 +SET @@global.sort_buffer_size = 4294967296; +SELECT @@global.sort_buffer_size; +@@global.sort_buffer_size +4294967296 +SET @@global.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 +SELECT @@global.sort_buffer_size; +@@global.sort_buffer_size +4294967296 +SET @@global.sort_buffer_size = test; +ERROR 42000: Incorrect argument type to variable 'sort_buffer_size' +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 +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 +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; +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'; +@@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'; +@@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 +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 +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 +SELECT @@local.sort_buffer_size = @@session.sort_buffer_size; +@@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 +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; +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/sync_binlog_basic_32.result b/mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result new file mode 100644 index 00000000000..3d9bfb6d218 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/sync_binlog_basic_32.result @@ -0,0 +1,105 @@ +SET @start_value = @@global.sync_binlog; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_168_01------------------------#' +SET @@global.sync_binlog = 99; +SET @@global.sync_binlog = DEFAULT; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +'#---------------------FN_DYNVARS_168_02-------------------------#' +SET @@global.sync_binlog = @start_value; +SELECT @@global.sync_binlog = 0; +@@global.sync_binlog = 0 +1 +'#--------------------FN_DYNVARS_168_03------------------------#' +SET @@global.sync_binlog = 0; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 1; +SELECT @@global.sync_binlog; +@@global.sync_binlog +1 +SET @@global.sync_binlog = 4294967295; +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967295 +SET @@global.sync_binlog = 4294967294; +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967294 +SET @@global.sync_binlog = 65536; +SELECT @@global.sync_binlog; +@@global.sync_binlog +65536 +'#--------------------FN_DYNVARS_168_04-------------------------#' +SET @@global.sync_binlog = -1; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 4294967296; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 10240022115; +SELECT @@global.sync_binlog; +@@global.sync_binlog +1650087523 +SET @@global.sync_binlog = 10000.01; +ERROR 42000: Incorrect argument type to variable 'sync_binlog' +SELECT @@global.sync_binlog; +@@global.sync_binlog +1650087523 +SET @@global.sync_binlog = -1024; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 42949672950; +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967286 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.sync_binlog = ON; +ERROR 42000: Incorrect argument type to variable 'sync_binlog' +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967286 +SET @@global.sync_binlog = 'test'; +ERROR 42000: Incorrect argument type to variable 'sync_binlog' +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967286 +'#-------------------FN_DYNVARS_168_05----------------------------#' +SET @@session.sync_binlog = 0; +ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@sync_binlog; +@@sync_binlog +4294967286 +'#----------------------FN_DYNVARS_168_06------------------------#' +SELECT @@global.sync_binlog = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sync_binlog'; +@@global.sync_binlog = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_168_07----------------------#' +SET sync_binlog = 1; +ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@sync_binlog; +@@sync_binlog +4294967286 +SET local.sync_binlog = 1; +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 'sync_binlog = 1' at line 1 +SELECT local.sync_binlog; +ERROR 42S02: Unknown table 'local' in field list +SET global.sync_binlog = 1; +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 'sync_binlog = 1' at line 1 +SELECT global.sync_binlog; +ERROR 42S02: Unknown table 'global' in field list +SELECT sync_binlog = @@session.sync_binlog; +ERROR 42S22: Unknown column 'sync_binlog' in 'field list' +SET @@global.sync_binlog = @start_value; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 diff --git a/mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result b/mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result new file mode 100644 index 00000000000..ffd1b3fc4f1 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result @@ -0,0 +1,105 @@ +SET @start_value = @@global.sync_binlog; +SELECT @start_value; +@start_value +0 +'#--------------------FN_DYNVARS_168_01------------------------#' +SET @@global.sync_binlog = 99; +SET @@global.sync_binlog = DEFAULT; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +'#---------------------FN_DYNVARS_168_02-------------------------#' +SET @@global.sync_binlog = @start_value; +SELECT @@global.sync_binlog = 0; +@@global.sync_binlog = 0 +1 +'#--------------------FN_DYNVARS_168_03------------------------#' +SET @@global.sync_binlog = 0; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 1; +SELECT @@global.sync_binlog; +@@global.sync_binlog +1 +SET @@global.sync_binlog = 4294967295; +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967295 +SET @@global.sync_binlog = 4294967294; +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967294 +SET @@global.sync_binlog = 65536; +SELECT @@global.sync_binlog; +@@global.sync_binlog +65536 +'#--------------------FN_DYNVARS_168_04-------------------------#' +SET @@global.sync_binlog = -1; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 4294967296; +SELECT @@global.sync_binlog; +@@global.sync_binlog +4294967296 +SET @@global.sync_binlog = 10240022115; +SELECT @@global.sync_binlog; +@@global.sync_binlog +10240022115 +SET @@global.sync_binlog = 10000.01; +ERROR 42000: Incorrect argument type to variable 'sync_binlog' +SELECT @@global.sync_binlog; +@@global.sync_binlog +10240022115 +SET @@global.sync_binlog = -1024; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 +SET @@global.sync_binlog = 42949672950; +SELECT @@global.sync_binlog; +@@global.sync_binlog +42949672950 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.sync_binlog = ON; +ERROR 42000: Incorrect argument type to variable 'sync_binlog' +SELECT @@global.sync_binlog; +@@global.sync_binlog +42949672950 +SET @@global.sync_binlog = 'test'; +ERROR 42000: Incorrect argument type to variable 'sync_binlog' +SELECT @@global.sync_binlog; +@@global.sync_binlog +42949672950 +'#-------------------FN_DYNVARS_168_05----------------------------#' +SET @@session.sync_binlog = 0; +ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@sync_binlog; +@@sync_binlog +42949672950 +'#----------------------FN_DYNVARS_168_06------------------------#' +SELECT @@global.sync_binlog = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='sync_binlog'; +@@global.sync_binlog = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_168_07----------------------#' +SET sync_binlog = 1; +ERROR HY000: Variable 'sync_binlog' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@sync_binlog; +@@sync_binlog +42949672950 +SET local.sync_binlog = 1; +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 'sync_binlog = 1' at line 1 +SELECT local.sync_binlog; +ERROR 42S02: Unknown table 'local' in field list +SET global.sync_binlog = 1; +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 'sync_binlog = 1' at line 1 +SELECT global.sync_binlog; +ERROR 42S02: Unknown table 'global' in field list +SELECT sync_binlog = @@session.sync_binlog; +ERROR 42S22: Unknown column 'sync_binlog' in 'field list' +SET @@global.sync_binlog = @start_value; +SELECT @@global.sync_binlog; +@@global.sync_binlog +0 diff --git a/mysql-test/suite/sys_vars/r/timestamp_basic_32.result b/mysql-test/suite/sys_vars/r/timestamp_basic_32.result new file mode 100644 index 00000000000..cc4f0324c0f --- /dev/null +++ b/mysql-test/suite/sys_vars/r/timestamp_basic_32.result @@ -0,0 +1,73 @@ +SET @session_start_value = @@session.timestamp; +'#--------------------FN_DYNVARS_001_01------------------------#' +SET @@timestamp = DEFAULT; +'timestamp does not have any DEFAULT value' +'#---------------------FN_DYNVARS_001_02-------------------------#' +SET @@global.timestamp = "1000"; +ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL +'#--------------------FN_DYNVARS_001_03------------------------#' +SET @@timestamp = 0; +'Setting 0 resets timestamp to session default timestamp' +SET @@timestamp = 123456789123456; +SELECT @@timestamp; +@@timestamp +2249167232 +SET @@timestamp = 60*60*60*60*365; +SELECT @@timestamp; +@@timestamp +435432704 +SET @@timestamp = -1000000000; +SELECT @@timestamp; +@@timestamp +3294967296 +SET @temp_ts = @@timestamp - @@timestamp; +SELECT @temp_ts; +@temp_ts +0 +'#--------------------FN_DYNVARS_001_04-------------------------#' +SET @@timestamp = "100"; +ERROR 42000: Incorrect argument type to variable 'timestamp' +'Bug# 34836: Documentation says its a string variable but infact its numeric' +SET @@timestamp = " "; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = 1.1; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = 9999999999999999999999; +ERROR 42000: Incorrect argument type to variable 'timestamp' +'#----------------------FN_DYNVARS_001_06------------------------#' +SELECT @@timestamp = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='timestamp'; +@@timestamp = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08-------------------------#' +SET @@timestamp = OFF; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = ON; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = TRUE; +SELECT @@timestamp; +@@timestamp +1 +SET @@timestamp = FALSE; +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@timestamp = 123456; +SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; +@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp +1 +SET @@timestamp = 654321; +SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; +@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET timestamp = 1; +SELECT @@timestamp; +@@timestamp +1 +SELECT local.timestamp; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.timestamp; +ERROR 42S02: Unknown table 'session' in field list +SELECT timestamp = @@session.timestamp; +ERROR 42S22: Unknown column 'timestamp' in 'field list' +SET @@timestamp = @session_start_value; diff --git a/mysql-test/suite/sys_vars/r/timestamp_basic_64.result b/mysql-test/suite/sys_vars/r/timestamp_basic_64.result new file mode 100644 index 00000000000..df877cd455b --- /dev/null +++ b/mysql-test/suite/sys_vars/r/timestamp_basic_64.result @@ -0,0 +1,73 @@ +SET @session_start_value = @@session.timestamp; +'#--------------------FN_DYNVARS_001_01------------------------#' +SET @@timestamp = DEFAULT; +'timestamp does not have any DEFAULT value' +'#---------------------FN_DYNVARS_001_02-------------------------#' +SET @@global.timestamp = "1000"; +ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL +'#--------------------FN_DYNVARS_001_03------------------------#' +SET @@timestamp = 0; +'Setting 0 resets timestamp to session default timestamp' +SET @@timestamp = 123456789123456; +SELECT @@timestamp; +@@timestamp +123456789123456 +SET @@timestamp = 60*60*60*60*365; +SELECT @@timestamp; +@@timestamp +4730400000 +SET @@timestamp = -1000000000; +SELECT @@timestamp; +@@timestamp +18446744072709551616 +SET @temp_ts = @@timestamp - @@timestamp; +SELECT @temp_ts; +@temp_ts +0 +'#--------------------FN_DYNVARS_001_04-------------------------#' +SET @@timestamp = "100"; +ERROR 42000: Incorrect argument type to variable 'timestamp' +'Bug# 34836: Documentation says its a string variable but infact its numeric' +SET @@timestamp = " "; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = 1.1; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = 9999999999999999999999; +ERROR 42000: Incorrect argument type to variable 'timestamp' +'#----------------------FN_DYNVARS_001_06------------------------#' +SELECT @@timestamp = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='timestamp'; +@@timestamp = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08-------------------------#' +SET @@timestamp = OFF; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = ON; +ERROR 42000: Incorrect argument type to variable 'timestamp' +SET @@timestamp = TRUE; +SELECT @@timestamp; +@@timestamp +1 +SET @@timestamp = FALSE; +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@timestamp = 123456; +SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; +@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp +1 +SET @@timestamp = 654321; +SELECT @@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp; +@@timestamp = @@local.timestamp and @@timestamp = @@session.timestamp +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET timestamp = 1; +SELECT @@timestamp; +@@timestamp +1 +SELECT local.timestamp; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.timestamp; +ERROR 42S02: Unknown table 'session' in field list +SELECT timestamp = @@session.timestamp; +ERROR 42S22: Unknown column 'timestamp' in 'field list' +SET @@timestamp = @session_start_value; 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 new file mode 100644 index 00000000000..aeafd95ed55 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result @@ -0,0 +1,172 @@ +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 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------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 +'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' +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; +@@global.tmp_table_size = 33554432 +0 +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; +@@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 +'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; +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 +'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"; +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 +4294967295 +'#------------------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/r/tmp_table_size_basic_64.result b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result new file mode 100644 index 00000000000..837b90fc143 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result @@ -0,0 +1,172 @@ +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 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------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 +'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' +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; +@@global.tmp_table_size = 33554432 +0 +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; +@@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 +'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; +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 +'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"; +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/r/transaction_alloc_block_size_basic_32.result b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result new file mode 100644 index 00000000000..706d7802ed3 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_32.result @@ -0,0 +1,180 @@ +SET @start_global_value = @@global.transaction_alloc_block_size; +SELECT @start_global_value; +@start_global_value +8192 +SET @start_session_value = @@session.transaction_alloc_block_size; +SELECT @start_session_value; +@start_session_value +8192 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.transaction_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' +SET @@global.transaction_alloc_block_size = DEFAULT; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +8192 +SET @@session.transaction_alloc_block_size = 200; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '200' +SET @@session.transaction_alloc_block_size = DEFAULT; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +8192 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.transaction_alloc_block_size = DEFAULT; +SELECT @@global.transaction_alloc_block_size = 8192; +@@global.transaction_alloc_block_size = 8192 +1 +SET @@session.transaction_alloc_block_size = DEFAULT; +SELECT @@session.transaction_alloc_block_size = 8192; +@@session.transaction_alloc_block_size = 8192 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.transaction_alloc_block_size = 1024; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = 60020; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +59392 +SET @@global.transaction_alloc_block_size = 4294967295; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.transaction_alloc_block_size = 1024; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size =4294967295; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +4294966272 +SET @@session.transaction_alloc_block_size = 65535; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +64512 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.transaction_alloc_block_size = 0; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = -1024; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = 123456789201; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '123456789201' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +4294966272 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.transaction_alloc_block_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = 65530.34; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size ="Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size = 1000; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1000' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size = 12345678901; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '12345678901' +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +4294966272 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.transaction_alloc_block_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@session.transaction_alloc_block_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@session.transaction_alloc_block_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size = "Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@session.transaction_alloc_block_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.transaction_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='transaction_alloc_block_size'; +@@global.transaction_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.transaction_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='transaction_alloc_block_size'; +@@session.transaction_alloc_block_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@transaction_alloc_block_size = 1024; +SET @@global.transaction_alloc_block_size = 4294967295; +SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size; +@@transaction_alloc_block_size = @@global.transaction_alloc_block_size +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@transaction_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' +SELECT @@transaction_alloc_block_size = @@local.transaction_alloc_block_size; +@@transaction_alloc_block_size = @@local.transaction_alloc_block_size +1 +SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size; +@@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET transaction_alloc_block_size = 1027; +SELECT @@transaction_alloc_block_size; +@@transaction_alloc_block_size +1024 +SELECT local.transaction_alloc_block_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.transaction_alloc_block_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT transaction_alloc_block_size = @@session.transaction_alloc_block_size; +ERROR 42S22: Unknown column 'transaction_alloc_block_size' in 'field list' +SET @@global.transaction_alloc_block_size = @start_global_value; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +8192 +SET @@session.tmp_table_size = @start_session_value; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 diff --git a/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result new file mode 100644 index 00000000000..c968d6f108c --- /dev/null +++ b/mysql-test/suite/sys_vars/r/transaction_alloc_block_size_basic_64.result @@ -0,0 +1,176 @@ +SET @start_global_value = @@global.transaction_alloc_block_size; +SELECT @start_global_value; +@start_global_value +8192 +SET @start_session_value = @@session.transaction_alloc_block_size; +SELECT @start_session_value; +@start_session_value +8192 +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.transaction_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' +SET @@global.transaction_alloc_block_size = DEFAULT; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +8192 +SET @@session.transaction_alloc_block_size = 200; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '200' +SET @@session.transaction_alloc_block_size = DEFAULT; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +8192 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.transaction_alloc_block_size = DEFAULT; +SELECT @@global.transaction_alloc_block_size = 8192; +@@global.transaction_alloc_block_size = 8192 +1 +SET @@session.transaction_alloc_block_size = DEFAULT; +SELECT @@session.transaction_alloc_block_size = 8192; +@@session.transaction_alloc_block_size = 8192 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.transaction_alloc_block_size = 1024; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = 60020; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +59392 +SET @@global.transaction_alloc_block_size = 4294967295; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +4294966272 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.transaction_alloc_block_size = 1024; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size =4294967295; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +4294966272 +SET @@session.transaction_alloc_block_size = 65535; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +64512 +'Bug# 34877: Invalid Values are coming in variable on assigning valid values'; +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.transaction_alloc_block_size = 0; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = -1024; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = 123456789201; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +123456788480 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.transaction_alloc_block_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@global.transaction_alloc_block_size = 65530.34; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size ="Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@global.transaction_alloc_block_size = 1000; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1000' +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size = 12345678901; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +12345678848 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@session.transaction_alloc_block_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@session.transaction_alloc_block_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@session.transaction_alloc_block_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '1' +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '0' +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 +SET @@session.transaction_alloc_block_size = "Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +SET @@session.transaction_alloc_block_size = 'test'; +ERROR 42000: Incorrect argument type to variable 'transaction_alloc_block_size' +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.transaction_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='transaction_alloc_block_size'; +@@global.transaction_alloc_block_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.transaction_alloc_block_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='transaction_alloc_block_size'; +@@session.transaction_alloc_block_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_08----------------------#' +SET @@transaction_alloc_block_size = 1024; +SET @@global.transaction_alloc_block_size = 4294967295; +SELECT @@transaction_alloc_block_size = @@global.transaction_alloc_block_size; +@@transaction_alloc_block_size = @@global.transaction_alloc_block_size +0 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@transaction_alloc_block_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_alloc_block_size value: '100' +SELECT @@transaction_alloc_block_size = @@local.transaction_alloc_block_size; +@@transaction_alloc_block_size = @@local.transaction_alloc_block_size +1 +SELECT @@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size; +@@local.transaction_alloc_block_size = @@session.transaction_alloc_block_size +1 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET transaction_alloc_block_size = 1027; +SELECT @@transaction_alloc_block_size; +@@transaction_alloc_block_size +1024 +SELECT local.transaction_alloc_block_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.transaction_alloc_block_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT transaction_alloc_block_size = @@session.transaction_alloc_block_size; +ERROR 42S22: Unknown column 'transaction_alloc_block_size' in 'field list' +SET @@global.transaction_alloc_block_size = @start_global_value; +SELECT @@global.transaction_alloc_block_size; +@@global.transaction_alloc_block_size +8192 +SET @@session.tmp_table_size = @start_session_value; +SELECT @@session.transaction_alloc_block_size; +@@session.transaction_alloc_block_size +1024 diff --git a/mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_32.result b/mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_32.result new file mode 100644 index 00000000000..3df7a55595e --- /dev/null +++ b/mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_32.result @@ -0,0 +1,172 @@ +SET @start_global_value = @@global.transaction_prealloc_size; +SELECT @start_global_value; +@start_global_value +4096 +SET @start_session_value = @@session.transaction_prealloc_size; +SELECT @start_session_value; +@start_session_value +4096 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.transaction_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' +SET @@global.transaction_prealloc_size = DEFAULT; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +4096 +SET @@session.transaction_prealloc_size = 200; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '200' +SET @@session.transaction_prealloc_size = DEFAULT; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4096 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.transaction_prealloc_size = DEFAULT; +SELECT @@global.transaction_prealloc_size = 4096; +@@global.transaction_prealloc_size = 4096 +1 +SET @@session.transaction_prealloc_size = DEFAULT; +SELECT @@session.transaction_prealloc_size = 4096; +@@session.transaction_prealloc_size = 4096 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.transaction_prealloc_size = 1024; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = 60020; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +59392 +SET @@global.transaction_prealloc_size = 4294966272; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +4294966272 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.transaction_prealloc_size = 1024; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size =4294966272; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4294966272 +SET @@session.transaction_prealloc_size = 65535; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +64512 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.transaction_prealloc_size = 0; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = -1024; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.transaction_prealloc_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = 65530.34; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size ="Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size = 1000; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '1000' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@session.transaction_prealloc_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@session.transaction_prealloc_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size = "Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@session.transaction_prealloc_size = 123456789031; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '123456789031' +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4294966272 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.transaction_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='transaction_prealloc_size'; +@@global.transaction_prealloc_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.transaction_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='transaction_prealloc_size'; +@@session.transaction_prealloc_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.transaction_prealloc_size = 1024; +SET @@global.transaction_prealloc_size = 10; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '10' +SELECT @@transaction_prealloc_size = @@global.transaction_prealloc_size; +@@transaction_prealloc_size = @@global.transaction_prealloc_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@transaction_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' +SELECT @@transaction_prealloc_size = @@local.transaction_prealloc_size; +@@transaction_prealloc_size = @@local.transaction_prealloc_size +1 +SELECT @@local.transaction_prealloc_size = @@session.transaction_prealloc_size; +@@local.transaction_prealloc_size = @@session.transaction_prealloc_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET transaction_prealloc_size = 1027; +SELECT @@transaction_prealloc_size; +@@transaction_prealloc_size +1024 +SELECT local.transaction_prealloc_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.transaction_prealloc_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT transaction_prealloc_size = @@session.transaction_prealloc_size; +ERROR 42S22: Unknown column 'transaction_prealloc_size' in 'field list' +SET @@global.transaction_prealloc_size = @start_global_value; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +4096 +SET @@session.transaction_prealloc_size = @start_session_value; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4096 diff --git a/mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_64.result b/mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_64.result new file mode 100644 index 00000000000..2fb6451372f --- /dev/null +++ b/mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_64.result @@ -0,0 +1,170 @@ +SET @start_global_value = @@global.transaction_prealloc_size; +SELECT @start_global_value; +@start_global_value +4096 +SET @start_session_value = @@session.transaction_prealloc_size; +SELECT @start_session_value; +@start_session_value +4096 +'Bug# 34876: This variable has invalid default value as compared to documentation'; +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.transaction_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' +SET @@global.transaction_prealloc_size = DEFAULT; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +4096 +SET @@session.transaction_prealloc_size = 200; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '200' +SET @@session.transaction_prealloc_size = DEFAULT; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4096 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.transaction_prealloc_size = DEFAULT; +SELECT @@global.transaction_prealloc_size = 4096; +@@global.transaction_prealloc_size = 4096 +1 +SET @@session.transaction_prealloc_size = DEFAULT; +SELECT @@session.transaction_prealloc_size = 4096; +@@session.transaction_prealloc_size = 4096 +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.transaction_prealloc_size = 1024; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = 60020; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +59392 +SET @@global.transaction_prealloc_size = 4294966272; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +4294966272 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.transaction_prealloc_size = 1024; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size =4294966272; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4294966272 +SET @@session.transaction_prealloc_size = 65535; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +64512 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.transaction_prealloc_size = 0; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = -1024; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.transaction_prealloc_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@global.transaction_prealloc_size = 65530.34; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size ="Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@global.transaction_prealloc_size = 1000; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '1000' +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size = ON; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@session.transaction_prealloc_size = OFF; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@session.transaction_prealloc_size = True; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '1' +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size = False; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '0' +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +1024 +SET @@session.transaction_prealloc_size = "Test"; +ERROR 42000: Incorrect argument type to variable 'transaction_prealloc_size' +SET @@session.transaction_prealloc_size = 123456789031; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +123456788480 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.transaction_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='transaction_prealloc_size'; +@@global.transaction_prealloc_size = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.transaction_prealloc_size = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='transaction_prealloc_size'; +@@session.transaction_prealloc_size = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.transaction_prealloc_size = 1024; +SET @@global.transaction_prealloc_size = 10; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '10' +SELECT @@transaction_prealloc_size = @@global.transaction_prealloc_size; +@@transaction_prealloc_size = @@global.transaction_prealloc_size +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@transaction_prealloc_size = 100; +Warnings: +Warning 1292 Truncated incorrect transaction_prealloc_size value: '100' +SELECT @@transaction_prealloc_size = @@local.transaction_prealloc_size; +@@transaction_prealloc_size = @@local.transaction_prealloc_size +1 +SELECT @@local.transaction_prealloc_size = @@session.transaction_prealloc_size; +@@local.transaction_prealloc_size = @@session.transaction_prealloc_size +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET transaction_prealloc_size = 1027; +SELECT @@transaction_prealloc_size; +@@transaction_prealloc_size +1024 +SELECT local.transaction_prealloc_size; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.transaction_prealloc_size; +ERROR 42S02: Unknown table 'session' in field list +SELECT transaction_prealloc_size = @@session.transaction_prealloc_size; +ERROR 42S22: Unknown column 'transaction_prealloc_size' in 'field list' +SET @@global.transaction_prealloc_size = @start_global_value; +SELECT @@global.transaction_prealloc_size; +@@global.transaction_prealloc_size +4096 +SET @@session.transaction_prealloc_size = @start_session_value; +SELECT @@session.transaction_prealloc_size; +@@session.transaction_prealloc_size +4096 diff --git a/mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result b/mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result new file mode 100644 index 00000000000..ae03e677e56 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/wait_timeout_basic_32.result @@ -0,0 +1,129 @@ +SET @start_global_value = @@global.wait_timeout; +SET @start_session_value = @@session.wait_timeout; +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.wait_timeout = 100; +SET @@global.wait_timeout = DEFAULT; +SELECT @@global.wait_timeout; +@@global.wait_timeout +28800 +SET @@session.wait_timeout = 200; +SET @@session.wait_timeout = DEFAULT; +SELECT @@session.wait_timeout; +@@session.wait_timeout +28800 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.wait_timeout = DEFAULT; +SELECT @@global.wait_timeout = @default_wait_timeout; +@@global.wait_timeout = @default_wait_timeout +1 +SET @@session.wait_timeout = DEFAULT; +SELECT @@session.wait_timeout = @default_wait_timeout; +@@session.wait_timeout = @default_wait_timeout +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.wait_timeout= 1; +SELECT @@global.wait_timeout; +@@global.wait_timeout +1 +SET @@global.wait_timeout = 60020; +SELECT @@global.wait_timeout; +@@global.wait_timeout +60020 +SET @@global.wait_timeout = 31536000; +SELECT @@global.wait_timeout = @max_wait_timeout; +@@global.wait_timeout = @max_wait_timeout +1 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.wait_timeout =6000; +SELECT @@session.wait_timeout; +@@session.wait_timeout +6000 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.wait_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +SET @@global.wait_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.wait_timeout = ON; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@global.wait_timeout = OFF; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@global.wait_timeout = True; +SELECT @@global.wait_timeout; +@@global.wait_timeout +1 +SET @@global.wait_timeout = False; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +SELECT @@global.wait_timeout; +@@global.wait_timeout +1 +SET @@global.wait_timeout = 65530.34; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@global.wait_timeout ="Test"; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = ON; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = OFF; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = True; +SELECT @@session.wait_timeout; +@@session.wait_timeout +1 +SET @@session.wait_timeout = False; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +SELECT @@session.wait_timeout; +@@session.wait_timeout +1 +SET @@session.wait_timeout = "Test"; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = 'test'; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = 123456789031; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '123456789031' +SELECT @@session.wait_timeout = @max_wait_timeout; +@@session.wait_timeout = @max_wait_timeout +1 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='wait_timeout'; +@@global.wait_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='wait_timeout'; +@@session.wait_timeout = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.wait_timeout = 30000; +SET @@global.wait_timeout = 40000; +SELECT @@wait_timeout = @@global.wait_timeout; +@@wait_timeout = @@global.wait_timeout +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@wait_timeout = 100; +SELECT @@wait_timeout = @@local.wait_timeout; +@@wait_timeout = @@local.wait_timeout +1 +SELECT @@local.wait_timeout = @@session.wait_timeout; +@@local.wait_timeout = @@session.wait_timeout +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET wait_timeout = 1027; +SELECT @@wait_timeout; +@@wait_timeout +1027 +SELECT local.wait_timeout; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.wait_timeout; +ERROR 42S02: Unknown table 'session' in field list +SELECT wait_timeout = @@session.wait_timeout; +ERROR 42S22: Unknown column 'wait_timeout' in 'field list' +SET @@global.wait_timeout = @start_global_value; +SET @@session.wait_timeout = @start_session_value; diff --git a/mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result b/mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result new file mode 100644 index 00000000000..ae03e677e56 --- /dev/null +++ b/mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result @@ -0,0 +1,129 @@ +SET @start_global_value = @@global.wait_timeout; +SET @start_session_value = @@session.wait_timeout; +'#--------------------FN_DYNVARS_005_01-------------------------#' +SET @@global.wait_timeout = 100; +SET @@global.wait_timeout = DEFAULT; +SELECT @@global.wait_timeout; +@@global.wait_timeout +28800 +SET @@session.wait_timeout = 200; +SET @@session.wait_timeout = DEFAULT; +SELECT @@session.wait_timeout; +@@session.wait_timeout +28800 +'#--------------------FN_DYNVARS_005_02-------------------------#' +SET @@global.wait_timeout = DEFAULT; +SELECT @@global.wait_timeout = @default_wait_timeout; +@@global.wait_timeout = @default_wait_timeout +1 +SET @@session.wait_timeout = DEFAULT; +SELECT @@session.wait_timeout = @default_wait_timeout; +@@session.wait_timeout = @default_wait_timeout +1 +'#--------------------FN_DYNVARS_005_03-------------------------#' +SET @@global.wait_timeout= 1; +SELECT @@global.wait_timeout; +@@global.wait_timeout +1 +SET @@global.wait_timeout = 60020; +SELECT @@global.wait_timeout; +@@global.wait_timeout +60020 +SET @@global.wait_timeout = 31536000; +SELECT @@global.wait_timeout = @max_wait_timeout; +@@global.wait_timeout = @max_wait_timeout +1 +'#--------------------FN_DYNVARS_005_04-------------------------#' +SET @@session.wait_timeout =6000; +SELECT @@session.wait_timeout; +@@session.wait_timeout +6000 +'#------------------FN_DYNVARS_005_05-----------------------#' +SET @@global.wait_timeout = 0; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +SET @@global.wait_timeout = -1024; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +'Bug # 34837: Errors are not coming on assigning invalid values to variable'; +SET @@global.wait_timeout = ON; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@global.wait_timeout = OFF; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@global.wait_timeout = True; +SELECT @@global.wait_timeout; +@@global.wait_timeout +1 +SET @@global.wait_timeout = False; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +SELECT @@global.wait_timeout; +@@global.wait_timeout +1 +SET @@global.wait_timeout = 65530.34; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@global.wait_timeout ="Test"; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = ON; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = OFF; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = True; +SELECT @@session.wait_timeout; +@@session.wait_timeout +1 +SET @@session.wait_timeout = False; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '0' +SELECT @@session.wait_timeout; +@@session.wait_timeout +1 +SET @@session.wait_timeout = "Test"; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = 'test'; +ERROR 42000: Incorrect argument type to variable 'wait_timeout' +SET @@session.wait_timeout = 123456789031; +Warnings: +Warning 1292 Truncated incorrect wait_timeout value: '123456789031' +SELECT @@session.wait_timeout = @max_wait_timeout; +@@session.wait_timeout = @max_wait_timeout +1 +'#------------------FN_DYNVARS_005_06-----------------------#' +SELECT @@global.wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES +WHERE VARIABLE_NAME='wait_timeout'; +@@global.wait_timeout = VARIABLE_VALUE +1 +'#------------------FN_DYNVARS_005_07-----------------------#' +SELECT @@session.wait_timeout = VARIABLE_VALUE +FROM INFORMATION_SCHEMA.SESSION_VARIABLES +WHERE VARIABLE_NAME='wait_timeout'; +@@session.wait_timeout = VARIABLE_VALUE +1 +'#---------------------FN_DYNVARS_001_09----------------------#' +SET @@global.wait_timeout = 30000; +SET @@global.wait_timeout = 40000; +SELECT @@wait_timeout = @@global.wait_timeout; +@@wait_timeout = @@global.wait_timeout +0 +'#---------------------FN_DYNVARS_001_10----------------------#' +SET @@wait_timeout = 100; +SELECT @@wait_timeout = @@local.wait_timeout; +@@wait_timeout = @@local.wait_timeout +1 +SELECT @@local.wait_timeout = @@session.wait_timeout; +@@local.wait_timeout = @@session.wait_timeout +1 +'#---------------------FN_DYNVARS_001_11----------------------#' +SET wait_timeout = 1027; +SELECT @@wait_timeout; +@@wait_timeout +1027 +SELECT local.wait_timeout; +ERROR 42S02: Unknown table 'local' in field list +SELECT session.wait_timeout; +ERROR 42S02: Unknown table 'session' in field list +SELECT wait_timeout = @@session.wait_timeout; +ERROR 42S22: Unknown column 'wait_timeout' in 'field list' +SET @@global.wait_timeout = @start_global_value; +SET @@session.wait_timeout = @start_session_value; diff --git a/mysql-test/suite/sys_vars/t/binlog_cache_size_basic_32.test b/mysql-test/suite/sys_vars/t/binlog_cache_size_basic_32.test new file mode 100644 index 00000000000..1c6d805683f --- /dev/null +++ b/mysql-test/suite/sys_vars/t/binlog_cache_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/binlog_cache_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/binlog_cache_size_basic_64.test b/mysql-test/suite/sys_vars/t/binlog_cache_size_basic_64.test new file mode 100644 index 00000000000..1074bb46069 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/binlog_cache_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/binlog_cache_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_32.test b/mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_32.test new file mode 100644 index 00000000000..84a90d42bec --- /dev/null +++ b/mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_64.test b/mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_64.test new file mode 100644 index 00000000000..4727daf0b4b --- /dev/null +++ b/mysql-test/suite/sys_vars/t/bulk_insert_buffer_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/bulk_insert_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_32.test b/mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_32.test new file mode 100644 index 00000000000..7cbce057bec --- /dev/null +++ b/mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/delayed_insert_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_64.test b/mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_64.test new file mode 100644 index 00000000000..fbc31e937fe --- /dev/null +++ b/mysql-test/suite/sys_vars/t/delayed_insert_limit_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/delayed_insert_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/delayed_queue_size_basic_32.test b/mysql-test/suite/sys_vars/t/delayed_queue_size_basic_32.test new file mode 100644 index 00000000000..1e67d426f10 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/delayed_queue_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/delayed_queue_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/delayed_queue_size_basic_64.test b/mysql-test/suite/sys_vars/t/delayed_queue_size_basic_64.test new file mode 100644 index 00000000000..44d5839759c --- /dev/null +++ b/mysql-test/suite/sys_vars/t/delayed_queue_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/delayed_queue_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test new file mode 100644 index 00000000000..13e1b205a4d --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test new file mode 100644 index 00000000000..fc26c903de5 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_concurrency_tickets_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/innodb_concurrency_tickets_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test new file mode 100644 index 00000000000..8396755844e --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/innodb_max_purge_lag_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test new file mode 100644 index 00000000000..4744cee20d9 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_max_purge_lag_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/innodb_max_purge_lag_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test new file mode 100644 index 00000000000..981b6c4e992 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test new file mode 100644 index 00000000000..ab7c01c5b6d --- /dev/null +++ b/mysql-test/suite/sys_vars/t/innodb_sync_spin_loops_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/innodb_sync_spin_loops_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/join_buffer_size_basic_32.test b/mysql-test/suite/sys_vars/t/join_buffer_size_basic_32.test new file mode 100644 index 00000000000..f6b35b89644 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/join_buffer_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/join_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/join_buffer_size_basic_64.test b/mysql-test/suite/sys_vars/t/join_buffer_size_basic_64.test new file mode 100644 index 00000000000..5632471235f --- /dev/null +++ b/mysql-test/suite/sys_vars/t/join_buffer_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/join_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test b/mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test new file mode 100644 index 00000000000..086e51e185c --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_buffer_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/key_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test b/mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test new file mode 100644 index 00000000000..5604c56480b --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_buffer_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/key_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_32.test b/mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_32.test new file mode 100644 index 00000000000..8a234d9d300 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/key_cache_age_threshold_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_64.test b/mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_64.test new file mode 100644 index 00000000000..32f98cba941 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_cache_age_threshold_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/key_cache_age_threshold_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test new file mode 100644 index 00000000000..db0c0bd67a2 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/key_cache_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test new file mode 100644 index 00000000000..7403d762dc4 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_cache_block_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/key_cache_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test new file mode 100644 index 00000000000..fcc28438866 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/key_cache_division_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test new file mode 100644 index 00000000000..ac4dd1c96d3 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/key_cache_division_limit_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/key_cache_division_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/log_warnings_basic_32.test b/mysql-test/suite/sys_vars/t/log_warnings_basic_32.test new file mode 100644 index 00000000000..a63cbed2aa3 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/log_warnings_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/log_warnings_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/log_warnings_basic_64.test b/mysql-test/suite/sys_vars/t/log_warnings_basic_64.test new file mode 100644 index 00000000000..5a8ad5482a5 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/log_warnings_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/log_warnings_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test new file mode 100644 index 00000000000..51386b1f994 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/max_binlog_cache_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test new file mode 100644 index 00000000000..c7c757341fa --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_binlog_cache_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/max_binlog_cache_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_connect_errors_basic_32.test b/mysql-test/suite/sys_vars/t/max_connect_errors_basic_32.test new file mode 100644 index 00000000000..62c7ec71568 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_connect_errors_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/max_connect_errors_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_connect_errors_basic_64.test b/mysql-test/suite/sys_vars/t/max_connect_errors_basic_64.test new file mode 100644 index 00000000000..f27135d53c7 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_connect_errors_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/max_connect_errors_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test new file mode 100644 index 00000000000..180c41a5ecf --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/max_heap_table_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test new file mode 100644 index 00000000000..89d234f5399 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_heap_table_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/max_heap_table_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_32.test b/mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_32.test new file mode 100644 index 00000000000..84d76c7cb43 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/max_seeks_for_key_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_64.test b/mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_64.test new file mode 100644 index 00000000000..63c0c1d6a6b --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_seeks_for_key_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/max_seeks_for_key_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_tmp_tables_basic_32.test b/mysql-test/suite/sys_vars/t/max_tmp_tables_basic_32.test new file mode 100644 index 00000000000..95ce399e68e --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_tmp_tables_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/max_tmp_tables_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_tmp_tables_basic_64.test b/mysql-test/suite/sys_vars/t/max_tmp_tables_basic_64.test new file mode 100644 index 00000000000..573e5a75230 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_tmp_tables_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/max_tmp_tables_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_write_lock_count_basic_32.test b/mysql-test/suite/sys_vars/t/max_write_lock_count_basic_32.test new file mode 100644 index 00000000000..b4953208976 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_write_lock_count_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/max_write_lock_count_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/max_write_lock_count_basic_64.test b/mysql-test/suite/sys_vars/t/max_write_lock_count_basic_64.test new file mode 100644 index 00000000000..b0c5dabac07 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/max_write_lock_count_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/max_write_lock_count_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_32.test b/mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_32.test new file mode 100644 index 00000000000..de53be3cb7c --- /dev/null +++ b/mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/min_examined_row_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_64.test b/mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_64.test new file mode 100644 index 00000000000..449b5d5525e --- /dev/null +++ b/mysql-test/suite/sys_vars/t/min_examined_row_limit_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/min_examined_row_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/multi_range_count_basic_32.test b/mysql-test/suite/sys_vars/t/multi_range_count_basic_32.test new file mode 100644 index 00000000000..f9db6632d33 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/multi_range_count_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/multi_range_count_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/multi_range_count_basic_64.test b/mysql-test/suite/sys_vars/t/multi_range_count_basic_64.test new file mode 100644 index 00000000000..12ad7588bbd --- /dev/null +++ b/mysql-test/suite/sys_vars/t/multi_range_count_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/multi_range_count_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_32.test b/mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_32.test new file mode 100644 index 00000000000..6c0ff16bc6f --- /dev/null +++ b/mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_64.test b/mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_64.test new file mode 100644 index 00000000000..108cc2e2350 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/myisam_max_sort_file_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/myisam_max_sort_file_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_32.test b/mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_32.test new file mode 100644 index 00000000000..f395ffe8ee0 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/myisam_repair_threads_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_64.test b/mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_64.test new file mode 100644 index 00000000000..21ed5fd9c5f --- /dev/null +++ b/mysql-test/suite/sys_vars/t/myisam_repair_threads_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/myisam_repair_threads_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_32.test b/mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_32.test new file mode 100644 index 00000000000..9c4116758f7 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_64.test b/mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_64.test new file mode 100644 index 00000000000..70f8a33ed4d --- /dev/null +++ b/mysql-test/suite/sys_vars/t/myisam_sort_buffer_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/myisam_sort_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/net_retry_count_basic_32.test b/mysql-test/suite/sys_vars/t/net_retry_count_basic_32.test new file mode 100644 index 00000000000..56f0e56f100 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/net_retry_count_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/net_retry_count_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/net_retry_count_basic_64.test b/mysql-test/suite/sys_vars/t/net_retry_count_basic_64.test new file mode 100644 index 00000000000..cb1fe8beebb --- /dev/null +++ b/mysql-test/suite/sys_vars/t/net_retry_count_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/net_retry_count_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_32.test b/mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_32.test new file mode 100644 index 00000000000..471b48c3059 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/query_alloc_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_64.test b/mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_64.test new file mode 100644 index 00000000000..64517899171 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_alloc_block_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/query_alloc_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_cache_limit_basic_32.test b/mysql-test/suite/sys_vars/t/query_cache_limit_basic_32.test new file mode 100644 index 00000000000..0416fc46349 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_cache_limit_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/query_cache_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_cache_limit_basic_64.test b/mysql-test/suite/sys_vars/t/query_cache_limit_basic_64.test new file mode 100644 index 00000000000..0d134449bf9 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_cache_limit_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/query_cache_limit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_32.test b/mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_32.test new file mode 100644 index 00000000000..1288157d102 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/query_cache_min_res_unit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_64.test b/mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_64.test new file mode 100644 index 00000000000..e941b55ab52 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_cache_min_res_unit_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/query_cache_min_res_unit_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_cache_size_basic_32.test b/mysql-test/suite/sys_vars/t/query_cache_size_basic_32.test new file mode 100644 index 00000000000..17fd1bb41ab --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_cache_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/query_cache_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_cache_size_basic_64.test b/mysql-test/suite/sys_vars/t/query_cache_size_basic_64.test new file mode 100644 index 00000000000..ba0cddc5a3a --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_cache_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/query_cache_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test new file mode 100644 index 00000000000..34dafc71c9c --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/query_prealloc_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test new file mode 100644 index 00000000000..c1f04c0788c --- /dev/null +++ b/mysql-test/suite/sys_vars/t/query_prealloc_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/query_prealloc_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_32.test b/mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_32.test new file mode 100644 index 00000000000..14cdc82f7c4 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/range_alloc_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_64.test b/mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_64.test new file mode 100644 index 00000000000..a4125b14fd0 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/range_alloc_block_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/range_alloc_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_32.test b/mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_32.test new file mode 100644 index 00000000000..c28282dd38b --- /dev/null +++ b/mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/rpl_recovery_rank_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_64.test b/mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_64.test new file mode 100644 index 00000000000..51895efa65e --- /dev/null +++ b/mysql-test/suite/sys_vars/t/rpl_recovery_rank_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/rpl_recovery_rank_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/server_id_basic_32.test b/mysql-test/suite/sys_vars/t/server_id_basic_32.test new file mode 100644 index 00000000000..e01b271e002 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/server_id_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/server_id_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/server_id_basic_64.test b/mysql-test/suite/sys_vars/t/server_id_basic_64.test new file mode 100644 index 00000000000..4ef870aa977 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/server_id_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/server_id_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_32.test b/mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_32.test new file mode 100644 index 00000000000..8f3147ddab4 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/slave_transaction_retries_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_64.test b/mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_64.test new file mode 100644 index 00000000000..dfd52507f61 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/slave_transaction_retries_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/slave_transaction_retries_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/sort_buffer_size_basic_32.test b/mysql-test/suite/sys_vars/t/sort_buffer_size_basic_32.test new file mode 100644 index 00000000000..d63cc997f5b --- /dev/null +++ b/mysql-test/suite/sys_vars/t/sort_buffer_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/sort_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/sort_buffer_size_basic_64.test b/mysql-test/suite/sys_vars/t/sort_buffer_size_basic_64.test new file mode 100644 index 00000000000..4c7a16bd014 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/sort_buffer_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/sort_buffer_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test b/mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test new file mode 100644 index 00000000000..275b95cf775 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/sync_binlog_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/sync_binlog_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test b/mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test new file mode 100644 index 00000000000..e6f9bf668a0 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/sync_binlog_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/sync_binlog_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/timestamp_basic_32.test b/mysql-test/suite/sys_vars/t/timestamp_basic_32.test new file mode 100644 index 00000000000..a2b6139aef9 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/timestamp_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/timestamp_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/timestamp_basic_64.test b/mysql-test/suite/sys_vars/t/timestamp_basic_64.test new file mode 100644 index 00000000000..fbc86316ed9 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/timestamp_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/timestamp_basic.inc + 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 new file mode 100644 index 00000000000..c772b5c896c --- /dev/null +++ b/mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# 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 new file mode 100644 index 00000000000..46b3f65be9a --- /dev/null +++ b/mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# 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 + diff --git a/mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_32.test b/mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_32.test new file mode 100644 index 00000000000..b9fbf429220 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/transaction_alloc_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_64.test b/mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_64.test new file mode 100644 index 00000000000..fb68245ee62 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/transaction_alloc_block_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/transaction_alloc_block_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_32.test b/mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_32.test new file mode 100644 index 00000000000..23ea53334ff --- /dev/null +++ b/mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/transaction_prealloc_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_64.test b/mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_64.test new file mode 100644 index 00000000000..79a18585e80 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/transaction_prealloc_size_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/transaction_prealloc_size_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test b/mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test new file mode 100644 index 00000000000..613a5543b14 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/wait_timeout_basic_32.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 32 bit machines # +################################################################################ + +--source include/have_32bit.inc +--source suite/sys_vars/inc/wait_timeout_basic.inc + diff --git a/mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test b/mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test new file mode 100644 index 00000000000..d1138cbc105 --- /dev/null +++ b/mysql-test/suite/sys_vars/t/wait_timeout_basic_64.test @@ -0,0 +1,9 @@ +################################################################################ +# Created by Horst Hunger 2008-05-07 # +# # +# Wrapper for 64 bit machines # +################################################################################ + +--source include/have_64bit.inc +--source suite/sys_vars/inc/wait_timeout_basic.inc + From d8c838c27af0a5e07754d12360cad0c842c857e3 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Wed, 23 Jul 2008 16:34:02 +0200 Subject: [PATCH 305/435] BUG#37733: rpl.rpl_flushlog_loop 'row' fails sporadically on pushbuild BUG#37884: rpl_row_basic_2myisam and rpl_row_basic_3innodb fail sporadically in pushbuild These have been fixed in 5.1-rpl. Re-applying fix for BUG#37884 in 5.1-bugteam, and disabling rpl_flushlog_loop for BUG#37733 in 5.1-bugteam. mysql-test/extra/rpl_tests/rpl_row_basic.test: Missing sync_slave_with_master added. mysql-test/suite/rpl/t/disabled.def: Disabling rpl_flushlog_loop until the fixed version gets merged from 5.1-rpl --- mysql-test/extra/rpl_tests/rpl_row_basic.test | 4 ++++ mysql-test/suite/rpl/t/disabled.def | 1 + 2 files changed, 5 insertions(+) diff --git a/mysql-test/extra/rpl_tests/rpl_row_basic.test b/mysql-test/extra/rpl_tests/rpl_row_basic.test index 4be7ad54cb3..f609b644726 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_basic.test +++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test @@ -354,6 +354,7 @@ CREATE TABLE t7 (i INT NOT NULL, connection master; INSERT INTO t1 VALUES (1, "", 1); INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); +sync_slave_with_master; let $diff_table_1=master:test.t1; let $diff_table_2=slave:test.t1; @@ -363,6 +364,7 @@ source include/diff_tables.inc; connection master; INSERT INTO t2 VALUES (1, "", 1); INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2); +sync_slave_with_master; let $diff_table_1=master:test.t2; let $diff_table_2=slave:test.t2; @@ -387,6 +389,7 @@ source include/wait_for_slave_to_start.inc; connection master; INSERT INTO t4 VALUES (1, "", 1); INSERT INTO t4 VALUES (2, repeat(_utf8'a', 128), 2); +sync_slave_with_master; let $diff_table_1=master:test.t4; let $diff_table_2=slave:test.t4; @@ -426,6 +429,7 @@ source include/wait_for_slave_to_start.inc; connection master; INSERT INTO t7 VALUES (1, "", 1); INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); +sync_slave_with_master; let $diff_table_1=master:test.t7; let $diff_table_2=slave:test.t7; diff --git a/mysql-test/suite/rpl/t/disabled.def b/mysql-test/suite/rpl/t/disabled.def index 43a379dbe03..a8c83d58884 100644 --- a/mysql-test/suite/rpl/t/disabled.def +++ b/mysql-test/suite/rpl/t/disabled.def @@ -13,3 +13,4 @@ rpl_redirect : Failure is sporadic and and the test is superfluous (mats) rpl_innodb_bug28430 : Failure on Solaris Bug #36793 rpl_temporary : BUG#38269 2008-07-21 Sven valgrind error in pushbuild +rpl_flushlog_loop : BUG#37733 2008-07-23 Sven disabled in 5.1-bugteam. the bug has been fixed in 5.1-rpl: please re-enable when that gets pushed to main From 159505f82bce7914a8d0b56337454bbb46478658 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Wed, 23 Jul 2008 18:56:39 +0200 Subject: [PATCH 306/435] BUG#38068: binlog_stm_binlog fails sporadically in pushbuild Problem: binlog_stm_binlog runs INSERT DELAYED queries, and then prints the contents of the binlog. Before checking the contents of the binlog, the test waits until the rows have appeared in the table. However, this is not enough, since INSERT DELAYED does not write rows to the binlog at the same time as it writes them to the table. So there is a race. Fix: Add a FLUSH TABLES before SHOW BINLOG EVENTS. That waits until the insert_delayed thread is done. mysql-test/extra/binlog_tests/binlog_insert_delayed.test: - Added FLUSH TABLES, so that SHOW BINLOG EVENTS becomes deterministic. - Added comments. - Removed unnecessary 'set @@session.auto_increment_increment' statements. - Removed unnecessary check that the number of rows inserted to the table is 11. mysql-test/suite/binlog/r/binlog_stm_binlog.result: updated result file --- .../binlog_tests/binlog_insert_delayed.test | 56 +++++++++++++------ .../suite/binlog/r/binlog_stm_binlog.result | 4 +- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/mysql-test/extra/binlog_tests/binlog_insert_delayed.test b/mysql-test/extra/binlog_tests/binlog_insert_delayed.test index d073c8ef227..c99d0b86be3 100644 --- a/mysql-test/extra/binlog_tests/binlog_insert_delayed.test +++ b/mysql-test/extra/binlog_tests/binlog_insert_delayed.test @@ -1,17 +1,43 @@ -# Test of binlogging of INSERT_ID with INSERT DELAYED +# ==== Purpose ==== +# +# Verify that INSERT DELAYED in mixed or row mode writes events to the +# binlog, and that AUTO_INCREMENT works correctly. +# +# ==== Method ==== +# +# Insert both single and multiple rows into an autoincrement column, +# both with specified value and with NULL. +# +# With INSERT DELAYED, the rows do not show up in the table +# immediately, so we must do source include/wait_until_rows_count.inc +# between any two INSERT DELAYED statements. Moreover, if mixed or +# row-based logging is used, there is also a delay between when rows +# show up in the table and when they show up in the binlog. To ensure +# that the rows show up in the binlog, we call FLUSH TABLES, which +# waits until the delayed_insert thread has finished. +# +# We cannot read the binlog after executing INSERT DELAYED statements +# that insert multiple rows, because that is nondeterministic. More +# precisely, rows may be written in batches to the binlog, where each +# batch has one Table_map_log_event and one or more +# Write_rows_log_event. The number of rows included in each batch is +# nondeterministic. +# +# ==== Related bugs ==== +# +# BUG#20627: INSERT DELAYED does not honour auto_increment_* variables +# Bug in this test: BUG#38068: binlog_stm_binlog fails sporadically in pushbuild + + create table t1 (a int not null auto_increment, primary key (a)) engine=myisam; -# First, avoid BUG#20627: -set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1; -# Verify that only one INSERT_ID event is binlogged. -# Note, that because of WL#3368 mixed mode binlog records RBR events for the delayed + let $table=t1; -let $rows_inserted=11; # total number of inserted rows in this test +let $count=0; + insert delayed into t1 values (207); -let $count=1; - -# use this macro instead of sleeps. - +inc $count; --source include/wait_until_rows_count.inc + insert delayed into t1 values (null); inc $count; --source include/wait_until_rows_count.inc @@ -20,9 +46,10 @@ insert delayed into t1 values (300); inc $count; --source include/wait_until_rows_count.inc -# moving binlog check affront of multi-rows queries which work is indeterministic (extra table_maps) -# todo: better check is to substitute SHOW BINLOG with reading from binlog, probably bug#19459 is in -# the way +# It is not enough to wait until all rows have been inserted into the +# table. FLUSH TABLES ensures that they are in the binlog too. See +# comment above. +FLUSH TABLES; source include/show_binlog_events.inc; insert delayed into t1 values (null),(null),(null),(null); @@ -33,8 +60,5 @@ insert delayed into t1 values (null),(null),(400),(null); inc $count; inc $count; inc $count; inc $count; --source include/wait_until_rows_count.inc -#check this assertion about $count calculation ---echo $count == $rows_inserted - select * from t1; drop table t1; diff --git a/mysql-test/suite/binlog/r/binlog_stm_binlog.result b/mysql-test/suite/binlog/r/binlog_stm_binlog.result index 20d7281d5cc..ae8c1e11737 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_stm_binlog.result @@ -629,10 +629,10 @@ master-bin.000001 # Query # # use `mysql`; UPDATE user SET password=password('An master-bin.000001 # Query # # use `mysql`; DELETE FROM user WHERE host='localhost' AND user='@#@' drop table t1,t2,t3,tt1; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam; -set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1; insert delayed into t1 values (207); insert delayed into t1 values (null); insert delayed into t1 values (300); +FLUSH TABLES; show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key) @@ -660,9 +660,9 @@ master-bin.000001 # Query # # use `test`; BEGIN master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; COMMIT +master-bin.000001 # Query # # use `test`; FLUSH TABLES insert delayed into t1 values (null),(null),(null),(null); insert delayed into t1 values (null),(null),(400),(null); -11 == 11 select * from t1; a 207 From 14887bb2ab898fa18b14e233567b994c494e59d3 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Thu, 24 Jul 2008 11:14:34 -0300 Subject: [PATCH 307/435] Cherry-pick Bug#33362 from mysql-5.1 --- mysql-test/r/query_cache_merge.result | 1672 +++++++++++++++++++++++++ mysql-test/t/query_cache_merge.test | 56 + sql/sql_cache.cc | 2 +- 3 files changed, 1729 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/query_cache_merge.result b/mysql-test/r/query_cache_merge.result index c6df4266de2..f47d3b35119 100644 --- a/mysql-test/r/query_cache_merge.result +++ b/mysql-test/r/query_cache_merge.result @@ -18,3 +18,1675 @@ Variable_name Value Qcache_queries_in_cache 0 drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65,t66,t67,t68,t69,t70,t71,t72,t73,t74,t75,t76,t77,t78,t79,t80,t81,t82,t83,t84,t85,t86,t87,t88,t89,t90,t91,t92,t93,t94,t95,t96,t97,t98,t99,t100,t101,t102,t103,t104,t105,t106,t107,t108,t109,t110,t111,t112,t113,t114,t115,t116,t117,t118,t119,t120,t121,t122,t123,t124,t125,t126,t127,t128,t129,t130,t131,t132,t133,t134,t135,t136,t137,t138,t139,t140,t141,t142,t143,t144,t145,t146,t147,t148,t149,t150,t151,t152,t153,t154,t155,t156,t157,t158,t159,t160,t161,t162,t163,t164,t165,t166,t167,t168,t169,t170,t171,t172,t173,t174,t175,t176,t177,t178,t179,t180,t181,t182,t183,t184,t185,t186,t187,t188,t189,t190,t191,t192,t193,t194,t195,t196,t197,t198,t199,t200,t201,t202,t203,t204,t205,t206,t207,t208,t209,t210,t211,t212,t213,t214,t215,t216,t217,t218,t219,t220,t221,t222,t223,t224,t225,t226,t227,t228,t229,t230,t231,t232,t233,t234,t235,t236,t237,t238,t239,t240,t241,t242,t243,t244,t245,t246,t247,t248,t249,t250,t251,t252,t253,t254,t255,t256,t257,t00; SET @@global.query_cache_size=0; +CREATE TABLE t255 (a INT); +INSERT INTO t255 VALUES (255); +CREATE TABLE t254 (a INT); +INSERT INTO t254 VALUES (254); +CREATE TABLE t253 (a INT); +INSERT INTO t253 VALUES (253); +CREATE TABLE t252 (a INT); +INSERT INTO t252 VALUES (252); +CREATE TABLE t251 (a INT); +INSERT INTO t251 VALUES (251); +CREATE TABLE t250 (a INT); +INSERT INTO t250 VALUES (250); +CREATE TABLE t249 (a INT); +INSERT INTO t249 VALUES (249); +CREATE TABLE t248 (a INT); +INSERT INTO t248 VALUES (248); +CREATE TABLE t247 (a INT); +INSERT INTO t247 VALUES (247); +CREATE TABLE t246 (a INT); +INSERT INTO t246 VALUES (246); +CREATE TABLE t245 (a INT); +INSERT INTO t245 VALUES (245); +CREATE TABLE t244 (a INT); +INSERT INTO t244 VALUES (244); +CREATE TABLE t243 (a INT); +INSERT INTO t243 VALUES (243); +CREATE TABLE t242 (a INT); +INSERT INTO t242 VALUES (242); +CREATE TABLE t241 (a INT); +INSERT INTO t241 VALUES (241); +CREATE TABLE t240 (a INT); +INSERT INTO t240 VALUES (240); +CREATE TABLE t239 (a INT); +INSERT INTO t239 VALUES (239); +CREATE TABLE t238 (a INT); +INSERT INTO t238 VALUES (238); +CREATE TABLE t237 (a INT); +INSERT INTO t237 VALUES (237); +CREATE TABLE t236 (a INT); +INSERT INTO t236 VALUES (236); +CREATE TABLE t235 (a INT); +INSERT INTO t235 VALUES (235); +CREATE TABLE t234 (a INT); +INSERT INTO t234 VALUES (234); +CREATE TABLE t233 (a INT); +INSERT INTO t233 VALUES (233); +CREATE TABLE t232 (a INT); +INSERT INTO t232 VALUES (232); +CREATE TABLE t231 (a INT); +INSERT INTO t231 VALUES (231); +CREATE TABLE t230 (a INT); +INSERT INTO t230 VALUES (230); +CREATE TABLE t229 (a INT); +INSERT INTO t229 VALUES (229); +CREATE TABLE t228 (a INT); +INSERT INTO t228 VALUES (228); +CREATE TABLE t227 (a INT); +INSERT INTO t227 VALUES (227); +CREATE TABLE t226 (a INT); +INSERT INTO t226 VALUES (226); +CREATE TABLE t225 (a INT); +INSERT INTO t225 VALUES (225); +CREATE TABLE t224 (a INT); +INSERT INTO t224 VALUES (224); +CREATE TABLE t223 (a INT); +INSERT INTO t223 VALUES (223); +CREATE TABLE t222 (a INT); +INSERT INTO t222 VALUES (222); +CREATE TABLE t221 (a INT); +INSERT INTO t221 VALUES (221); +CREATE TABLE t220 (a INT); +INSERT INTO t220 VALUES (220); +CREATE TABLE t219 (a INT); +INSERT INTO t219 VALUES (219); +CREATE TABLE t218 (a INT); +INSERT INTO t218 VALUES (218); +CREATE TABLE t217 (a INT); +INSERT INTO t217 VALUES (217); +CREATE TABLE t216 (a INT); +INSERT INTO t216 VALUES (216); +CREATE TABLE t215 (a INT); +INSERT INTO t215 VALUES (215); +CREATE TABLE t214 (a INT); +INSERT INTO t214 VALUES (214); +CREATE TABLE t213 (a INT); +INSERT INTO t213 VALUES (213); +CREATE TABLE t212 (a INT); +INSERT INTO t212 VALUES (212); +CREATE TABLE t211 (a INT); +INSERT INTO t211 VALUES (211); +CREATE TABLE t210 (a INT); +INSERT INTO t210 VALUES (210); +CREATE TABLE t209 (a INT); +INSERT INTO t209 VALUES (209); +CREATE TABLE t208 (a INT); +INSERT INTO t208 VALUES (208); +CREATE TABLE t207 (a INT); +INSERT INTO t207 VALUES (207); +CREATE TABLE t206 (a INT); +INSERT INTO t206 VALUES (206); +CREATE TABLE t205 (a INT); +INSERT INTO t205 VALUES (205); +CREATE TABLE t204 (a INT); +INSERT INTO t204 VALUES (204); +CREATE TABLE t203 (a INT); +INSERT INTO t203 VALUES (203); +CREATE TABLE t202 (a INT); +INSERT INTO t202 VALUES (202); +CREATE TABLE t201 (a INT); +INSERT INTO t201 VALUES (201); +CREATE TABLE t200 (a INT); +INSERT INTO t200 VALUES (200); +CREATE TABLE t199 (a INT); +INSERT INTO t199 VALUES (199); +CREATE TABLE t198 (a INT); +INSERT INTO t198 VALUES (198); +CREATE TABLE t197 (a INT); +INSERT INTO t197 VALUES (197); +CREATE TABLE t196 (a INT); +INSERT INTO t196 VALUES (196); +CREATE TABLE t195 (a INT); +INSERT INTO t195 VALUES (195); +CREATE TABLE t194 (a INT); +INSERT INTO t194 VALUES (194); +CREATE TABLE t193 (a INT); +INSERT INTO t193 VALUES (193); +CREATE TABLE t192 (a INT); +INSERT INTO t192 VALUES (192); +CREATE TABLE t191 (a INT); +INSERT INTO t191 VALUES (191); +CREATE TABLE t190 (a INT); +INSERT INTO t190 VALUES (190); +CREATE TABLE t189 (a INT); +INSERT INTO t189 VALUES (189); +CREATE TABLE t188 (a INT); +INSERT INTO t188 VALUES (188); +CREATE TABLE t187 (a INT); +INSERT INTO t187 VALUES (187); +CREATE TABLE t186 (a INT); +INSERT INTO t186 VALUES (186); +CREATE TABLE t185 (a INT); +INSERT INTO t185 VALUES (185); +CREATE TABLE t184 (a INT); +INSERT INTO t184 VALUES (184); +CREATE TABLE t183 (a INT); +INSERT INTO t183 VALUES (183); +CREATE TABLE t182 (a INT); +INSERT INTO t182 VALUES (182); +CREATE TABLE t181 (a INT); +INSERT INTO t181 VALUES (181); +CREATE TABLE t180 (a INT); +INSERT INTO t180 VALUES (180); +CREATE TABLE t179 (a INT); +INSERT INTO t179 VALUES (179); +CREATE TABLE t178 (a INT); +INSERT INTO t178 VALUES (178); +CREATE TABLE t177 (a INT); +INSERT INTO t177 VALUES (177); +CREATE TABLE t176 (a INT); +INSERT INTO t176 VALUES (176); +CREATE TABLE t175 (a INT); +INSERT INTO t175 VALUES (175); +CREATE TABLE t174 (a INT); +INSERT INTO t174 VALUES (174); +CREATE TABLE t173 (a INT); +INSERT INTO t173 VALUES (173); +CREATE TABLE t172 (a INT); +INSERT INTO t172 VALUES (172); +CREATE TABLE t171 (a INT); +INSERT INTO t171 VALUES (171); +CREATE TABLE t170 (a INT); +INSERT INTO t170 VALUES (170); +CREATE TABLE t169 (a INT); +INSERT INTO t169 VALUES (169); +CREATE TABLE t168 (a INT); +INSERT INTO t168 VALUES (168); +CREATE TABLE t167 (a INT); +INSERT INTO t167 VALUES (167); +CREATE TABLE t166 (a INT); +INSERT INTO t166 VALUES (166); +CREATE TABLE t165 (a INT); +INSERT INTO t165 VALUES (165); +CREATE TABLE t164 (a INT); +INSERT INTO t164 VALUES (164); +CREATE TABLE t163 (a INT); +INSERT INTO t163 VALUES (163); +CREATE TABLE t162 (a INT); +INSERT INTO t162 VALUES (162); +CREATE TABLE t161 (a INT); +INSERT INTO t161 VALUES (161); +CREATE TABLE t160 (a INT); +INSERT INTO t160 VALUES (160); +CREATE TABLE t159 (a INT); +INSERT INTO t159 VALUES (159); +CREATE TABLE t158 (a INT); +INSERT INTO t158 VALUES (158); +CREATE TABLE t157 (a INT); +INSERT INTO t157 VALUES (157); +CREATE TABLE t156 (a INT); +INSERT INTO t156 VALUES (156); +CREATE TABLE t155 (a INT); +INSERT INTO t155 VALUES (155); +CREATE TABLE t154 (a INT); +INSERT INTO t154 VALUES (154); +CREATE TABLE t153 (a INT); +INSERT INTO t153 VALUES (153); +CREATE TABLE t152 (a INT); +INSERT INTO t152 VALUES (152); +CREATE TABLE t151 (a INT); +INSERT INTO t151 VALUES (151); +CREATE TABLE t150 (a INT); +INSERT INTO t150 VALUES (150); +CREATE TABLE t149 (a INT); +INSERT INTO t149 VALUES (149); +CREATE TABLE t148 (a INT); +INSERT INTO t148 VALUES (148); +CREATE TABLE t147 (a INT); +INSERT INTO t147 VALUES (147); +CREATE TABLE t146 (a INT); +INSERT INTO t146 VALUES (146); +CREATE TABLE t145 (a INT); +INSERT INTO t145 VALUES (145); +CREATE TABLE t144 (a INT); +INSERT INTO t144 VALUES (144); +CREATE TABLE t143 (a INT); +INSERT INTO t143 VALUES (143); +CREATE TABLE t142 (a INT); +INSERT INTO t142 VALUES (142); +CREATE TABLE t141 (a INT); +INSERT INTO t141 VALUES (141); +CREATE TABLE t140 (a INT); +INSERT INTO t140 VALUES (140); +CREATE TABLE t139 (a INT); +INSERT INTO t139 VALUES (139); +CREATE TABLE t138 (a INT); +INSERT INTO t138 VALUES (138); +CREATE TABLE t137 (a INT); +INSERT INTO t137 VALUES (137); +CREATE TABLE t136 (a INT); +INSERT INTO t136 VALUES (136); +CREATE TABLE t135 (a INT); +INSERT INTO t135 VALUES (135); +CREATE TABLE t134 (a INT); +INSERT INTO t134 VALUES (134); +CREATE TABLE t133 (a INT); +INSERT INTO t133 VALUES (133); +CREATE TABLE t132 (a INT); +INSERT INTO t132 VALUES (132); +CREATE TABLE t131 (a INT); +INSERT INTO t131 VALUES (131); +CREATE TABLE t130 (a INT); +INSERT INTO t130 VALUES (130); +CREATE TABLE t129 (a INT); +INSERT INTO t129 VALUES (129); +CREATE TABLE t128 (a INT); +INSERT INTO t128 VALUES (128); +CREATE TABLE t127 (a INT); +INSERT INTO t127 VALUES (127); +CREATE TABLE t126 (a INT); +INSERT INTO t126 VALUES (126); +CREATE TABLE t125 (a INT); +INSERT INTO t125 VALUES (125); +CREATE TABLE t124 (a INT); +INSERT INTO t124 VALUES (124); +CREATE TABLE t123 (a INT); +INSERT INTO t123 VALUES (123); +CREATE TABLE t122 (a INT); +INSERT INTO t122 VALUES (122); +CREATE TABLE t121 (a INT); +INSERT INTO t121 VALUES (121); +CREATE TABLE t120 (a INT); +INSERT INTO t120 VALUES (120); +CREATE TABLE t119 (a INT); +INSERT INTO t119 VALUES (119); +CREATE TABLE t118 (a INT); +INSERT INTO t118 VALUES (118); +CREATE TABLE t117 (a INT); +INSERT INTO t117 VALUES (117); +CREATE TABLE t116 (a INT); +INSERT INTO t116 VALUES (116); +CREATE TABLE t115 (a INT); +INSERT INTO t115 VALUES (115); +CREATE TABLE t114 (a INT); +INSERT INTO t114 VALUES (114); +CREATE TABLE t113 (a INT); +INSERT INTO t113 VALUES (113); +CREATE TABLE t112 (a INT); +INSERT INTO t112 VALUES (112); +CREATE TABLE t111 (a INT); +INSERT INTO t111 VALUES (111); +CREATE TABLE t110 (a INT); +INSERT INTO t110 VALUES (110); +CREATE TABLE t109 (a INT); +INSERT INTO t109 VALUES (109); +CREATE TABLE t108 (a INT); +INSERT INTO t108 VALUES (108); +CREATE TABLE t107 (a INT); +INSERT INTO t107 VALUES (107); +CREATE TABLE t106 (a INT); +INSERT INTO t106 VALUES (106); +CREATE TABLE t105 (a INT); +INSERT INTO t105 VALUES (105); +CREATE TABLE t104 (a INT); +INSERT INTO t104 VALUES (104); +CREATE TABLE t103 (a INT); +INSERT INTO t103 VALUES (103); +CREATE TABLE t102 (a INT); +INSERT INTO t102 VALUES (102); +CREATE TABLE t101 (a INT); +INSERT INTO t101 VALUES (101); +CREATE TABLE t100 (a INT); +INSERT INTO t100 VALUES (100); +CREATE TABLE t99 (a INT); +INSERT INTO t99 VALUES (99); +CREATE TABLE t98 (a INT); +INSERT INTO t98 VALUES (98); +CREATE TABLE t97 (a INT); +INSERT INTO t97 VALUES (97); +CREATE TABLE t96 (a INT); +INSERT INTO t96 VALUES (96); +CREATE TABLE t95 (a INT); +INSERT INTO t95 VALUES (95); +CREATE TABLE t94 (a INT); +INSERT INTO t94 VALUES (94); +CREATE TABLE t93 (a INT); +INSERT INTO t93 VALUES (93); +CREATE TABLE t92 (a INT); +INSERT INTO t92 VALUES (92); +CREATE TABLE t91 (a INT); +INSERT INTO t91 VALUES (91); +CREATE TABLE t90 (a INT); +INSERT INTO t90 VALUES (90); +CREATE TABLE t89 (a INT); +INSERT INTO t89 VALUES (89); +CREATE TABLE t88 (a INT); +INSERT INTO t88 VALUES (88); +CREATE TABLE t87 (a INT); +INSERT INTO t87 VALUES (87); +CREATE TABLE t86 (a INT); +INSERT INTO t86 VALUES (86); +CREATE TABLE t85 (a INT); +INSERT INTO t85 VALUES (85); +CREATE TABLE t84 (a INT); +INSERT INTO t84 VALUES (84); +CREATE TABLE t83 (a INT); +INSERT INTO t83 VALUES (83); +CREATE TABLE t82 (a INT); +INSERT INTO t82 VALUES (82); +CREATE TABLE t81 (a INT); +INSERT INTO t81 VALUES (81); +CREATE TABLE t80 (a INT); +INSERT INTO t80 VALUES (80); +CREATE TABLE t79 (a INT); +INSERT INTO t79 VALUES (79); +CREATE TABLE t78 (a INT); +INSERT INTO t78 VALUES (78); +CREATE TABLE t77 (a INT); +INSERT INTO t77 VALUES (77); +CREATE TABLE t76 (a INT); +INSERT INTO t76 VALUES (76); +CREATE TABLE t75 (a INT); +INSERT INTO t75 VALUES (75); +CREATE TABLE t74 (a INT); +INSERT INTO t74 VALUES (74); +CREATE TABLE t73 (a INT); +INSERT INTO t73 VALUES (73); +CREATE TABLE t72 (a INT); +INSERT INTO t72 VALUES (72); +CREATE TABLE t71 (a INT); +INSERT INTO t71 VALUES (71); +CREATE TABLE t70 (a INT); +INSERT INTO t70 VALUES (70); +CREATE TABLE t69 (a INT); +INSERT INTO t69 VALUES (69); +CREATE TABLE t68 (a INT); +INSERT INTO t68 VALUES (68); +CREATE TABLE t67 (a INT); +INSERT INTO t67 VALUES (67); +CREATE TABLE t66 (a INT); +INSERT INTO t66 VALUES (66); +CREATE TABLE t65 (a INT); +INSERT INTO t65 VALUES (65); +CREATE TABLE t64 (a INT); +INSERT INTO t64 VALUES (64); +CREATE TABLE t63 (a INT); +INSERT INTO t63 VALUES (63); +CREATE TABLE t62 (a INT); +INSERT INTO t62 VALUES (62); +CREATE TABLE t61 (a INT); +INSERT INTO t61 VALUES (61); +CREATE TABLE t60 (a INT); +INSERT INTO t60 VALUES (60); +CREATE TABLE t59 (a INT); +INSERT INTO t59 VALUES (59); +CREATE TABLE t58 (a INT); +INSERT INTO t58 VALUES (58); +CREATE TABLE t57 (a INT); +INSERT INTO t57 VALUES (57); +CREATE TABLE t56 (a INT); +INSERT INTO t56 VALUES (56); +CREATE TABLE t55 (a INT); +INSERT INTO t55 VALUES (55); +CREATE TABLE t54 (a INT); +INSERT INTO t54 VALUES (54); +CREATE TABLE t53 (a INT); +INSERT INTO t53 VALUES (53); +CREATE TABLE t52 (a INT); +INSERT INTO t52 VALUES (52); +CREATE TABLE t51 (a INT); +INSERT INTO t51 VALUES (51); +CREATE TABLE t50 (a INT); +INSERT INTO t50 VALUES (50); +CREATE TABLE t49 (a INT); +INSERT INTO t49 VALUES (49); +CREATE TABLE t48 (a INT); +INSERT INTO t48 VALUES (48); +CREATE TABLE t47 (a INT); +INSERT INTO t47 VALUES (47); +CREATE TABLE t46 (a INT); +INSERT INTO t46 VALUES (46); +CREATE TABLE t45 (a INT); +INSERT INTO t45 VALUES (45); +CREATE TABLE t44 (a INT); +INSERT INTO t44 VALUES (44); +CREATE TABLE t43 (a INT); +INSERT INTO t43 VALUES (43); +CREATE TABLE t42 (a INT); +INSERT INTO t42 VALUES (42); +CREATE TABLE t41 (a INT); +INSERT INTO t41 VALUES (41); +CREATE TABLE t40 (a INT); +INSERT INTO t40 VALUES (40); +CREATE TABLE t39 (a INT); +INSERT INTO t39 VALUES (39); +CREATE TABLE t38 (a INT); +INSERT INTO t38 VALUES (38); +CREATE TABLE t37 (a INT); +INSERT INTO t37 VALUES (37); +CREATE TABLE t36 (a INT); +INSERT INTO t36 VALUES (36); +CREATE TABLE t35 (a INT); +INSERT INTO t35 VALUES (35); +CREATE TABLE t34 (a INT); +INSERT INTO t34 VALUES (34); +CREATE TABLE t33 (a INT); +INSERT INTO t33 VALUES (33); +CREATE TABLE t32 (a INT); +INSERT INTO t32 VALUES (32); +CREATE TABLE t31 (a INT); +INSERT INTO t31 VALUES (31); +CREATE TABLE t30 (a INT); +INSERT INTO t30 VALUES (30); +CREATE TABLE t29 (a INT); +INSERT INTO t29 VALUES (29); +CREATE TABLE t28 (a INT); +INSERT INTO t28 VALUES (28); +CREATE TABLE t27 (a INT); +INSERT INTO t27 VALUES (27); +CREATE TABLE t26 (a INT); +INSERT INTO t26 VALUES (26); +CREATE TABLE t25 (a INT); +INSERT INTO t25 VALUES (25); +CREATE TABLE t24 (a INT); +INSERT INTO t24 VALUES (24); +CREATE TABLE t23 (a INT); +INSERT INTO t23 VALUES (23); +CREATE TABLE t22 (a INT); +INSERT INTO t22 VALUES (22); +CREATE TABLE t21 (a INT); +INSERT INTO t21 VALUES (21); +CREATE TABLE t20 (a INT); +INSERT INTO t20 VALUES (20); +CREATE TABLE t19 (a INT); +INSERT INTO t19 VALUES (19); +CREATE TABLE t18 (a INT); +INSERT INTO t18 VALUES (18); +CREATE TABLE t17 (a INT); +INSERT INTO t17 VALUES (17); +CREATE TABLE t16 (a INT); +INSERT INTO t16 VALUES (16); +CREATE TABLE t15 (a INT); +INSERT INTO t15 VALUES (15); +CREATE TABLE t14 (a INT); +INSERT INTO t14 VALUES (14); +CREATE TABLE t13 (a INT); +INSERT INTO t13 VALUES (13); +CREATE TABLE t12 (a INT); +INSERT INTO t12 VALUES (12); +CREATE TABLE t11 (a INT); +INSERT INTO t11 VALUES (11); +CREATE TABLE t10 (a INT); +INSERT INTO t10 VALUES (10); +CREATE TABLE t9 (a INT); +INSERT INTO t9 VALUES (9); +CREATE TABLE t8 (a INT); +INSERT INTO t8 VALUES (8); +CREATE TABLE t7 (a INT); +INSERT INTO t7 VALUES (7); +CREATE TABLE t6 (a INT); +INSERT INTO t6 VALUES (6); +CREATE TABLE t5 (a INT); +INSERT INTO t5 VALUES (5); +CREATE TABLE t4 (a INT); +INSERT INTO t4 VALUES (4); +CREATE TABLE t3 (a INT); +INSERT INTO t3 VALUES (3); +CREATE TABLE t2 (a INT); +INSERT INTO t2 VALUES (2); +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1); +CREATE TABLE t0 (a INT) ENGINE=MERGE UNION(t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t20,t21,t22,t23,t24,t25,t26,t27,t28,t29,t30,t31,t32,t33,t34,t35,t36,t37,t38,t39,t40,t41,t42,t43,t44,t45,t46,t47,t48,t49,t50,t51,t52,t53,t54,t55,t56,t57,t58,t59,t60,t61,t62,t63,t64,t65,t66,t67,t68,t69,t70,t71,t72,t73,t74,t75,t76,t77,t78,t79,t80,t81,t82,t83,t84,t85,t86,t87,t88,t89,t90,t91,t92,t93,t94,t95,t96,t97,t98,t99,t100,t101,t102,t103,t104,t105,t106,t107,t108,t109,t110,t111,t112,t113,t114,t115,t116,t117,t118,t119,t120,t121,t122,t123,t124,t125,t126,t127,t128,t129,t130,t131,t132,t133,t134,t135,t136,t137,t138,t139,t140,t141,t142,t143,t144,t145,t146,t147,t148,t149,t150,t151,t152,t153,t154,t155,t156,t157,t158,t159,t160,t161,t162,t163,t164,t165,t166,t167,t168,t169,t170,t171,t172,t173,t174,t175,t176,t177,t178,t179,t180,t181,t182,t183,t184,t185,t186,t187,t188,t189,t190,t191,t192,t193,t194,t195,t196,t197,t198,t199,t200,t201,t202,t203,t204,t205,t206,t207,t208,t209,t210,t211,t212,t213,t214,t215,t216,t217,t218,t219,t220,t221,t222,t223,t224,t225,t226,t227,t228,t229,t230,t231,t232,t233,t234,t235,t236,t237,t238,t239,t240,t241,t242,t243,t244,t245,t246,t247,t248,t249,t250,t251,t252,t253,t254,t255); +SET GLOBAL query_cache_size = 1048576; +FLUSH STATUS; +SELECT a FROM t0 WHERE a = 1; +a +1 +SHOW STATUS LIKE "Qcache_queries_in_cache"; +Variable_name Value +Qcache_queries_in_cache 1 +FLUSH TABLES; +TRUNCATE TABLE t255; +SELECT a FROM t1; +a +1 +TRUNCATE TABLE t254; +SELECT a FROM t2; +a +2 +TRUNCATE TABLE t253; +SELECT a FROM t3; +a +3 +TRUNCATE TABLE t252; +SELECT a FROM t4; +a +4 +TRUNCATE TABLE t251; +SELECT a FROM t5; +a +5 +TRUNCATE TABLE t250; +SELECT a FROM t6; +a +6 +TRUNCATE TABLE t249; +SELECT a FROM t7; +a +7 +TRUNCATE TABLE t248; +SELECT a FROM t8; +a +8 +TRUNCATE TABLE t247; +SELECT a FROM t9; +a +9 +TRUNCATE TABLE t246; +SELECT a FROM t10; +a +10 +TRUNCATE TABLE t245; +SELECT a FROM t11; +a +11 +TRUNCATE TABLE t244; +SELECT a FROM t12; +a +12 +TRUNCATE TABLE t243; +SELECT a FROM t13; +a +13 +TRUNCATE TABLE t242; +SELECT a FROM t14; +a +14 +TRUNCATE TABLE t241; +SELECT a FROM t15; +a +15 +TRUNCATE TABLE t240; +SELECT a FROM t16; +a +16 +TRUNCATE TABLE t239; +SELECT a FROM t17; +a +17 +TRUNCATE TABLE t238; +SELECT a FROM t18; +a +18 +TRUNCATE TABLE t237; +SELECT a FROM t19; +a +19 +TRUNCATE TABLE t236; +SELECT a FROM t20; +a +20 +TRUNCATE TABLE t235; +SELECT a FROM t21; +a +21 +TRUNCATE TABLE t234; +SELECT a FROM t22; +a +22 +TRUNCATE TABLE t233; +SELECT a FROM t23; +a +23 +TRUNCATE TABLE t232; +SELECT a FROM t24; +a +24 +TRUNCATE TABLE t231; +SELECT a FROM t25; +a +25 +TRUNCATE TABLE t230; +SELECT a FROM t26; +a +26 +TRUNCATE TABLE t229; +SELECT a FROM t27; +a +27 +TRUNCATE TABLE t228; +SELECT a FROM t28; +a +28 +TRUNCATE TABLE t227; +SELECT a FROM t29; +a +29 +TRUNCATE TABLE t226; +SELECT a FROM t30; +a +30 +TRUNCATE TABLE t225; +SELECT a FROM t31; +a +31 +TRUNCATE TABLE t224; +SELECT a FROM t32; +a +32 +TRUNCATE TABLE t223; +SELECT a FROM t33; +a +33 +TRUNCATE TABLE t222; +SELECT a FROM t34; +a +34 +TRUNCATE TABLE t221; +SELECT a FROM t35; +a +35 +TRUNCATE TABLE t220; +SELECT a FROM t36; +a +36 +TRUNCATE TABLE t219; +SELECT a FROM t37; +a +37 +TRUNCATE TABLE t218; +SELECT a FROM t38; +a +38 +TRUNCATE TABLE t217; +SELECT a FROM t39; +a +39 +TRUNCATE TABLE t216; +SELECT a FROM t40; +a +40 +TRUNCATE TABLE t215; +SELECT a FROM t41; +a +41 +TRUNCATE TABLE t214; +SELECT a FROM t42; +a +42 +TRUNCATE TABLE t213; +SELECT a FROM t43; +a +43 +TRUNCATE TABLE t212; +SELECT a FROM t44; +a +44 +TRUNCATE TABLE t211; +SELECT a FROM t45; +a +45 +TRUNCATE TABLE t210; +SELECT a FROM t46; +a +46 +TRUNCATE TABLE t209; +SELECT a FROM t47; +a +47 +TRUNCATE TABLE t208; +SELECT a FROM t48; +a +48 +TRUNCATE TABLE t207; +SELECT a FROM t49; +a +49 +TRUNCATE TABLE t206; +SELECT a FROM t50; +a +50 +TRUNCATE TABLE t205; +SELECT a FROM t51; +a +51 +TRUNCATE TABLE t204; +SELECT a FROM t52; +a +52 +TRUNCATE TABLE t203; +SELECT a FROM t53; +a +53 +TRUNCATE TABLE t202; +SELECT a FROM t54; +a +54 +TRUNCATE TABLE t201; +SELECT a FROM t55; +a +55 +TRUNCATE TABLE t200; +SELECT a FROM t56; +a +56 +TRUNCATE TABLE t199; +SELECT a FROM t57; +a +57 +TRUNCATE TABLE t198; +SELECT a FROM t58; +a +58 +TRUNCATE TABLE t197; +SELECT a FROM t59; +a +59 +TRUNCATE TABLE t196; +SELECT a FROM t60; +a +60 +TRUNCATE TABLE t195; +SELECT a FROM t61; +a +61 +TRUNCATE TABLE t194; +SELECT a FROM t62; +a +62 +TRUNCATE TABLE t193; +SELECT a FROM t63; +a +63 +TRUNCATE TABLE t192; +SELECT a FROM t64; +a +64 +TRUNCATE TABLE t191; +SELECT a FROM t65; +a +65 +TRUNCATE TABLE t190; +SELECT a FROM t66; +a +66 +TRUNCATE TABLE t189; +SELECT a FROM t67; +a +67 +TRUNCATE TABLE t188; +SELECT a FROM t68; +a +68 +TRUNCATE TABLE t187; +SELECT a FROM t69; +a +69 +TRUNCATE TABLE t186; +SELECT a FROM t70; +a +70 +TRUNCATE TABLE t185; +SELECT a FROM t71; +a +71 +TRUNCATE TABLE t184; +SELECT a FROM t72; +a +72 +TRUNCATE TABLE t183; +SELECT a FROM t73; +a +73 +TRUNCATE TABLE t182; +SELECT a FROM t74; +a +74 +TRUNCATE TABLE t181; +SELECT a FROM t75; +a +75 +TRUNCATE TABLE t180; +SELECT a FROM t76; +a +76 +TRUNCATE TABLE t179; +SELECT a FROM t77; +a +77 +TRUNCATE TABLE t178; +SELECT a FROM t78; +a +78 +TRUNCATE TABLE t177; +SELECT a FROM t79; +a +79 +TRUNCATE TABLE t176; +SELECT a FROM t80; +a +80 +TRUNCATE TABLE t175; +SELECT a FROM t81; +a +81 +TRUNCATE TABLE t174; +SELECT a FROM t82; +a +82 +TRUNCATE TABLE t173; +SELECT a FROM t83; +a +83 +TRUNCATE TABLE t172; +SELECT a FROM t84; +a +84 +TRUNCATE TABLE t171; +SELECT a FROM t85; +a +85 +TRUNCATE TABLE t170; +SELECT a FROM t86; +a +86 +TRUNCATE TABLE t169; +SELECT a FROM t87; +a +87 +TRUNCATE TABLE t168; +SELECT a FROM t88; +a +88 +TRUNCATE TABLE t167; +SELECT a FROM t89; +a +89 +TRUNCATE TABLE t166; +SELECT a FROM t90; +a +90 +TRUNCATE TABLE t165; +SELECT a FROM t91; +a +91 +TRUNCATE TABLE t164; +SELECT a FROM t92; +a +92 +TRUNCATE TABLE t163; +SELECT a FROM t93; +a +93 +TRUNCATE TABLE t162; +SELECT a FROM t94; +a +94 +TRUNCATE TABLE t161; +SELECT a FROM t95; +a +95 +TRUNCATE TABLE t160; +SELECT a FROM t96; +a +96 +TRUNCATE TABLE t159; +SELECT a FROM t97; +a +97 +TRUNCATE TABLE t158; +SELECT a FROM t98; +a +98 +TRUNCATE TABLE t157; +SELECT a FROM t99; +a +99 +TRUNCATE TABLE t156; +SELECT a FROM t100; +a +100 +TRUNCATE TABLE t155; +SELECT a FROM t101; +a +101 +TRUNCATE TABLE t154; +SELECT a FROM t102; +a +102 +TRUNCATE TABLE t153; +SELECT a FROM t103; +a +103 +TRUNCATE TABLE t152; +SELECT a FROM t104; +a +104 +TRUNCATE TABLE t151; +SELECT a FROM t105; +a +105 +TRUNCATE TABLE t150; +SELECT a FROM t106; +a +106 +TRUNCATE TABLE t149; +SELECT a FROM t107; +a +107 +TRUNCATE TABLE t148; +SELECT a FROM t108; +a +108 +TRUNCATE TABLE t147; +SELECT a FROM t109; +a +109 +TRUNCATE TABLE t146; +SELECT a FROM t110; +a +110 +TRUNCATE TABLE t145; +SELECT a FROM t111; +a +111 +TRUNCATE TABLE t144; +SELECT a FROM t112; +a +112 +TRUNCATE TABLE t143; +SELECT a FROM t113; +a +113 +TRUNCATE TABLE t142; +SELECT a FROM t114; +a +114 +TRUNCATE TABLE t141; +SELECT a FROM t115; +a +115 +TRUNCATE TABLE t140; +SELECT a FROM t116; +a +116 +TRUNCATE TABLE t139; +SELECT a FROM t117; +a +117 +TRUNCATE TABLE t138; +SELECT a FROM t118; +a +118 +TRUNCATE TABLE t137; +SELECT a FROM t119; +a +119 +TRUNCATE TABLE t136; +SELECT a FROM t120; +a +120 +TRUNCATE TABLE t135; +SELECT a FROM t121; +a +121 +TRUNCATE TABLE t134; +SELECT a FROM t122; +a +122 +TRUNCATE TABLE t133; +SELECT a FROM t123; +a +123 +TRUNCATE TABLE t132; +SELECT a FROM t124; +a +124 +TRUNCATE TABLE t131; +SELECT a FROM t125; +a +125 +TRUNCATE TABLE t130; +SELECT a FROM t126; +a +126 +TRUNCATE TABLE t129; +SELECT a FROM t127; +a +127 +TRUNCATE TABLE t128; +SELECT a FROM t128; +a +TRUNCATE TABLE t127; +SELECT a FROM t129; +a +TRUNCATE TABLE t126; +SELECT a FROM t130; +a +TRUNCATE TABLE t125; +SELECT a FROM t131; +a +TRUNCATE TABLE t124; +SELECT a FROM t132; +a +TRUNCATE TABLE t123; +SELECT a FROM t133; +a +TRUNCATE TABLE t122; +SELECT a FROM t134; +a +TRUNCATE TABLE t121; +SELECT a FROM t135; +a +TRUNCATE TABLE t120; +SELECT a FROM t136; +a +TRUNCATE TABLE t119; +SELECT a FROM t137; +a +TRUNCATE TABLE t118; +SELECT a FROM t138; +a +TRUNCATE TABLE t117; +SELECT a FROM t139; +a +TRUNCATE TABLE t116; +SELECT a FROM t140; +a +TRUNCATE TABLE t115; +SELECT a FROM t141; +a +TRUNCATE TABLE t114; +SELECT a FROM t142; +a +TRUNCATE TABLE t113; +SELECT a FROM t143; +a +TRUNCATE TABLE t112; +SELECT a FROM t144; +a +TRUNCATE TABLE t111; +SELECT a FROM t145; +a +TRUNCATE TABLE t110; +SELECT a FROM t146; +a +TRUNCATE TABLE t109; +SELECT a FROM t147; +a +TRUNCATE TABLE t108; +SELECT a FROM t148; +a +TRUNCATE TABLE t107; +SELECT a FROM t149; +a +TRUNCATE TABLE t106; +SELECT a FROM t150; +a +TRUNCATE TABLE t105; +SELECT a FROM t151; +a +TRUNCATE TABLE t104; +SELECT a FROM t152; +a +TRUNCATE TABLE t103; +SELECT a FROM t153; +a +TRUNCATE TABLE t102; +SELECT a FROM t154; +a +TRUNCATE TABLE t101; +SELECT a FROM t155; +a +TRUNCATE TABLE t100; +SELECT a FROM t156; +a +TRUNCATE TABLE t99; +SELECT a FROM t157; +a +TRUNCATE TABLE t98; +SELECT a FROM t158; +a +TRUNCATE TABLE t97; +SELECT a FROM t159; +a +TRUNCATE TABLE t96; +SELECT a FROM t160; +a +TRUNCATE TABLE t95; +SELECT a FROM t161; +a +TRUNCATE TABLE t94; +SELECT a FROM t162; +a +TRUNCATE TABLE t93; +SELECT a FROM t163; +a +TRUNCATE TABLE t92; +SELECT a FROM t164; +a +TRUNCATE TABLE t91; +SELECT a FROM t165; +a +TRUNCATE TABLE t90; +SELECT a FROM t166; +a +TRUNCATE TABLE t89; +SELECT a FROM t167; +a +TRUNCATE TABLE t88; +SELECT a FROM t168; +a +TRUNCATE TABLE t87; +SELECT a FROM t169; +a +TRUNCATE TABLE t86; +SELECT a FROM t170; +a +TRUNCATE TABLE t85; +SELECT a FROM t171; +a +TRUNCATE TABLE t84; +SELECT a FROM t172; +a +TRUNCATE TABLE t83; +SELECT a FROM t173; +a +TRUNCATE TABLE t82; +SELECT a FROM t174; +a +TRUNCATE TABLE t81; +SELECT a FROM t175; +a +TRUNCATE TABLE t80; +SELECT a FROM t176; +a +TRUNCATE TABLE t79; +SELECT a FROM t177; +a +TRUNCATE TABLE t78; +SELECT a FROM t178; +a +TRUNCATE TABLE t77; +SELECT a FROM t179; +a +TRUNCATE TABLE t76; +SELECT a FROM t180; +a +TRUNCATE TABLE t75; +SELECT a FROM t181; +a +TRUNCATE TABLE t74; +SELECT a FROM t182; +a +TRUNCATE TABLE t73; +SELECT a FROM t183; +a +TRUNCATE TABLE t72; +SELECT a FROM t184; +a +TRUNCATE TABLE t71; +SELECT a FROM t185; +a +TRUNCATE TABLE t70; +SELECT a FROM t186; +a +TRUNCATE TABLE t69; +SELECT a FROM t187; +a +TRUNCATE TABLE t68; +SELECT a FROM t188; +a +TRUNCATE TABLE t67; +SELECT a FROM t189; +a +TRUNCATE TABLE t66; +SELECT a FROM t190; +a +TRUNCATE TABLE t65; +SELECT a FROM t191; +a +TRUNCATE TABLE t64; +SELECT a FROM t192; +a +TRUNCATE TABLE t63; +SELECT a FROM t193; +a +TRUNCATE TABLE t62; +SELECT a FROM t194; +a +TRUNCATE TABLE t61; +SELECT a FROM t195; +a +TRUNCATE TABLE t60; +SELECT a FROM t196; +a +TRUNCATE TABLE t59; +SELECT a FROM t197; +a +TRUNCATE TABLE t58; +SELECT a FROM t198; +a +TRUNCATE TABLE t57; +SELECT a FROM t199; +a +TRUNCATE TABLE t56; +SELECT a FROM t200; +a +TRUNCATE TABLE t55; +SELECT a FROM t201; +a +TRUNCATE TABLE t54; +SELECT a FROM t202; +a +TRUNCATE TABLE t53; +SELECT a FROM t203; +a +TRUNCATE TABLE t52; +SELECT a FROM t204; +a +TRUNCATE TABLE t51; +SELECT a FROM t205; +a +TRUNCATE TABLE t50; +SELECT a FROM t206; +a +TRUNCATE TABLE t49; +SELECT a FROM t207; +a +TRUNCATE TABLE t48; +SELECT a FROM t208; +a +TRUNCATE TABLE t47; +SELECT a FROM t209; +a +TRUNCATE TABLE t46; +SELECT a FROM t210; +a +TRUNCATE TABLE t45; +SELECT a FROM t211; +a +TRUNCATE TABLE t44; +SELECT a FROM t212; +a +TRUNCATE TABLE t43; +SELECT a FROM t213; +a +TRUNCATE TABLE t42; +SELECT a FROM t214; +a +TRUNCATE TABLE t41; +SELECT a FROM t215; +a +TRUNCATE TABLE t40; +SELECT a FROM t216; +a +TRUNCATE TABLE t39; +SELECT a FROM t217; +a +TRUNCATE TABLE t38; +SELECT a FROM t218; +a +TRUNCATE TABLE t37; +SELECT a FROM t219; +a +TRUNCATE TABLE t36; +SELECT a FROM t220; +a +TRUNCATE TABLE t35; +SELECT a FROM t221; +a +TRUNCATE TABLE t34; +SELECT a FROM t222; +a +TRUNCATE TABLE t33; +SELECT a FROM t223; +a +TRUNCATE TABLE t32; +SELECT a FROM t224; +a +TRUNCATE TABLE t31; +SELECT a FROM t225; +a +TRUNCATE TABLE t30; +SELECT a FROM t226; +a +TRUNCATE TABLE t29; +SELECT a FROM t227; +a +TRUNCATE TABLE t28; +SELECT a FROM t228; +a +TRUNCATE TABLE t27; +SELECT a FROM t229; +a +TRUNCATE TABLE t26; +SELECT a FROM t230; +a +TRUNCATE TABLE t25; +SELECT a FROM t231; +a +TRUNCATE TABLE t24; +SELECT a FROM t232; +a +TRUNCATE TABLE t23; +SELECT a FROM t233; +a +TRUNCATE TABLE t22; +SELECT a FROM t234; +a +TRUNCATE TABLE t21; +SELECT a FROM t235; +a +TRUNCATE TABLE t20; +SELECT a FROM t236; +a +TRUNCATE TABLE t19; +SELECT a FROM t237; +a +TRUNCATE TABLE t18; +SELECT a FROM t238; +a +TRUNCATE TABLE t17; +SELECT a FROM t239; +a +TRUNCATE TABLE t16; +SELECT a FROM t240; +a +TRUNCATE TABLE t15; +SELECT a FROM t241; +a +TRUNCATE TABLE t14; +SELECT a FROM t242; +a +TRUNCATE TABLE t13; +SELECT a FROM t243; +a +TRUNCATE TABLE t12; +SELECT a FROM t244; +a +TRUNCATE TABLE t11; +SELECT a FROM t245; +a +TRUNCATE TABLE t10; +SELECT a FROM t246; +a +TRUNCATE TABLE t9; +SELECT a FROM t247; +a +TRUNCATE TABLE t8; +SELECT a FROM t248; +a +TRUNCATE TABLE t7; +SELECT a FROM t249; +a +TRUNCATE TABLE t6; +SELECT a FROM t250; +a +TRUNCATE TABLE t5; +SELECT a FROM t251; +a +TRUNCATE TABLE t4; +SELECT a FROM t252; +a +TRUNCATE TABLE t3; +SELECT a FROM t253; +a +TRUNCATE TABLE t2; +SELECT a FROM t254; +a +TRUNCATE TABLE t1; +SELECT a FROM t255; +a +SELECT a FROM t0; +a +DROP TABLE t0; +DROP TABLE t255; +DROP TABLE t254; +DROP TABLE t253; +DROP TABLE t252; +DROP TABLE t251; +DROP TABLE t250; +DROP TABLE t249; +DROP TABLE t248; +DROP TABLE t247; +DROP TABLE t246; +DROP TABLE t245; +DROP TABLE t244; +DROP TABLE t243; +DROP TABLE t242; +DROP TABLE t241; +DROP TABLE t240; +DROP TABLE t239; +DROP TABLE t238; +DROP TABLE t237; +DROP TABLE t236; +DROP TABLE t235; +DROP TABLE t234; +DROP TABLE t233; +DROP TABLE t232; +DROP TABLE t231; +DROP TABLE t230; +DROP TABLE t229; +DROP TABLE t228; +DROP TABLE t227; +DROP TABLE t226; +DROP TABLE t225; +DROP TABLE t224; +DROP TABLE t223; +DROP TABLE t222; +DROP TABLE t221; +DROP TABLE t220; +DROP TABLE t219; +DROP TABLE t218; +DROP TABLE t217; +DROP TABLE t216; +DROP TABLE t215; +DROP TABLE t214; +DROP TABLE t213; +DROP TABLE t212; +DROP TABLE t211; +DROP TABLE t210; +DROP TABLE t209; +DROP TABLE t208; +DROP TABLE t207; +DROP TABLE t206; +DROP TABLE t205; +DROP TABLE t204; +DROP TABLE t203; +DROP TABLE t202; +DROP TABLE t201; +DROP TABLE t200; +DROP TABLE t199; +DROP TABLE t198; +DROP TABLE t197; +DROP TABLE t196; +DROP TABLE t195; +DROP TABLE t194; +DROP TABLE t193; +DROP TABLE t192; +DROP TABLE t191; +DROP TABLE t190; +DROP TABLE t189; +DROP TABLE t188; +DROP TABLE t187; +DROP TABLE t186; +DROP TABLE t185; +DROP TABLE t184; +DROP TABLE t183; +DROP TABLE t182; +DROP TABLE t181; +DROP TABLE t180; +DROP TABLE t179; +DROP TABLE t178; +DROP TABLE t177; +DROP TABLE t176; +DROP TABLE t175; +DROP TABLE t174; +DROP TABLE t173; +DROP TABLE t172; +DROP TABLE t171; +DROP TABLE t170; +DROP TABLE t169; +DROP TABLE t168; +DROP TABLE t167; +DROP TABLE t166; +DROP TABLE t165; +DROP TABLE t164; +DROP TABLE t163; +DROP TABLE t162; +DROP TABLE t161; +DROP TABLE t160; +DROP TABLE t159; +DROP TABLE t158; +DROP TABLE t157; +DROP TABLE t156; +DROP TABLE t155; +DROP TABLE t154; +DROP TABLE t153; +DROP TABLE t152; +DROP TABLE t151; +DROP TABLE t150; +DROP TABLE t149; +DROP TABLE t148; +DROP TABLE t147; +DROP TABLE t146; +DROP TABLE t145; +DROP TABLE t144; +DROP TABLE t143; +DROP TABLE t142; +DROP TABLE t141; +DROP TABLE t140; +DROP TABLE t139; +DROP TABLE t138; +DROP TABLE t137; +DROP TABLE t136; +DROP TABLE t135; +DROP TABLE t134; +DROP TABLE t133; +DROP TABLE t132; +DROP TABLE t131; +DROP TABLE t130; +DROP TABLE t129; +DROP TABLE t128; +DROP TABLE t127; +DROP TABLE t126; +DROP TABLE t125; +DROP TABLE t124; +DROP TABLE t123; +DROP TABLE t122; +DROP TABLE t121; +DROP TABLE t120; +DROP TABLE t119; +DROP TABLE t118; +DROP TABLE t117; +DROP TABLE t116; +DROP TABLE t115; +DROP TABLE t114; +DROP TABLE t113; +DROP TABLE t112; +DROP TABLE t111; +DROP TABLE t110; +DROP TABLE t109; +DROP TABLE t108; +DROP TABLE t107; +DROP TABLE t106; +DROP TABLE t105; +DROP TABLE t104; +DROP TABLE t103; +DROP TABLE t102; +DROP TABLE t101; +DROP TABLE t100; +DROP TABLE t99; +DROP TABLE t98; +DROP TABLE t97; +DROP TABLE t96; +DROP TABLE t95; +DROP TABLE t94; +DROP TABLE t93; +DROP TABLE t92; +DROP TABLE t91; +DROP TABLE t90; +DROP TABLE t89; +DROP TABLE t88; +DROP TABLE t87; +DROP TABLE t86; +DROP TABLE t85; +DROP TABLE t84; +DROP TABLE t83; +DROP TABLE t82; +DROP TABLE t81; +DROP TABLE t80; +DROP TABLE t79; +DROP TABLE t78; +DROP TABLE t77; +DROP TABLE t76; +DROP TABLE t75; +DROP TABLE t74; +DROP TABLE t73; +DROP TABLE t72; +DROP TABLE t71; +DROP TABLE t70; +DROP TABLE t69; +DROP TABLE t68; +DROP TABLE t67; +DROP TABLE t66; +DROP TABLE t65; +DROP TABLE t64; +DROP TABLE t63; +DROP TABLE t62; +DROP TABLE t61; +DROP TABLE t60; +DROP TABLE t59; +DROP TABLE t58; +DROP TABLE t57; +DROP TABLE t56; +DROP TABLE t55; +DROP TABLE t54; +DROP TABLE t53; +DROP TABLE t52; +DROP TABLE t51; +DROP TABLE t50; +DROP TABLE t49; +DROP TABLE t48; +DROP TABLE t47; +DROP TABLE t46; +DROP TABLE t45; +DROP TABLE t44; +DROP TABLE t43; +DROP TABLE t42; +DROP TABLE t41; +DROP TABLE t40; +DROP TABLE t39; +DROP TABLE t38; +DROP TABLE t37; +DROP TABLE t36; +DROP TABLE t35; +DROP TABLE t34; +DROP TABLE t33; +DROP TABLE t32; +DROP TABLE t31; +DROP TABLE t30; +DROP TABLE t29; +DROP TABLE t28; +DROP TABLE t27; +DROP TABLE t26; +DROP TABLE t25; +DROP TABLE t24; +DROP TABLE t23; +DROP TABLE t22; +DROP TABLE t21; +DROP TABLE t20; +DROP TABLE t19; +DROP TABLE t18; +DROP TABLE t17; +DROP TABLE t16; +DROP TABLE t15; +DROP TABLE t14; +DROP TABLE t13; +DROP TABLE t12; +DROP TABLE t11; +DROP TABLE t10; +DROP TABLE t9; +DROP TABLE t8; +DROP TABLE t7; +DROP TABLE t6; +DROP TABLE t5; +DROP TABLE t4; +DROP TABLE t3; +DROP TABLE t2; +DROP TABLE t1; +SET @@global.query_cache_size = 0; +End of 5.1 tests diff --git a/mysql-test/t/query_cache_merge.test b/mysql-test/t/query_cache_merge.test index 36b8662f088..b854bfb5d67 100644 --- a/mysql-test/t/query_cache_merge.test +++ b/mysql-test/t/query_cache_merge.test @@ -38,3 +38,59 @@ drop table t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18,t19,t2 SET @@global.query_cache_size=0; # End of 4.1 tests + +# +# Bug#33362: Query cache invalidation (truncate) may hang if cached query uses many tables +# + +let $c= 255; + +while ($c) +{ + eval CREATE TABLE t$c (a INT); + eval INSERT INTO t$c VALUES ($c); + dec $c; +} + +let $c= 254; +let $str= t255; + +while ($c) +{ + let $str= t$c,$str; + dec $c; +} + +eval CREATE TABLE t0 (a INT) ENGINE=MERGE UNION($str); +SET GLOBAL query_cache_size = 1048576; +FLUSH STATUS; +SELECT a FROM t0 WHERE a = 1; +SHOW STATUS LIKE "Qcache_queries_in_cache"; + +let $c= 255; +let $i= 1; + +FLUSH TABLES; + +while ($c) +{ + eval TRUNCATE TABLE t$c; + eval SELECT a FROM t$i; + dec $c; + inc $i; +} + +SELECT a FROM t0; +DROP TABLE t0; + +let $c= 255; + +while ($c) +{ + eval DROP TABLE t$c; + dec $c; +} + +SET @@global.query_cache_size = 0; + +--echo End of 5.1 tests diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index f8906a17c12..b487f092f75 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -2516,7 +2516,7 @@ my_bool Query_cache::register_all_tables(Query_cache_block *block, tmp++) unlink_table(tmp); } - return (n); + return test(n); } /* From f6f6d81b8294f67c085b1469afcc948d1ab828f1 Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Thu, 24 Jul 2008 13:43:14 -0400 Subject: [PATCH 308/435] Make community features (including profiling) on by default. --- configure.in | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/configure.in b/configure.in index 08d21a23e81..56bdb4ba006 100644 --- a/configure.in +++ b/configure.in @@ -617,19 +617,19 @@ fi AC_MSG_CHECKING(whether features provided by the user community should be included.) AC_ARG_ENABLE(community-features, AC_HELP_STRING( - [--enable-community-features], - [Enable additional features provided by the user community.]), + [--disable-community-features], + [Disable additional features provided by the user community.]), [ ENABLE_COMMUNITY_FEATURES=$enableval ], - [ ENABLE_COMMUNITY_FEATURES=no ] + [ ENABLE_COMMUNITY_FEATURES=yes ] ) if test "$ENABLE_COMMUNITY_FEATURES" = "yes" then AC_DEFINE([COMMUNITY_SERVER], [1], [Whether features provided by the user community should be included]) - AC_MSG_RESULT([yes, community server]) + AC_MSG_RESULT([yes]) else - AC_MSG_RESULT([no, enterprise server]) + AC_MSG_RESULT([no]) fi AC_ARG_WITH(server-suffix, From 548413824b85fa0550c8d9a297546b80ed1643e1 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Thu, 24 Jul 2008 22:38:44 +0200 Subject: [PATCH 309/435] Bug#38002 table_cache consumes too much memory with blobs Tables in the table definition cache are keeping a cache buffer for blob fields which can consume a lot of memory. This patch introduces a maximum size threshold for these buffers. sql/sql_base.cc: Added function free_field_buffers_larger_than to reclaim memory from blob field buffers too large to be cached. sql/table.cc: Added function free_field_buffers_larger_than --- sql/field.h | 2 +- sql/mysql_priv.h | 1 + sql/sql_base.cc | 2 ++ sql/table.cc | 22 ++++++++++++++++++++++ sql/table.h | 3 +++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/sql/field.h b/sql/field.h index 7d312dbd2b8..8e00cf013dc 100644 --- a/sql/field.h +++ b/sql/field.h @@ -13,7 +13,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - /* Because of the function new_field() all field classes that have static variables must declare the size_of() member function. @@ -1669,6 +1668,7 @@ public: } int reset(void) { bzero(ptr, packlength+sizeof(uchar*)); return 0; } void reset_fields() { bzero((uchar*) &value,sizeof(value)); } + uint32 get_field_buffer_size(void) { return value.alloced_length(); } #ifndef WORDS_BIGENDIAN static #endif diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index e150ffd18f8..f6ba5fc9739 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -2130,6 +2130,7 @@ int writefrm(const char* name, const uchar* data, size_t len); int closefrm(TABLE *table, bool free_share); int read_string(File file, uchar* *to, size_t length); void free_blobs(TABLE *table); +void free_field_buffers_larger_than(TABLE *table, uint32 size); int set_zone(int nr,int min_zone,int max_zone); ulong convert_period_to_month(ulong period); ulong convert_month_to_period(ulong month); diff --git a/sql/sql_base.cc b/sql/sql_base.cc index d25057789ac..39dd815e738 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -1369,6 +1369,8 @@ bool close_thread_table(THD *thd, TABLE **table_ptr) DBUG_ASSERT(!table->is_children_attached()); /* Free memory and reset for next loop */ + free_field_buffers_larger_than(table,MAX_TDC_BLOB_SIZE); + table->file->ha_reset(); table->in_use=0; if (unused_tables) diff --git a/sql/table.cc b/sql/table.cc index ebf3dfd748e..58cbde74822 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -1999,6 +1999,28 @@ void free_blobs(register TABLE *table) } +/** + Reclaim temporary blob storage which is bigger than + a threshold. + + @param table A handle to the TABLE object containing blob fields + @param size The threshold value. + +*/ + +void free_field_buffers_larger_than(TABLE *table, uint32 size) +{ + uint *ptr, *end; + for (ptr= table->s->blob_field, end=ptr + table->s->blob_fields ; + ptr != end ; + ptr++) + { + Field_blob *blob= (Field_blob*) table->field[*ptr]; + if (blob->get_field_buffer_size() > size) + blob->free(); + } +} + /* Find where a form starts */ /* if formname is NullS then only formnames is read */ diff --git a/sql/table.h b/sql/table.h index 75ddaf69c10..da0e089794f 100644 --- a/sql/table.h +++ b/sql/table.h @@ -935,6 +935,9 @@ typedef struct st_schema_table #define VIEW_CHECK_ERROR 1 #define VIEW_CHECK_SKIP 2 +/** The threshold size a blob field buffer before it is freed */ +#define MAX_TDC_BLOB_SIZE 65536 + struct st_lex; class select_union; class TMP_TABLE_PARAM; From e113042588f0388e94f16be9c946fb3efd7b592d Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 25 Jul 2008 13:32:05 +0300 Subject: [PATCH 310/435] Disabled 5.1 tests (and reported bugs) mysql-test/suite/ndb/t/disabled.def: disabled failing test in 5.1-bzr mysql-test/suite/rpl_ndb/t/disabled.def: disabled failing test in 5.1-bzr --- mysql-test/suite/ndb/t/disabled.def | 1 + mysql-test/suite/rpl_ndb/t/disabled.def | 1 + 2 files changed, 2 insertions(+) diff --git a/mysql-test/suite/ndb/t/disabled.def b/mysql-test/suite/ndb/t/disabled.def index c638c7b4774..6102d182684 100644 --- a/mysql-test/suite/ndb/t/disabled.def +++ b/mysql-test/suite/ndb/t/disabled.def @@ -12,5 +12,6 @@ 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_index_ordered : Bug#38370 The test ndb.ndb_index_ordered fails with the community features on # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open diff --git a/mysql-test/suite/rpl_ndb/t/disabled.def b/mysql-test/suite/rpl_ndb/t/disabled.def index ebc99feeac6..7010fba26b2 100644 --- a/mysql-test/suite/rpl_ndb/t/disabled.def +++ b/mysql-test/suite/rpl_ndb/t/disabled.def @@ -12,5 +12,6 @@ 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_row_basic_7ndb : Bug#38369 rpl_ndb.rpl_row_basic_7ndb fails # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open From e195149b43db9b6bd06419d5e1709c44bc20343f Mon Sep 17 00:00:00 2001 From: Patrick Crews Date: Fri, 25 Jul 2008 13:14:52 -0400 Subject: [PATCH 311/435] Bug#38383 - Certain funcs_1 trig tests are failing on Pushbuild. Removing duplicate 'setup' portions of these include files. Likely an editor error created dupe lines. This is causing many Pushbuild errors --- mysql-test/suite/funcs_1/triggers/triggers_03.inc | 5 ----- mysql-test/suite/funcs_1/triggers/triggers_08.inc | 3 +-- mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc | 7 ------- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03.inc b/mysql-test/suite/funcs_1/triggers/triggers_03.inc index f8a83315f0c..9ef6a9ac9af 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03.inc @@ -13,12 +13,7 @@ USE test; --source suite/funcs_1/include/tb3.inc -# This test cannot be used for the embedded server because we check here -# privilgeges. ---source include/not_embedded.inc -USE test; ---source suite/funcs_1/include/tb3.inc --disable_abort_on_error diff --git a/mysql-test/suite/funcs_1/triggers/triggers_08.inc b/mysql-test/suite/funcs_1/triggers/triggers_08.inc index 399b27508db..087f18e8e6b 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_08.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_08.inc @@ -8,8 +8,7 @@ USE test; --source suite/funcs_1/include/tb3.inc -USE test; ---source suite/funcs_1/include/tb3.inc + # General setup for Trigger tests let $message= Testcase: 3.5:; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc b/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc index 529eb6c77fd..7230f240e2d 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc @@ -13,13 +13,6 @@ eval load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt' into table tb3; -USE test; ---source suite/funcs_1/include/tb3.inc - ---replace_result $MYSQLTEST_VARDIR -eval -load data infile '$MYSQLTEST_VARDIR/std_data_ln/funcs_1/memory_tb3.txt' -into table tb3; --disable_abort_on_error From b6e3a9e28c731429f4cdebc78cef580a8cf3a1f4 Mon Sep 17 00:00:00 2001 From: Igor Babaev Date: Sat, 26 Jul 2008 13:44:07 -0700 Subject: [PATCH 312/435] Fixed bug #38191. Calling List::delete_elements for the same list twice caused a crash of the server in the function JOIN::cleaunup. Ensured that delete_elements() in JOIN::cleanup would be called only once. mysql-test/r/subselect.result: Added a test case for bug #38191. mysql-test/t/subselect.test: Added a test case for bug #38191. sql/sql_select.cc: Fixed bug #38191. Ensured that delete_elements() in JOIN::cleanup would be called only once. --- mysql-test/r/subselect.result | 11 +++++++++++ mysql-test/t/subselect.test | 12 ++++++++++++ sql/sql_select.cc | 6 ++++++ 3 files changed, 29 insertions(+) diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index 12e3aac486e..c5bae840214 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4396,4 +4396,15 @@ id select_type table type possible_keys key key_len ref rows Extra Warnings: Note 1003 select 1 AS `1` from `test`.`t1` where (1,(select 1 AS `1` from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` having ((1) = (1)))) DROP TABLE t1; +CREATE TABLE t1(pk int PRIMARY KEY, a int, INDEX idx(a)); +INSERT INTO t1 VALUES (1, 10), (3, 30), (2, 20); +CREATE TABLE t2(pk int PRIMARY KEY, a int, b int, INDEX idxa(a)); +INSERT INTO t2 VALUES (2, 20, 700), (1, 10, 200), (4, 10, 100); +SELECT * FROM t1 +WHERE EXISTS (SELECT DISTINCT a FROM t2 WHERE t1.a < t2.a ORDER BY b); +pk a +1 10 +3 30 +2 20 +DROP TABLE t1,t2; End of 5.0 tests. diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index 4d9507f1231..2dfad2c58dd 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -3295,5 +3295,17 @@ EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a); EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a); DROP TABLE t1; +# +# Bug #38191: Server crash with subquery containing DISTINCT and ORDER BY +# + +CREATE TABLE t1(pk int PRIMARY KEY, a int, INDEX idx(a)); +INSERT INTO t1 VALUES (1, 10), (3, 30), (2, 20); +CREATE TABLE t2(pk int PRIMARY KEY, a int, b int, INDEX idxa(a)); +INSERT INTO t2 VALUES (2, 20, 700), (1, 10, 200), (4, 10, 100); +SELECT * FROM t1 + WHERE EXISTS (SELECT DISTINCT a FROM t2 WHERE t1.a < t2.a ORDER BY b); +DROP TABLE t1,t2; + --echo End of 5.0 tests. diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 60ba7591726..c222b8a55ca 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -6469,6 +6469,12 @@ void JOIN::cleanup(bool full) if (tmp_join) tmp_table_param.copy_field= 0; group_fields.delete_elements(); + /* + Ensure that the above delete_elements() would not be called + twice for the same list. + */ + if (tmp_join && tmp_join != this) + tmp_join->group_fields= group_fields; /* We can't call delete_elements() on copy_funcs as this will cause problems in free_elements() as some of the elements are then deleted. From 686ced5367e6c76ecc8d874a5c8b2137b45e769a Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Tue, 29 Jul 2008 08:25:46 +0500 Subject: [PATCH 313/435] Bug#35808 utf8 hungarian collation not part of the utf8 charset? config/ac-macros/character_sets.m4 didn't mention hungarian collations in the UTF8 and UCS2 lists. --- config/ac-macros/character_sets.m4 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/ac-macros/character_sets.m4 b/config/ac-macros/character_sets.m4 index ea2763a1cd4..a9f7bd73858 100644 --- a/config/ac-macros/character_sets.m4 +++ b/config/ac-macros/character_sets.m4 @@ -343,8 +343,8 @@ case $default_charset in default_charset_default_collation="ucs2_general_ci" define(UCSC1, ucs2_general_ci ucs2_bin) define(UCSC2, ucs2_czech_ci ucs2_danish_ci) - define(UCSC3, ucs2_esperanto_ci ucs2_estonian_ci ucs2_icelandic_ci) - define(UCSC4, ucs2_latvian_ci ucs2_lithuanian_ci) + define(UCSC3, ucs2_esperanto_ci ucs2_estonian_ci ucs2_hungarian_ci) + define(UCSC4, ucs2_icelandic_ci ucs2_latvian_ci ucs2_lithuanian_ci) define(UCSC5, ucs2_persian_ci ucs2_polish_ci ucs2_romanian_ci) define(UCSC6, ucs2_slovak_ci ucs2_slovenian_ci) define(UCSC7, ucs2_spanish2_ci ucs2_spanish_ci) @@ -367,8 +367,8 @@ case $default_charset in else define(UTFC1, utf8_general_ci utf8_bin) define(UTFC2, utf8_czech_ci utf8_danish_ci) - define(UTFC3, utf8_esperanto_ci utf8_estonian_ci utf8_icelandic_ci) - define(UTFC4, utf8_latvian_ci utf8_lithuanian_ci) + define(UTFC3, utf8_esperanto_ci utf8_estonian_ci utf8_hungarian_ci) + define(UTFC4, utf8_icelandic_ci utf8_latvian_ci utf8_lithuanian_ci) define(UTFC5, utf8_persian_ci utf8_polish_ci utf8_romanian_ci) define(UTFC6, utf8_slovak_ci utf8_slovenian_ci) define(UTFC7, utf8_spanish2_ci utf8_spanish_ci) From 480554a76a4122abf496f5fdb8f9528fd5e5e20f Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Tue, 29 Jul 2008 10:43:57 +0500 Subject: [PATCH 314/435] Bug#36597 Testsuite "jp": Suspicious results for some tests using sjis Problem: Extra new line appeared in jisx0208_sjis2.dat in a mistake, which broke jp_convert_sjis and jp_select_sjis tests. Fix: removing extra line mysql-test/suite/jp/std_data/jisx0208_sjis2.dat: removing wrong extra new line mysql-test/suite/jp/t/disabled.def: activating disabled tests --- mysql-test/suite/jp/std_data/jisx0208_sjis2.dat | 1 - mysql-test/suite/jp/t/disabled.def | 2 -- 2 files changed, 3 deletions(-) diff --git a/mysql-test/suite/jp/std_data/jisx0208_sjis2.dat b/mysql-test/suite/jp/std_data/jisx0208_sjis2.dat index d731cc0e3b2..bea8b3ccad6 100644 --- a/mysql-test/suite/jp/std_data/jisx0208_sjis2.dat +++ b/mysql-test/suite/jp/std_data/jisx0208_sjis2.dat @@ -1,2 +1 @@ \\\\\\\\\\\\\\\\\\\\ - diff --git a/mysql-test/suite/jp/t/disabled.def b/mysql-test/suite/jp/t/disabled.def index 8c4d862ebde..888298bbb09 100644 --- a/mysql-test/suite/jp/t/disabled.def +++ b/mysql-test/suite/jp/t/disabled.def @@ -9,5 +9,3 @@ # Do not use any TAB characters for whitespace. # ############################################################################## -jp_convert_sjis : Bug#36597 Testsuite "jp": Suspicious results for some tests -jp_select_sjis : Bug#36597 Testsuite "jp": Suspicious results for some tests From f0dfb82fcb1df0379c296bd0bb72f029130331ba Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Tue, 29 Jul 2008 15:37:09 +0200 Subject: [PATCH 315/435] Bug#37781 mysql_drop_user calls get_current_user() twice for no reason Fixed typo and removed duplicate call to get_current_user. --- sql/sql_acl.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index e12fbb9843a..df5e844749f 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -5430,7 +5430,6 @@ bool mysql_drop_user(THD *thd, List &list) while ((tmp_user_name= user_list++)) { - user_name= get_current_user(thd, tmp_user_name); if (!(user_name= get_current_user(thd, tmp_user_name))) { result= TRUE; From 0a415f62fdf4c0698a04b97b3b3208455bf9c834 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Tue, 29 Jul 2008 15:58:15 +0200 Subject: [PATCH 316/435] Bug#29738 Error message not properly translated to Serbian Community contribution fix for Serbian translation in error message list. --- sql/share/errmsg.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/share/errmsg.txt b/sql/share/errmsg.txt index 7d345d633c6..0916ad56cef 100644 --- a/sql/share/errmsg.txt +++ b/sql/share/errmsg.txt @@ -4737,7 +4737,7 @@ ER_SLAVE_IGNORED_TABLE swe "Slav SQL trden ignorerade frgan pga en replicate-*-table regel" ER_INCORRECT_GLOBAL_LOCAL_VAR eng "Variable '%-.64s' is a %s variable" - serbian "Incorrect foreign key definition for '%-.64s': %s" + serbian "Promenljiva '%-.64s' je %s promenljiva" ger "Variable '%-.64s' ist eine %s-Variable" spa "Variable '%-.64s' es una %s variable" swe "Variabel '%-.64s' r av typ %s" From c6bf7ead8fb4d42eb02a269ed0b61d7fff60ec90 Mon Sep 17 00:00:00 2001 From: Sven Sandberg Date: Tue, 29 Jul 2008 17:36:13 +0200 Subject: [PATCH 317/435] BUG#38068: binlog_stm_binlog fails sporadically in pushbuild Post-push fix: updated some result files that were affected by the previous fix to this bug. mysql-test/suite/binlog/r/binlog_killed_simulate.result: Updated result file. mysql-test/suite/binlog/r/binlog_row_binlog.result: Updated result file. mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result: Updated result file. mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result: Updated result file. mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result: Updated result file. mysql-test/suite/rpl/r/rpl_stm_log.result: Updated result file. --- mysql-test/suite/binlog/r/binlog_killed_simulate.result | 2 +- mysql-test/suite/binlog/r/binlog_row_binlog.result | 4 ++-- mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result | 2 +- .../suite/binlog/r/binlog_statement_insert_delayed.result | 4 ++-- mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result | 4 ++-- mysql-test/suite/rpl/r/rpl_stm_log.result | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/mysql-test/suite/binlog/r/binlog_killed_simulate.result b/mysql-test/suite/binlog/r/binlog_killed_simulate.result index c0087316420..66d3a86cd5a 100644 --- a/mysql-test/suite/binlog/r/binlog_killed_simulate.result +++ b/mysql-test/suite/binlog/r/binlog_killed_simulate.result @@ -18,7 +18,7 @@ load data infile '../std_data_ln/rpl_loaddata.dat' into table t2 /* will be "kil ERROR 70100: Query execution was interrupted show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=12 +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Execute_load_query # # use `test`; load data infile '../std_data_ln/rpl_loaddata.dat' into table t2 /* will be "killed" in the middle */ ;file_id=# select (@a:=load_file("MYSQLTEST_VARDIR/tmp/binlog_killed_bug27571.binlog")) diff --git a/mysql-test/suite/binlog/r/binlog_row_binlog.result b/mysql-test/suite/binlog/r/binlog_row_binlog.result index f830b69bf9d..9668c7ce5ea 100644 --- a/mysql-test/suite/binlog/r/binlog_row_binlog.result +++ b/mysql-test/suite/binlog/r/binlog_row_binlog.result @@ -1141,10 +1141,10 @@ master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `mysql`; COMMIT drop table t1,t2,t3,tt1; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam; -set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1; insert delayed into t1 values (207); insert delayed into t1 values (null); insert delayed into t1 values (300); +FLUSH TABLES; show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; create table t1 (id tinyint auto_increment primary key) @@ -1188,9 +1188,9 @@ master-bin.000001 # Query # # use `test`; BEGIN master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # use `test`; COMMIT +master-bin.000001 # Query # # use `test`; FLUSH TABLES insert delayed into t1 values (null),(null),(null),(null); insert delayed into t1 values (null),(null),(400),(null); -11 == 11 select * from t1; a 207 diff --git a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result index 419aea5b581..7106480663f 100644 --- a/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result +++ b/mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result @@ -926,7 +926,7 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; BEGIN master-bin.000001 # Intvar # # INSERT_ID=10 master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci -master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=12 +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Intvar # # INSERT_ID=10 master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci master-bin.000001 # Execute_load_query # # use `test`; load data infile '../std_data_ln/rpl_loaddata.dat' into table t4 (a, @b) set b= @b + bug27417(2) ;file_id=# diff --git a/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result b/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result index 3a2dc441632..800bb58e9cc 100644 --- a/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result +++ b/mysql-test/suite/binlog/r/binlog_statement_insert_delayed.result @@ -1,8 +1,8 @@ create table t1 (a int not null auto_increment, primary key (a)) engine=myisam; -set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1; insert delayed into t1 values (207); insert delayed into t1 values (null); insert delayed into t1 values (300); +FLUSH TABLES; show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; create table t1 (a int not null auto_increment, primary key (a)) engine=myisam @@ -10,9 +10,9 @@ master-bin.000001 # Query # # use `test`; insert delayed into t1 values (207) master-bin.000001 # Intvar # # INSERT_ID=208 master-bin.000001 # Query # # use `test`; insert delayed into t1 values (null) master-bin.000001 # Query # # use `test`; insert delayed into t1 values (300) +master-bin.000001 # Query # # use `test`; FLUSH TABLES insert delayed into t1 values (null),(null),(null),(null); insert delayed into t1 values (null),(null),(400),(null); -11 == 11 select * from t1; a 207 diff --git a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result index 60104a64d94..3d71f333852 100644 --- a/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result +++ b/mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result @@ -623,7 +623,7 @@ show binlog events from ; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; BEGIN master-bin.000001 # Intvar # # INSERT_ID=10 -master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=12 +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Intvar # # INSERT_ID=10 master-bin.000001 # Execute_load_query # # use `test`; load data infile '../std_data_ln/rpl_loaddata.dat' into table t4 (a, @b) set b= @b + bug27417(2) ;file_id=# master-bin.000001 # Query # # use `test`; ROLLBACK @@ -858,7 +858,7 @@ Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query # # use `test`; BEGIN master-bin.000001 # Intvar # # INSERT_ID=10 master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci -master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=12 +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Intvar # # INSERT_ID=10 master-bin.000001 # User var # # @`b`=_latin1 0x3135 COLLATE latin1_swedish_ci master-bin.000001 # Execute_load_query # # use `test`; load data infile '../std_data_ln/rpl_loaddata.dat' into table t4 (a, @b) set b= @b + bug27417(2) ;file_id=# diff --git a/mysql-test/suite/rpl/r/rpl_stm_log.result b/mysql-test/suite/rpl/r/rpl_stm_log.result index 18333f5e5e9..d29b4c92590 100644 --- a/mysql-test/suite/rpl/r/rpl_stm_log.result +++ b/mysql-test/suite/rpl/r/rpl_stm_log.result @@ -196,7 +196,7 @@ master-bin.000001 # Intvar # # INSERT_ID=1 master-bin.000001 # Query # # use `test`; insert into t1 values (NULL) master-bin.000001 # Query # # use `test`; drop table t1 master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not null)ENGINE=MyISAM -master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=581 +master-bin.000001 # Begin_load_query # # ;file_id=#;block_len=# master-bin.000001 # Execute_load_query # # use `test`; load data infile '../std_data_ln/words.dat' into table t1 ignore 1 lines ;file_id=# master-bin.000001 # Rotate # # master-bin.000002;pos=4 show binlog events in 'master-bin.000002'; From ae4a35fd5cba393f5e924241b21a7a59fc921b15 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 30 Jul 2008 14:07:37 +0300 Subject: [PATCH 318/435] Bug#37662 nested if() inside sum() is parsed in exponential time min() and max() functions are implemented in MySQL as macros. This means that max(a,b) is expanded to: ((a) > (b) ? (a) : (b)) Note how 'a' is quoted two times. Now imagine 'a' is a recursive function call that's several 10s of levels deep. And the recursive function does max() with a function arg as well to dive into recursion. This means that simple function call can take most of the clock time. Identified and fixed several such calls to max()/min() : including the IF() sql function implementation. mysql-test/r/func_if.result: Bug#37662 test case mysql-test/t/func_if.test: Bug#37662 test case sql/item.cc: Bug#37662 don't call expensive functions as arguments to min/max sql/item_cmpfunc.cc: Bug#37662 don't call expensive functions as arguments to min/max sql/item_func.cc: Bug#37662 don't call expensive functions as arguments to min/max --- mysql-test/r/func_if.result | 46 +++++++++++++++++++++++++++++++++++++ mysql-test/t/func_if.test | 43 ++++++++++++++++++++++++++++++++++ sql/item.cc | 12 ++++++---- sql/item_cmpfunc.cc | 12 ++++++---- sql/item_func.cc | 15 ++++++------ 5 files changed, 113 insertions(+), 15 deletions(-) diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result index c75e37fa0a4..7ffc957e285 100644 --- a/mysql-test/r/func_if.result +++ b/mysql-test/r/func_if.result @@ -131,3 +131,49 @@ drop table t1; select if(0, 18446744073709551610, 18446744073709551610); if(0, 18446744073709551610, 18446744073709551610) 18446744073709551610 +CREATE TABLE t1(a DECIMAL(10,3)); +SELECT t1.a, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2,0)))))))))))))))))))))))))))))) + 1 +FROM t1; +a IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((ROUND(t1.a,2)=1), 2, +IF((R +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 5373ca3fec6..8da10f36cbe 100644 --- a/mysql-test/t/func_if.test +++ b/mysql-test/t/func_if.test @@ -108,3 +108,46 @@ drop table t1; select if(0, 18446744073709551610, 18446744073709551610); +# +# Bug #37662: nested if() inside sum() is parsed in exponential time +# + +CREATE TABLE t1(a DECIMAL(10,3)); + +# check : should be fast. more than few secs means failure. +SELECT t1.a, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2, + IF((ROUND(t1.a,2)=1), 2,0)))))))))))))))))))))))))))))) + 1 +FROM t1; + +DROP TABLE t1; + +--echo End of 5.0 tests diff --git a/sql/item.cc b/sql/item.cc index bf447581afa..a5c88f55487 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -429,8 +429,11 @@ uint Item::decimal_precision() const Item_result restype= result_type(); if ((restype == DECIMAL_RESULT) || (restype == INT_RESULT)) - return min(my_decimal_length_to_precision(max_length, decimals, unsigned_flag), - DECIMAL_MAX_PRECISION); + { + uint prec= + my_decimal_length_to_precision(max_length, decimals, unsigned_flag); + return min(prec, DECIMAL_MAX_PRECISION); + } return min(max_length, DECIMAL_MAX_PRECISION); } @@ -6838,8 +6841,9 @@ bool Item_type_holder::join_types(THD *thd, Item *item) if (Field::result_merge_type(fld_type) == DECIMAL_RESULT) { decimals= min(max(decimals, item->decimals), DECIMAL_MAX_SCALE); - int precision= min(max(prev_decimal_int_part, item->decimal_int_part()) - + decimals, DECIMAL_MAX_PRECISION); + int item_int_part= item->decimal_int_part(); + int item_prec = max(prev_decimal_int_part, item_int_part) + decimals; + int precision= min(item_prec, DECIMAL_MAX_PRECISION); unsigned_flag&= item->unsigned_flag; max_length= my_decimal_precision_to_length(precision, decimals, unsigned_flag); diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 16f3e51d615..1994f6bf1a5 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -2098,8 +2098,11 @@ Item_func_ifnull::fix_length_and_dec() uint Item_func_ifnull::decimal_precision() const { - int max_int_part=max(args[0]->decimal_int_part(),args[1]->decimal_int_part()); - return min(max_int_part + decimals, DECIMAL_MAX_PRECISION); + int arg0_int_part= args[0]->decimal_int_part(); + int arg1_int_part= args[1]->decimal_int_part(); + int max_int_part= max(arg0_int_part, arg1_int_part); + int precision= max_int_part + decimals; + return min(precision, DECIMAL_MAX_PRECISION); } @@ -2281,8 +2284,9 @@ Item_func_if::fix_length_and_dec() uint Item_func_if::decimal_precision() const { - int precision=(max(args[1]->decimal_int_part(),args[2]->decimal_int_part())+ - decimals); + int arg1_prec= args[1]->decimal_int_part(); + int arg2_prec= args[2]->decimal_int_part(); + int precision=max(arg1_prec,arg2_prec) + decimals; return min(precision, DECIMAL_MAX_PRECISION); } diff --git a/sql/item_func.cc b/sql/item_func.cc index 7416471d630..e663e1fcf83 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1156,9 +1156,10 @@ my_decimal *Item_func_plus::decimal_op(my_decimal *decimal_value) void Item_func_additive_op::result_precision() { decimals= max(args[0]->decimals, args[1]->decimals); - int max_int_part= max(args[0]->decimal_precision() - args[0]->decimals, - args[1]->decimal_precision() - args[1]->decimals); - int precision= min(max_int_part + 1 + decimals, DECIMAL_MAX_PRECISION); + int arg1_int= args[0]->decimal_precision() - args[0]->decimals; + int arg2_int= args[1]->decimal_precision() - args[1]->decimals; + int est_prec= max(arg1_int, arg2_int) + 1 + decimals; + int precision= min(est_prec, DECIMAL_MAX_PRECISION); /* Integer operations keep unsigned_flag if one of arguments is unsigned */ if (result_type() == INT_RESULT) @@ -1267,8 +1268,8 @@ void Item_func_mul::result_precision() else unsigned_flag= args[0]->unsigned_flag & args[1]->unsigned_flag; decimals= min(args[0]->decimals + args[1]->decimals, DECIMAL_MAX_SCALE); - int precision= min(args[0]->decimal_precision() + args[1]->decimal_precision(), - DECIMAL_MAX_PRECISION); + uint est_prec = args[0]->decimal_precision() + args[1]->decimal_precision(); + uint precision= min(est_prec, DECIMAL_MAX_PRECISION); max_length= my_decimal_precision_to_length(precision, decimals,unsigned_flag); } @@ -1315,8 +1316,8 @@ my_decimal *Item_func_div::decimal_op(my_decimal *decimal_value) void Item_func_div::result_precision() { - uint precision=min(args[0]->decimal_precision() + prec_increment, - DECIMAL_MAX_PRECISION); + uint arg_prec= args[0]->decimal_precision() + prec_increment; + uint precision=min(arg_prec, DECIMAL_MAX_PRECISION); /* Integer operations keep unsigned_flag if one of arguments is unsigned */ if (result_type() == INT_RESULT) unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag; From b19155258e5e9ae40735c71234277dfc05092ec4 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 31 Jul 2008 12:28:04 +0300 Subject: [PATCH 319/435] Bug#34159: mysql_install_db fails with sql_mode=TRADITIONAL Reset session sql_mode before creating system tables as it is done in the mysql_fix_privilege_tables.sql script. scripts/mysql_system_tables.sql: reset sql mode --- scripts/mysql_system_tables.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/mysql_system_tables.sql b/scripts/mysql_system_tables.sql index d9c870f1d73..31eb205eed0 100644 --- a/scripts/mysql_system_tables.sql +++ b/scripts/mysql_system_tables.sql @@ -2,6 +2,7 @@ -- The system tables of MySQL Server -- +set sql_mode=''; set storage_engine=myisam; CREATE TABLE IF NOT EXISTS db ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Insert_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Update_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Delete_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Drop_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_tmp_table_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Lock_tables_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Show_view_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Create_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Alter_routine_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, Execute_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL, PRIMARY KEY Host (Host,Db,User), KEY User (User) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Database privileges'; From dc593c3ec4f4d4e44ed6874c414952ee51bb6074 Mon Sep 17 00:00:00 2001 From: Timothy Smith Date: Thu, 31 Jul 2008 15:47:57 -0600 Subject: [PATCH 320/435] Cherry-pick InnoDB fixes for Bug#34286, Bug#35352, and Bug#36600 from snapshot innodb-5.0-ss2475. Bug #34286 Assertion failure in thread 2816 in file .\row\row0sel.c line 3500 Since autoinc init performs a MySQL SELECT query to determine the auto-inc value, set prebuilt->sql_stat_start = TRUE so that it is performed like any normal SELECT, regardless of the context in which it was invoked. Bug #35352 If InnoDB crashes with UNDO slots full error the error persists on restart We've added a heuristic that checks the size of the UNDO slots cache lists (insert and upate). If either of cached lists has more than 500 entries then we add any UNDO slots that are freed, to the common free list instead of the cache list, this is to avoid the case where all the free slots end up in only one of the lists on startup after a crash. Tested with test case for 26590 and passes all mysql-test(s). Bug #36600 SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number Fixed by removing the Innodb_buffer_pool_pages_latched variable from SHOW STATUS output in non-UNIV_DEBUG compilation. --- innobase/buf/buf0buf.c | 2 ++ innobase/include/buf0buf.h | 13 +++++---- innobase/include/srv0srv.h | 2 ++ innobase/include/trx0undo.h | 1 + innobase/srv/srv0srv.c | 2 ++ innobase/trx/trx0trx.c | 8 +++--- innobase/trx/trx0undo.c | 29 ++++++++++++++++----- mysql-test/r/innodb-autoinc-optimize.result | 6 +++++ mysql-test/t/innodb-autoinc-optimize.test | 16 ++++++++++++ sql/ha_innodb.cc | 10 ++++++- 10 files changed, 73 insertions(+), 16 deletions(-) create mode 100644 mysql-test/r/innodb-autoinc-optimize.result create mode 100644 mysql-test/t/innodb-autoinc-optimize.test diff --git a/innobase/buf/buf0buf.c b/innobase/buf/buf0buf.c index 9df48495355..6cfcb0fc724 100644 --- a/innobase/buf/buf0buf.c +++ b/innobase/buf/buf0buf.c @@ -2260,6 +2260,7 @@ buf_print(void) ut_a(buf_validate()); } +#ifdef UNIV_DEBUG /************************************************************************* Returns the number of latched pages in the buffer pool. */ @@ -2290,6 +2291,7 @@ buf_get_latched_pages_number(void) mutex_exit(&(buf_pool->mutex)); return fixed_pages_number; } +#endif /* UNIV_DEBUG */ /************************************************************************* Returns the number of pending buf pool ios. */ diff --git a/innobase/include/buf0buf.h b/innobase/include/buf0buf.h index 11e5bb39e63..f802ffa6510 100644 --- a/innobase/include/buf0buf.h +++ b/innobase/include/buf0buf.h @@ -495,7 +495,15 @@ Prints info of the buffer pool data structure. */ void buf_print(void); /*============*/ + +/************************************************************************* +Returns the number of latched pages in the buffer pool. */ + +ulint +buf_get_latched_pages_number(void); +/*==============================*/ #endif /* UNIV_DEBUG */ + /************************************************************************ Prints a page to stderr. */ @@ -503,12 +511,7 @@ void buf_page_print( /*===========*/ byte* read_buf); /* in: a database page */ -/************************************************************************* -Returns the number of latched pages in the buffer pool. */ -ulint -buf_get_latched_pages_number(void); -/*==============================*/ /************************************************************************* Returns the number of pending buf pool ios. */ diff --git a/innobase/include/srv0srv.h b/innobase/include/srv0srv.h index f379efa98eb..97e9136040d 100644 --- a/innobase/include/srv0srv.h +++ b/innobase/include/srv0srv.h @@ -531,7 +531,9 @@ struct export_var_struct{ ulint innodb_buffer_pool_pages_dirty; ulint innodb_buffer_pool_pages_misc; ulint innodb_buffer_pool_pages_free; +#ifdef UNIV_DEBUG ulint innodb_buffer_pool_pages_latched; +#endif /* UNIV_DEBUG */ ulint innodb_buffer_pool_read_requests; ulint innodb_buffer_pool_reads; ulint innodb_buffer_pool_wait_free; diff --git a/innobase/include/trx0undo.h b/innobase/include/trx0undo.h index bd7337e4f90..4f1847aa88c 100644 --- a/innobase/include/trx0undo.h +++ b/innobase/include/trx0undo.h @@ -237,6 +237,7 @@ trx_undo_set_state_at_finish( /*=========================*/ /* out: undo log segment header page, x-latched */ + trx_rseg_t* rseg, /* in: rollback segment memory object */ trx_t* trx, /* in: transaction */ trx_undo_t* undo, /* in: undo log memory copy */ mtr_t* mtr); /* in: mtr */ diff --git a/innobase/srv/srv0srv.c b/innobase/srv/srv0srv.c index 1227824ef80..431138400b6 100644 --- a/innobase/srv/srv0srv.c +++ b/innobase/srv/srv0srv.c @@ -1803,7 +1803,9 @@ srv_export_innodb_status(void) export_vars.innodb_buffer_pool_pages_data= UT_LIST_GET_LEN(buf_pool->LRU); export_vars.innodb_buffer_pool_pages_dirty= UT_LIST_GET_LEN(buf_pool->flush_list); export_vars.innodb_buffer_pool_pages_free= UT_LIST_GET_LEN(buf_pool->free); +#ifdef UNIV_DEBUG export_vars.innodb_buffer_pool_pages_latched= buf_get_latched_pages_number(); +#endif /* UNIV_DEBUG */ export_vars.innodb_buffer_pool_pages_total= buf_pool->curr_size; export_vars.innodb_buffer_pool_pages_misc= buf_pool->max_size - UT_LIST_GET_LEN(buf_pool->LRU) - UT_LIST_GET_LEN(buf_pool->free); diff --git a/innobase/trx/trx0trx.c b/innobase/trx/trx0trx.c index d865c709bf6..70fd73f2488 100644 --- a/innobase/trx/trx0trx.c +++ b/innobase/trx/trx0trx.c @@ -761,8 +761,8 @@ trx_commit_off_kernel( mutex_enter(&(rseg->mutex)); if (trx->insert_undo != NULL) { - trx_undo_set_state_at_finish(trx, trx->insert_undo, - &mtr); + trx_undo_set_state_at_finish( + rseg, trx, trx->insert_undo, &mtr); } undo = trx->update_undo; @@ -777,8 +777,8 @@ trx_commit_off_kernel( because only a single OS thread is allowed to do the transaction commit for this transaction. */ - update_hdr_page = trx_undo_set_state_at_finish(trx, - undo, &mtr); + update_hdr_page = trx_undo_set_state_at_finish( + rseg, trx, undo, &mtr); /* We have to do the cleanup for the update log while holding the rseg mutex because update log headers diff --git a/innobase/trx/trx0undo.c b/innobase/trx/trx0undo.c index 7441dd3f152..251cd355897 100644 --- a/innobase/trx/trx0undo.c +++ b/innobase/trx/trx0undo.c @@ -1724,6 +1724,7 @@ trx_undo_set_state_at_finish( /*=========================*/ /* out: undo log segment header page, x-latched */ + trx_rseg_t* rseg, /* in: rollback segment memory object */ trx_t* trx __attribute__((unused)), /* in: transaction */ trx_undo_t* undo, /* in: undo log memory copy */ mtr_t* mtr) /* in: mtr */ @@ -1732,8 +1733,10 @@ trx_undo_set_state_at_finish( trx_upagef_t* page_hdr; page_t* undo_page; ulint state; - - ut_ad(trx && undo && mtr); + + ut_ad(trx); + ut_ad(undo); + ut_ad(mtr); if (undo->id >= TRX_RSEG_N_SLOTS) { fprintf(stderr, "InnoDB: Error: undo->id is %lu\n", @@ -1747,9 +1750,23 @@ trx_undo_set_state_at_finish( seg_hdr = undo_page + TRX_UNDO_SEG_HDR; page_hdr = undo_page + TRX_UNDO_PAGE_HDR; - if (undo->size == 1 && mach_read_from_2(page_hdr + TRX_UNDO_PAGE_FREE) - < TRX_UNDO_PAGE_REUSE_LIMIT) { - state = TRX_UNDO_CACHED; + if (undo->size == 1 + && mach_read_from_2(page_hdr + TRX_UNDO_PAGE_FREE) + < TRX_UNDO_PAGE_REUSE_LIMIT) { + + /* This is a heuristic to avoid the problem of all UNDO + slots ending up in one of the UNDO lists. Previously if + the server crashed with all the slots in one of the lists, + transactions that required the slots of a different type + would fail for lack of slots. */ + + if (UT_LIST_GET_LEN(rseg->update_undo_list) < 500 + && UT_LIST_GET_LEN(rseg->insert_undo_list) < 500) { + + state = TRX_UNDO_CACHED; + } else { + state = TRX_UNDO_TO_FREE; + } } else if (undo->type == TRX_UNDO_INSERT) { @@ -1759,7 +1776,7 @@ trx_undo_set_state_at_finish( } undo->state = state; - + mlog_write_ulint(seg_hdr + TRX_UNDO_STATE, state, MLOG_2BYTES, mtr); return(undo_page); diff --git a/mysql-test/r/innodb-autoinc-optimize.result b/mysql-test/r/innodb-autoinc-optimize.result new file mode 100644 index 00000000000..61739f0713a --- /dev/null +++ b/mysql-test/r/innodb-autoinc-optimize.result @@ -0,0 +1,6 @@ +drop table if exists t1; +create table t1(a int not null auto_increment primary key) engine=innodb; +insert into t1 set a = -1; +optimize table t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK diff --git a/mysql-test/t/innodb-autoinc-optimize.test b/mysql-test/t/innodb-autoinc-optimize.test new file mode 100644 index 00000000000..c7e22a8ff40 --- /dev/null +++ b/mysql-test/t/innodb-autoinc-optimize.test @@ -0,0 +1,16 @@ +-- source include/have_innodb.inc +# embedded server ignores 'delayed', so skip this +-- source include/not_embedded.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +# +# Bug 34286 +# +create table t1(a int not null auto_increment primary key) engine=innodb; +insert into t1 set a = -1; +# NOTE: The database needs to be shutdown and restarted (here) for +# the test to work. It's included for reference only. +optimize table t1; diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 1be6137460b..1c0f8a6e9b3 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -244,8 +244,10 @@ struct show_var_st innodb_status_variables[]= { (char*) &export_vars.innodb_buffer_pool_pages_flushed, SHOW_LONG}, {"buffer_pool_pages_free", (char*) &export_vars.innodb_buffer_pool_pages_free, SHOW_LONG}, +#ifdef UNIV_DEBUG {"buffer_pool_pages_latched", (char*) &export_vars.innodb_buffer_pool_pages_latched, SHOW_LONG}, +#endif /* UNIV_DEBUG */ {"buffer_pool_pages_misc", (char*) &export_vars.innodb_buffer_pool_pages_misc, SHOW_LONG}, {"buffer_pool_pages_total", @@ -4250,7 +4252,7 @@ ha_innobase::rnd_pos( int error; uint keynr = active_index; DBUG_ENTER("rnd_pos"); - DBUG_DUMP("key", (uchar *)pos, ref_length); + DBUG_DUMP("key", (uchar*) pos, ref_length); statistic_increment(current_thd->status_var.ha_read_rnd_count, &LOCK_status); @@ -6882,6 +6884,12 @@ ha_innobase::innobase_read_and_init_auto_inc( from a table when no table has been locked in ::external_lock(). */ prebuilt->trx->n_mysql_tables_in_use++; + /* Since we will perform a MySQL SELECT query to determine the + auto-inc value, set prebuilt->sql_stat_start = TRUE so that it + is performed like any normal SELECT, regardless of the context + we come here. */ + prebuilt->sql_stat_start = TRUE; + error = index_last(table->record[1]); prebuilt->trx->n_mysql_tables_in_use--; From b757f48565fc5b0d728015a07e00b3d58e8250c8 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Fri, 1 Aug 2008 12:10:06 -0300 Subject: [PATCH 321/435] Bug#37003: Tests sporadically crashes with embedded server Post-merge fix: Alter linking order so that the thread linking flags appear last in the list. This needs to be done this way because some linkers will not search the thread archive again if a undefined symbol (pthread_kill in this case) appears later. client/Makefile.am: Link mysys before thread libs. --- client/Makefile.am | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/Makefile.am b/client/Makefile.am index 940766ac66c..25b0c0cee00 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -88,11 +88,12 @@ mysqlslap_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \ mysqltest_SOURCES= mysqltest.c mysqltest_CFLAGS= -DTHREAD -UUNDEF_THREADS_HACK -mysqltest_LDADD = $(CXXLDFLAGS) $(CLIENT_THREAD_LIBS) \ +mysqltest_LDADD = $(CXXLDFLAGS) \ @CLIENT_EXTRA_LDFLAGS@ \ $(LIBMYSQLCLIENT_LA) \ $(top_builddir)/mysys/libmysys.a \ - $(top_builddir)/regex/libregex.a + $(top_builddir)/regex/libregex.a \ + $(CLIENT_THREAD_LIBS) mysql_upgrade_SOURCES= mysql_upgrade.c \ $(top_srcdir)/mysys/my_getpagesize.c From ff577e3590030de1597a37d0526a32fd32825f4b Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Wed, 6 Aug 2008 09:25:03 -0400 Subject: [PATCH 322/435] Bug#30129: mysql_install_db appears to run normally, but the databases \ are not created {Netware} The init and test sql files were not created at cross-compilation time. Now, make them in the default build rule. Additionally, remove the "fix" SQL instructions, which are unnecessary for newly initialized databases. Also, clean up the english in an error message, and BZRify nwbootstrap. --- netware/BUILD/compile-linux-tools | 3 +++ netware/BUILD/nwbootstrap | 8 +++++--- netware/Makefile.am | 3 +-- netware/mysql_install_db.c | 20 +++++++++++++++----- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/netware/BUILD/compile-linux-tools b/netware/BUILD/compile-linux-tools index 14422ea5a3f..8cca00d142f 100755 --- a/netware/BUILD/compile-linux-tools +++ b/netware/BUILD/compile-linux-tools @@ -53,6 +53,9 @@ make # so the file will be linked (cd sql; make sql_yacc.cc) +# we need initilizing SQL files. +(cd netware; make test_db.sql init_db.sql) + # copying required linux tools cp extra/comp_err extra/comp_err.linux cp libmysql/conf_to_src libmysql/conf_to_src.linux diff --git a/netware/BUILD/nwbootstrap b/netware/BUILD/nwbootstrap index e0c0b926619..7ea8b9fc4b8 100755 --- a/netware/BUILD/nwbootstrap +++ b/netware/BUILD/nwbootstrap @@ -91,8 +91,8 @@ done echo "starting build..." # check for bk and repo_dir -bk help > /dev/null -repo_dir=`bk root $repo_dir` +bzr help > /dev/null +repo_dir=`bzr root $repo_dir` cd $repo_dir doc_dir="$repo_dir/../mysqldoc" @@ -100,7 +100,7 @@ doc_dir="$repo_dir/../mysqldoc" temp_dir="$build_dir/mysql-$$.tmp" # export the bk tree -command="bk export"; +command="bzr export"; if test $revision; then command="$command -r$revision"; fi command="$command $temp_dir" echo "exporting $repo_dir..." @@ -178,6 +178,8 @@ awk 'BEGIN{x=0;} END{printf("\n");} x==1 {printf(" %s",$1); x++; next} x>1 {pri # build linux tools echo "compiling linux tools..." ./netware/BUILD/compile-linux-tools +test -f ./netware/init_db.sql # this must exist +test -f ./netware/test_db.sql # this must exist # compile if test $build diff --git a/netware/Makefile.am b/netware/Makefile.am index 2e9ff2b59d6..7ad045d433d 100644 --- a/netware/Makefile.am +++ b/netware/Makefile.am @@ -103,8 +103,7 @@ init_db.sql: $(top_srcdir)/scripts/mysql_system_tables.sql \ @echo "CREATE DATABASE mysql;" > $@; @echo "CREATE DATABASE test;" >> $@; @echo "use mysql;" >> $@; - @cat $(top_srcdir)/scripts/mysql_system_tables.sql \ - $(top_srcdir)/scripts/mysql_system_tables_fix.sql >> $@; + @cat $(top_srcdir)/scripts/mysql_system_tables.sql >> $@; # Build test_db.sql from init_db.sql plus # some test data diff --git a/netware/mysql_install_db.c b/netware/mysql_install_db.c index 65ee7873e5c..218c5024a8c 100644 --- a/netware/mysql_install_db.c +++ b/netware/mysql_install_db.c @@ -324,9 +324,10 @@ void create_paths() ******************************************************************************/ int mysql_install_db(int argc, char *argv[]) { - arg_list_t al; - int i, j, err; - char skip; + arg_list_t al; + int i, j, err; + char skip; + struct stat info; // private options static char *private_options[] = @@ -363,6 +364,15 @@ int mysql_install_db(int argc, char *argv[]) add_arg(&al, "--skip-innodb"); add_arg(&al, "--skip-bdb"); + if ((err = stat(sql_file, &info)) != 0) + { + printf("ERROR - %s:\n", strerror(errno)); + printf("\t%s\n\n", sql_file); + // free args + free_args(&al); + exit(-1); + } + // spawn mysqld err = spawn(mysqld, &al, TRUE, sql_file, out_log, err_log); @@ -395,9 +405,9 @@ int main(int argc, char **argv) // install the database if (mysql_install_db(argc, argv)) { - printf("ERROR - The database creation failed!\n"); + printf("ERROR - Failed to create the database!\n"); printf(" %s\n", strerror(errno)); - printf("See the following log for more infomration:\n"); + printf("See the following log for more information:\n"); printf("\t%s\n\n", err_log); exit(-1); } From 3236c07b7f75473bc46da8a526ca9300c6d0b894 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Wed, 6 Aug 2008 23:43:37 +0530 Subject: [PATCH 323/435] WL#4380 1) Remove solaris sparc specific output produced by the pre-processor in the .out files 2) Ensure compatibility of preprocessor options for solaris/sparc platform. Makefile.am: 1) Added a sed regular expression to remove output produced by the preprocessor in the solaris sparc platform 2) Removed the -dI option from the preprocessor to enable solaris/sparc compatibility include/mysql.h.pp: Since the -dI option has been removed from the preprocessor the .pp files will correspondingly change. --- Makefile.am | 15 +++++++-------- include/mysql.h.pp | 8 -------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/Makefile.am b/Makefile.am index 77318baf07e..409504bddff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -259,12 +259,10 @@ TEST_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \ # to prevent seeing these messages. # 2) sed the output to # 2.1) remove blank lines and lines that begin with "# " -# (The header information is retained to enable easy -# analysis of abi diffs at a later stage). -# 2.2) When gcc -E is run in the Mac OS it introduces a line of output -# that results in showing up as a difference between the .pp and -# .out files. Remove this OS specific preprocessor text inserted by -# the preprocessor in the MAC OS. +# 2.2) When gcc -E is run on the Mac OS and solaris sparc platforms it +# introduces a line of output that shows up as a difference between +# the .pp and .out files. Remove these OS specific preprocessor text +# inserted by the preprocessor. # 3) diff the generated file and the canons (.pp files already in # the repository). # 4) delete the .out file that is generated. @@ -294,7 +292,7 @@ abi_check_all: $(TEST_PREPROCESSOR_HEADER) do_abi_check: set -ex; \ for file in $(abi_headers); do \ - @CC@ -E -nostdinc -dI \ + @CC@ -E -nostdinc \ -I$(top_srcdir)/include \ -I$(top_srcdir)/include/mysql \ -I$(top_srcdir)/sql \ @@ -304,7 +302,8 @@ do_abi_check: $$file 2>/dev/null | \ @SED@ -e '/^# /d' \ -e '/^[ ]*$$/d' \ - -e '/^#pragma GCC set_debug_pwd/d' > \ + -e '/^#pragma GCC set_debug_pwd/d' \ + -e '/^#ident/d' > \ $(top_builddir)/abi_check.out; \ @DIFF@ -w $$file.pp $(top_builddir)/abi_check.out; \ @RM@ $(top_builddir)/abi_check.out; \ diff --git a/include/mysql.h.pp b/include/mysql.h.pp index 633cde41130..d4f92bc2ee5 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -1,8 +1,5 @@ -#include typedef char my_bool; typedef int my_socket; -#include "mysql_version.h" -#include "mysql_com.h" enum enum_server_command { COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST, @@ -146,7 +143,6 @@ char *get_tty_password(const char *opt_message); const char *mysql_errno_to_sqlstate(unsigned int mysql_errno); my_bool my_thread_init(void); void my_thread_end(void); -#include "mysql_time.h" enum enum_mysql_timestamp_type { MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1, @@ -159,7 +155,6 @@ typedef struct st_mysql_time my_bool neg; enum enum_mysql_timestamp_type time_type; } MYSQL_TIME; -#include "my_list.h" typedef struct st_list { struct st_list *prev,*next; void *data; @@ -200,8 +195,6 @@ typedef struct st_mysql_field { typedef char **MYSQL_ROW; typedef unsigned int MYSQL_FIELD_OFFSET; typedef unsigned long long my_ulonglong; -#include "typelib.h" -#include "my_alloc.h" typedef struct st_used_mem { struct st_used_mem *next; @@ -239,7 +232,6 @@ typedef struct st_mysql_rows { unsigned long length; } MYSQL_ROWS; typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; -#include "my_alloc.h" typedef struct embedded_query_result EMBEDDED_QUERY_RESULT; typedef struct st_mysql_data { MYSQL_ROWS *data; From 93df483fddc5c467080448e53d3b969361a0632c Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Wed, 6 Aug 2008 15:27:28 -0400 Subject: [PATCH 324/435] Bug#37201: make tags doesn't work in bazaar server trees bk sfiles -> bzr ls --- support-files/build-tags | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/support-files/build-tags b/support-files/build-tags index d5f9fbf5100..1879f9f8891 100755 --- a/support-files/build-tags +++ b/support-files/build-tags @@ -2,7 +2,7 @@ rm -f TAGS filter='\.cc$\|\.c$\|\.h$\|\.yy$' -files=`bk -r sfiles -gU | grep $filter ` +files=`bzr ls --kind=file | grep $filter ` for f in $files ; do etags -o TAGS --append $f From 82d13392eb37f3c0f9ebda21c65c274c04845d53 Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Wed, 6 Aug 2008 16:25:25 -0400 Subject: [PATCH 325/435] Bug#37201: make tags doesn't work in bazaar server trees Fall back to "find" if bzr is unavailable. Don't fail for paths that have spaces in them. --- support-files/build-tags | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/support-files/build-tags b/support-files/build-tags index 1879f9f8891..6c80d2638e9 100755 --- a/support-files/build-tags +++ b/support-files/build-tags @@ -2,8 +2,11 @@ rm -f TAGS filter='\.cc$\|\.c$\|\.h$\|\.yy$' -files=`bzr ls --kind=file | grep $filter ` -for f in $files ; + +list="find . -type f" +bzr root >/dev/null 2>/dev/null && list="bzr ls --kind=file --versioned" + +$list |grep $filter |while read f; do etags -o TAGS --append $f done From 130ab95a54c61fc7cd6c0174e485b8662d12b2bb Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Wed, 6 Aug 2008 23:23:58 -0300 Subject: [PATCH 326/435] Bug#21226 FLUSH PRIVILEGES does not provided feedback when it fails. Post-merge fix: remove spurious semicolon that caused the function to return failure regardless of the outcome. sql/sql_parse.cc: Remove spurious semicolon. --- sql/sql_parse.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 8857b09b24b..d9ec8f6c610 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -6591,7 +6591,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables, if (lock_global_read_lock(thd)) return 1; // Killed if (close_cached_tables(thd, tables, FALSE, (options & REFRESH_FAST) ? - FALSE : TRUE, TRUE)); + FALSE : TRUE, TRUE)) result= 1; if (make_global_read_lock_block_commit(thd)) // Killed @@ -6604,7 +6604,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables, else { if (close_cached_tables(thd, tables, FALSE, (options & REFRESH_FAST) ? - FALSE : TRUE, FALSE)); + FALSE : TRUE, FALSE)) result= 1; } my_dbopt_cleanup(); From abeda651c5929af02f4f80f0ac9934fb0a73db5e Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Thu, 7 Aug 2008 12:24:39 -0400 Subject: [PATCH 327/435] Bug#31605: mysql_upgrade relies on Linux /proc filesystem when not \ running on Windows We used two OS-specific methods of looking up the executable name, which don't work outside of those two kinds of OSes (Linux+Solaris and Windows). We assume that if the user ran this program with a certain name, we can run the other sibling programs with a similar name. (re-patch in bzr) --- client/mysql_upgrade.c | 139 +++++++++++++++++------------------------ 1 file changed, 56 insertions(+), 83 deletions(-) diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index ded9d465d3a..15fa6622f74 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -259,6 +259,10 @@ get_one_option(int optid, const struct my_option *opt, } +/** + Run a command using the shell, storing its output in the supplied dynamic + string. +*/ static int run_command(char* cmd, DYNAMIC_STRING *ds_res) { @@ -331,36 +335,16 @@ static int run_tool(char *tool_path, DYNAMIC_STRING *ds_res, ...) } -/* - Try to get the full path to this exceutable - - Return 0 if path found - +/** + Look for the filename of given tool, with the presumption that it is in the + same directory as mysql_upgrade and that the same executable-searching + mechanism will be used when we run our sub-shells with popen() later. */ - -static my_bool get_full_path_to_executable(char* path) +static void find_tool(char *tool_executable_name, const char *tool_name, + const char *self_name) { - my_bool ret; - DBUG_ENTER("get_full_path_to_executable"); -#ifdef __WIN__ - ret= (GetModuleFileName(NULL, path, FN_REFLEN) == 0); -#else - /* my_readlink returns 0 if a symlink was read */ - ret= (my_readlink(path, "/proc/self/exe", MYF(0)) != 0); - /* Might also want to try with /proc/$$/exe if the above fails */ -#endif - DBUG_PRINT("exit", ("path: %s", path)); - DBUG_RETURN(ret); -} + char *last_fn_libchar; - -/* - Look for the tool in the same directory as mysql_upgrade. -*/ - -static void find_tool(char *tool_path, const char *tool_name) -{ - char path[FN_REFLEN]; DYNAMIC_STRING ds_tmp; DBUG_ENTER("find_tool"); DBUG_PRINT("enter", ("progname: %s", my_progname)); @@ -368,77 +352,57 @@ static void find_tool(char *tool_path, const char *tool_name) if (init_dynamic_string(&ds_tmp, "", 32, 32)) die("Out of memory"); - /* Initialize path with the full path to this program */ - if (get_full_path_to_executable(path)) + last_fn_libchar= strrchr(self_name, FN_LIBCHAR); + + if (last_fn_libchar == NULL) { /* - Easy way to get full executable path failed, try - other methods + mysql_upgrade was found by the shell searching the path. A sibling + next to us should be found the same way. */ - if (my_progname[0] == FN_LIBCHAR) - { - /* 1. my_progname contains full path */ - strmake(path, my_progname, FN_REFLEN); - } - else if (my_progname[0] == '.') - { - /* 2. my_progname contains relative path, prepend wd */ - char buf[FN_REFLEN]; - my_getwd(buf, FN_REFLEN, MYF(0)); - my_snprintf(path, FN_REFLEN, "%s%s", buf, my_progname); - } - else - { - /* 3. Just go for it and hope tool is in path */ - path[0]= 0; - } + strncpy(tool_executable_name, tool_name, FN_REFLEN); } - - DBUG_PRINT("info", ("path: '%s'", path)); - - /* Chop off binary name (i.e mysql-upgrade) from path */ - dirname_part(path, path); - - /* - When running in a not yet installed build and using libtool, - the program(mysql_upgrade) will be in .libs/ and executed - through a libtool wrapper in order to use the dynamic libraries - from this build. The same must be done for the tools(mysql and - mysqlcheck). Thus if path ends in .libs/, step up one directory - and execute the tools from there - */ - path[max((strlen(path)-1), 0)]= 0; /* Chop off last / */ - if (strncmp(path + dirname_length(path), ".libs", 5) == 0) + else { - DBUG_PRINT("info", ("Chopping off .libs from '%s'", path)); + /* + mysql_upgrade was run absolutely or relatively. We can find a sibling + by replacing our name after the LIBCHAR with the new tool name. + */ - /* Chop off .libs */ - dirname_part(path, path); + /* + When running in a not yet installed build and using libtool, + the program(mysql_upgrade) will be in .libs/ and executed + through a libtool wrapper in order to use the dynamic libraries + from this build. The same must be done for the tools(mysql and + mysqlcheck). Thus if path ends in .libs/, step up one directory + and execute the tools from there + */ + if (((last_fn_libchar - 6) >= self_name) && + (strncmp(last_fn_libchar - 5, ".libs", 5) == 0) && + (*(last_fn_libchar - 6) == FN_LIBCHAR)) + { + DBUG_PRINT("info", ("Chopping off \".libs\" from end of path")); + last_fn_libchar -= 6; + } + + my_snprintf(tool_executable_name, FN_REFLEN, "%.*s%c%s", + (last_fn_libchar - self_name), self_name, + FN_LIBCHAR, + tool_name); } - - DBUG_PRINT("info", ("path: '%s'", path)); - - /* Format name of the tool to search for */ - fn_format(tool_path, tool_name, - path, "", MYF(MY_REPLACE_DIR)); - - verbose("Looking for '%s' in: %s", tool_name, tool_path); - - /* Make sure the tool exists */ - if (my_access(tool_path, F_OK) != 0) - die("Can't find '%s'", tool_path); + verbose("Looking for '%s' as: %s", tool_name, tool_executable_name); /* Make sure it can be executed */ - if (run_tool(tool_path, + if (run_tool(tool_executable_name, &ds_tmp, /* Get output from command, discard*/ "--help", "2>&1", IF_WIN("> NUL", "> /dev/null"), NULL)) - die("Can't execute '%s'", tool_path); + die("Can't execute '%s'", tool_executable_name); dynstr_free(&ds_tmp); @@ -748,11 +712,20 @@ static const char *load_default_groups[]= int main(int argc, char **argv) { + char self_name[FN_REFLEN]; + MY_INIT(argv[0]); #ifdef __NETWARE__ setscreenmode(SCR_AUTOCLOSE_ON_EXIT); #endif +#if __WIN__ + if (GetModuleFileName(NULL, self_name, FN_REFLEN) == 0) +#endif + { + strncpy(self_name, argv[0], FN_REFLEN); + } + if (init_dynamic_string(&ds_args, "", 512, 256)) die("Out of memory"); @@ -774,10 +747,10 @@ int main(int argc, char **argv) dynstr_append(&ds_args, " "); /* Find mysql */ - find_tool(mysql_path, IF_WIN("mysql.exe", "mysql")); + find_tool(mysql_path, IF_WIN("mysql.exe", "mysql"), self_name); /* Find mysqlcheck */ - find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck")); + find_tool(mysqlcheck_path, IF_WIN("mysqlcheck.exe", "mysqlcheck"), self_name); /* Read the mysql_upgrade_info file to check if mysql_upgrade From 9d9fa39b976e0dd6569f97b1ee6b115f3bc2b178 Mon Sep 17 00:00:00 2001 From: Timothy Smith Date: Thu, 7 Aug 2008 18:25:24 -0600 Subject: [PATCH 328/435] Cherry-pick fix for Bug#35220 from innodb-5.0-ss2475 snapshot. Bug#35220: ALTER TABLE too picky on reserved word "foreign" In ALTER TABLE, change the internal parser to search for ``FOREIGN[[:space:]]'' instead of only ``FOREIGN'' when parsing ALTER TABLE ... DROP FOREIGN KEY ...; otherwise it could be mistaken with ALTER TABLE ... DROP foreign_col; (This fix is already present in MySQL 5.1 and higher.) --- innobase/dict/dict0dict.c | 2 +- mysql-test/r/innodb_bug35220.result | 1 + mysql-test/t/innodb_bug35220.test | 16 ++++++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 mysql-test/r/innodb_bug35220.result create mode 100644 mysql-test/t/innodb_bug35220.test diff --git a/innobase/dict/dict0dict.c b/innobase/dict/dict0dict.c index 96c822857df..b8d9f362b06 100644 --- a/innobase/dict/dict0dict.c +++ b/innobase/dict/dict0dict.c @@ -3554,7 +3554,7 @@ loop: ptr = dict_accept(ptr, "FOREIGN", &success); - if (!success) { + if (!success || !ib_isspace(*ptr)) { goto loop; } diff --git a/mysql-test/r/innodb_bug35220.result b/mysql-test/r/innodb_bug35220.result new file mode 100644 index 00000000000..195775f74c8 --- /dev/null +++ b/mysql-test/r/innodb_bug35220.result @@ -0,0 +1 @@ +SET storage_engine=InnoDB; diff --git a/mysql-test/t/innodb_bug35220.test b/mysql-test/t/innodb_bug35220.test new file mode 100644 index 00000000000..26f7d6b1ddd --- /dev/null +++ b/mysql-test/t/innodb_bug35220.test @@ -0,0 +1,16 @@ +# +# Bug#35220 ALTER TABLE too picky on reserved word "foreign" +# http://bugs.mysql.com/35220 +# + +-- source include/have_innodb.inc + +SET storage_engine=InnoDB; + +# we care only that the following SQL commands do not produce errors +-- disable_query_log +-- disable_result_log + +CREATE TABLE bug35220 (foreign_col INT, dummy_cant_delete_all_columns INT); +ALTER TABLE bug35220 DROP foreign_col; +DROP TABLE bug35220; From bd441c4d60e0a31086eab82ea7eb5efe86ca8ece Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Fri, 8 Aug 2008 14:30:05 +0530 Subject: [PATCH 329/435] WL#4380 1) Disabled abi_check rule for all compilers except gcc 2) restored the -dI option to retain the header information. Makefile.am: 1) changed all-local to depend on a configure variable that will be set based on if the compiler is gcc. 2) restored the -dI option removed earlier since now only gcc is being used. configure.in: Added a check to see if gcc is being used. If it is being used set the ABI_CHECK variable to the abi_check target. include/mysql.h.pp: The .pp file is changed to correspond to the option -dI. --- Makefile.am | 4 ++-- configure.in | 9 +++++++++ include/mysql.h.pp | 8 ++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 409504bddff..91509f68ccc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -58,7 +58,7 @@ dist-hook: --datadir=$(distdir)/win/data \ --srcdir=$(top_srcdir) -all-local: abi_check +all-local: @ABI_CHECK@ tags: support-files/build-tags @@ -292,7 +292,7 @@ abi_check_all: $(TEST_PREPROCESSOR_HEADER) do_abi_check: set -ex; \ for file in $(abi_headers); do \ - @CC@ -E -nostdinc \ + @CC@ -E -nostdinc -dI \ -I$(top_srcdir)/include \ -I$(top_srcdir)/include/mysql \ -I$(top_srcdir)/sql \ diff --git a/configure.in b/configure.in index eeb2977e0ba..fea03dbf63a 100644 --- a/configure.in +++ b/configure.in @@ -444,6 +444,15 @@ AC_SUBST(HOSTNAME) AC_SUBST(PERL) AC_SUBST(PERL5) +if expr "$CC" : ".*gcc.*" +then + ABI_CHECK="abi_check" +else + ABI_CHECK="" +fi + +AC_SUBST(ABI_CHECK) + # Lock for PS AC_PATH_PROG(PS, ps, ps) AC_MSG_CHECKING("how to check if pid exists") diff --git a/include/mysql.h.pp b/include/mysql.h.pp index d4f92bc2ee5..633cde41130 100644 --- a/include/mysql.h.pp +++ b/include/mysql.h.pp @@ -1,5 +1,8 @@ +#include typedef char my_bool; typedef int my_socket; +#include "mysql_version.h" +#include "mysql_com.h" enum enum_server_command { COM_SLEEP, COM_QUIT, COM_INIT_DB, COM_QUERY, COM_FIELD_LIST, @@ -143,6 +146,7 @@ char *get_tty_password(const char *opt_message); const char *mysql_errno_to_sqlstate(unsigned int mysql_errno); my_bool my_thread_init(void); void my_thread_end(void); +#include "mysql_time.h" enum enum_mysql_timestamp_type { MYSQL_TIMESTAMP_NONE= -2, MYSQL_TIMESTAMP_ERROR= -1, @@ -155,6 +159,7 @@ typedef struct st_mysql_time my_bool neg; enum enum_mysql_timestamp_type time_type; } MYSQL_TIME; +#include "my_list.h" typedef struct st_list { struct st_list *prev,*next; void *data; @@ -195,6 +200,8 @@ typedef struct st_mysql_field { typedef char **MYSQL_ROW; typedef unsigned int MYSQL_FIELD_OFFSET; typedef unsigned long long my_ulonglong; +#include "typelib.h" +#include "my_alloc.h" typedef struct st_used_mem { struct st_used_mem *next; @@ -232,6 +239,7 @@ typedef struct st_mysql_rows { unsigned long length; } MYSQL_ROWS; typedef MYSQL_ROWS *MYSQL_ROW_OFFSET; +#include "my_alloc.h" typedef struct embedded_query_result EMBEDDED_QUERY_RESULT; typedef struct st_mysql_data { MYSQL_ROWS *data; From 75a5ecbd7292e70a14b0fd44d75540937ed31487 Mon Sep 17 00:00:00 2001 From: Kristofer Pettersson Date: Mon, 11 Aug 2008 11:40:54 +0200 Subject: [PATCH 330/435] Bug#38486 Crash when using cursor protocol Server side cursors were not initialized properly and this caused a reference to uninitialized memory. --- sql/sql_cursor.cc | 5 ++++- tests/mysql_client_test.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/sql/sql_cursor.cc b/sql/sql_cursor.cc index c2345f1f2cd..16567765ba6 100644 --- a/sql/sql_cursor.cc +++ b/sql/sql_cursor.cc @@ -111,7 +111,8 @@ class Select_materialize: public select_union select_result *result; /* the result object of the caller (PS or SP) */ public: Materialized_cursor *materialized_cursor; - Select_materialize(select_result *result_arg) :result(result_arg) {} + Select_materialize(select_result *result_arg) :result(result_arg), + materialized_cursor(0) {} virtual bool send_fields(List &list, uint flags); }; @@ -155,6 +156,7 @@ int mysql_open_cursor(THD *thd, uint flags, select_result *result, if (! (sensitive_cursor= new (thd->mem_root) Sensitive_cursor(thd, result))) { delete result_materialize; + result_materialize= NULL; return 1; } @@ -212,6 +214,7 @@ int mysql_open_cursor(THD *thd, uint flags, select_result *result, if ((rc= materialized_cursor->open(0))) { delete materialized_cursor; + materialized_cursor= NULL; goto err_open; } diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 5e1c2afe84a..4336bfa0c59 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -16189,6 +16189,35 @@ static void test_bug32265() DBUG_VOID_RETURN; } + +/** + Bug#38486 Crash when using cursor protocol +*/ + +static void test_bug38486(void) +{ + myheader("test_bug38486"); + + MYSQL_STMT *stmt; + stmt= mysql_stmt_init(mysql); + unsigned long type= CURSOR_TYPE_READ_ONLY; + mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*)&type); + const char *sql= "CREATE TABLE t1 (a INT)"; + mysql_stmt_prepare(stmt,sql,strlen(sql)); + + mysql_stmt_execute(stmt); + mysql_stmt_close(stmt); + + stmt= mysql_stmt_init(mysql); + mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*)&type); + const char *sql2= "INSERT INTO t1 VALUES (1)"; + mysql_stmt_prepare(stmt,sql2,strlen(sql2)); + mysql_stmt_execute(stmt); + + mysql_stmt_close(stmt); +} + + /* Read and parse arguments and MySQL options from my.cnf */ @@ -16483,6 +16512,7 @@ static struct my_tests_st my_tests[]= { { "test_bug29306", test_bug29306 }, { "test_bug31669", test_bug31669 }, { "test_bug32265", test_bug32265 }, + { "test_bug38486", test_bug38486 }, { 0, 0 } }; From b728b83536298a795123fc4740d4f6ba96aff026 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Mon, 11 Aug 2008 16:55:09 +0530 Subject: [PATCH 331/435] WL#4380 Added a comment to the abi_check related part of configure.in configure.in: Added a comment to the abi_check related part of configure.in --- configure.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configure.in b/configure.in index fea03dbf63a..f20aa5ab49b 100644 --- a/configure.in +++ b/configure.in @@ -444,6 +444,8 @@ AC_SUBST(HOSTNAME) AC_SUBST(PERL) AC_SUBST(PERL5) +# Enable the abi_check rule only if gcc is available + if expr "$CC" : ".*gcc.*" then ABI_CHECK="abi_check" From d622b04f3920665f20965a5386998f01cc8f81f5 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 11 Aug 2008 10:08:21 -0300 Subject: [PATCH 332/435] Post-merge fix: Silence warning due to type mismatch. client/mysql_upgrade.c: Silence warning due to type mismatch. --- client/mysql_upgrade.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index 15fa6622f74..74e8c9dd577 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -364,7 +364,9 @@ static void find_tool(char *tool_executable_name, const char *tool_name, } else { - /* + int len; + + /* mysql_upgrade was run absolutely or relatively. We can find a sibling by replacing our name after the LIBCHAR with the new tool name. */ @@ -385,10 +387,10 @@ static void find_tool(char *tool_executable_name, const char *tool_name, last_fn_libchar -= 6; } + len= last_fn_libchar - self_name; + my_snprintf(tool_executable_name, FN_REFLEN, "%.*s%c%s", - (last_fn_libchar - self_name), self_name, - FN_LIBCHAR, - tool_name); + len, self_name, FN_LIBCHAR, tool_name); } verbose("Looking for '%s' as: %s", tool_name, tool_executable_name); From b615e3d535bfa28871bc3004bedef419a689b389 Mon Sep 17 00:00:00 2001 From: Chad MILLER Date: Mon, 11 Aug 2008 11:28:35 -0400 Subject: [PATCH 333/435] Backport compiler warning fix from 5.1-bugteam. --- client/mysql_upgrade.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index 15fa6622f74..74e8c9dd577 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -364,7 +364,9 @@ static void find_tool(char *tool_executable_name, const char *tool_name, } else { - /* + int len; + + /* mysql_upgrade was run absolutely or relatively. We can find a sibling by replacing our name after the LIBCHAR with the new tool name. */ @@ -385,10 +387,10 @@ static void find_tool(char *tool_executable_name, const char *tool_name, last_fn_libchar -= 6; } + len= last_fn_libchar - self_name; + my_snprintf(tool_executable_name, FN_REFLEN, "%.*s%c%s", - (last_fn_libchar - self_name), self_name, - FN_LIBCHAR, - tool_name); + len, self_name, FN_LIBCHAR, tool_name); } verbose("Looking for '%s' as: %s", tool_name, tool_executable_name); From e04dfffb591b7533a3c31eec56df4fb7fedc3986 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Mon, 11 Aug 2008 10:10:00 -0600 Subject: [PATCH 334/435] Bug#38296 (low memory crash with many conditions in a query) This fix is for 5.0 only : back porting the 6.0 patch manually The parser code in sql/sql_yacc.yy needs to be more robust to out of memory conditions, so that when parsing a query fails due to OOM, the thread gracefully returns an error. Before this fix, a new/alloc returning NULL could: - cause a crash, if dereferencing the NULL pointer, - produce a corrupted parsed tree, containing NULL nodes, - alter the semantic of a query, by silently dropping token values or nodes With this fix: - C++ constructors are *not* executed with a NULL "this" pointer when operator new fails. This is achieved by declaring "operator new" with a "throw ()" clause, so that a failed new gracefully returns NULL on OOM conditions. - calls to new/alloc are tested for a NULL result, - The thread diagnostic area is set to an error status when OOM occurs. This ensures that a request failing in the server properly returns an ER_OUT_OF_RESOURCES error to the client. - OOM conditions cause the parser to stop immediately (MYSQL_YYABORT). This prevents causing further crashes when using a partially built parsed tree in further rules in the parser. No test scripts are provided, since automating OOM failures is not instrumented in the server. Tested under the debugger, to verify that an error in alloc_root cause the thread to returns gracefully all the way to the client application, with an ER_OUT_OF_RESOURCES error. --- mysys/my_alloc.c | 2 +- sql/field.h | 3 +- sql/item.h | 4 +- sql/sp_head.cc | 2 +- sql/sql_lex.h | 4 +- sql/sql_list.h | 4 +- sql/sql_string.h | 2 +- sql/sql_yacc.yy | 1775 ++++++++++++++++++++++++++++++++++++--------- sql/thr_malloc.cc | 31 +- 9 files changed, 1483 insertions(+), 344 deletions(-) diff --git a/mysys/my_alloc.c b/mysys/my_alloc.c index 5983a29a3e1..99b5aec7eea 100644 --- a/mysys/my_alloc.c +++ b/mysys/my_alloc.c @@ -202,7 +202,7 @@ gptr alloc_root(MEM_ROOT *mem_root,unsigned int Size) { if (mem_root->error_handler) (*mem_root->error_handler)(); - return((gptr) 0); /* purecov: inspected */ + DBUG_RETURN((gptr) 0); /* purecov: inspected */ } mem_root->block_num++; next->next= *prev; diff --git a/sql/field.h b/sql/field.h index 8d771a151a7..241ad61f339 100644 --- a/sql/field.h +++ b/sql/field.h @@ -48,7 +48,8 @@ class Field Field(const Item &); /* Prevent use of these */ void operator=(Field &); public: - static void *operator new(size_t size) {return (void*) sql_alloc((uint) size); } + static void *operator new(size_t size) throw () + { return (void*) sql_alloc((uint) size); } static void operator delete(void *ptr_arg, size_t size) { TRASH(ptr_arg, size); } char *ptr; // Position to field in record diff --git a/sql/item.h b/sql/item.h index a948c5a45f7..126730bb892 100644 --- a/sql/item.h +++ b/sql/item.h @@ -439,9 +439,9 @@ class Item { Item(const Item &); /* Prevent use of these */ void operator=(Item &); public: - static void *operator new(size_t size) + static void *operator new(size_t size) throw () { return (void*) sql_alloc((uint) size); } - static void *operator new(size_t size, MEM_ROOT *mem_root) + static void *operator new(size_t size, MEM_ROOT *mem_root) throw () { return (void*) alloc_root(mem_root, (uint) size); } static void operator delete(void *ptr,size_t size) { TRASH(ptr, size); } static void operator delete(void *ptr, MEM_ROOT *mem_root) {} diff --git a/sql/sp_head.cc b/sql/sp_head.cc index 2d920598c46..b1bfab40acd 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -446,7 +446,7 @@ sp_head::operator new(size_t size) throw() init_sql_alloc(&own_root, MEM_ROOT_BLOCK_SIZE, MEM_ROOT_PREALLOC); sp= (sp_head *) alloc_root(&own_root, size); if (sp == NULL) - return NULL; + DBUG_RETURN(NULL); sp->main_mem_root= own_root; DBUG_PRINT("info", ("mem_root 0x%lx", (ulong) &sp->mem_root)); DBUG_RETURN(sp); diff --git a/sql/sql_lex.h b/sql/sql_lex.h index df0db2e209d..563172594d2 100644 --- a/sql/sql_lex.h +++ b/sql/sql_lex.h @@ -331,11 +331,11 @@ public: bool no_table_names_allowed; /* used for global order by */ bool no_error; /* suppress error message (convert it to warnings) */ - static void *operator new(size_t size) + static void *operator new(size_t size) throw () { return (void*) sql_alloc((uint) size); } - static void *operator new(size_t size, MEM_ROOT *mem_root) + static void *operator new(size_t size, MEM_ROOT *mem_root) throw () { return (void*) alloc_root(mem_root, (uint) size); } static void operator delete(void *ptr,size_t size) { TRASH(ptr, size); } static void operator delete(void *ptr, MEM_ROOT *mem_root) {} diff --git a/sql/sql_list.h b/sql/sql_list.h index 7913acfd086..1ad2051f065 100644 --- a/sql/sql_list.h +++ b/sql/sql_list.h @@ -27,7 +27,7 @@ public: { return (void*) sql_alloc((uint) size); } - static void *operator new[](size_t size) + static void *operator new[](size_t size) throw () { return (void*) sql_alloc((uint) size); } @@ -466,7 +466,7 @@ public: struct ilink { struct ilink **prev,*next; - static void *operator new(size_t size) + static void *operator new(size_t size) throw () { return (void*)my_malloc((uint)size, MYF(MY_WME | MY_FAE)); } diff --git a/sql/sql_string.h b/sql/sql_string.h index c1d27cb1791..4432451464e 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -78,7 +78,7 @@ public: Alloced_length=str.Alloced_length; alloced=0; str_charset=str.str_charset; } - static void *operator new(size_t size, MEM_ROOT *mem_root) + static void *operator new(size_t size, MEM_ROOT *mem_root) throw () { return (void*) alloc_root(mem_root, (uint) size); } static void operator delete(void *ptr_arg,size_t size) { TRASH(ptr_arg, size); } diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 39851ac66f8..c04eca6bd3f 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1540,6 +1540,8 @@ create: { LEX *lex=Lex; Key *key= new Key($2, $4.str, $5, 0, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); @@ -1599,6 +1601,8 @@ sp_name: MYSQL_YYABORT; } $$= new sp_name($1, $3, true); + if ($$ == NULL) + MYSQL_YYABORT; $$->init_qname(YYTHD); } | ident @@ -1614,8 +1618,9 @@ sp_name: if (lex->copy_db_to(&db.str, &db.length)) MYSQL_YYABORT; $$= new sp_name(db, $1, false); - if ($$) - $$->init_qname(YYTHD); + if ($$ == NULL) + MYSQL_YYABORT; + $$->init_qname(YYTHD); } ; @@ -1866,6 +1871,8 @@ sp_decl: if (!dflt_value_item) { dflt_value_item= new Item_null(); + if (dflt_value_item == NULL) + MYSQL_YYABORT; /* QQ Set to the var_type with null_value? */ } @@ -1891,10 +1898,17 @@ sp_decl: /* The last instruction is responsible for freeing LEX. */ - lex->sphead->add_instr( - new sp_instr_set(lex->sphead->instructions(), pctx, var_idx, - dflt_value_item, var_type, lex, - (i == num_vars - 1))); + sp_instr_set *is= new sp_instr_set(lex->sphead->instructions(), + pctx, + var_idx, + dflt_value_item, + var_type, + lex, + (i == num_vars - 1)); + if (is == NULL) + MYSQL_YYABORT; + + lex->sphead->add_instr(is); } pctx->declare_var_boundary(0); @@ -1928,6 +1942,8 @@ sp_decl: sp_instr_hpush_jump *i= new sp_instr_hpush_jump(sp->instructions(), ctx, $2, ctx->current_var_count()); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); sp->push_backpatch(i, ctx->push_label((char *)"", 0)); @@ -1980,7 +1996,7 @@ sp_decl: } i= new sp_instr_cpush(sp->instructions(), ctx, $5, ctx->current_cursor_count()); - if ( i==NULL ) + if (i == NULL) MYSQL_YYABORT; sp->add_instr(i); ctx->push_cursor(&$2); @@ -2061,6 +2077,8 @@ sp_cond: ulong_num { /* mysql errno */ $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + YYABORT; $$->type= sp_cond_type_t::number; $$->mysqlerr= $1; } @@ -2072,6 +2090,8 @@ sp_cond: MYSQL_YYABORT; } $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + YYABORT; $$->type= sp_cond_type_t::state; memcpy($$->sqlstate, $3.str, 5); $$->sqlstate[5]= '\0'; @@ -2100,16 +2120,22 @@ sp_hcond: | SQLWARNING_SYM /* SQLSTATEs 01??? */ { $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + YYABORT; $$->type= sp_cond_type_t::warning; } | not FOUND_SYM /* SQLSTATEs 02??? */ { $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + YYABORT; $$->type= sp_cond_type_t::notfound; } | SQLEXCEPTION_SYM /* All other SQLSTATEs */ { $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + YYABORT; $$->type= sp_cond_type_t::exception; } ; @@ -3085,6 +3111,8 @@ key_def: { LEX *lex=Lex; Key *key= new Key($1, $2, $7 ? $7 : $3, 0, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); /* Alloced by sql_alloc */ @@ -3094,6 +3122,8 @@ key_def: LEX *lex=Lex; const char *key_name= $3 ? $3:$1; Key *key= new Key($2, key_name, $4, 0, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); /* Alloced by sql_alloc */ } @@ -3107,10 +3137,14 @@ key_def: lex->fk_delete_opt, lex->fk_update_opt, lex->fk_match_option); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); key= new Key(Key::MULTIPLE, key_name, HA_KEY_ALG_UNDEF, 1, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); /* Alloced by sql_alloc */ } @@ -3400,7 +3434,12 @@ attribute: ; now_or_signed_literal: - NOW_SYM optional_braces { $$= new Item_func_now_local(); } + NOW_SYM optional_braces + { + $$= new Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; + } | signed_literal { $$=$1; } ; @@ -3526,8 +3565,21 @@ opt_ref_list: | '(' ref_list ')' opt_on_delete {}; ref_list: - ref_list ',' ident { Lex->ref_list.push_back(new key_part_spec($3.str)); } - | ident { Lex->ref_list.push_back(new key_part_spec($1.str)); }; + ref_list ',' ident + { + key_part_spec *key= new key_part_spec($3.str); + if (key == NULL) + MYSQL_YYABORT; + Lex->ref_list.push_back(key); + } + | ident + { + key_part_spec *key= new key_part_spec($1.str); + if (key == NULL) + MYSQL_YYABORT; + Lex->ref_list.push_back(key); + } + ; opt_on_delete: @@ -3618,16 +3670,24 @@ key_list: | key_part order_dir { Lex->col_list.push_back($1); }; key_part: - ident { $$=new key_part_spec($1.str); } - | ident '(' NUM ')' - { - int key_part_len= atoi($3.str); - if (!key_part_len) + ident { - my_error(ER_KEY_PART_0, MYF(0), $1.str); + $$= new key_part_spec($1.str); + if ($$ == NULL) + MYSQL_YYABORT; } - $$=new key_part_spec($1.str,(uint) key_part_len); - }; + | ident '(' NUM ')' + { + int key_part_len= atoi($3.str); + if (!key_part_len) + { + my_error(ER_KEY_PART_0, MYF(0), $1.str); + } + $$=new key_part_spec($1.str,(uint) key_part_len); + if ($$ == NULL) + MYSQL_YYABORT; + } + ; opt_ident: /* empty */ { $$=(char*) 0; } /* Defaultlength */ @@ -3797,8 +3857,10 @@ alter_list_item: | DROP opt_column field_ident opt_restrict { LEX *lex=Lex; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::COLUMN, - $3.str)); + Alter_drop *ad= new Alter_drop(Alter_drop::COLUMN, $3.str); + if (ad == NULL) + MYSQL_YYABORT; + lex->alter_info.drop_list.push_back(ad); lex->alter_info.flags|= ALTER_DROP_COLUMN; } | DROP FOREIGN KEY_SYM opt_ident @@ -3808,15 +3870,19 @@ alter_list_item: | DROP PRIMARY_SYM KEY_SYM { LEX *lex=Lex; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY, - primary_key_name)); + Alter_drop *ad= new Alter_drop(Alter_drop::KEY, primary_key_name); + if (ad == NULL) + MYSQL_YYABORT; + lex->alter_info.drop_list.push_back(ad); lex->alter_info.flags|= ALTER_DROP_INDEX; } | DROP key_or_index field_ident { LEX *lex=Lex; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY, - $3.str)); + Alter_drop *ad= new Alter_drop(Alter_drop::KEY, $3.str); + if (ad == NULL) + MYSQL_YYABORT; + lex->alter_info.drop_list.push_back(ad); lex->alter_info.flags|= ALTER_DROP_INDEX; } | DISABLE_SYM KEYS @@ -3834,14 +3900,19 @@ alter_list_item: | ALTER opt_column field_ident SET DEFAULT signed_literal { LEX *lex=Lex; - lex->alter_info.alter_list.push_back(new Alter_column($3.str,$6)); + Alter_column *ac= new Alter_column($3.str, $6); + if (ac == NULL) + MYSQL_YYABORT; + lex->alter_info.alter_list.push_back(ac); lex->alter_info.flags|= ALTER_CHANGE_COLUMN_DEFAULT; } | ALTER opt_column field_ident DROP DEFAULT { LEX *lex=Lex; - lex->alter_info.alter_list.push_back(new Alter_column($3.str, - (Item*) 0)); + Alter_column *ac= new Alter_column($3.str, (Item*) 0); + if (ac == NULL) + MYSQL_YYABORT; + lex->alter_info.alter_list.push_back(ac); lex->alter_info.flags|= ALTER_CHANGE_COLUMN_DEFAULT; } | RENAME opt_to table_ident @@ -4467,10 +4538,11 @@ select_item_list: | '*' { THD *thd= YYTHD; - if (add_item_to_list(thd, - new Item_field(&thd->lex->current_select-> - context, - NULL, NULL, "*"))) + Item *item= new Item_field(&thd->lex->current_select->context, + NULL, NULL, "*"); + if (item == NULL) + MYSQL_YYABORT; + if (add_item_to_list(thd, item)) MYSQL_YYABORT; (thd->lex->current_select->with_wild)++; }; @@ -4577,12 +4649,16 @@ expr: { /* X OR Y */ $$ = new (YYTHD->mem_root) Item_cond_or($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; } } | expr XOR expr %prec XOR { /* XOR is a proprietary extension */ $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; } | expr and expr %prec AND_SYM { @@ -4623,62 +4699,124 @@ expr: { /* X AND Y */ $$ = new (YYTHD->mem_root) Item_cond_and($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; } } | NOT_SYM expr %prec NOT_SYM - { $$= negate_expression(YYTHD, $2); } + { + $$= negate_expression(YYTHD, $2); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS TRUE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_istrue($1); } + { + $$= new (YYTHD->mem_root) Item_func_istrue($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not TRUE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_isnottrue($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnottrue($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS FALSE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_isfalse($1); } + { + $$= new (YYTHD->mem_root) Item_func_isfalse($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not FALSE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_isnotfalse($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnotfalse($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS UNKNOWN_SYM %prec IS - { $$= new Item_func_isnull($1); } + { + $$= new Item_func_isnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not UNKNOWN_SYM %prec IS - { $$= new Item_func_isnotnull($1); } + { + $$= new Item_func_isnotnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri ; bool_pri: bool_pri IS NULL_SYM %prec IS - { $$= new Item_func_isnull($1); } + { + $$= new Item_func_isnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not NULL_SYM %prec IS - { $$= new Item_func_isnotnull($1); } + { + $$= new Item_func_isnotnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM - { $$= new Item_func_equal($1,$3); } + { + $$= new Item_func_equal($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri comp_op predicate %prec EQ - { $$= (*$2)(0)->create($1,$3); } + { + $$= (*$2)(0)->create($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri comp_op all_or_any '(' subselect ')' %prec EQ - { $$= all_any_subquery_creator($1, $2, $3, $5); } + { + $$= all_any_subquery_creator($1, $2, $3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | predicate ; predicate: bit_expr IN_SYM '(' subselect ')' { $$= new (YYTHD->mem_root) Item_in_subselect($1, $4); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr not IN_SYM '(' subselect ')' { THD *thd= YYTHD; Item *item= new (thd->mem_root) Item_in_subselect($1, $5); + if (item == NULL) + MYSQL_YYABORT; $$= negate_expression(thd, item); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr IN_SYM '(' expr ')' { $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr IN_SYM '(' expr ',' expr_list ')' { $6->push_front($4); $6->push_front($1); $$= new (YYTHD->mem_root) Item_func_in(*$6); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr not IN_SYM '(' expr ')' { $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr not IN_SYM '(' expr ',' expr_list ')' { @@ -4691,54 +4829,146 @@ predicate: $$= item; } | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate - { $$= new Item_func_between($1,$3,$5); } + { + $$= new Item_func_between($1,$3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate { Item_func_between *item= new Item_func_between($1,$4,$6); + if (item == NULL) + MYSQL_YYABORT; item->negate(); $$= item; } | bit_expr SOUNDS_SYM LIKE bit_expr - { $$= new Item_func_eq(new Item_func_soundex($1), - new Item_func_soundex($4)); } + { + Item *item1= new Item_func_soundex($1); + Item *item4= new Item_func_soundex($4); + if ((item1 == NULL) || (item4 == NULL)) + MYSQL_YYABORT; + $$= new Item_func_eq(item1, item4); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr LIKE simple_expr opt_escape - { $$= new Item_func_like($1,$3,$4,Lex->escape_used); } + { + $$= new Item_func_like($1,$3,$4,Lex->escape_used); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr not LIKE simple_expr opt_escape - { $$= new Item_func_not(new Item_func_like($1,$4,$5, Lex->escape_used)); } - | bit_expr REGEXP bit_expr { $$= new Item_func_regex($1,$3); } + { + Item *item= new Item_func_like($1,$4,$5, Lex->escape_used); + if (item == NULL) + MYSQL_YYABORT; + $$= new Item_func_not(item); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr REGEXP bit_expr + { + $$= new Item_func_regex($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr not REGEXP bit_expr - { $$= negate_expression(YYTHD, new Item_func_regex($1,$4)); } + { + Item *item= new Item_func_regex($1,$4); + if (item == NULL) + MYSQL_YYABORT; + $$= negate_expression(YYTHD, item); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr ; bit_expr: bit_expr '|' bit_expr %prec '|' - { $$= new Item_func_bit_or($1,$3); } + { + $$= new Item_func_bit_or($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '&' bit_expr %prec '&' - { $$= new Item_func_bit_and($1,$3); } + { + $$= new Item_func_bit_and($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT - { $$= new Item_func_shift_left($1,$3); } + { + $$= new Item_func_shift_left($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT - { $$= new Item_func_shift_right($1,$3); } + { + $$= new Item_func_shift_right($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '+' bit_expr %prec '+' - { $$= new Item_func_plus($1,$3); } + { + $$= new Item_func_plus($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '-' bit_expr %prec '-' - { $$= new Item_func_minus($1,$3); } + { + $$= new Item_func_minus($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '+' interval_expr interval %prec '+' - { $$= new Item_date_add_interval($1,$3,$4,0); } + { + $$= new Item_date_add_interval($1,$3,$4,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '-' interval_expr interval %prec '-' - { $$= new Item_date_add_interval($1,$3,$4,1); } + { + $$= new Item_date_add_interval($1,$3,$4,1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '*' bit_expr %prec '*' - { $$= new Item_func_mul($1,$3); } + { + $$= new Item_func_mul($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '/' bit_expr %prec '/' - { $$= new Item_func_div($1,$3); } + { + $$= new Item_func_div($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '%' bit_expr %prec '%' - { $$= new Item_func_mod($1,$3); } + { + $$= new Item_func_mod($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr DIV_SYM bit_expr %prec DIV_SYM - { $$= new Item_func_int_div($1,$3); } + { + $$= new Item_func_int_div($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr MOD_SYM bit_expr %prec MOD_SYM - { $$= new Item_func_mod($1,$3); } + { + $$= new Item_func_mod($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '^' bit_expr - { $$= new Item_func_bit_xor($1,$3); } + { + $$= new Item_func_bit_xor($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | simple_expr ; @@ -4768,67 +4998,118 @@ simple_expr: simple_ident | simple_expr COLLATE_SYM ident_or_text %prec NEG { - $$= new Item_func_set_collation($1, - new Item_string($3.str, - $3.length, - YYTHD->charset())); + Item *item= new Item_string($3.str, $3.length, YYTHD->charset()); + if (item == NULL) + MYSQL_YYABORT; + $$= new Item_func_set_collation($1, item); + if ($$ == NULL) + MYSQL_YYABORT; } | literal | param_marker | variable | sum_expr | simple_expr OR_OR_SYM simple_expr - { $$= new Item_func_concat($1, $3); } - | '+' simple_expr %prec NEG { $$= $2; } - | '-' simple_expr %prec NEG { $$= new Item_func_neg($2); } - | '~' simple_expr %prec NEG { $$= new Item_func_bit_neg($2); } - | not2 simple_expr %prec NEG { $$= negate_expression(YYTHD, $2); } + { + $$= new Item_func_concat($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '+' simple_expr %prec NEG + { $$= $2; } + | '-' simple_expr %prec NEG + { + $$= new Item_func_neg($2); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '~' simple_expr %prec NEG + { + $$= new Item_func_bit_neg($2); + if ($$ == NULL) + MYSQL_YYABORT; + } + | not2 simple_expr %prec NEG + { + $$= negate_expression(YYTHD, $2); + if ($$ == NULL) + MYSQL_YYABORT; + } | '(' subselect ')' { $$= new Item_singlerow_subselect($2); + if ($$ == NULL) + MYSQL_YYABORT; } | '(' expr ')' { $$= $2; } | '(' expr ',' expr_list ')' { $4->push_front($2); $$= new Item_row(*$4); + if ($$ == NULL) + MYSQL_YYABORT; } | ROW_SYM '(' expr ',' expr_list ')' { $5->push_front($3); $$= new Item_row(*$5); + if ($$ == NULL) + MYSQL_YYABORT; } | EXISTS '(' subselect ')' { $$= new Item_exists_subselect($3); + if ($$ == NULL) + MYSQL_YYABORT; } - | '{' ident expr '}' { $$= $3; } + | '{' ident expr '}' + { $$= $3; } | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' - { $2->push_front($5); - Select->add_ftfunc_to_list((Item_func_match*) - ($$=new Item_func_match(*$2,$6))); } - | ASCII_SYM '(' expr ')' { $$= new Item_func_ascii($3); } + { + $2->push_front($5); + Item_func_match *item= new Item_func_match(*$2,$6); + if (item == NULL) + MYSQL_YYABORT; + Select->add_ftfunc_to_list(item); + $$= item; + } + | ASCII_SYM '(' expr ')' + { + $$= new Item_func_ascii($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | BINARY simple_expr %prec NEG { $$= create_func_cast($2, ITEM_CAST_CHAR, NULL, NULL, &my_charset_bin); + if ($$ == NULL) + MYSQL_YYABORT; } | CAST_SYM '(' expr AS cast_type ')' { LEX *lex= Lex; $$= create_func_cast($3, $5, lex->length, lex->dec, lex->charset); - if (!$$) + if ($$ == NULL) MYSQL_YYABORT; } | CASE_SYM opt_expr when_list opt_else END - { $$= new Item_func_case(* $3, $2, $4 ); } + { + $$= new Item_func_case(* $3, $2, $4 ); + if ($$ == NULL) + MYSQL_YYABORT; + } | CONVERT_SYM '(' expr ',' cast_type ')' { $$= create_func_cast($3, $5, Lex->length, Lex->dec, Lex->charset); - if (!$$) + if ($$ == NULL) MYSQL_YYABORT; } | CONVERT_SYM '(' expr USING charset_name ')' - { $$= new Item_func_conv_charset($3,$5); } + { + $$= new Item_func_conv_charset($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | DEFAULT '(' simple_ident ')' { if ($3->is_splocal()) @@ -4839,9 +5120,15 @@ simple_expr: MYSQL_YYABORT; } $$= new Item_default_value(Lex->current_context(), $3); + if ($$ == NULL) + MYSQL_YYABORT; } | VALUES '(' simple_ident_nospvar ')' - { $$= new Item_insert_value(Lex->current_context(), $3); } + { + $$= new Item_insert_value(Lex->current_context(), $3); + if ($$ == NULL) + MYSQL_YYABORT; + } | FUNC_ARG0 '(' ')' { if (!$1.symbol->create_func) @@ -4852,6 +5139,8 @@ simple_expr: MYSQL_YYABORT; } $$= ((Item*(*)(void))($1.symbol->create_func))(); + if ($$ == NULL) + MYSQL_YYABORT; } | FUNC_ARG1 '(' expr ')' { @@ -4863,6 +5152,8 @@ simple_expr: MYSQL_YYABORT; } $$= ((Item*(*)(Item*))($1.symbol->create_func))($3); + if ($$ == NULL) + MYSQL_YYABORT; } | FUNC_ARG2 '(' expr ',' expr ')' { @@ -4874,6 +5165,8 @@ simple_expr: MYSQL_YYABORT; } $$= ((Item*(*)(Item*,Item*))($1.symbol->create_func))($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; } | FUNC_ARG3 '(' expr ',' expr ',' expr ')' { @@ -4885,106 +5178,264 @@ simple_expr: MYSQL_YYABORT; } $$= ((Item*(*)(Item*,Item*,Item*))($1.symbol->create_func))($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; } | ADDDATE_SYM '(' expr ',' expr ')' - { $$= new Item_date_add_interval($3, $5, INTERVAL_DAY, 0);} + { + $$= new Item_date_add_interval($3, $5, INTERVAL_DAY, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' - { $$= new Item_date_add_interval($3, $6, $7, 0); } + { + $$= new Item_date_add_interval($3, $6, $7, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | REPEAT_SYM '(' expr ',' expr ')' - { $$= new Item_func_repeat($3,$5); } + { + $$= new Item_func_repeat($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | ATAN '(' expr ')' - { $$= new Item_func_atan($3); } + { + $$= new Item_func_atan($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | ATAN '(' expr ',' expr ')' - { $$= new Item_func_atan($3,$5); } + { + $$= new Item_func_atan($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | CHAR_SYM '(' expr_list ')' - { $$= new Item_func_char(*$3); } + { + $$= new Item_func_char(*$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | CHAR_SYM '(' expr_list USING charset_name ')' - { $$= new Item_func_char(*$3, $5); } + { + $$= new Item_func_char(*$3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | CHARSET '(' expr ')' - { $$= new Item_func_charset($3); } + { + $$= new Item_func_charset($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COALESCE '(' expr_list ')' - { $$= new Item_func_coalesce(* $3); } + { + $$= new Item_func_coalesce(* $3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COLLATION_SYM '(' expr ')' - { $$= new Item_func_collation($3); } + { + $$= new Item_func_collation($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | CONCAT '(' expr_list ')' - { $$= new Item_func_concat(* $3); } + { + $$= new Item_func_concat(* $3); + if ($$ == NULL) + MYSQL_YYABORT; + } | CONCAT_WS '(' expr ',' expr_list ')' - { $5->push_front($3); $$= new Item_func_concat_ws(*$5); } + { + $5->push_front($3); + $$= new Item_func_concat_ws(*$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | CONVERT_TZ_SYM '(' expr ',' expr ',' expr ')' { if (Lex->add_time_zone_tables_to_query_tables(YYTHD)) MYSQL_YYABORT; $$= new Item_func_convert_tz($3, $5, $7); + if ($$ == NULL) + MYSQL_YYABORT; } | CURDATE optional_braces - { $$= new Item_func_curdate_local(); Lex->safe_to_cache_query=0; } + { + $$= new Item_func_curdate_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | CURTIME optional_braces - { $$= new Item_func_curtime_local(); Lex->safe_to_cache_query=0; } + { + $$= new Item_func_curtime_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | CURTIME '(' expr ')' { $$= new Item_func_curtime_local($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | CURRENT_USER optional_braces { $$= new Item_func_current_user(Lex->current_context()); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query= 0; } | DATE_ADD_INTERVAL '(' expr ',' interval_expr interval ')' - { $$= new Item_date_add_interval($3,$5,$6,0); } + { + $$= new Item_date_add_interval($3,$5,$6,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | DATE_SUB_INTERVAL '(' expr ',' interval_expr interval ')' - { $$= new Item_date_add_interval($3,$5,$6,1); } + { + $$= new Item_date_add_interval($3,$5,$6,1); + if ($$ == NULL) + MYSQL_YYABORT; + } | DATABASE '(' ')' { $$= new Item_func_database(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | DATE_SYM '(' expr ')' - { $$= new Item_date_typecast($3); } + { + $$= new Item_date_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | DAY_SYM '(' expr ')' - { $$= new Item_func_dayofmonth($3); } + { + $$= new Item_func_dayofmonth($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | ELT_FUNC '(' expr ',' expr_list ')' - { $5->push_front($3); $$= new Item_func_elt(*$5); } + { + $5->push_front($3); + $$= new Item_func_elt(*$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | MAKE_SET_SYM '(' expr ',' expr_list ')' - { $$= new Item_func_make_set($3, *$5); } + { + $$= new Item_func_make_set($3, *$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | ENCRYPT '(' expr ')' { $$= new Item_func_encrypt($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->uncacheable(UNCACHEABLE_RAND); } - | ENCRYPT '(' expr ',' expr ')' { $$= new Item_func_encrypt($3,$5); } + | ENCRYPT '(' expr ',' expr ')' + { + $$= new Item_func_encrypt($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | DECODE_SYM '(' expr ',' TEXT_STRING_literal ')' - { $$= new Item_func_decode($3,$5.str); } + { + $$= new Item_func_decode($3,$5.str); + if ($$ == NULL) + MYSQL_YYABORT; + } | ENCODE_SYM '(' expr ',' TEXT_STRING_literal ')' - { $$= new Item_func_encode($3,$5.str); } + { + $$= new Item_func_encode($3,$5.str); + if ($$ == NULL) + MYSQL_YYABORT; + } | DES_DECRYPT_SYM '(' expr ')' - { $$= new Item_func_des_decrypt($3); } + { + $$= new Item_func_des_decrypt($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | DES_DECRYPT_SYM '(' expr ',' expr ')' - { $$= new Item_func_des_decrypt($3,$5); } + { + $$= new Item_func_des_decrypt($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | DES_ENCRYPT_SYM '(' expr ')' - { $$= new Item_func_des_encrypt($3); } + { + $$= new Item_func_des_encrypt($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | DES_ENCRYPT_SYM '(' expr ',' expr ')' - { $$= new Item_func_des_encrypt($3,$5); } + { + $$= new Item_func_des_encrypt($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | EXPORT_SET '(' expr ',' expr ',' expr ')' - { $$= new Item_func_export_set($3, $5, $7); } + { + $$= new Item_func_export_set($3, $5, $7); + if ($$ == NULL) + MYSQL_YYABORT; + } | EXPORT_SET '(' expr ',' expr ',' expr ',' expr ')' - { $$= new Item_func_export_set($3, $5, $7, $9); } + { + $$= new Item_func_export_set($3, $5, $7, $9); + if ($$ == NULL) + MYSQL_YYABORT; + } | EXPORT_SET '(' expr ',' expr ',' expr ',' expr ',' expr ')' - { $$= new Item_func_export_set($3, $5, $7, $9, $11); } + { + $$= new Item_func_export_set($3, $5, $7, $9, $11); + if ($$ == NULL) + MYSQL_YYABORT; + } | FORMAT_SYM '(' expr ',' NUM ')' - { $$= new Item_func_format($3,atoi($5.str)); } + { + $$= new Item_func_format($3,atoi($5.str)); + if ($$ == NULL) + MYSQL_YYABORT; + } | FROM_UNIXTIME '(' expr ')' - { $$= new Item_func_from_unixtime($3); } + { + $$= new Item_func_from_unixtime($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | FROM_UNIXTIME '(' expr ',' expr ')' { - $$= new Item_func_date_format (new Item_func_from_unixtime($3),$5,0); + Item *item= new Item_func_from_unixtime($3); + if (item == NULL) + MYSQL_YYABORT; + $$= new Item_func_date_format (item, $5, 0); + if ($$ == NULL) + MYSQL_YYABORT; } | FIELD_FUNC '(' expr ',' expr_list ')' - { $5->push_front($3); $$= new Item_func_field(*$5); } + { + $5->push_front($3); + $$= new Item_func_field(*$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | geometry_function { #ifdef HAVE_SPATIAL $$= $1; + /* $1 may be NULL, GEOM_NEW not tested for out of memory */ + if ($$ == NULL) + MYSQL_YYABORT; #else my_error(ER_FEATURE_DISABLED, MYF(0), sym_group_geom.name, sym_group_geom.needed_define); @@ -4992,16 +5443,36 @@ simple_expr: #endif } | GET_FORMAT '(' date_time_type ',' expr ')' - { $$= new Item_func_get_format($3, $5); } + { + $$= new Item_func_get_format($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | HOUR_SYM '(' expr ')' - { $$= new Item_func_hour($3); } + { + $$= new Item_func_hour($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | IF '(' expr ',' expr ',' expr ')' - { $$= new Item_func_if($3,$5,$7); } + { + $$= new Item_func_if($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | INSERT '(' expr ',' expr ',' expr ',' expr ')' - { $$= new Item_func_insert($3,$5,$7,$9); } + { + $$= new Item_func_insert($3,$5,$7,$9); + if ($$ == NULL) + MYSQL_YYABORT; + } | interval_expr interval '+' expr /* we cannot put interval before - */ - { $$= new Item_date_add_interval($4,$1,$2,0); } + { + $$= new Item_date_add_interval($4,$1,$2,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | interval_expr { if ($1->type() != Item::ROW_ITEM) @@ -5010,102 +5481,248 @@ simple_expr: MYSQL_YYABORT; } $$= new Item_func_interval((Item_row *)$1); + if ($$ == NULL) + MYSQL_YYABORT; } | LAST_INSERT_ID '(' ')' { $$= new Item_func_last_insert_id(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query= 0; } | LAST_INSERT_ID '(' expr ')' { $$= new Item_func_last_insert_id($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query= 0; } | LEFT '(' expr ',' expr ')' - { $$= new Item_func_left($3,$5); } + { + $$= new Item_func_left($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | LOCATE '(' expr ',' expr ')' - { $$= new Item_func_locate($5,$3); } + { + $$= new Item_func_locate($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | LOCATE '(' expr ',' expr ',' expr ')' - { $$= new Item_func_locate($5,$3,$7); } + { + $$= new Item_func_locate($5,$3,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | GREATEST_SYM '(' expr ',' expr_list ')' - { $5->push_front($3); $$= new Item_func_max(*$5); } + { + $5->push_front($3); + $$= new Item_func_max(*$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | LEAST_SYM '(' expr ',' expr_list ')' - { $5->push_front($3); $$= new Item_func_min(*$5); } + { + $5->push_front($3); + $$= new Item_func_min(*$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | LOG_SYM '(' expr ')' - { $$= new Item_func_log($3); } + { + $$= new Item_func_log($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | LOG_SYM '(' expr ',' expr ')' - { $$= new Item_func_log($3, $5); } + { + $$= new Item_func_log($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | MASTER_POS_WAIT '(' expr ',' expr ')' { $$= new Item_master_pos_wait($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; - } + } | MASTER_POS_WAIT '(' expr ',' expr ',' expr ')' { $$= new Item_master_pos_wait($3, $5, $7); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | MICROSECOND_SYM '(' expr ')' - { $$= new Item_func_microsecond($3); } + { + $$= new Item_func_microsecond($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | MINUTE_SYM '(' expr ')' - { $$= new Item_func_minute($3); } + { + $$= new Item_func_minute($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | MOD_SYM '(' expr ',' expr ')' - { $$ = new Item_func_mod( $3, $5); } + { + $$= new Item_func_mod( $3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | MONTH_SYM '(' expr ')' - { $$= new Item_func_month($3); } + { + $$= new Item_func_month($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | NOW_SYM optional_braces - { $$= new Item_func_now_local(); Lex->safe_to_cache_query=0;} + { + $$= new Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | NOW_SYM '(' expr ')' - { $$= new Item_func_now_local($3); Lex->safe_to_cache_query=0;} + { + $$= new Item_func_now_local($3); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | PASSWORD '(' expr ')' { $$= YYTHD->variables.old_passwords ? (Item *) new Item_func_old_password($3) : (Item *) new Item_func_password($3); + if ($$ == NULL) + MYSQL_YYABORT; } | OLD_PASSWORD '(' expr ')' - { $$= new Item_func_old_password($3); } + { + $$= new Item_func_old_password($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | POSITION_SYM '(' bit_expr IN_SYM expr ')' - { $$ = new Item_func_locate($5,$3); } + { + $$= new Item_func_locate($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | QUARTER_SYM '(' expr ')' - { $$ = new Item_func_quarter($3); } + { + $$= new Item_func_quarter($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | RAND '(' expr ')' - { $$= new Item_func_rand($3); Lex->uncacheable(UNCACHEABLE_RAND);} + { + $$= new Item_func_rand($3); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->uncacheable(UNCACHEABLE_RAND); + } | RAND '(' ')' - { $$= new Item_func_rand(); Lex->uncacheable(UNCACHEABLE_RAND);} + { + $$= new Item_func_rand(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->uncacheable(UNCACHEABLE_RAND); + } | REPLACE '(' expr ',' expr ',' expr ')' - { $$= new Item_func_replace($3,$5,$7); } + { + $$= new Item_func_replace($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | RIGHT '(' expr ',' expr ')' - { $$= new Item_func_right($3,$5); } + { + $$= new Item_func_right($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | ROUND '(' expr ')' - { $$= new Item_func_round($3, new Item_int((char*)"0",0,1),0); } - | ROUND '(' expr ',' expr ')' { $$= new Item_func_round($3,$5,0); } + { + Item *item= new Item_int((char*)"0",0,1); + if (item == NULL) + MYSQL_YYABORT; + $$= new Item_func_round($3, item, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ROUND '(' expr ',' expr ')' + { + $$= new Item_func_round($3,$5,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | ROW_COUNT_SYM '(' ')' { $$= new Item_func_row_count(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query= 0; } | SUBDATE_SYM '(' expr ',' expr ')' - { $$= new Item_date_add_interval($3, $5, INTERVAL_DAY, 1);} + { + $$= new Item_date_add_interval($3, $5, INTERVAL_DAY, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' - { $$= new Item_date_add_interval($3, $6, $7, 1); } + { + $$= new Item_date_add_interval($3, $6, $7, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | SECOND_SYM '(' expr ')' - { $$= new Item_func_second($3); } + { + $$= new Item_func_second($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr ',' expr ',' expr ')' - { $$= new Item_func_substr($3,$5,$7); } + { + $$= new Item_func_substr($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr ',' expr ')' - { $$= new Item_func_substr($3,$5); } + { + $$= new Item_func_substr($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr FROM expr FOR_SYM expr ')' - { $$= new Item_func_substr($3,$5,$7); } + { + $$= new Item_func_substr($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr FROM expr ')' - { $$= new Item_func_substr($3,$5); } + { + $$= new Item_func_substr($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING_INDEX '(' expr ',' expr ',' expr ')' - { $$= new Item_func_substr_index($3,$5,$7); } + { + $$= new Item_func_substr_index($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | SYSDATE optional_braces { if (global_system_variables.sysdate_is_now == 0) $$= new Item_func_sysdate_local(); else $$= new Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | SYSDATE '(' expr ')' @@ -5113,36 +5730,94 @@ simple_expr: if (global_system_variables.sysdate_is_now == 0) $$= new Item_func_sysdate_local($3); else $$= new Item_func_now_local($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | TIME_SYM '(' expr ')' - { $$= new Item_time_typecast($3); } + { + $$= new Item_time_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP '(' expr ')' - { $$= new Item_datetime_typecast($3); } + { + $$= new Item_datetime_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP '(' expr ',' expr ')' - { $$= new Item_func_add_time($3, $5, 1, 0); } + { + $$= new Item_func_add_time($3, $5, 1, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' - { $$= new Item_date_add_interval($7,$5,$3,0); } + { + $$= new Item_date_add_interval($7,$5,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' - { $$= new Item_func_timestamp_diff($5,$7,$3); } + { + $$= new Item_func_timestamp_diff($5,$7,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' expr ')' - { $$= new Item_func_trim($3); } + { + $$= new Item_func_trim($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' LEADING expr FROM expr ')' - { $$= new Item_func_ltrim($6,$4); } + { + $$= new Item_func_ltrim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' TRAILING expr FROM expr ')' - { $$= new Item_func_rtrim($6,$4); } + { + $$= new Item_func_rtrim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' BOTH expr FROM expr ')' - { $$= new Item_func_trim($6,$4); } + { + $$= new Item_func_trim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' LEADING FROM expr ')' - { $$= new Item_func_ltrim($5); } + { + $$= new Item_func_ltrim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' TRAILING FROM expr ')' - { $$= new Item_func_rtrim($5); } + { + $$= new Item_func_rtrim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' BOTH FROM expr ')' - { $$= new Item_func_trim($5); } + { + $$= new Item_func_trim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' expr FROM expr ')' - { $$= new Item_func_trim($5,$3); } + { + $$= new Item_func_trim($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRUNCATE_SYM '(' expr ',' expr ')' - { $$= new Item_func_round($3,$5,1); } + { + $$= new Item_func_round($3,$5,1); + if ($$ == NULL) + MYSQL_YYABORT; + } | ident '.' ident '(' opt_expr_list ')' { LEX *lex= Lex; @@ -5155,6 +5830,8 @@ simple_expr: $$= new Item_func_sp(Lex->current_context(), name, *$5); else $$= new Item_func_sp(Lex->current_context(), name); + if ($$ == NULL) + MYSQL_YYABORT; lex->safe_to_cache_query=0; } | IDENT_sys '(' @@ -5295,47 +5972,110 @@ simple_expr: else $$= new Item_func_sp(Lex->current_context(), name); } - lex->safe_to_cache_query=0; + lex->safe_to_cache_query=0; + + if ($$ == NULL) + MYSQL_YYABORT; } | UNIQUE_USERS '(' text_literal ',' NUM ',' NUM ',' expr_list ')' { $$= new Item_func_unique_users($3,atoi($5.str),atoi($7.str), * $9); + if ($$ == NULL) + MYSQL_YYABORT; } | UNIX_TIMESTAMP '(' ')' { $$= new Item_func_unix_timestamp(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | UNIX_TIMESTAMP '(' expr ')' - { $$= new Item_func_unix_timestamp($3); } + { + $$= new Item_func_unix_timestamp($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | USER '(' ')' - { $$= new Item_func_user(); Lex->safe_to_cache_query=0; } + { + $$= new Item_func_user(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | UTC_DATE_SYM optional_braces - { $$= new Item_func_curdate_utc(); Lex->safe_to_cache_query=0;} + { + $$= new Item_func_curdate_utc(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | UTC_TIME_SYM optional_braces - { $$= new Item_func_curtime_utc(); Lex->safe_to_cache_query=0;} + { + $$= new Item_func_curtime_utc(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | UTC_TIMESTAMP_SYM optional_braces - { $$= new Item_func_now_utc(); Lex->safe_to_cache_query=0;} + { + $$= new Item_func_now_utc(); + if ($$ == NULL) + MYSQL_YYABORT; + Lex->safe_to_cache_query=0; + } | WEEK_SYM '(' expr ')' { - $$= new Item_func_week($3,new Item_int((char*) "0", - YYTHD->variables.default_week_format,1)); + Item *item= new Item_int((char*) "0", + YYTHD->variables.default_week_format, + 1); + if (item == NULL) + MYSQL_YYABORT; + $$= new Item_func_week($3, item); + if ($$ == NULL) + MYSQL_YYABORT; } | WEEK_SYM '(' expr ',' expr ')' - { $$= new Item_func_week($3,$5); } + { + $$= new Item_func_week($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | YEAR_SYM '(' expr ')' - { $$= new Item_func_year($3); } + { + $$= new Item_func_year($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | YEARWEEK '(' expr ')' - { $$= new Item_func_yearweek($3,new Item_int((char*) "0",0,1)); } + { + Item *item= new Item_int((char*) "0",0,1); + if (item == NULL) + MYSQL_YYABORT; + $$= new Item_func_yearweek($3, item); + if ($$ == NULL) + MYSQL_YYABORT; + } | YEARWEEK '(' expr ',' expr ')' - { $$= new Item_func_yearweek($3, $5); } + { + $$= new Item_func_yearweek($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | BENCHMARK_SYM '(' ulong_num ',' expr ')' { $$=new Item_func_benchmark($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; Lex->uncacheable(UNCACHEABLE_SIDEEFFECT); } | EXTRACT_SYM '(' interval FROM expr ')' - { $$=new Item_extract( $3, $5); }; + { + $$=new Item_extract( $3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } + ; geometry_function: CONTAINS_SYM '(' expr ',' expr ')' @@ -5411,7 +6151,12 @@ udf_expr_list: ; udf_expr_list2: - { Select->expr_list.push_front(new List); } + { + List *list= new List; + if (list == NULL) + MYSQL_YYABORT; + Select->expr_list.push_front(list); + } udf_expr_list3 { $$= Select->expr_list.pop(); } ; @@ -5459,53 +6204,132 @@ udf_expr: ; sum_expr: - AVG_SYM '(' in_sum_expr ')' - { $$=new Item_sum_avg($3); } + AVG_SYM '(' in_sum_expr ')' + { + $$=new Item_sum_avg($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | AVG_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_avg_distinct($4); } + { + $$=new Item_sum_avg_distinct($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | BIT_AND '(' in_sum_expr ')' - { $$=new Item_sum_and($3); } + { + $$=new Item_sum_and($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | BIT_OR '(' in_sum_expr ')' - { $$=new Item_sum_or($3); } + { + $$=new Item_sum_or($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | BIT_XOR '(' in_sum_expr ')' - { $$=new Item_sum_xor($3); } + { + $$=new Item_sum_xor($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COUNT_SYM '(' opt_all '*' ')' - { $$=new Item_sum_count(new Item_int((int32) 0L,1)); } + { + Item *item= new Item_int((int32) 0L,1); + if (item == NULL) + MYSQL_YYABORT; + $$=new Item_sum_count(new Item_int((int32) 0L,1)); + if ($$ == NULL) + MYSQL_YYABORT; + } | COUNT_SYM '(' in_sum_expr ')' - { $$=new Item_sum_count($3); } + { + $$=new Item_sum_count($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COUNT_SYM '(' DISTINCT { Select->in_sum_expr++; } expr_list { Select->in_sum_expr--; } ')' - { $$=new Item_sum_count_distinct(* $5); } + { + $$=new Item_sum_count_distinct(* $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | GROUP_UNIQUE_USERS '(' text_literal ',' NUM ',' NUM ',' in_sum_expr ')' - { $$= new Item_sum_unique_users($3,atoi($5.str),atoi($7.str),$9); } + { + $$= new Item_sum_unique_users($3,atoi($5.str),atoi($7.str),$9); + if ($$ == NULL) + MYSQL_YYABORT; + } | MIN_SYM '(' in_sum_expr ')' - { $$=new Item_sum_min($3); } + { + $$=new Item_sum_min($3); + if ($$ == NULL) + MYSQL_YYABORT; + } /* According to ANSI SQL, DISTINCT is allowed and has no sence inside MIN and MAX grouping functions; so MIN|MAX(DISTINCT ...) is processed like an ordinary MIN | MAX() */ | MIN_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_min($4); } + { + $$=new Item_sum_min($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | MAX_SYM '(' in_sum_expr ')' - { $$=new Item_sum_max($3); } + { + $$=new Item_sum_max($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | MAX_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_max($4); } + { + $$=new Item_sum_max($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | STD_SYM '(' in_sum_expr ')' - { $$=new Item_sum_std($3, 0); } + { + $$=new Item_sum_std($3, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | VARIANCE_SYM '(' in_sum_expr ')' - { $$=new Item_sum_variance($3, 0); } + { + $$=new Item_sum_variance($3, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | STDDEV_SAMP_SYM '(' in_sum_expr ')' - { $$=new Item_sum_std($3, 1); } + { + $$=new Item_sum_std($3, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | VAR_SAMP_SYM '(' in_sum_expr ')' - { $$=new Item_sum_variance($3, 1); } + { + $$=new Item_sum_variance($3, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUM_SYM '(' in_sum_expr ')' - { $$=new Item_sum_sum($3); } + { + $$=new Item_sum_sum($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUM_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_sum_distinct($4); } + { + $$=new Item_sum_sum_distinct($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | GROUP_CONCAT_SYM '(' opt_distinct { Select->in_sum_expr++; } expr_list opt_gorder_clause @@ -5516,6 +6340,8 @@ sum_expr: sel->in_sum_expr--; $$=new Item_func_group_concat(Lex->current_context(), $3, $5, sel->gorder_list, $7); + if ($$ == NULL) + MYSQL_YYABORT; $5->empty(); }; @@ -5538,12 +6364,16 @@ variable_aux: ident_or_text SET_VAR expr { $$= new Item_func_set_user_var($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; LEX *lex= Lex; lex->uncacheable(UNCACHEABLE_RAND); } | ident_or_text { $$= new Item_func_get_user_var($1); + if ($$ == NULL) + MYSQL_YYABORT; LEX *lex= Lex; lex->uncacheable(UNCACHEABLE_RAND); } @@ -5564,11 +6394,14 @@ opt_distinct: |DISTINCT { $$ = 1; }; opt_gconcat_separator: - /* empty */ - { - $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1); - } - | SEPARATOR_SYM text_string { $$ = $2; }; + /* empty */ + { + $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | SEPARATOR_SYM text_string { $$ = $2; } + ; opt_gorder_clause: @@ -5582,6 +6415,8 @@ opt_gorder_clause: select->gorder_list= (SQL_LIST*) sql_memdup((char*) &select->order_list, sizeof(st_sql_list)); + if (select->gorder_list == NULL) + MYSQL_YYABORT; select->order_list.empty(); }; @@ -5622,7 +6457,12 @@ opt_expr_list: ; expr_list: - { Select->expr_list.push_front(new List); } + { + List *list= new List; + if (list == NULL) + MYSQL_YYABORT; + Select->expr_list.push_front(list); + } expr_list2 { $$= Select->expr_list.pop(); }; @@ -5635,7 +6475,12 @@ ident_list_arg: | '(' ident_list ')' { $$= $2; }; ident_list: - { Select->expr_list.push_front(new List); } + { + List *list= new List; + if (list == NULL) + MYSQL_YYABORT; + Select->expr_list.push_front(new List); + } ident_list2 { $$= Select->expr_list.pop(); }; @@ -5655,6 +6500,8 @@ when_list: WHEN_SYM expr THEN_SYM expr { $$= new List; + if ($$ == NULL) + MYSQL_YYABORT; $$->push_back($2); $$->push_back($4); } @@ -6061,32 +6908,53 @@ key_list_or_empty: key_usage_list2: key_usage_list2 ',' ident - { Select-> - interval_list.push_back(new (YYTHD->mem_root) String((const char*) $3.str, $3.length, - system_charset_info)); } + { + String *s= new (YYTHD->mem_root) String((const char*) $3.str, + $3.length, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + Select->interval_list.push_back(s); + } | ident - { Select-> - interval_list.push_back(new (YYTHD->mem_root) String((const char*) $1.str, $1.length, - system_charset_info)); } + { + String *s= new (YYTHD->mem_root) String((const char*) $1.str, + $1.length, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + Select->interval_list.push_back(s); + } | PRIMARY_SYM - { Select-> - interval_list.push_back(new (YYTHD->mem_root) String("PRIMARY", 7, - system_charset_info)); }; + { + String *s= new (YYTHD->mem_root) String("PRIMARY", 7, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + Select->interval_list.push_back(s); + } + ; using_list: ident { if (!($$= new List)) MYSQL_YYABORT; - $$->push_back(new (YYTHD->mem_root) - String((const char *) $1.str, $1.length, - system_charset_info)); + String *s= new (YYTHD->mem_root) String((const char *) $1.str, + $1.length, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + $$->push_back(s); } | using_list ',' ident { - $1->push_back(new (YYTHD->mem_root) - String((const char *) $3.str, $3.length, - system_charset_info)); + String *s= new (YYTHD->mem_root) String((const char *) $3.str, + $3.length, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + $1->push_back(s); $$= $1; }; @@ -6151,7 +7019,12 @@ table_alias: opt_table_alias: /* empty */ { $$=0; } | table_alias ident - { $$= (LEX_STRING*) sql_memdup(&$2,sizeof(LEX_STRING)); }; + { + $$= (LEX_STRING*) sql_memdup(&$2,sizeof(LEX_STRING)); + if ($$ == NULL) + MYSQL_YYABORT; + } + ; opt_all: /* empty */ @@ -6202,6 +7075,8 @@ opt_escape: $$= ((YYTHD->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? new Item_string("", 0, &my_charset_latin1) : new Item_string("\\", 1, &my_charset_latin1)); + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -6372,9 +7247,24 @@ limit_option: { ((Item_param *) $1)->limit_clause_param= TRUE; } - | ULONGLONG_NUM { $$= new Item_uint($1.str, $1.length); } - | LONG_NUM { $$= new Item_uint($1.str, $1.length); } - | NUM { $$= new Item_uint($1.str, $1.length); } + | ULONGLONG_NUM + { + $$= new Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | LONG_NUM + { + $$= new Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | NUM + { + $$= new Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } ; delete_limit_clause: @@ -6427,10 +7317,11 @@ procedure_clause: lex->proc_list.elements=0; lex->proc_list.first=0; lex->proc_list.next= (byte**) &lex->proc_list.first; - if (add_proc_to_list(lex->thd, new Item_field(&lex-> - current_select-> - context, - NULL,NULL,$2.str))) + Item_field *item= new Item_field(&lex->current_select->context, + NULL,NULL,$2.str); + if (item == NULL) + MYSQL_YYABORT; + if (add_proc_to_list(lex->thd, item)) MYSQL_YYABORT; Lex->uncacheable(UNCACHEABLE_SIDEEFFECT); } @@ -6481,13 +7372,20 @@ select_var_ident: { LEX *lex=Lex; if (lex->result) - ((select_dumpvar *)lex->result)->var_list.push_back( new my_var($2,0,0,(enum_field_types)0)); + { + my_var *var= new my_var($2,0,0,(enum_field_types)0); + if (var == NULL) + MYSQL_YYABORT; + ((select_dumpvar *)lex->result)->var_list.push_back(var); + } else + { /* The parser won't create select_result instance only if it's an EXPLAIN. */ DBUG_ASSERT(lex->describe); + } } | ident_or_text { @@ -6501,12 +7399,12 @@ select_var_ident: } if (lex->result) { - my_var *var; - ((select_dumpvar *)lex->result)-> - var_list.push_back(var= new my_var($1,1,t->offset,t->type)); + my_var *var= new my_var($1,1,t->offset,t->type); + if (var == NULL) + MYSQL_YYABORT; + ((select_dumpvar *)lex->result)->var_list.push_back(var); #ifndef DBUG_OFF - if (var) - var->sp= lex->sphead; + var->sp= lex->sphead; #endif } else @@ -6591,11 +7489,13 @@ drop: | DROP INDEX_SYM ident ON table_ident {} { LEX *lex=Lex; + Alter_drop *ad= new Alter_drop(Alter_drop::KEY, $3.str); + if (ad == NULL) + MYSQL_YYABORT; lex->sql_command= SQLCOM_DROP_INDEX; lex->alter_info.reset(); lex->alter_info.flags= ALTER_DROP_INDEX; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY, - $3.str)); + lex->alter_info.drop_list.push_back(ad); if (!lex->current_select->add_table_to_list(lex->thd, $5, NULL, TL_OPTION_UPDATING)) MYSQL_YYABORT; @@ -6620,6 +7520,8 @@ drop: lex->sql_command = SQLCOM_DROP_FUNCTION; lex->drop_if_exists= $3; spname= new sp_name($4, $6, true); + if (spname == NULL) + MYSQL_YYABORT; spname->init_qname(thd); lex->spname= spname; } @@ -6639,6 +7541,8 @@ drop: lex->sql_command = SQLCOM_DROP_FUNCTION; lex->drop_if_exists= $3; spname= new sp_name(db, $4, false); + if (spname == NULL) + MYSQL_YYABORT; spname->init_qname(thd); lex->spname= spname; } @@ -6853,7 +7757,12 @@ values: expr_or_default: expr { $$= $1;} - | DEFAULT {$$= new Item_default_value(Lex->current_context()); } + | DEFAULT + { + $$= new Item_default_value(Lex->current_context()); + if ($$ == NULL) + MYSQL_YYABORT; + } ; opt_insert_update: @@ -6971,15 +7880,21 @@ table_wild_list: table_wild_one: ident opt_wild opt_table_alias { - if (!Select->add_table_to_list(YYTHD, new Table_ident($1), $3, + Table_ident *ti= new Table_ident($1); + if (ti == NULL) + MYSQL_YYABORT; + if (!Select->add_table_to_list(YYTHD, ti, $3, TL_OPTION_UPDATING | TL_OPTION_ALIAS, Lex->lock_option)) MYSQL_YYABORT; } | ident '.' ident opt_wild opt_table_alias { + Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0); + if (ti == NULL) + MYSQL_YYABORT; if (!Select->add_table_to_list(YYTHD, - new Table_ident(YYTHD, $1, $3, 0), + ti, $5, TL_OPTION_UPDATING | TL_OPTION_ALIAS, @@ -7357,8 +8272,12 @@ binlog_from: wild_and_where: /* empty */ | LIKE TEXT_STRING_sys - { Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length, - system_charset_info); } + { + Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length, + system_charset_info); + if (Lex->wild == NULL) + MYSQL_YYABORT; + } | WHERE expr { Select->where= $2; @@ -7406,7 +8325,14 @@ opt_describe_column: /* empty */ {} | text_string { Lex->wild= $1; } | ident - { Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info); }; + { + Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str, + $1.length, + system_charset_info); + if (Lex->wild == NULL) + MYSQL_YYABORT; + } + ; /* flush things */ @@ -7690,7 +8616,11 @@ fields_or_vars: field_or_var: simple_ident_nospvar {$$= $1;} | '@' ident_or_text - { $$= new Item_user_var_as_out_param($2); } + { + $$= new Item_user_var_as_out_param($2); + if ($$ == NULL) + MYSQL_YYABORT; + } ; opt_load_data_set_spec: @@ -7715,9 +8645,14 @@ text_literal: my_charset_is_ascii_based(cs_con))) tmp= $1; else - thd->convert_string(&tmp, cs_con, $1.str, $1.length, cs_cli); + { + if (thd->convert_string(&tmp, cs_con, $1.str, $1.length, cs_cli)) + MYSQL_YYABORT; + } $$= new Item_string(tmp.str, tmp.length, cs_con, DERIVATION_COERCIBLE, repertoire); + if ($$ == NULL) + MYSQL_YYABORT; } | NCHAR_STRING { @@ -7726,10 +8661,14 @@ text_literal: DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); $$= new Item_string($1.str, $1.length, national_charset_info, DERIVATION_COERCIBLE, repertoire); + if ($$ == NULL) + MYSQL_YYABORT; } | UNDERSCORE_CHARSET TEXT_STRING { $$= new Item_string($2.str, $2.length, Lex->underscore_charset); + if ($$ == NULL) + MYSQL_YYABORT; ((Item_string*) $$)->set_repertoire_from_value(); } | text_literal TEXT_STRING_literal @@ -7751,28 +8690,37 @@ text_literal: ; text_string: - TEXT_STRING_literal - { $$= new (YYTHD->mem_root) String($1.str,$1.length,YYTHD->variables.collation_connection); } + TEXT_STRING_literal + { + $$= new (YYTHD->mem_root) String($1.str, + $1.length, + YYTHD->variables.collation_connection); + if ($$ == NULL) + MYSQL_YYABORT; + } | HEX_NUM { Item *tmp= new Item_hex_string($1.str, $1.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fields, because we need only value of constant */ - $$= tmp ? - tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; + tmp->quick_fix_field(); + $$= tmp->val_str((String*) 0); } | BIN_NUM { Item *tmp= new Item_bin_string($1.str, $1.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fields, because we need only value of constant */ - $$= tmp ? tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; + tmp->quick_fix_field(); + $$= tmp->val_str((String*) 0); } ; @@ -7814,76 +8762,121 @@ literal: | NULL_SYM { $$ = new Item_null(); + if ($$ == NULL) + MYSQL_YYABORT; YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT; } - | FALSE_SYM { $$= new Item_int((char*) "FALSE",0,1); } - | TRUE_SYM { $$= new Item_int((char*) "TRUE",1,1); } - | HEX_NUM { $$ = new Item_hex_string($1.str, $1.length);} - | BIN_NUM { $$= new Item_bin_string($1.str, $1.length); } + | FALSE_SYM + { + $$= new Item_int((char*) "FALSE",0,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRUE_SYM + { + $$= new Item_int((char*) "TRUE",1,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | HEX_NUM + { + $$= new Item_hex_string($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BIN_NUM + { + $$= new Item_bin_string($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } | UNDERSCORE_CHARSET HEX_NUM { Item *tmp= new Item_hex_string($2.str, $2.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fieds, because we need only value of constant */ - String *str= tmp ? - tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; - $$= new Item_string(NULL, /* name will be set in select_item */ - str ? str->ptr() : "", - str ? str->length() : 0, - Lex->underscore_charset); - if (!$$ || !$$->check_well_formed_result(&$$->str_value, TRUE)) + tmp->quick_fix_field(); + String *str= tmp->val_str((String*) 0); + Item_string *item_str; + item_str= new Item_string(NULL, /* name will be set in select_item */ + str ? str->ptr() : "", + str ? str->length() : 0, + Lex->underscore_charset); + if (!item_str || + !item_str->check_well_formed_result(&item_str->str_value, TRUE)) { MYSQL_YYABORT; } - ((Item_string *) $$)->set_repertoire_from_value(); + item_str->set_repertoire_from_value(); + $$= item_str; } | UNDERSCORE_CHARSET BIN_NUM { Item *tmp= new Item_bin_string($2.str, $2.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fieds, because we need only value of constant */ - String *str= tmp ? - tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; - $$= new Item_string(NULL, /* name will be set in select_item */ - str ? str->ptr() : "", - str ? str->length() : 0, - Lex->underscore_charset); - if (!$$ || !$$->check_well_formed_result(&$$->str_value, TRUE)) + tmp->quick_fix_field(); + String *str= tmp->val_str((String*) 0); + Item_string *item_str; + item_str= new Item_string(NULL, /* name will be set in select_item */ + str ? str->ptr() : "", + str ? str->length() : 0, + Lex->underscore_charset); + if (!item_str || + !item_str->check_well_formed_result(&item_str->str_value, TRUE)) { MYSQL_YYABORT; } + $$= item_str; } | DATE_SYM text_literal { $$ = $2; } | TIME_SYM text_literal { $$ = $2; } | TIMESTAMP text_literal { $$ = $2; }; NUM_literal: - NUM { int error; $$ = new Item_int($1.str, (longlong) my_strtoll10($1.str, NULL, &error), $1.length); } - | LONG_NUM { int error; $$ = new Item_int($1.str, (longlong) my_strtoll10($1.str, NULL, &error), $1.length); } - | ULONGLONG_NUM { $$ = new Item_uint($1.str, $1.length); } + NUM + { + int error; + $$ = new Item_int($1.str, + (longlong) my_strtoll10($1.str, NULL, &error), + $1.length); + } + | LONG_NUM + { + int error; + $$ = new Item_int($1.str, + (longlong) my_strtoll10($1.str, NULL, &error), + $1.length); + } + | ULONGLONG_NUM + { + $$= new Item_uint($1.str, $1.length); + } | DECIMAL_NUM - { - $$= new Item_decimal($1.str, $1.length, YYTHD->charset()); - if (YYTHD->net.report_error) - { - MYSQL_YYABORT; - } - } + { + $$= new Item_decimal($1.str, $1.length, YYTHD->charset()); + if (($$ == NULL) || (YYTHD->net.report_error)) + { + MYSQL_YYABORT; + } + } | FLOAT_NUM - { - $$ = new Item_float($1.str, $1.length); - if (YYTHD->net.report_error) - { - MYSQL_YYABORT; - } - } - ; + { + $$= new Item_float($1.str, $1.length); + if (($$ == NULL) || (YYTHD->net.report_error)) + { + MYSQL_YYABORT; + } + } + ; /********************************************************************** ** Creating different items. @@ -7898,6 +8891,8 @@ table_wild: { SELECT_LEX *sel= Select; $$ = new Item_field(Lex->current_context(), NullS, $1.str, "*"); + if ($$ == NULL) + MYSQL_YYABORT; sel->with_wild++; } | ident '.' ident '.' '*' @@ -7906,6 +8901,8 @@ table_wild: $$ = new Item_field(Lex->current_context(), (YYTHD->client_capabilities & CLIENT_NO_SCHEMA ? NullS : $1.str), $3.str,"*"); + if ($$ == NULL) + MYSQL_YYABORT; sel->with_wild++; } ; @@ -7935,11 +8932,12 @@ simple_ident: lip->tok_start_prev - lex->sphead->m_tmp_query, lip->tok_end - lip->tok_start_prev); + if (splocal == NULL) + MYSQL_YYABORT; #ifndef DBUG_OFF - if (splocal) - splocal->m_sp= lex->sphead; + splocal->m_sp= lex->sphead; #endif - $$ = (Item*) splocal; + $$= splocal; lex->safe_to_cache_query=0; } else @@ -7949,6 +8947,8 @@ simple_ident: sel->get_in_sum_expr() > 0) ? (Item*) new Item_field(Lex->current_context(), NullS, NullS, $1.str) : (Item*) new Item_ref(Lex->current_context(), NullS, NullS, $1.str); + if ($$ == NULL) + MYSQL_YYABORT; } } | simple_ident_q { $$= $1; } @@ -7962,6 +8962,8 @@ simple_ident_nospvar: sel->get_in_sum_expr() > 0) ? (Item*) new Item_field(Lex->current_context(), NullS, NullS, $1.str) : (Item*) new Item_ref(Lex->current_context(), NullS, NullS, $1.str); + if ($$ == NULL) + MYSQL_YYABORT; } | simple_ident_q { $$= $1; } ; @@ -8033,6 +9035,8 @@ simple_ident_q: sel->get_in_sum_expr() > 0) ? (Item*) new Item_field(Lex->current_context(), NullS, $1.str, $3.str) : (Item*) new Item_ref(Lex->current_context(), NullS, $1.str, $3.str); + if ($$ == NULL) + MYSQL_YYABORT; } } | '.' ident '.' ident @@ -8049,6 +9053,8 @@ simple_ident_q: sel->get_in_sum_expr() > 0) ? (Item*) new Item_field(Lex->current_context(), NullS, $2.str, $4.str) : (Item*) new Item_ref(Lex->current_context(), NullS, $2.str, $4.str); + if ($$ == NULL) + MYSQL_YYABORT; } | ident '.' ident '.' ident { @@ -8070,6 +9076,8 @@ simple_ident_q: (YYTHD->client_capabilities & CLIENT_NO_SCHEMA ? NullS : $1.str), $3.str, $5.str); + if ($$ == NULL) + MYSQL_YYABORT; }; @@ -8104,13 +9112,34 @@ field_ident: | '.' ident { $$=$2;} /* For Delphi */; table_ident: - ident { $$=new Table_ident($1); } - | ident '.' ident { $$=new Table_ident(YYTHD, $1,$3,0);} - | '.' ident { $$=new Table_ident($2);} /* For Delphi */ + ident + { + $$=new Table_ident($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ident '.' ident + { + $$=new Table_ident(YYTHD, $1,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '.' ident + { + $$=new Table_ident($2); /* For Delphi */ + if ($$ == NULL) + MYSQL_YYABORT; + } ; table_ident_nodb: - ident { LEX_STRING db={(char*) any_db,3}; $$=new Table_ident(YYTHD, db,$1,0); } + ident + { + LEX_STRING db={(char*) any_db,3}; + $$=new Table_ident(YYTHD, db,$1,0); + if ($$ == NULL) + MYSQL_YYABORT; + } ; IDENT_sys: @@ -8134,8 +9163,11 @@ IDENT_sys: $$= $1; } else - thd->convert_string(&$$, system_charset_info, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, system_charset_info, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -8146,8 +9178,11 @@ TEXT_STRING_sys: if (thd->charset_is_system_charset) $$= $1; else - thd->convert_string(&$$, system_charset_info, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, system_charset_info, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -8158,8 +9193,11 @@ TEXT_STRING_literal: if (thd->charset_is_collation_connection) $$= $1; else - thd->convert_string(&$$, thd->variables.collation_connection, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, thd->variables.collation_connection, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -8171,8 +9209,11 @@ TEXT_STRING_filesystem: if (thd->charset_is_character_set_filesystem) $$= $1; else - thd->convert_string(&$$, thd->variables.character_set_filesystem, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, thd->variables.character_set_filesystem, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -8182,6 +9223,8 @@ ident: { THD *thd= YYTHD; $$.str= thd->strmake($1.str, $1.length); + if ($$.str == NULL) + MYSQL_YYABORT; $$.length= $1.length; } ; @@ -8192,6 +9235,8 @@ label_ident: { THD *thd= YYTHD; $$.str= thd->strmake($1.str, $1.length); + if ($$.str == NULL) + MYSQL_YYABORT; $$.length= $1.length; } ; @@ -8723,29 +9768,50 @@ sys_option_value: LEX *lex=Lex; if ($1) lex->option_type= $1; - lex->var_list.push_back(new set_var(lex->option_type, - find_sys_var("tx_isolation"), - &null_lex_str, - new Item_int((int32) $5))); + Item *item= new Item_int((int32) $5); + if (item == NULL) + MYSQL_YYABORT; + set_var *var= new set_var(lex->option_type, + find_sys_var("tx_isolation"), + &null_lex_str, + item); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } ; option_value: '@' ident_or_text equal expr { - Lex->var_list.push_back(new set_var_user(new Item_func_set_user_var($2,$4))); + Item_func_set_user_var *item= new Item_func_set_user_var($2,$4); + if (item == NULL) + MYSQL_YYABORT; + set_var_user *var= new set_var_user(item); + if (var == NULL) + MYSQL_YYABORT; + Lex->var_list.push_back(var); } | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default { LEX *lex=Lex; - lex->var_list.push_back(new set_var($3, $4.var, &$4.base_name, $6)); + set_var *var= new set_var($3, $4.var, &$4.base_name, $6); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } | charset old_or_new_charset_name_or_default { THD *thd= YYTHD; LEX *lex= Lex; $2= $2 ? $2: global_system_variables.character_set_client; - lex->var_list.push_back(new set_var_collation_client($2,thd->variables.collation_database,$2)); + set_var_collation_client *var; + var= new set_var_collation_client($2, + thd->variables.collation_database, + $2); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } | NAMES_SYM equal expr { @@ -8773,7 +9839,11 @@ option_value: $3->name, $2->csname); MYSQL_YYABORT; } - lex->var_list.push_back(new set_var_collation_client($3,$3,$3)); + set_var_collation_client *var; + var= new set_var_collation_client($3,$3,$3); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } | PASSWORD equal text_or_password { @@ -8794,11 +9864,17 @@ option_value: MYSQL_YYABORT; user->host=null_lex_str; user->user.str=thd->security_ctx->priv_user; - thd->lex->var_list.push_back(new set_var_password(user, $3)); + set_var_password *var= new set_var_password(user, $3); + if (var == NULL) + MYSQL_YYABORT; + thd->lex->var_list.push_back(var); } | PASSWORD FOR_SYM user equal text_or_password { - Lex->var_list.push_back(new set_var_password($3,$5)); + set_var_password *var= new set_var_password($3,$5); + if (var == NULL) + MYSQL_YYABORT; + Lex->var_list.push_back(var); } ; @@ -8912,11 +9988,15 @@ text_or_password: Item_func_old_password::alloc(YYTHD, $3.str) : Item_func_password::alloc(YYTHD, $3.str) : $3.str; + if ($$ == NULL) + MYSQL_YYABORT; } | OLD_PASSWORD '(' TEXT_STRING ')' { $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str) : $3.str; + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -8924,9 +10004,24 @@ text_or_password: set_expr_or_default: expr { $$=$1; } | DEFAULT { $$=0; } - | ON { $$=new Item_string("ON", 2, system_charset_info); } - | ALL { $$=new Item_string("ALL", 3, system_charset_info); } - | BINARY { $$=new Item_string("binary", 6, system_charset_info); } + | ON + { + $$=new Item_string("ON", 2, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ALL + { + $$=new Item_string("ALL", 3, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BINARY + { + $$=new Item_string("binary", 6, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } ; @@ -9027,7 +10122,10 @@ handler: } lex->sql_command = SQLCOM_HA_READ; lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */ - lex->current_select->select_limit= new Item_int((int32) 1); + Item *one= new Item_int((int32) 1); + if (one == NULL) + MYSQL_YYABORT; + lex->current_select->select_limit= one; lex->current_select->offset_limit= 0; if (!lex->current_select->add_table_to_list(lex->thd, $2, 0, 0)) MYSQL_YYABORT; @@ -9334,8 +10432,9 @@ grant_user: { char *buff= (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1); - if (buff) - make_scrambled_password_323(buff, $4.str); + if (buff == NULL) + MYSQL_YYABORT; + make_scrambled_password_323(buff, $4.str); $1->password.str= buff; $1->password.length= SCRAMBLED_PASSWORD_CHAR_LENGTH_323; } @@ -9343,8 +10442,9 @@ grant_user: { char *buff= (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1); - if (buff) - make_scrambled_password(buff, $4.str); + if (buff == NULL) + MYSQL_YYABORT; + make_scrambled_password(buff, $4.str); $1->password.str= buff; $1->password.length= SCRAMBLED_PASSWORD_CHAR_LENGTH; } @@ -9373,6 +10473,8 @@ column_list_id: ident { String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info); + if (new_str == NULL) + MYSQL_YYABORT; List_iterator iter(Lex->columns); class LEX_COLUMN *point; LEX *lex=Lex; @@ -9386,7 +10488,12 @@ column_list_id: if (point) point->rights |= lex->which_columns; else - lex->columns.push_back(new LEX_COLUMN (*new_str,lex->which_columns)); + { + LEX_COLUMN *col= new LEX_COLUMN (*new_str,lex->which_columns); + if (col == NULL) + MYSQL_YYABORT; + lex->columns.push_back(col); + } } ; @@ -9800,13 +10907,17 @@ view_list_opt: view_list: ident { - Lex->view_list.push_back((LEX_STRING*) - sql_memdup(&$1, sizeof(LEX_STRING))); + LEX_STRING *ls= (LEX_STRING*) sql_memdup(&$1, sizeof(LEX_STRING)); + if (ls == NULL) + MYSQL_YYABORT; + Lex->view_list.push_back(ls); } | view_list ',' ident { - Lex->view_list.push_back((LEX_STRING*) - sql_memdup(&$3, sizeof(LEX_STRING))); + LEX_STRING *ls= (LEX_STRING*) sql_memdup(&$3, sizeof(LEX_STRING)); + if (ls == NULL) + MYSQL_YYABORT; + Lex->view_list.push_back(ls); } ; @@ -9979,6 +11090,8 @@ sf_tail: /* Order is important here: new - reset - init */ sp= new sp_head(); + if (sp == NULL) + MYSQL_YYABORT; sp->reset_thd_mem_root(thd); sp->init(lex); sp->init_sp_name(thd, lex->spname); diff --git a/sql/thr_malloc.cc b/sql/thr_malloc.cc index 392db9224c3..4ebcf1c50af 100644 --- a/sql/thr_malloc.cc +++ b/sql/thr_malloc.cc @@ -21,10 +21,35 @@ extern "C" { void sql_alloc_error_handler(void) { - THD *thd=current_thd; - if (thd) // QQ; To be removed - thd->fatal_error(); /* purecov: inspected */ sql_print_error(ER(ER_OUT_OF_RESOURCES)); + + THD *thd=current_thd; + if (thd) + { + /* + This thread is Out Of Memory. + An OOM condition is a fatal error. + It should not be caught by error handlers in stored procedures. + Also, recording that SQL condition in the condition area could + cause more memory allocations, which in turn could raise more + OOM conditions, causing recursion in the error handling code itself. + As a result, my_error() should not be invoked, and the + thread diagnostics area is set to an error status directly. + The visible result for a client application will be: + - a query fails with an ER_OUT_OF_RESOURCES error, + returned in the error packet. + - SHOW ERROR/SHOW WARNINGS may be empty. + */ + + NET *net= &thd->net; + thd->fatal_error(); + if (!net->last_error[0]) // Return only first message + { + strmake(net->last_error, ER(ER_OUT_OF_RESOURCES), + sizeof(net->last_error)-1); + net->last_errno= ER_OUT_OF_RESOURCES; + } + } } } From f50c4207f22e2c7483965ef83104839e9d7b4887 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Mon, 11 Aug 2008 20:02:03 +0200 Subject: [PATCH 335/435] Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION took another code path (over mysql_alter_table instead of mysql_admin_table) which differs in two ways: 1) alter table opens the tables in a different way than admin tables do resulting in returning with error before it tried the command 2) alter table does not start to send any diagnostic rows to the client which the lower admin functions continue to use -> resulting in assertion crash The fix: Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t. Adding check in mysql_admin_table to setup the partition list for which partitions that should be used. Partitioned tables will still not work with REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions to tables, REPAIR TABLE t USE_FRM, and check that the data still fulfills the partitioning function and then move the table back to being a partition. NOTE: I have removed the following functions from the handler interface: analyze_partitions, check_partitions, optimize_partitions, repair_partitions Since they are not longer needed. THIS ALTERS THE STORAGE ENGINE API mysql-test/r/handler_innodb.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a note result row. mysql-test/r/innodb.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a note result row. mysql-test/r/innodb_mysql.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a note result row. mysql-test/r/partition.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. mysql-test/r/trigger-trans.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a note result row. mysql-test/suite/ndb/r/ndb_partition_key.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. mysql-test/suite/ndb/t/ndb_partition_key.test: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. mysql-test/suite/parts/inc/partition_alter4.inc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. mysql-test/suite/parts/r/partition_alter4_innodb.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. mysql-test/suite/parts/r/partition_alter4_myisam.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. mysql-test/suite/rpl/r/rpl_failed_optimize.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a note result row. mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a note result row. mysql-test/t/partition.test: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned tables. sql/ha_partition.cc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added a function for returning admin commands result rows Updated handle_opt_partitions to handle admin commands result rows, and some error filtering (as mysql_admin_table do). Removed the functions analyze/check/optimize/repair_partitions since they have no longer any use. sql/ha_partition.h: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Removed analyze/check/optimize/repair_partitions since they are no longer are needed. sql/handler.cc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Removed analyze/check/optimize/repair_partitions since they are no longer are needed. sql/handler.h: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Removed analyze/check/optimize/repair_partitions since they are no longer are needed. sql/mysql_priv.h: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added set_part_state for reuse of code in mysql_admin_table. (Originally fond in sql/sql_partition.cc:prep_alter_part_table) sql/protocol.cc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added one assert and a debug print. sql/sql_partition.cc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Refactored code for setting up partition state, set_part_state, now used in both prep_alter_part_table and sql_table.cc:mysql_admin_table. Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions, since it is now handled by mysql_admin_table. sql/sql_table.cc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Added functionality in mysql_admin_table to work with partitioned tables. Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER (If analyze would output a row, it fails since the row was already started). sql/sql_yacc.yy: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE instead of taking the ALTER TABLE path. Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE since it is now used by partitioned tables. storage/myisam/mi_check.c: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Changed warning message from "Found X parts Should be: Y parts" to "Found X key parts. Should be Y", since it could be confusing with partitioned tables. --- mysql-test/r/handler_innodb.result | 2 + mysql-test/r/innodb.result | 4 + mysql-test/r/innodb_mysql.result | 1 + mysql-test/r/partition.result | 20 +- mysql-test/r/trigger-trans.result | 1 + .../suite/ndb/r/ndb_partition_key.result | 24 +- mysql-test/suite/ndb/t/ndb_partition_key.test | 10 +- .../suite/parts/inc/partition_alter4.inc | 15 + .../parts/r/partition_alter4_innodb.result | 54696 +++++++++++++++- .../parts/r/partition_alter4_myisam.result | 48848 +++++++++++++- .../suite/rpl/r/rpl_failed_optimize.result | 1 + .../suite/rpl/r/rpl_innodb_mixed_dml.result | 1 + mysql-test/t/partition.test | 10 +- sql/ha_partition.cc | 233 +- sql/ha_partition.h | 4 - sql/handler.cc | 60 - sql/handler.h | 12 - sql/mysql_priv.h | 2 + sql/protocol.cc | 3 + sql/sql_partition.cc | 96 +- sql/sql_table.cc | 55 +- sql/sql_yacc.yy | 8 + storage/myisam/mi_check.c | 2 +- 23 files changed, 103302 insertions(+), 806 deletions(-) diff --git a/mysql-test/r/handler_innodb.result b/mysql-test/r/handler_innodb.result index 9d269f78d10..3e4cef99480 100644 --- a/mysql-test/r/handler_innodb.result +++ b/mysql-test/r/handler_innodb.result @@ -484,6 +484,7 @@ c1 handler t1 close; read the result from the other connection Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK proceed with the normal connection drop table t1; @@ -698,6 +699,7 @@ handler a2 read a first; a optimize table t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK handler a1 close; ERROR 42S02: Unknown table 'a1' in HANDLER diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result index 03d3e019e99..5249781303a 100644 --- a/mysql-test/r/innodb.result +++ b/mysql-test/r/innodb.result @@ -166,6 +166,7 @@ level id parent_id 1 1007 101 optimize table t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK show keys from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment @@ -190,6 +191,7 @@ create table t1 (a int) engine=innodb; insert into t1 values (1), (2); optimize table t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK delete from t1 where a = 1; select * from t1; @@ -738,6 +740,7 @@ world 2 hello 1 optimize table t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK show keys from t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment @@ -3109,6 +3112,7 @@ BEGIN; INSERT INTO t1 VALUES (1); OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK DROP TABLE t1; CREATE TABLE t1 (id int PRIMARY KEY, f int NOT NULL, INDEX(f)) ENGINE=InnoDB; diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 61302be7e23..0b33e51ea35 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -577,6 +577,7 @@ id select_type table type possible_keys key key_len ref rows Extra INSERT INTO t2 SELECT * FROM t1; OPTIMIZE TABLE t2; Table Op Msg_type Msg_text +test.t2 optimize note Table does not support optimize, doing recreate + analyze instead test.t2 optimize status OK EXPLAIN SELECT COUNT(*) FROM t2 WHERE stat_id IN (1,3) AND acct_id=785; id select_type table type possible_keys key key_len ref rows Extra diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 51e851125e9..fac4735b337 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -538,7 +538,7 @@ PARTITION BY LIST (a) (PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20)); analyze table t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK drop table t1; create table t1 (a int) @@ -1239,7 +1239,11 @@ SHOW TABLE STATUS; Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment t1 MyISAM 10 Fixed 1 14 14 0 0 7 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned ALTER TABLE t1 OPTIMIZE PARTITION p0; -ERROR 42000: The storage engine for the table doesn't support optimize partition +Table Op Msg_type Msg_text +test.t1 optimize status OK +SHOW TABLE STATUS; +Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment +t1 MyISAM 10 Fixed 1 7 7 0 1024 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned DROP TABLE t1; CREATE TABLE t1 (a int, index(a)) PARTITION BY KEY(a); ALTER TABLE t1 DISABLE KEYS; @@ -1499,13 +1503,17 @@ ERROR 42000: You have an error in your SQL syntax; check the manual that corresp ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED; 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 'EXTENDED' at line 1 ALTER TABLE t1 ANALYZE PARTITION p1; -ERROR 42000: The storage engine for the table doesn't support analyze partition +Table Op Msg_type Msg_text +test.t1 analyze status OK ALTER TABLE t1 CHECK PARTITION p1; -ERROR 42000: The storage engine for the table doesn't support check partition +Table Op Msg_type Msg_text +test.t1 check status OK ALTER TABLE t1 REPAIR PARTITION p1; -ERROR 42000: The storage engine for the table doesn't support repair partition +Table Op Msg_type Msg_text +test.t1 repair status OK ALTER TABLE t1 OPTIMIZE PARTITION p1; -ERROR 42000: The storage engine for the table doesn't support optimize partition +Table Op Msg_type Msg_text +test.t1 optimize status OK DROP TABLE t1; CREATE TABLE t1 (s1 BIGINT UNSIGNED) PARTITION BY RANGE (s1) ( diff --git a/mysql-test/r/trigger-trans.result b/mysql-test/r/trigger-trans.result index dccaa27c5fd..9e0f1e2c351 100644 --- a/mysql-test/r/trigger-trans.result +++ b/mysql-test/r/trigger-trans.result @@ -19,6 +19,7 @@ a b THE LION 13 optimize table t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK select trigger_schema, trigger_name, event_object_schema, event_object_table, action_statement from information_schema.triggers diff --git a/mysql-test/suite/ndb/r/ndb_partition_key.result b/mysql-test/suite/ndb/r/ndb_partition_key.result index ed84b90951b..5ce2d860e7d 100644 --- a/mysql-test/suite/ndb/r/ndb_partition_key.result +++ b/mysql-test/suite/ndb/r/ndb_partition_key.result @@ -192,14 +192,30 @@ DROP TABLE t1; CREATE TABLE t1 (a int primary key) ENGINE=NDB PARTITION BY KEY(a); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze note The storage engine for the table doesn't support analyze +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check note The storage engine for the table doesn't support check +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note The storage engine for the table doesn't support optimize +REPAIR TABLE t1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair ALTER TABLE t1 OPTIMIZE PARTITION p0; -ERROR HY000: Table storage engine for 't1' doesn't have this option +Table Op Msg_type Msg_text +test.t1 optimize note The storage engine for the table doesn't support optimize ALTER TABLE t1 CHECK PARTITION p0; -ERROR HY000: Table storage engine for 't1' doesn't have this option +Table Op Msg_type Msg_text +test.t1 check note The storage engine for the table doesn't support check ALTER TABLE t1 REPAIR PARTITION p0; -ERROR HY000: Table storage engine for 't1' doesn't have this option +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair ALTER TABLE t1 ANALYZE PARTITION p0; -ERROR HY000: Table storage engine for 't1' doesn't have this option +Table Op Msg_type Msg_text +test.t1 analyze note The storage engine for the table doesn't support analyze ALTER TABLE t1 REBUILD PARTITION p0; ERROR HY000: Table storage engine for 't1' doesn't have this option DROP TABLE t1; diff --git a/mysql-test/suite/ndb/t/ndb_partition_key.test b/mysql-test/suite/ndb/t/ndb_partition_key.test index be76389f38d..a3898407445 100644 --- a/mysql-test/suite/ndb/t/ndb_partition_key.test +++ b/mysql-test/suite/ndb/t/ndb_partition_key.test @@ -175,15 +175,15 @@ DROP TABLE t1; CREATE TABLE t1 (a int primary key) ENGINE=NDB PARTITION BY KEY(a); ---error 1031 +ANALYZE TABLE t1; +CHECK TABLE t1; +OPTIMIZE TABLE t1; +REPAIR TABLE t1; ALTER TABLE t1 OPTIMIZE PARTITION p0; ---error 1031 ALTER TABLE t1 CHECK PARTITION p0; ---error 1031 ALTER TABLE t1 REPAIR PARTITION p0; ---error 1031 ALTER TABLE t1 ANALYZE PARTITION p0; ---error 1031 +--error ER_ILLEGAL_HA ALTER TABLE t1 REBUILD PARTITION p0; DROP TABLE t1; diff --git a/mysql-test/suite/parts/inc/partition_alter4.inc b/mysql-test/suite/parts/inc/partition_alter4.inc index 148d21e95f5..74b1f3a2e74 100644 --- a/mysql-test/suite/parts/inc/partition_alter4.inc +++ b/mysql-test/suite/parts/inc/partition_alter4.inc @@ -31,6 +31,9 @@ let $alter= ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10 --echo # 1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1; let $alter= ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; --source suite/parts/inc/partition_alter_41.inc +--echo # 1.5 ALTER ... ANALYZE PARTITION ALL; +let $alter= ALTER TABLE t1 ANALYZE PARTITION ALL; +--source suite/parts/inc/partition_alter_41.inc --echo #------------------------------------------------------------------------ --echo # 2 ALTER ... CHECK PARTITION @@ -47,6 +50,9 @@ let $alter= ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; --echo # 2.4 ALTER ... CHECK PARTITION part_1,part_1,part_1; let $alter= ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; --source suite/parts/inc/partition_alter_41.inc +--echo # 2.5 ALTER ... CHECK PARTITION ALL; +let $alter= ALTER TABLE t1 CHECK PARTITION ALL; +--source suite/parts/inc/partition_alter_41.inc --echo #------------------------------------------------------------------------ --echo # 3 ALTER ... OPTIMIZE PARTITION @@ -63,6 +69,9 @@ let $alter= ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_1 --echo # 3.4 ALTER ... OPTIMIZE PARTITION part_1,part_1,part_1; let $alter= ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; --source suite/parts/inc/partition_alter_41.inc +--echo # 3.5 ALTER ... OPTIMIZE PARTITION ALL; +let $alter= ALTER TABLE t1 OPTIMIZE PARTITION ALL; +--source suite/parts/inc/partition_alter_41.inc --echo #------------------------------------------------------------------------ --echo # 4 ALTER ... REBUILD PARTITION @@ -79,6 +88,9 @@ let $alter= ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10 --echo # 4.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1; let $alter= ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; --source suite/parts/inc/partition_alter_41.inc +--echo # 4.5 ALTER ... REBUILD PARTITION ALL; +let $alter= ALTER TABLE t1 REBUILD PARTITION ALL; +--source suite/parts/inc/partition_alter_41.inc --echo #------------------------------------------------------------------------ --echo # 5 ALTER ... REPAIR PARTITION @@ -95,6 +107,9 @@ let $alter= ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; --echo # 5.4 ALTER ... REPAIR PARTITION part_1,part_1,part_1; let $alter= ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; --source suite/parts/inc/partition_alter_41.inc +--echo # 5.5 ALTER ... REPAIR PARTITION ALL; +let $alter= ALTER TABLE t1 REPAIR PARTITION ALL; +--source suite/parts/inc/partition_alter_41.inc --echo #------------------------------------------------------------------------ --echo # 6 ALTER ... REMOVE PARTITIONING diff --git a/mysql-test/suite/parts/r/partition_alter4_innodb.result b/mysql-test/suite/parts/r/partition_alter4_innodb.result index 0e6f0c22f93..8ec56dc5233 100644 --- a/mysql-test/suite/parts/r/partition_alter4_innodb.result +++ b/mysql-test/suite/parts/r/partition_alter4_innodb.result @@ -59,6 +59,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -487,6 +489,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -512,6 +515,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -940,6 +945,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -973,6 +979,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -1401,6 +1409,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -1432,6 +1441,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -1858,6 +1869,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -1887,6 +1899,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -2315,6 +2329,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -2348,6 +2363,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -2774,6 +2791,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -2807,6 +2825,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -3235,6 +3255,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -3264,6 +3285,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -3692,6 +3715,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -3719,6 +3743,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -4147,6 +4173,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -4172,6 +4199,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -4600,6 +4629,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -4633,6 +4663,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -5061,6 +5093,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -5092,6 +5125,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -5518,6 +5553,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -5547,6 +5583,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -5975,6 +6013,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -6008,6 +6047,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -6434,6 +6475,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -6467,6 +6509,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -6895,6 +6939,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -6924,6 +6969,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -7352,6 +7399,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -7379,329 +7427,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY LIST(MOD(f_int1,4)) -(PARTITION part_3 VALUES IN (-3), -PARTITION part_2 VALUES IN (-2), -PARTITION part_1 VALUES IN (-1), -PARTITION part_N VALUES IN (NULL), -PARTITION part0 VALUES IN (0), -PARTITION part1 VALUES IN (1), -PARTITION part2 VALUES IN (2), -PARTITION part3 VALUES IN (3)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY RANGE(f_int1) -(PARTITION parta VALUES LESS THAN (0), -PARTITION part_1 VALUES LESS THAN (5), -PARTITION part_2 VALUES LESS THAN (10), -PARTITION part_3 VALUES LESS THAN (10 + 5), -PARTITION part_4 VALUES LESS THAN (20), -PARTITION part_5 VALUES LESS THAN (2147483646)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 -(PARTITION part_1 VALUES LESS THAN (0), -PARTITION part_2 VALUES LESS THAN (5), -PARTITION part_3 VALUES LESS THAN (10), -PARTITION part_4 VALUES LESS THAN (2147483646)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) -(PARTITION part_1 VALUES LESS THAN (0) -(SUBPARTITION subpart11, SUBPARTITION subpart12), -PARTITION part_2 VALUES LESS THAN (5) -(SUBPARTITION subpart21, SUBPARTITION subpart22), -PARTITION part_3 VALUES LESS THAN (10) -(SUBPARTITION subpart31, SUBPARTITION subpart32), -PARTITION part_4 VALUES LESS THAN (2147483646) -(SUBPARTITION subpart41, SUBPARTITION subpart42)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) -(PARTITION part_1 VALUES IN (0) -(SUBPARTITION sp11, SUBPARTITION sp12), -PARTITION part_2 VALUES IN (1) -(SUBPARTITION sp21, SUBPARTITION sp22), -PARTITION part_3 VALUES IN (2) -(SUBPARTITION sp31, SUBPARTITION sp32), -PARTITION part_4 VALUES IN (NULL) -(SUBPARTITION sp41, SUBPARTITION sp42)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY LIST(ABS(MOD(f_int1,2))) -SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 -(PARTITION part_1 VALUES IN (0), - PARTITION part_2 VALUES IN (1), - PARTITION part_3 VALUES IN (NULL)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -# 1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1; -DROP TABLE IF EXISTS t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY LIST(MOD(f_int1,4)) -(PARTITION part_3 VALUES IN (-3), -PARTITION part_2 VALUES IN (-2), -PARTITION part_1 VALUES IN (-1), -PARTITION part_N VALUES IN (NULL), -PARTITION part0 VALUES IN (0), -PARTITION part1 VALUES IN (1), -PARTITION part2 VALUES IN (2), -PARTITION part3 VALUES IN (3)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY RANGE(f_int1) -(PARTITION parta VALUES LESS THAN (0), -PARTITION part_1 VALUES LESS THAN (5), -PARTITION part_2 VALUES LESS THAN (10), -PARTITION part_3 VALUES LESS THAN (10 + 5), -PARTITION part_4 VALUES LESS THAN (20), -PARTITION part_5 VALUES LESS THAN (2147483646)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 -(PARTITION part_1 VALUES LESS THAN (0), -PARTITION part_2 VALUES LESS THAN (5), -PARTITION part_3 VALUES LESS THAN (10), -PARTITION part_4 VALUES LESS THAN (2147483646)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) -(PARTITION part_1 VALUES LESS THAN (0) -(SUBPARTITION subpart11, SUBPARTITION subpart12), -PARTITION part_2 VALUES LESS THAN (5) -(SUBPARTITION subpart21, SUBPARTITION subpart22), -PARTITION part_3 VALUES LESS THAN (10) -(SUBPARTITION subpart31, SUBPARTITION subpart32), -PARTITION part_4 VALUES LESS THAN (2147483646) -(SUBPARTITION subpart41, SUBPARTITION subpart42)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) -(PARTITION part_1 VALUES IN (0) -(SUBPARTITION sp11, SUBPARTITION sp12), -PARTITION part_2 VALUES IN (1) -(SUBPARTITION sp21, SUBPARTITION sp22), -PARTITION part_3 VALUES IN (2) -(SUBPARTITION sp31, SUBPARTITION sp32), -PARTITION part_4 VALUES IN (NULL) -(SUBPARTITION sp41, SUBPARTITION sp42)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY LIST(ABS(MOD(f_int1,2))) -SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 -(PARTITION part_1 VALUES IN (0), - PARTITION part_2 VALUES IN (1), - PARTITION part_3 VALUES IN (NULL)); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE -DROP TABLE t1; -#------------------------------------------------------------------------ -# 2 ALTER ... CHECK PARTITION -#------------------------------------------------------------------------ -# 2.1 ALTER ... CHECK PARTITION part_1; -DROP TABLE IF EXISTS t1; -CREATE TABLE t1 ( -f_int1 INTEGER, -f_int2 INTEGER, -f_char1 CHAR(20), -f_char2 CHAR(20), -f_charbig VARCHAR(1000) - -) -PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); -INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) -SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template -WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -8130,6 +7857,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -8154,7 +7882,9 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -8583,6 +8313,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -8615,7 +8346,9 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -9044,6 +8777,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -9074,7 +8808,9 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -9501,6 +9237,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -9529,7 +9266,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -9958,6 +9697,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -9990,7 +9730,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -10417,6 +10159,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -10449,7 +10192,9 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -10878,6 +10623,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -10906,7 +10652,9 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 CHECK PARTITION part_1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -11335,6 +11083,11062 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 1.5 ALTER ... ANALYZE PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +#------------------------------------------------------------------------ +# 2 ALTER ... CHECK PARTITION +#------------------------------------------------------------------------ +# 2.1 ALTER ... CHECK PARTITION part_1; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -11362,6 +22166,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -11790,6 +22596,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -11815,6 +22622,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -12243,6 +23052,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -12276,6 +23086,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -12704,6 +23516,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -12735,6 +23548,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -13161,6 +23976,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -13190,6 +24006,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -13618,6 +24436,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -13651,6 +24470,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -14077,6 +24898,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -14110,6 +24932,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -14538,6 +25362,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -14567,6 +25392,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -14995,6 +25822,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -15022,7 +25850,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15037,7 +26306,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15060,7 +26770,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15081,7 +27232,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15100,7 +27690,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15123,7 +28154,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15146,7 +28616,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15165,7 +29076,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 2.4 ALTER ... CHECK PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; @@ -15182,7 +29534,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15197,7 +29990,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15220,7 +30454,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15241,7 +30916,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15260,7 +31374,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15283,7 +31838,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15306,7 +32300,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15325,7 +32760,4132 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 2.5 ALTER ... CHECK PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 3 ALTER ... OPTIMIZE PARTITION @@ -15345,7 +36905,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15360,7 +37362,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15383,7 +37827,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15404,7 +38290,447 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15423,7 +38749,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15446,7 +39214,447 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15469,7 +39677,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15488,7 +40138,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 3.2 ALTER ... OPTIMIZE PARTITION part_1,part_2; DROP TABLE IF EXISTS t1; @@ -15505,7 +40597,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15520,7 +41054,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15543,7 +41519,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15564,7 +41982,447 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15583,7 +42441,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15606,7 +42906,447 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15629,7 +43369,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15648,7 +43830,449 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; -ERROR HY000: Got error -7 from storage engine +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 3.3 ALTER ... OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; DROP TABLE IF EXISTS t1; @@ -15665,7 +44289,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15680,7 +44745,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15703,7 +45209,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15724,7 +45671,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15743,7 +46129,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15766,7 +46593,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15789,7 +47055,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15808,7 +47515,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 3.4 ALTER ... OPTIMIZE PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; @@ -15825,7 +47973,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15840,7 +48429,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15863,7 +48893,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15884,7 +49355,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15903,7 +49813,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15926,7 +50277,446 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15949,7 +50739,448 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15968,7 +51199,4140 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 3.5 ALTER ... OPTIMIZE PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 4 ALTER ... REBUILD PARTITION @@ -16416,6 +55780,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -16869,6 +56234,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -17330,6 +56696,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -17787,6 +57154,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -18244,6 +57612,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -18703,6 +58072,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -19164,6 +58534,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -19621,6 +58992,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -20076,6 +59448,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -20529,6 +59902,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -20990,6 +60364,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -21447,6 +60822,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -21904,6 +61280,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -22363,6 +61740,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -22824,6 +62202,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -23281,6 +62660,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -23613,10 +62993,3678 @@ WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; ERROR HY000: Error in list of partitions to REBUILD DROP TABLE t1; +# 4.5 ALTER ... REBUILD PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; #------------------------------------------------------------------------ # 5 ALTER ... REPAIR PARTITION #------------------------------------------------------------------------ -# 5.1 ALTER ... REBUILD PARTITION part_1; +# 5.1 ALTER ... REPAIR PARTITION part_1; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23630,7 +66678,9 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -24059,6 +67109,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -24083,7 +67134,9 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -24512,6 +67565,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -24544,7 +67598,9 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -24973,6 +68029,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -25003,7 +68060,9 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -25430,6 +68489,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -25458,7 +68518,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -25887,6 +68949,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -25919,7 +68982,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -26346,6 +69411,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -26378,7 +69444,9 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -26807,6 +69875,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -26835,7 +69904,9 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -27264,6 +70335,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -27276,7 +70348,7 @@ TRUNCATE t1; # check layout success: 1 # End usability test (inc/partition_check.inc) DROP TABLE t1; -# 5.2 ALTER ... REBUILD PARTITION part_1,part_2; +# 5.2 ALTER ... REPAIR PARTITION part_1,part_2; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -27290,7 +70362,9 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -27719,6 +70793,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -27743,7 +70818,9 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -28172,6 +71249,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -28204,7 +71282,9 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -28633,6 +71713,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -28663,7 +71744,9 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -29090,6 +72173,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -29118,7 +72202,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -29547,6 +72633,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -29579,7 +72666,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -30006,6 +73095,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -30038,7 +73128,9 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -30467,6 +73559,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -30495,7 +73588,9 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -30924,6 +74019,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -30936,7 +74032,7 @@ TRUNCATE t1; # check layout success: 1 # End usability test (inc/partition_check.inc) DROP TABLE t1; -# 5.3 ALTER ... REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; +# 5.3 ALTER ... REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -30950,8 +74046,449 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -30965,8 +74502,449 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -30988,8 +74966,449 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31009,8 +75428,447 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31028,8 +75886,449 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31051,8 +76350,447 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31074,8 +76812,449 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31093,10 +77272,451 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; -# 5.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1; +# 5.4 ALTER ... REPAIR PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31110,8 +77730,449 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31125,8 +78186,449 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31148,8 +78650,449 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31169,8 +79112,447 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31188,8 +79570,449 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31211,8 +80034,447 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31234,8 +80496,449 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31253,8 +80956,4133 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 5.5 ALTER ... REPAIR PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */ + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be able to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair note The storage engine for the table doesn't support repair +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 6 ALTER ... REMOVE PARTITIONING @@ -31702,6 +85530,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -32155,6 +85984,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -32616,6 +86446,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -33075,6 +86906,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -33532,6 +87364,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -33993,6 +87826,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -34454,6 +88288,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; @@ -34911,6 +88746,7 @@ Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; diff --git a/mysql-test/suite/parts/r/partition_alter4_myisam.result b/mysql-test/suite/parts/r/partition_alter4_myisam.result index 8eac8d414de..ec7a612c6f3 100644 --- a/mysql-test/suite/parts/r/partition_alter4_myisam.result +++ b/mysql-test/suite/parts/r/partition_alter4_myisam.result @@ -59,6 +59,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -522,6 +524,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -999,6 +1003,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -1480,6 +1486,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -1953,6 +1961,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -2436,6 +2446,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -2917,6 +2929,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -3396,6 +3410,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -3875,6 +3891,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -4338,6 +4356,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -4815,6 +4835,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -5296,6 +5318,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -5769,6 +5793,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -6252,6 +6278,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -6733,6 +6761,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -7212,6 +7242,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 analyze status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -7691,7 +7723,457 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7706,7 +8188,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7729,7 +8667,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7750,7 +9150,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7769,7 +9625,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7792,7 +10110,467 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7815,7 +10593,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7834,7 +11074,471 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; @@ -7851,7 +11555,457 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7866,7 +12020,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7889,7 +12499,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7910,7 +12982,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7929,7 +13457,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7952,7 +13942,467 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7975,7 +14425,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -7994,7 +14906,4303 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to ANALYZE +Table Op Msg_type Msg_text +test.t1 analyze error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 1.5 ALTER ... ANALYZE PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 ANALYZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 analyze status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 2 ALTER ... CHECK PARTITION @@ -8014,6 +19222,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -8477,6 +19687,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -8954,6 +20166,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -9435,6 +20649,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -9908,6 +21124,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -10391,6 +21609,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -10872,6 +22092,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -11351,6 +22573,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -11830,6 +23054,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -12293,6 +23519,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -12770,6 +23998,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -13251,6 +24481,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -13724,6 +24956,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -14207,6 +25441,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -14688,6 +25924,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -15167,6 +26405,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 check status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -15646,7 +26886,457 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15661,7 +27351,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15684,7 +27830,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15705,7 +28313,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15724,7 +28788,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15747,7 +29273,467 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15770,7 +29756,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15789,7 +30237,471 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 2.4 ALTER ... CHECK PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; @@ -15806,7 +30718,457 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15821,7 +31183,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15844,7 +31662,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15865,7 +32145,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15884,7 +32620,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15907,7 +33105,467 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15930,7 +33588,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -15949,7 +34069,4303 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to CHECK +Table Op Msg_type Msg_text +test.t1 check error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 2.5 ALTER ... CHECK PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 CHECK PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 3 ALTER ... OPTIMIZE PARTITION @@ -15969,6 +38385,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -16432,6 +38850,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -16909,6 +39329,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -17390,6 +39812,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -17863,6 +40287,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -18346,6 +40772,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -18827,6 +41255,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -19306,6 +41736,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -19785,6 +42217,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -20248,6 +42682,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -20725,6 +43161,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -21206,6 +43644,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -21679,6 +44119,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -22162,6 +44604,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -22643,6 +45087,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -23122,6 +45568,8 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 optimize status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -23601,7 +46049,457 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23616,7 +46514,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23639,7 +46993,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23660,7 +47476,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23679,7 +47951,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23702,7 +48436,467 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23725,7 +48919,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23744,7 +49400,471 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; # 3.4 ALTER ... OPTIMIZE PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; @@ -23761,7 +49881,457 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23776,7 +50346,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23799,7 +50825,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23820,7 +51308,463 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23839,7 +51783,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23862,7 +52268,467 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23885,7 +52751,469 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -23904,7 +53232,4303 @@ INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to OPTIMIZE +Table Op Msg_type Msg_text +test.t1 optimize error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 3.5 ALTER ... OPTIMIZE PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 OPTIMIZE PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 optimize status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 4 ALTER ... REBUILD PARTITION @@ -31861,10 +65485,3826 @@ WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; ERROR HY000: Error in list of partitions to REBUILD DROP TABLE t1; +# 4.5 ALTER ... REBUILD PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REBUILD PARTITION ALL; +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; #------------------------------------------------------------------------ # 5 ALTER ... REPAIR PARTITION #------------------------------------------------------------------------ -# 5.1 ALTER ... REBUILD PARTITION part_1; +# 5.1 ALTER ... REPAIR PARTITION part_1; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -31878,7 +69318,9 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -32341,7 +69783,9 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -32818,7 +70262,9 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -33299,7 +70745,9 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -33772,7 +71220,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -34255,7 +71705,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -34736,7 +72188,9 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -35215,7 +72669,9 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1; +ALTER TABLE t1 REPAIR PARTITION part_1; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -35680,7 +73136,7 @@ TRUNCATE t1; # check layout success: 1 # End usability test (inc/partition_check.inc) DROP TABLE t1; -# 5.2 ALTER ... REBUILD PARTITION part_1,part_2; +# 5.2 ALTER ... REPAIR PARTITION part_1,part_2; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -35694,7 +73150,9 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -36157,7 +73615,9 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -36634,7 +74094,9 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -37115,7 +74577,9 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -37588,7 +75052,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -38071,7 +75537,9 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -38552,7 +76020,9 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -39031,7 +76501,9 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2; +ALTER TABLE t1 REPAIR PARTITION part_1,part_2; +Table Op Msg_type Msg_text +test.t1 repair status OK INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; @@ -39496,7 +76968,7 @@ TRUNCATE t1; # check layout success: 1 # End usability test (inc/partition_check.inc) DROP TABLE t1; -# 5.3 ALTER ... REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; +# 5.3 ALTER ... REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39510,8 +76982,458 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39525,8 +77447,464 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39548,8 +77926,470 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39569,8 +78409,464 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39588,8 +78884,470 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39611,8 +79369,468 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39634,8 +79852,470 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39653,10 +80333,474 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_2,part_5,part_6,part_10; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; -# 5.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1; +# 5.4 ALTER ... REPAIR PARTITION part_1,part_1,part_1; DROP TABLE IF EXISTS t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39670,8 +80814,458 @@ PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39685,8 +81279,464 @@ PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, parti INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39708,8 +81758,470 @@ PARTITION part3 VALUES IN (3)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39729,8 +82241,464 @@ PARTITION part_5 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39748,8 +82716,470 @@ PARTITION part_4 VALUES LESS THAN (2147483646)); INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39771,8 +83201,468 @@ PARTITION part_4 VALUES LESS THAN (2147483646) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39794,8 +83684,470 @@ PARTITION part_4 VALUES IN (NULL) INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; CREATE TABLE t1 ( f_int1 INTEGER, @@ -39813,8 +84165,4304 @@ SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; -ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1; -ERROR HY000: Error in list of partitions to REBUILD +ALTER TABLE t1 REPAIR PARTITION part_1,part_1,part_1; +Table Op Msg_type Msg_text +test.t1 repair error Error in list of partitions to test.t1 +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +# 5.5 ALTER ... REPAIR PARTITION ALL; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(MOD(f_int1,4)) +(PARTITION part_3 VALUES IN (-3), +PARTITION part_2 VALUES IN (-2), +PARTITION part_1 VALUES IN (-1), +PARTITION part_N VALUES IN (NULL), +PARTITION part0 VALUES IN (0), +PARTITION part1 VALUES IN (1), +PARTITION part2 VALUES IN (2), +PARTITION part3 VALUES IN (3)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) +(PARTITION parta VALUES LESS THAN (0), +PARTITION part_1 VALUES LESS THAN (5), +PARTITION part_2 VALUES LESS THAN (10), +PARTITION part_3 VALUES LESS THAN (10 + 5), +PARTITION part_4 VALUES LESS THAN (20), +PARTITION part_5 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2 +(PARTITION part_1 VALUES LESS THAN (0), +PARTITION part_2 VALUES LESS THAN (5), +PARTITION part_3 VALUES LESS THAN (10), +PARTITION part_4 VALUES LESS THAN (2147483646)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1) +(PARTITION part_1 VALUES LESS THAN (0) +(SUBPARTITION subpart11, SUBPARTITION subpart12), +PARTITION part_2 VALUES LESS THAN (5) +(SUBPARTITION subpart21, SUBPARTITION subpart22), +PARTITION part_3 VALUES LESS THAN (10) +(SUBPARTITION subpart31, SUBPARTITION subpart32), +PARTITION part_4 VALUES LESS THAN (2147483646) +(SUBPARTITION subpart41, SUBPARTITION subpart42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; +ERROR HY000: Table has no partition for value 2147483647 +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1) +(PARTITION part_1 VALUES IN (0) +(SUBPARTITION sp11, SUBPARTITION sp12), +PARTITION part_2 VALUES IN (1) +(SUBPARTITION sp21, SUBPARTITION sp22), +PARTITION part_3 VALUES IN (2) +(SUBPARTITION sp31, SUBPARTITION sp32), +PARTITION part_4 VALUES IN (NULL) +(SUBPARTITION sp41, SUBPARTITION sp42)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) +DROP TABLE t1; +CREATE TABLE t1 ( +f_int1 INTEGER, +f_int2 INTEGER, +f_char1 CHAR(20), +f_char2 CHAR(20), +f_charbig VARCHAR(1000) + +) +PARTITION BY LIST(ABS(MOD(f_int1,2))) +SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3 +(PARTITION part_1 VALUES IN (0), + PARTITION part_2 VALUES IN (1), + PARTITION part_3 VALUES IN (NULL)); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1; +ALTER TABLE t1 REPAIR PARTITION ALL; +Table Op Msg_type Msg_text +test.t1 repair status OK +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 AND @max_row; +# Start usability test (inc/partition_check.inc) +create_command +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f_int1` int(11) DEFAULT NULL, + `f_int2` int(11) DEFAULT NULL, + `f_char1` char(20) DEFAULT NULL, + `f_char2` char(20) DEFAULT NULL, + `f_charbig` varchar(1000) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ + +unified filelist +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD +$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI +$MYSQLTEST_VARDIR/master-data/test/t1.frm +$MYSQLTEST_VARDIR/master-data/test/t1.par + +# check prerequisites-1 success: 1 +# check COUNT(*) success: 1 +# check MIN/MAX(f_int1) success: 1 +# check MIN/MAX(f_int2) success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'delete me' FROM t0_template +WHERE f_int1 IN (2,3); +# check prerequisites-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'delete me'; +# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE +# check read via f_int1 success: 1 +# check read via f_int2 success: 1 + +# check multiple-1 success: 1 +DELETE FROM t1 WHERE MOD(f_int1,3) = 0; + +# check multiple-2 success: 1 +INSERT INTO t1 SELECT * FROM t0_template +WHERE MOD(f_int1,3) = 0; + +# check multiple-3 success: 1 +UPDATE t1 SET f_int1 = f_int1 + @max_row +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 +AND @max_row_div2 + @max_row_div4; + +# check multiple-4 success: 1 +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row +AND @max_row_div2 + @max_row_div4 + @max_row; + +# check multiple-5 success: 1 +SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-1 success: 1 +SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1; +INSERT INTO t1 +SET f_int1 = @cur_value , f_int2 = @cur_value, +f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR), +f_charbig = '#SINGLE#'; + +# check single-2 success: 1 +SELECT MIN(f_int1) INTO @cur_value1 FROM t1; +SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value2 +WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#'; + +# check single-3 success: 1 +SET @cur_value1= -1; +SELECT MAX(f_int1) INTO @cur_value2 FROM t1; +UPDATE t1 SET f_int1 = @cur_value1 +WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#'; + +# check single-4 success: 1 +SELECT MAX(f_int1) INTO @cur_value FROM t1; +DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#'; + +# check single-5 success: 1 +DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#'; + +# check single-6 success: 1 +INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##'; + +# check single-7 success: 1 +DELETE FROM t1 WHERE f_charbig = '#2147483647##'; +DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0; +INSERT t1 SET f_int1 = 0 , f_int2 = 0, +f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR), +f_charbig = '#NULL#'; +INSERT INTO t1 +SET f_int1 = NULL , f_int2 = -@max_row, +f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR), +f_charbig = '#NULL#'; +# check null success: 1 + +# check null-1 success: 1 +UPDATE t1 SET f_int1 = -@max_row +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-2 success: 1 +UPDATE t1 SET f_int1 = NULL +WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-3 success: 1 +DELETE FROM t1 +WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR) +AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#'; + +# check null-4 success: 1 +DELETE FROM t1 +WHERE f_int1 = 0 AND f_int2 = 0 +AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR) +AND f_charbig = '#NULL#'; +SET AUTOCOMMIT= 0; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-1 success: 1 +COMMIT WORK; + +# check transactions-2 success: 1 +ROLLBACK WORK; + +# check transactions-3 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +ROLLBACK WORK; + +# check transactions-4 success: 1 +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, '', '', 'was inserted' +FROM t0_template source_tab +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; + +# check transactions-5 success: 1 +ROLLBACK WORK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back + +# check transactions-6 success: 1 +# INFO: Storage engine used for t1 seems to be not transactional. +COMMIT; + +# check transactions-7 success: 1 +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +SET @@session.sql_mode = 'traditional'; +SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1, +'', '', 'was inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4; +ERROR 22012: Division by 0 +COMMIT; + +# check transactions-8 success: 1 +# INFO: Storage engine used for t1 seems to be unable to revert +# changes made by the failing statement. +SET @@session.sql_mode = ''; +SET AUTOCOMMIT= 1; +DELETE FROM t1 WHERE f_charbig = 'was inserted'; +COMMIT WORK; +UPDATE t1 SET f_charbig = REPEAT('b', 1000); + +# check special-1 success: 1 +UPDATE t1 SET f_charbig = ''; + +# check special-2 success: 1 +UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'==='); +INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-1 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; + +# check trigger-2 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-3 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-4 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = new.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-5 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2 +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-6 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-7 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig) +SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR), +'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW +BEGIN +UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2, +f_charbig = 'updated by trigger' + WHERE f_int1 = - old.f_int1; +END| +DELETE FROM t0_aux +WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1)); + +# check trigger-8 success: 1 +DROP TRIGGER trg_1; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = 'just inserted' + WHERE f_int1 <> CAST(f_char1 AS SIGNED INT); +DELETE FROM t0_aux +WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +DELETE FROM t1 +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1; +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = old.f_int1 + @max_row, +new.f_int2 = old.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-9 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = new.f_int1 + @max_row, +new.f_int2 = new.f_int2 - @max_row, +new.f_charbig = '####updated per update trigger####'; +END| +UPDATE t1 +SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row, +f_charbig = '####updated per update statement itself####'; + +# check trigger-10 success: 1 +DROP TRIGGER trg_2; +UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT), +f_int2 = CAST(f_char1 AS SIGNED INT), +f_charbig = CONCAT('===',f_char1,'==='); +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig) +SELECT f_int1, f_int1, CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-11 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW +BEGIN +SET new.f_int1 = @my_max1 + @counter, +new.f_int2 = @my_min2 - @counter, +new.f_charbig = '####updated per insert trigger####'; +SET @counter = @counter + 1; +END| +SET @counter = 1; +SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1; +INSERT INTO t1 (f_char1, f_char2, f_charbig) +SELECT CAST(f_int1 AS CHAR), +CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template +WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1 +ORDER BY f_int1; +DROP TRIGGER trg_3; + +# check trigger-12 success: 1 +DELETE FROM t1 +WHERE f_int1 <> CAST(f_char1 AS SIGNED INT) +AND f_int2 <> CAST(f_char1 AS SIGNED INT) +AND f_charbig = '####updated per insert trigger####'; +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +CHECK TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 check status OK +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 +OPTIMIZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 optimize status OK +# check layout success: 1 +REPAIR TABLE t1 EXTENDED; +Table Op Msg_type Msg_text +test.t1 repair status OK +# check layout success: 1 +TRUNCATE t1; + +# check TRUNCATE success: 1 +# check layout success: 1 +# End usability test (inc/partition_check.inc) DROP TABLE t1; #------------------------------------------------------------------------ # 6 ALTER ... REMOVE PARTITIONING diff --git a/mysql-test/suite/rpl/r/rpl_failed_optimize.result b/mysql-test/suite/rpl/r/rpl_failed_optimize.result index 7e397550331..5c84b1ff5fd 100644 --- a/mysql-test/suite/rpl/r/rpl_failed_optimize.result +++ b/mysql-test/suite/rpl/r/rpl_failed_optimize.result @@ -9,6 +9,7 @@ BEGIN; INSERT INTO t1 VALUES (1); OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead test.t1 optimize error Lock wait timeout exceeded; try restarting transaction test.t1 optimize status Operation failed Warnings: diff --git a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result index 520e75c2714..d70d8dadf54 100644 --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result @@ -570,6 +570,7 @@ test_rpl.t1 1837058639 ******************** OPTIMIZE TABLE ******************** OPTIMIZE TABLE t1; Table Op Msg_type Msg_text +test_rpl.t1 optimize note Table does not support optimize, doing recreate + analyze instead test_rpl.t1 optimize status OK ******************** REPAIR TABLE ******************** diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 669da7ee993..211a9950d67 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1333,11 +1333,9 @@ SHOW TABLE STATUS; DELETE from t1 where a = 1; --replace_column 9 0 12 NULL 13 NULL 14 NULL SHOW TABLE STATUS; -# restore this after WL#4176 is completed --- error ER_CHECK_NOT_IMPLEMENTED ALTER TABLE t1 OPTIMIZE PARTITION p0; -#--replace_column 12 NULL 13 NULL 14 NULL -#SHOW TABLE STATUS; +--replace_column 12 NULL 13 NULL 14 NULL +SHOW TABLE STATUS; DROP TABLE t1; # @@ -1672,13 +1670,9 @@ PARTITION BY RANGE (a) ( ALTER TABLE t1 OPTIMIZE PARTITION p1 EXTENDED; --error ER_PARSE_ERROR ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED; ---error ER_CHECK_NOT_IMPLEMENTED ALTER TABLE t1 ANALYZE PARTITION p1; ---error ER_CHECK_NOT_IMPLEMENTED ALTER TABLE t1 CHECK PARTITION p1; ---error ER_CHECK_NOT_IMPLEMENTED ALTER TABLE t1 REPAIR PARTITION p1; ---error ER_CHECK_NOT_IMPLEMENTED ALTER TABLE t1 OPTIMIZE PARTITION p1; DROP TABLE t1; diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index b06e2572f44..287f360fec6 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -841,6 +841,9 @@ int ha_partition::rename_partitions(const char *path) #define CHECK_PARTS 3 #define REPAIR_PARTS 4 +static const char *opt_op_name[]= {NULL, + "optimize", "analyze", "check", "repair" }; + /* Optimize table @@ -858,8 +861,10 @@ int ha_partition::optimize(THD *thd, HA_CHECK_OPT *check_opt) { DBUG_ENTER("ha_partition::optimize"); - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - OPTIMIZE_PARTS, TRUE)); + DBUG_RETURN(handle_opt_partitions(thd, check_opt, + OPTIMIZE_PARTS, + thd->lex->alter_info.flags & + ALTER_OPTIMIZE_PARTITION ? FALSE : TRUE)); } @@ -880,8 +885,10 @@ int ha_partition::analyze(THD *thd, HA_CHECK_OPT *check_opt) { DBUG_ENTER("ha_partition::analyze"); - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - ANALYZE_PARTS, TRUE)); + DBUG_RETURN(handle_opt_partitions(thd, check_opt, + ANALYZE_PARTS, + thd->lex->alter_info.flags & + ALTER_ANALYZE_PARTITION ? FALSE : TRUE)); } @@ -902,8 +909,10 @@ int ha_partition::check(THD *thd, HA_CHECK_OPT *check_opt) { DBUG_ENTER("ha_partition::check"); - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - CHECK_PARTS, TRUE)); + DBUG_RETURN(handle_opt_partitions(thd, check_opt, + CHECK_PARTS, + thd->lex->alter_info.flags & + ALTER_CHECK_PARTITION ? FALSE : TRUE)); } @@ -924,95 +933,12 @@ int ha_partition::repair(THD *thd, HA_CHECK_OPT *check_opt) { DBUG_ENTER("ha_partition::repair"); - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - REPAIR_PARTS, TRUE)); + DBUG_RETURN(handle_opt_partitions(thd, check_opt, + REPAIR_PARTS, + thd->lex->alter_info.flags & + ALTER_REPAIR_PARTITION ? FALSE : TRUE)); } -/* - Optimize partitions - - SYNOPSIS - optimize_partitions() - thd Thread object - RETURN VALUE - >0 Failure - 0 Success - DESCRIPTION - Call optimize on each partition marked with partition state PART_CHANGED -*/ - -int ha_partition::optimize_partitions(THD *thd) -{ - DBUG_ENTER("ha_partition::optimize_partitions"); - - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - OPTIMIZE_PARTS, FALSE)); -} - -/* - Analyze partitions - - SYNOPSIS - analyze_partitions() - thd Thread object - RETURN VALUE - >0 Failure - 0 Success - DESCRIPTION - Call analyze on each partition marked with partition state PART_CHANGED -*/ - -int ha_partition::analyze_partitions(THD *thd) -{ - DBUG_ENTER("ha_partition::analyze_partitions"); - - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - ANALYZE_PARTS, FALSE)); -} - -/* - Check partitions - - SYNOPSIS - check_partitions() - thd Thread object - RETURN VALUE - >0 Failure - 0 Success - DESCRIPTION - Call check on each partition marked with partition state PART_CHANGED -*/ - -int ha_partition::check_partitions(THD *thd) -{ - DBUG_ENTER("ha_partition::check_partitions"); - - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - CHECK_PARTS, FALSE)); -} - -/* - Repair partitions - - SYNOPSIS - repair_partitions() - thd Thread object - RETURN VALUE - >0 Failure - 0 Success - DESCRIPTION - Call repair on each partition marked with partition state PART_CHANGED -*/ - -int ha_partition::repair_partitions(THD *thd) -{ - DBUG_ENTER("ha_partition::repair_partitions"); - - DBUG_RETURN(handle_opt_partitions(thd, &thd->lex->check_opt, - REPAIR_PARTS, FALSE)); -} - - /* Handle optimize/analyze/check/repair of one partition @@ -1028,7 +954,6 @@ int ha_partition::repair_partitions(THD *thd) 0 Success */ -#ifdef WL4176_IS_DONE static int handle_opt_part(THD *thd, HA_CHECK_OPT *check_opt, handler *file, uint flag) { @@ -1036,12 +961,6 @@ static int handle_opt_part(THD *thd, HA_CHECK_OPT *check_opt, DBUG_ENTER("handle_opt_part"); DBUG_PRINT("enter", ("flag = %u", flag)); - /* - TODO: - Rewrite the code for ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION WL4176 - */ - DBUG_RETURN(HA_ADMIN_NOT_IMPLEMENTED); - if (flag == OPTIMIZE_PARTS) error= file->ha_optimize(thd, check_opt); else if (flag == ANALYZE_PARTS) @@ -1059,7 +978,59 @@ static int handle_opt_part(THD *thd, HA_CHECK_OPT *check_opt, error= 0; DBUG_RETURN(error); } -#endif + + +/* + print a message row formatted for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE + (modelled after mi_check_print_msg) + TODO: move this into the handler, or rewrite mysql_admin_table. +*/ +static bool print_admin_msg(THD* thd, const char* msg_type, + const char* db_name, const char* table_name, + const char* op_name, const char *fmt, ...) +{ + va_list args; + Protocol *protocol= thd->protocol; + uint length, msg_length; + char msgbuf[MI_MAX_MSG_BUF]; + char name[NAME_LEN*2+2]; + + va_start(args, fmt); + msg_length= my_vsnprintf(msgbuf, sizeof(msgbuf), fmt, args); + va_end(args); + msgbuf[sizeof(msgbuf) - 1] = 0; // healthy paranoia + + + if (!thd->vio_ok()) + { + sql_print_error(msgbuf); + return TRUE; + } + + length=(uint) (strxmov(name, db_name, ".", table_name,NullS) - name); + /* + TODO: switch from protocol to push_warning here. The main reason we didn't + it yet is parallel repair. Due to following trace: + mi_check_print_msg/push_warning/sql_alloc/my_pthread_getspecific_ptr. + + Also we likely need to lock mutex here (in both cases with protocol and + push_warning). + */ + DBUG_PRINT("info",("print_admin_msg: %s, %s, %s, %s", name, op_name, + msg_type, msgbuf)); + protocol->prepare_for_resend(); + protocol->store(name, length, system_charset_info); + protocol->store(op_name, system_charset_info); + protocol->store(msg_type, system_charset_info); + protocol->store(msgbuf, msg_length, system_charset_info); + if (protocol->write()) + { + sql_print_error("Failed on my_net_write, writing to stderr instead: %s\n", + msgbuf); + return TRUE; + } + return FALSE; +} /* @@ -1080,55 +1051,89 @@ static int handle_opt_part(THD *thd, HA_CHECK_OPT *check_opt, int ha_partition::handle_opt_partitions(THD *thd, HA_CHECK_OPT *check_opt, uint flag, bool all_parts) { -#ifdef WL4176_IS_DONE List_iterator part_it(m_part_info->partitions); uint no_parts= m_part_info->no_parts; uint no_subparts= m_part_info->no_subparts; uint i= 0; int error; -#endif DBUG_ENTER("ha_partition::handle_opt_partitions"); DBUG_PRINT("enter", ("all_parts %u, flag= %u", all_parts, flag)); - /* - TODO: - Rewrite the code for ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION WL4176 - */ - DBUG_RETURN(HA_ADMIN_NOT_IMPLEMENTED); -#ifdef WL4176_IS_DONE do { partition_element *part_elem= part_it++; - if (all_parts || part_elem->part_state == PART_CHANGED) + /* + when ALTER TABLE PARTITION ... + it should only do named partitions, otherwise all partitions + */ + if (all_parts || + part_elem->part_state == PART_CHANGED) { if (m_is_sub_partitioned) { + List_iterator subpart_it(part_elem->subpartitions); + partition_element *sub_elem; uint j= 0, part; do { + sub_elem= subpart_it++; part= i * no_subparts + j; - DBUG_PRINT("info", ("Optimize subpartition %u", - part)); + DBUG_PRINT("info", ("Optimize subpartition %u (%s)", + part, sub_elem->partition_name)); +#ifdef NOT_USED + if (print_admin_msg(thd, "note", table_share->db.str, table->alias, + opt_op_name[flag], + "Start to operate on subpartition %s", + sub_elem->partition_name)) + DBUG_RETURN(HA_ADMIN_INTERNAL_ERROR); +#endif if ((error= handle_opt_part(thd, check_opt, m_file[part], flag))) { + /* print a line which partition the error belongs to */ + if (error != HA_ADMIN_NOT_IMPLEMENTED && + error != HA_ADMIN_ALREADY_DONE && + error != HA_ADMIN_TRY_ALTER) + { + print_admin_msg(thd, "error", table_share->db.str, table->alias, + opt_op_name[flag], + "Subpartition %s returned error", + sub_elem->partition_name); + } DBUG_RETURN(error); } } while (++j < no_subparts); } else { - DBUG_PRINT("info", ("Optimize partition %u", i)); + DBUG_PRINT("info", ("Optimize partition %u (%s)", i, + part_elem->partition_name)); +#ifdef NOT_USED + if (print_admin_msg(thd, "note", table_share->db.str, table->alias, + opt_op_name[flag], + "Start to operate on partition %s", + part_elem->partition_name)) + DBUG_RETURN(HA_ADMIN_INTERNAL_ERROR); +#endif if ((error= handle_opt_part(thd, check_opt, m_file[i], flag))) { + /* print a line which partition the error belongs to */ + if (error != HA_ADMIN_NOT_IMPLEMENTED && + error != HA_ADMIN_ALREADY_DONE && + error != HA_ADMIN_TRY_ALTER) + { + print_admin_msg(thd, "error", table_share->db.str, table->alias, + opt_op_name[flag], "Partition %s returned error", + part_elem->partition_name); + } DBUG_RETURN(error); } } } } while (++i < no_parts); DBUG_RETURN(FALSE); -#endif } + /* Prepare by creating a new partition diff --git a/sql/ha_partition.h b/sql/ha_partition.h index 2ec700978bc..e86dc5fea1a 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -932,10 +932,6 @@ public: virtual int analyze(THD* thd, HA_CHECK_OPT *check_opt); virtual int check(THD* thd, HA_CHECK_OPT *check_opt); virtual int repair(THD* thd, HA_CHECK_OPT *check_opt); - virtual int optimize_partitions(THD *thd); - virtual int analyze_partitions(THD *thd); - virtual int check_partitions(THD *thd); - virtual int repair_partitions(THD *thd); private: int handle_opt_partitions(THD *thd, HA_CHECK_OPT *check_opt, diff --git a/sql/handler.cc b/sql/handler.cc index fe4944ed836..e550295ebba 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -3284,66 +3284,6 @@ handler::ha_rename_partitions(const char *path) } -/** - Optimize partitions: public interface. - - @sa handler::optimize_partitions() -*/ - -int -handler::ha_optimize_partitions(THD *thd) -{ - mark_trx_read_write(); - - return optimize_partitions(thd); -} - - -/** - Analyze partitions: public interface. - - @sa handler::analyze_partitions() -*/ - -int -handler::ha_analyze_partitions(THD *thd) -{ - mark_trx_read_write(); - - return analyze_partitions(thd); -} - - -/** - Check partitions: public interface. - - @sa handler::check_partitions() -*/ - -int -handler::ha_check_partitions(THD *thd) -{ - mark_trx_read_write(); - - return check_partitions(thd); -} - - -/** - Repair partitions: public interface. - - @sa handler::repair_partitions() -*/ - -int -handler::ha_repair_partitions(THD *thd) -{ - mark_trx_read_write(); - - return repair_partitions(thd); -} - - /** Tell the storage engine that it is allowed to "disable transaction" in the handler. It is a hint that ACID is not required - it is used in NDB for diff --git a/sql/handler.h b/sql/handler.h index d674c07a57d..df6157f80b4 100644 --- a/sql/handler.h +++ b/sql/handler.h @@ -1247,10 +1247,6 @@ public: size_t pack_frm_len); int ha_drop_partitions(const char *path); int ha_rename_partitions(const char *path); - int ha_optimize_partitions(THD *thd); - int ha_analyze_partitions(THD *thd); - int ha_check_partitions(THD *thd); - int ha_repair_partitions(THD *thd); void adjust_next_insert_id_after_explicit_value(ulonglong nr); int update_auto_increment(); @@ -1911,14 +1907,6 @@ private: { return HA_ERR_WRONG_COMMAND; } virtual int rename_partitions(const char *path) { return HA_ERR_WRONG_COMMAND; } - virtual int optimize_partitions(THD *thd) - { return HA_ERR_WRONG_COMMAND; } - virtual int analyze_partitions(THD *thd) - { return HA_ERR_WRONG_COMMAND; } - virtual int check_partitions(THD *thd) - { return HA_ERR_WRONG_COMMAND; } - virtual int repair_partitions(THD *thd) - { return HA_ERR_WRONG_COMMAND; } }; diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h index f6ba5fc9739..e9deb479c5e 100644 --- a/sql/mysql_priv.h +++ b/sql/mysql_priv.h @@ -1571,6 +1571,8 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, char *db, const char *table_name, uint fast_alter_partition); +uint set_part_state(Alter_info *alter_info, partition_info *tab_part_info, + enum partition_state part_state); uint prep_alter_part_table(THD *thd, TABLE *table, Alter_info *alter_info, HA_CREATE_INFO *create_info, handlerton *old_db_type, diff --git a/sql/protocol.cc b/sql/protocol.cc index 5fe56724d08..4177cd0054d 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -788,6 +788,9 @@ bool Protocol_text::store(const char *from, size_t length, { CHARSET_INFO *tocs= this->thd->variables.character_set_results; #ifndef DBUG_OFF + DBUG_PRINT("info", ("Protocol_text::store field %u (%u): %s", field_pos, + field_count, from)); + DBUG_ASSERT(field_pos < field_count); DBUG_ASSERT(field_types == 0 || field_types[field_pos] == MYSQL_TYPE_DECIMAL || field_types[field_pos] == MYSQL_TYPE_BIT || diff --git a/sql/sql_partition.cc b/sql/sql_partition.cc index 121ee3c22b4..6419d336b9f 100644 --- a/sql/sql_partition.cc +++ b/sql/sql_partition.cc @@ -4079,6 +4079,38 @@ error: } +/* + Sets which partitions to be used in the command +*/ +uint set_part_state(Alter_info *alter_info, partition_info *tab_part_info, + enum partition_state part_state) +{ + uint part_count= 0; + uint no_parts_found= 0; + List_iterator part_it(tab_part_info->partitions); + + do + { + partition_element *part_elem= part_it++; + if ((alter_info->flags & ALTER_ALL_PARTITION) || + (is_name_in_list(part_elem->partition_name, + alter_info->partition_names))) + { + /* + Mark the partition. + I.e mark the partition as a partition to be "changed" by + analyzing/optimizing/rebuilding/checking/repairing + */ + no_parts_found++; + part_elem->part_state= part_state; + DBUG_PRINT("info", ("Setting part_state to %u for partition %s", + part_state, part_elem->partition_name)); + } + } while (++part_count < tab_part_info->no_parts); + return no_parts_found; +} + + /* Prepare for ALTER TABLE of partition structure @@ -4534,26 +4566,9 @@ that are reorganised. (alter_info->flags & ALTER_REPAIR_PARTITION) || (alter_info->flags & ALTER_REBUILD_PARTITION)) { + uint no_parts_found; uint no_parts_opt= alter_info->partition_names.elements; - uint part_count= 0; - uint no_parts_found= 0; - List_iterator part_it(tab_part_info->partitions); - - do - { - partition_element *part_elem= part_it++; - if ((alter_info->flags & ALTER_ALL_PARTITION) || - (is_name_in_list(part_elem->partition_name, - alter_info->partition_names))) - { - /* - Mark the partition as a partition to be "changed" by - analyzing/optimizing/rebuilding/checking/repairing - */ - no_parts_found++; - part_elem->part_state= PART_CHANGED; - } - } while (++part_count < tab_part_info->no_parts); + no_parts_found= set_part_state(alter_info, tab_part_info, PART_CHANGED); if (no_parts_found != no_parts_opt && (!(alter_info->flags & ALTER_ALL_PARTITION))) { @@ -6026,48 +6041,7 @@ uint fast_alter_partition_table(THD *thd, TABLE *table, lpt->pack_frm_len= 0; thd->work_part_info= part_info; - if (alter_info->flags & ALTER_OPTIMIZE_PARTITION || - alter_info->flags & ALTER_ANALYZE_PARTITION || - alter_info->flags & ALTER_CHECK_PARTITION || - alter_info->flags & ALTER_REPAIR_PARTITION) - { - /* - In this case the user has specified that he wants a set of partitions - to be optimised and the partition engine can handle optimising - partitions natively without requiring a full rebuild of the - partitions. - - In this case it is enough to call optimise_partitions, there is no - need to change frm files or anything else. - */ - int error; - written_bin_log= FALSE; - if (((alter_info->flags & ALTER_OPTIMIZE_PARTITION) && - (error= table->file->ha_optimize_partitions(thd))) || - ((alter_info->flags & ALTER_ANALYZE_PARTITION) && - (error= table->file->ha_analyze_partitions(thd))) || - ((alter_info->flags & ALTER_CHECK_PARTITION) && - (error= table->file->ha_check_partitions(thd))) || - ((alter_info->flags & ALTER_REPAIR_PARTITION) && - (error= table->file->ha_repair_partitions(thd)))) - { - if (error == HA_ADMIN_NOT_IMPLEMENTED) { - if (alter_info->flags & ALTER_OPTIMIZE_PARTITION) - my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "optimize partition"); - else if (alter_info->flags & ALTER_ANALYZE_PARTITION) - my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "analyze partition"); - else if (alter_info->flags & ALTER_CHECK_PARTITION) - my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "check partition"); - else if (alter_info->flags & ALTER_REPAIR_PARTITION) - my_error(ER_CHECK_NOT_IMPLEMENTED, MYF(0), "repair partition"); - else - table->file->print_error(error, MYF(0)); - } else - table->file->print_error(error, MYF(0)); - goto err; - } - } - else if (fast_alter_partition & HA_PARTITION_ONE_PHASE) + if (fast_alter_partition & HA_PARTITION_ONE_PHASE) { /* In the case where the engine supports one phase online partition diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2b3b5ef67d9..226facffe7c 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -4194,6 +4194,46 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, table->next_global= save_next_global; table->next_local= save_next_local; thd->open_options&= ~extra_open_options; +#ifdef WITH_PARTITION_STORAGE_ENGINE + if (table->table && table->table->part_info) + { + /* + Set up which partitions that should be processed + if ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION .. + */ + Alter_info *alter_info= &lex->alter_info; + + if (alter_info->flags & ALTER_ANALYZE_PARTITION || + alter_info->flags & ALTER_CHECK_PARTITION || + alter_info->flags & ALTER_OPTIMIZE_PARTITION || + alter_info->flags & ALTER_REPAIR_PARTITION) + { + uint no_parts_found; + uint no_parts_opt= alter_info->partition_names.elements; + no_parts_found= set_part_state(alter_info, table->table->part_info, + PART_CHANGED); + if (no_parts_found != no_parts_opt && + (!(alter_info->flags & ALTER_ALL_PARTITION))) + { + char buff[FN_REFLEN + MYSQL_ERRMSG_SIZE]; + uint length; + DBUG_PRINT("admin", ("sending non existent partition error")); + protocol->prepare_for_resend(); + protocol->store(table_name, system_charset_info); + protocol->store(operator_name, system_charset_info); + protocol->store(STRING_WITH_LEN("error"), system_charset_info); + length= my_snprintf(buff, sizeof(buff), + ER(ER_DROP_PARTITION_NON_EXISTENT), + table_name); + protocol->store(buff, length, system_charset_info); + if(protocol->write()) + goto err; + my_eof(thd); + goto err; + } + } + } +#endif } DBUG_PRINT("admin", ("table: 0x%lx", (long) table->table)); @@ -4428,9 +4468,17 @@ send_result_message: This is currently used only by InnoDB. ha_innobase::optimize() answers "try with alter", so here we close the table, do an ALTER TABLE, reopen the table and do ha_innobase::analyze() on it. + We have to end the row, so analyze could return more rows. */ + protocol->store(STRING_WITH_LEN("note"), system_charset_info); + protocol->store(STRING_WITH_LEN( + "Table does not support optimize, doing recreate + analyze instead"), + system_charset_info); + if (protocol->write()) + goto err; ha_autocommit_or_rollback(thd, 0); close_thread_tables(thd); + DBUG_PRINT("info", ("HA_ADMIN_TRY_ALTER, trying analyze...")); TABLE_LIST *save_next_local= table->next_local, *save_next_global= table->next_global; table->next_local= table->next_global= 0; @@ -4453,6 +4501,10 @@ send_result_message: ((result_code= table->table->file->ha_analyze(thd, check_opt)) > 0)) result_code= 0; // analyze went ok } + /* Start a new row for the final status row */ + protocol->prepare_for_resend(); + protocol->store(table_name, system_charset_info); + protocol->store(operator_name, system_charset_info); if (result_code) // either mysql_recreate_table or analyze failed { DBUG_ASSERT(thd->is_error()); @@ -4468,7 +4520,8 @@ send_result_message: /* Hijack the row already in-progress. */ protocol->store(STRING_WITH_LEN("error"), system_charset_info); protocol->store(err_msg, system_charset_info); - (void)protocol->write(); + if (protocol->write()) + goto err; /* Start off another row for HA_ADMIN_FAILED */ protocol->prepare_for_resend(); protocol->store(table_name, system_charset_info); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index ccd64c24960..c3f691ef808 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -5543,6 +5543,7 @@ alter_commands: all_or_alt_part_name_list { LEX *lex= Lex; + lex->sql_command = SQLCOM_OPTIMIZE; lex->alter_info.flags|= ALTER_OPTIMIZE_PARTITION; lex->no_write_to_binlog= $3; lex->check_opt.init(); @@ -5552,6 +5553,7 @@ alter_commands: all_or_alt_part_name_list { LEX *lex= Lex; + lex->sql_command = SQLCOM_ANALYZE; lex->alter_info.flags|= ALTER_ANALYZE_PARTITION; lex->no_write_to_binlog= $3; lex->check_opt.init(); @@ -5559,6 +5561,7 @@ alter_commands: | CHECK_SYM PARTITION_SYM all_or_alt_part_name_list { LEX *lex= Lex; + lex->sql_command = SQLCOM_CHECK; lex->alter_info.flags|= ALTER_CHECK_PARTITION; lex->check_opt.init(); } @@ -5567,6 +5570,7 @@ alter_commands: all_or_alt_part_name_list { LEX *lex= Lex; + lex->sql_command = SQLCOM_REPAIR; lex->alter_info.flags|= ALTER_REPAIR_PARTITION; lex->no_write_to_binlog= $3; lex->check_opt.init(); @@ -6009,6 +6013,7 @@ repair: lex->sql_command = SQLCOM_REPAIR; lex->no_write_to_binlog= $2; lex->check_opt.init(); + lex->alter_info.reset(); } table_list opt_mi_repair_type {} @@ -6037,6 +6042,7 @@ analyze: lex->sql_command = SQLCOM_ANALYZE; lex->no_write_to_binlog= $2; lex->check_opt.init(); + lex->alter_info.reset(); } table_list {} @@ -6062,6 +6068,7 @@ check: } lex->sql_command = SQLCOM_CHECK; lex->check_opt.init(); + lex->alter_info.reset(); } table_list opt_mi_check_type {} @@ -6093,6 +6100,7 @@ optimize: lex->sql_command = SQLCOM_OPTIMIZE; lex->no_write_to_binlog= $2; lex->check_opt.init(); + lex->alter_info.reset(); } table_list {} diff --git a/storage/myisam/mi_check.c b/storage/myisam/mi_check.c index 67216a4cf58..879c171520e 100644 --- a/storage/myisam/mi_check.c +++ b/storage/myisam/mi_check.c @@ -1338,7 +1338,7 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) if (splits != info->s->state.split) { mi_check_print_warning(param, - "Found %10s parts Should be: %s parts", + "Found %10s key parts. Should be: %s", llstr(splits,llbuff), llstr(info->s->state.split,llbuff2)); } From b4418b5c3ad3badbb1c55eafdc0a1584824a3202 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Mon, 11 Aug 2008 15:08:12 -0600 Subject: [PATCH 336/435] Bug#37302 (missing DBUG_RETURN macro in function "find_key_block" (5.0 only)) Fixed missing DBUG_RETURN in the function find_key_block --- mysys/mf_keycache.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mysys/mf_keycache.c b/mysys/mf_keycache.c index f27ade7bfc0..0720d172317 100644 --- a/mysys/mf_keycache.c +++ b/mysys/mf_keycache.c @@ -1382,7 +1382,7 @@ restart: /* We don't need the page in the cache: we are going to write on disk */ hash_link->requests--; unlink_hash(keycache, hash_link); - return 0; + DBUG_RETURN(0); } if (!(block->status & BLOCK_IN_FLUSH)) { @@ -1399,7 +1399,7 @@ restart: flag (see the code below that handles reading requests). */ free_block(keycache, block); - return 0; + DBUG_RETURN(0); } /* Wait intil the page is flushed on disk */ hash_link->requests--; @@ -1429,7 +1429,7 @@ restart: /* Invalidate page in the block if it has not been done yet */ if (block->status) free_block(keycache, block); - return 0; + DBUG_RETURN(0); } if (page_status == PAGE_READ && From 1912eaacc4872965492d97fc38f7f409530f4fc6 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 11 Aug 2008 20:27:09 -0300 Subject: [PATCH 337/435] Bug#38486: Crash when using cursor protocol Post-merge fix: mysql_client_test.c is compiled by C compilers and some C compilers don't support mixed declarations and code and it's explicitly forbidden by ISO C90. tests/mysql_client_test.c: Don't mix declarations and code. --- tests/mysql_client_test.c | 41 +++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index 4336bfa0c59..ac5473a1ccd 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -16196,25 +16196,28 @@ static void test_bug32265() static void test_bug38486(void) { - myheader("test_bug38486"); - - MYSQL_STMT *stmt; - stmt= mysql_stmt_init(mysql); - unsigned long type= CURSOR_TYPE_READ_ONLY; - mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*)&type); - const char *sql= "CREATE TABLE t1 (a INT)"; - mysql_stmt_prepare(stmt,sql,strlen(sql)); - - mysql_stmt_execute(stmt); - mysql_stmt_close(stmt); - - stmt= mysql_stmt_init(mysql); - mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*)&type); - const char *sql2= "INSERT INTO t1 VALUES (1)"; - mysql_stmt_prepare(stmt,sql2,strlen(sql2)); - mysql_stmt_execute(stmt); - - mysql_stmt_close(stmt); + MYSQL_STMT *stmt; + const char *stmt_text; + unsigned long type= CURSOR_TYPE_READ_ONLY; + + DBUG_ENTER("test_bug38486"); + myheader("test_bug38486"); + + stmt= mysql_stmt_init(mysql); + mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*)&type); + stmt_text= "CREATE TABLE t1 (a INT)"; + mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text)); + mysql_stmt_execute(stmt); + mysql_stmt_close(stmt); + + stmt= mysql_stmt_init(mysql); + mysql_stmt_attr_set(stmt, STMT_ATTR_CURSOR_TYPE, (void*)&type); + stmt_text= "INSERT INTO t1 VALUES (1)"; + mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text)); + mysql_stmt_execute(stmt); + mysql_stmt_close(stmt); + + DBUG_VOID_RETURN; } From bdab488391500e052d53fa312cbec46c5921d45a Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Tue, 12 Aug 2008 10:02:30 +0200 Subject: [PATCH 338/435] Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated result files after merge mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Updated result file after merge mysql-test/suite/parts/t/disabled.def: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Enabled two tests after fixing the bug. --- .../r/partition_alter1_1_2_innodb.result | 392 +- .../r/partition_alter1_1_2_myisam.result | 128 +- .../parts/r/partition_alter1_1_innodb.result | 224 +- .../parts/r/partition_alter1_1_myisam.result | 128 +- .../parts/r/partition_alter1_2_innodb.result | 560 +- .../parts/r/partition_alter1_2_myisam.result | 256 +- .../parts/r/partition_alter2_innodb.result | 1680 ++--- .../parts/r/partition_alter2_myisam.result | 1152 ++-- .../parts/r/partition_alter4_myisam.result | 5752 ++++++++--------- .../parts/r/partition_basic_innodb.result | 448 +- .../parts/r/partition_basic_myisam.result | 256 +- .../r/partition_basic_symlink_myisam.result | 312 +- .../parts/r/partition_engine_innodb.result | 77 +- .../parts/r/partition_engine_myisam.result | 88 +- mysql-test/suite/parts/t/disabled.def | 2 - 15 files changed, 5968 insertions(+), 5487 deletions(-) diff --git a/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result b/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result index 210d249c2f5..7d817bd419d 100644 --- a/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result +++ b/mysql-test/suite/parts/r/partition_alter1_1_2_innodb.result @@ -515,16 +515,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1004,16 +1005,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1501,16 +1503,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1994,16 +1997,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2485,16 +2489,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2980,16 +2985,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3477,16 +3483,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3970,16 +3977,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4460,16 +4468,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4949,16 +4958,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5446,16 +5456,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5939,16 +5950,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6430,16 +6442,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6925,16 +6938,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7422,16 +7436,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7915,16 +7930,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8422,16 +8438,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8927,16 +8944,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9440,16 +9458,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9949,16 +9968,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10456,16 +10476,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10967,16 +10988,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11480,16 +11502,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11989,16 +12012,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12495,16 +12519,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13000,16 +13025,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13513,16 +13539,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14022,16 +14049,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14529,16 +14557,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15040,16 +15069,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15553,16 +15583,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16062,16 +16093,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16554,16 +16586,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17044,16 +17077,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17542,16 +17576,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18036,16 +18071,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18528,16 +18564,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19024,16 +19061,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19522,16 +19560,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20016,16 +20055,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20507,16 +20547,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20997,16 +21038,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21495,16 +21537,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21989,16 +22032,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22481,16 +22525,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22977,16 +23022,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23475,16 +23521,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23969,16 +24016,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24460,16 +24508,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24950,16 +24999,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25448,16 +25498,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25942,16 +25993,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26434,16 +26486,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26930,16 +26983,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27428,16 +27482,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27922,16 +27977,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result b/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result index d93377694a6..07ad5b0e1e9 100644 --- a/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result +++ b/mysql-test/suite/parts/r/partition_alter1_1_2_myisam.result @@ -541,20 +541,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1062,20 +1062,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1597,20 +1597,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2124,20 +2124,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2653,20 +2653,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3186,20 +3186,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3721,20 +3721,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4254,20 +4254,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4770,20 +4770,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5291,20 +5291,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5826,20 +5826,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6353,20 +6353,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6882,20 +6882,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7415,20 +7415,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7950,20 +7950,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8483,20 +8483,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/r/partition_alter1_1_innodb.result b/mysql-test/suite/parts/r/partition_alter1_1_innodb.result index 68acfcc3a60..69cd4a26c89 100644 --- a/mysql-test/suite/parts/r/partition_alter1_1_innodb.result +++ b/mysql-test/suite/parts/r/partition_alter1_1_innodb.result @@ -833,16 +833,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1322,16 +1323,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1819,16 +1821,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2312,16 +2315,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2805,16 +2809,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3300,16 +3305,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3797,16 +3803,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4290,16 +4297,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4780,16 +4788,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5269,16 +5278,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5766,16 +5776,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6259,16 +6270,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6752,16 +6764,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7247,16 +7260,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7744,16 +7758,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8237,16 +8252,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8744,16 +8760,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9249,16 +9266,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9762,16 +9780,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10271,16 +10290,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10780,16 +10800,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11291,16 +11312,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11804,16 +11826,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12313,16 +12336,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12819,16 +12843,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13324,16 +13349,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13837,16 +13863,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14346,16 +14373,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14855,16 +14883,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15366,16 +15395,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15879,16 +15909,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16388,16 +16419,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/parts/r/partition_alter1_1_myisam.result b/mysql-test/suite/parts/r/partition_alter1_1_myisam.result index 3b6832d06ae..3565e02e5ae 100644 --- a/mysql-test/suite/parts/r/partition_alter1_1_myisam.result +++ b/mysql-test/suite/parts/r/partition_alter1_1_myisam.result @@ -700,20 +700,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1221,20 +1221,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1756,20 +1756,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2283,20 +2283,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2814,20 +2814,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3347,20 +3347,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3882,20 +3882,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4415,20 +4415,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4931,20 +4931,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5452,20 +5452,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5987,20 +5987,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6514,20 +6514,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7045,20 +7045,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7578,20 +7578,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8113,20 +8113,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8646,20 +8646,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/r/partition_alter1_2_innodb.result b/mysql-test/suite/parts/r/partition_alter1_2_innodb.result index 685b9909553..1d2346b95e3 100644 --- a/mysql-test/suite/parts/r/partition_alter1_2_innodb.result +++ b/mysql-test/suite/parts/r/partition_alter1_2_innodb.result @@ -462,16 +462,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -899,16 +900,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1344,16 +1346,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1785,16 +1788,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2226,16 +2230,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2669,16 +2674,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3114,16 +3120,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3555,16 +3562,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3993,16 +4001,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4430,16 +4439,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4875,16 +4885,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5316,16 +5327,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5757,16 +5769,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6200,16 +6213,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6645,16 +6659,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7086,16 +7101,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7540,16 +7556,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7993,16 +8010,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8454,16 +8472,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8911,16 +8930,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9368,16 +9388,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9827,16 +9848,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10288,16 +10310,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10745,16 +10768,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11187,16 +11211,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11624,16 +11649,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12069,16 +12095,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12510,16 +12537,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12949,16 +12977,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13392,16 +13421,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13837,16 +13867,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14278,16 +14309,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14716,16 +14748,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15153,16 +15186,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15598,16 +15632,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16039,16 +16074,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16478,16 +16514,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16921,16 +16958,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17366,16 +17404,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17807,16 +17846,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18262,16 +18302,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18715,16 +18756,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19176,16 +19218,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19633,16 +19676,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20088,16 +20132,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20547,16 +20592,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21008,16 +21054,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21465,16 +21512,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21919,16 +21967,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22372,16 +22421,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22833,16 +22883,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23290,16 +23341,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23745,16 +23797,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24204,16 +24257,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24665,16 +24719,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25122,16 +25177,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25561,16 +25617,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25998,16 +26055,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26443,16 +26501,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26884,16 +26943,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27323,16 +27383,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27766,16 +27827,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -28211,16 +28273,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -28652,16 +28715,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29090,16 +29154,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29527,16 +29592,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29972,16 +30038,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30413,16 +30480,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30852,16 +30920,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -31295,16 +31364,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -31740,16 +31810,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -32181,16 +32252,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -32635,16 +32707,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -33088,16 +33161,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -33549,16 +33623,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -34006,16 +34081,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -34461,16 +34537,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -34920,16 +34997,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -35381,16 +35459,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -35838,16 +35917,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/parts/r/partition_alter1_2_myisam.result b/mysql-test/suite/parts/r/partition_alter1_2_myisam.result index ce80c58aa3a..811ddf5384e 100644 --- a/mysql-test/suite/parts/r/partition_alter1_2_myisam.result +++ b/mysql-test/suite/parts/r/partition_alter1_2_myisam.result @@ -487,20 +487,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -956,20 +956,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1439,20 +1439,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1914,20 +1914,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2393,20 +2393,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2874,20 +2874,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3357,20 +3357,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3838,20 +3838,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4306,20 +4306,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4775,20 +4775,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5258,20 +5258,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5733,20 +5733,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6210,20 +6210,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6691,20 +6691,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7174,20 +7174,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7655,20 +7655,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8119,20 +8119,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8588,20 +8588,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9071,20 +9071,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9546,20 +9546,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10023,20 +10023,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10504,20 +10504,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10987,20 +10987,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11468,20 +11468,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11932,20 +11932,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12401,20 +12401,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12884,20 +12884,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13359,20 +13359,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13836,20 +13836,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14317,20 +14317,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14800,20 +14800,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15281,20 +15281,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/r/partition_alter2_innodb.result b/mysql-test/suite/parts/r/partition_alter2_innodb.result index 7000cb7e7ae..a39ff23ad65 100644 --- a/mysql-test/suite/parts/r/partition_alter2_innodb.result +++ b/mysql-test/suite/parts/r/partition_alter2_innodb.result @@ -479,16 +479,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -932,16 +933,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1393,16 +1395,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1850,16 +1853,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2307,16 +2311,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2766,16 +2771,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3227,16 +3233,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3684,16 +3691,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4175,16 +4183,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4664,16 +4673,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5161,16 +5171,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5654,16 +5665,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6147,16 +6159,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6642,16 +6655,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7139,16 +7153,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7632,16 +7647,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8122,16 +8138,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8611,16 +8628,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9108,16 +9126,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9601,16 +9620,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10094,16 +10114,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10589,16 +10610,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11086,16 +11108,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11579,16 +11602,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12086,16 +12110,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12591,16 +12616,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13104,16 +13130,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13613,16 +13640,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14122,16 +14150,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14633,16 +14662,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15146,16 +15176,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15655,16 +15686,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16161,16 +16193,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16666,16 +16699,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17179,16 +17213,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17688,16 +17723,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18197,16 +18233,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18708,16 +18745,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19221,16 +19259,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19730,16 +19769,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20189,16 +20229,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20642,16 +20683,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21103,16 +21145,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21560,16 +21603,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22017,16 +22061,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22476,16 +22521,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22937,16 +22983,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23394,16 +23441,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23848,16 +23896,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24301,16 +24350,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24762,16 +24812,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25219,16 +25270,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25674,16 +25726,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26133,16 +26186,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26594,16 +26648,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27051,16 +27106,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27542,16 +27598,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -28031,16 +28088,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -28528,16 +28586,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29021,16 +29080,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29514,16 +29574,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30009,16 +30070,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30506,16 +30568,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30999,16 +31062,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -31489,16 +31553,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -31978,16 +32043,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -32475,16 +32541,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -32968,16 +33035,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -33459,16 +33527,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -33954,16 +34023,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -34451,16 +34521,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -34944,16 +35015,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -35434,16 +35506,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -35923,16 +35996,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -36420,16 +36494,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -36913,16 +36988,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -37406,16 +37482,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -37901,16 +37978,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -38398,16 +38476,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -38891,16 +38970,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -39381,16 +39461,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -39870,16 +39951,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -40367,16 +40449,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -40860,16 +40943,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -41351,16 +41435,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -41846,16 +41931,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -42343,16 +42429,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -42836,16 +42923,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -43343,16 +43431,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -43848,16 +43937,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -44361,16 +44451,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -44870,16 +44961,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -45379,16 +45471,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -45890,16 +45983,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -46403,16 +46497,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -46912,16 +47007,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -47418,16 +47514,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -47923,16 +48020,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -48436,16 +48534,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -48945,16 +49044,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -49452,16 +49552,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -49963,16 +50064,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -50476,16 +50578,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -50985,16 +51088,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -51491,16 +51595,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -51996,16 +52101,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -52509,16 +52615,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -53018,16 +53125,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -53527,16 +53635,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -54038,16 +54147,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -54551,16 +54661,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -55060,16 +55171,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -55566,16 +55678,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -56071,16 +56184,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -56584,16 +56698,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -57093,16 +57208,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -57600,16 +57716,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -58111,16 +58228,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -58624,16 +58742,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -59133,16 +59252,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -59598,16 +59718,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -60053,16 +60174,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -60516,16 +60638,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -60973,16 +61096,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -61432,16 +61556,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -61891,16 +62016,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -62354,16 +62480,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -62813,16 +62940,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -63305,16 +63433,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -63796,16 +63925,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -64295,16 +64425,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -64788,16 +64919,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -65283,16 +65415,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -65778,16 +65911,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -66277,16 +66411,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -66772,16 +66907,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -67264,16 +67400,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -67755,16 +67892,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -68254,16 +68392,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -68747,16 +68886,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -69242,16 +69382,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -69737,16 +69878,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -70236,16 +70378,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -70731,16 +70874,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -71240,16 +71384,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -71747,16 +71892,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -72262,16 +72408,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -72771,16 +72918,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -73282,16 +73430,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -73793,16 +73942,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -74308,16 +74458,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -74819,16 +74970,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -75327,16 +75479,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -75834,16 +75987,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -76349,16 +76503,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -76858,16 +77013,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -77369,16 +77525,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -77880,16 +78037,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -78395,16 +78553,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -78906,16 +79065,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -79367,16 +79527,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -79823,16 +79984,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -80287,16 +80449,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -80749,16 +80912,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -81209,16 +81373,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -81673,16 +81838,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -82137,16 +82303,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -82597,16 +82764,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -83054,16 +83222,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -83510,16 +83679,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -83974,16 +84144,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -84436,16 +84607,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -84896,16 +85068,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -85360,16 +85533,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -85824,16 +85998,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -86284,16 +86459,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -86778,16 +86954,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -87270,16 +87447,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -87770,16 +87948,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -88268,16 +88447,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -88764,16 +88944,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -89264,16 +89445,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -89764,16 +89946,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -90260,16 +90443,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -90753,16 +90937,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -91245,16 +91430,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -91745,16 +91931,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -92243,16 +92430,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -92739,16 +92927,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -93239,16 +93428,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -93739,16 +93929,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -94235,16 +94426,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -94728,16 +94920,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -95220,16 +95413,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -95720,16 +95914,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -96218,16 +96413,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -96714,16 +96910,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -97214,16 +97411,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -97714,16 +97912,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -98210,16 +98409,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -98703,16 +98903,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -99195,16 +99396,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -99695,16 +99897,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -100193,16 +100396,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -100689,16 +100893,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -101189,16 +101394,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -101689,16 +101895,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -102185,16 +102392,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -102695,16 +102903,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -103203,16 +103412,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -103719,16 +103929,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -104233,16 +104444,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -104745,16 +104957,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -105261,16 +105474,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -105777,16 +105991,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -106289,16 +106504,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -106798,16 +107014,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -107306,16 +107523,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -107822,16 +108040,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -108336,16 +108555,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -108848,16 +109068,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -109364,16 +109585,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -109880,16 +110102,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -110392,16 +110615,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -110901,16 +111125,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -111409,16 +111634,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -111925,16 +112151,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -112439,16 +112666,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -112951,16 +113179,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -113467,16 +113696,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -113983,16 +114213,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -114495,16 +114726,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -115004,16 +115236,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -115512,16 +115745,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -116028,16 +116262,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -116542,16 +116777,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -117054,16 +117290,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -117570,16 +117807,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -118086,16 +118324,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -118598,16 +118837,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/parts/r/partition_alter2_myisam.result b/mysql-test/suite/parts/r/partition_alter2_myisam.result index 4111a19ace5..e9b1e1c86ef 100644 --- a/mysql-test/suite/parts/r/partition_alter2_myisam.result +++ b/mysql-test/suite/parts/r/partition_alter2_myisam.result @@ -489,20 +489,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -958,20 +958,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1441,20 +1441,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1916,20 +1916,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2395,20 +2395,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2876,20 +2876,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3359,20 +3359,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3840,20 +3840,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4357,20 +4357,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4878,20 +4878,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5413,20 +5413,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5940,20 +5940,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6471,20 +6471,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7004,20 +7004,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7539,20 +7539,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8072,20 +8072,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8588,20 +8588,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9109,20 +9109,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9644,20 +9644,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10171,20 +10171,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10702,20 +10702,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11235,20 +11235,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11770,20 +11770,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12303,20 +12303,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12772,20 +12772,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13241,20 +13241,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13724,20 +13724,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14199,20 +14199,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14678,20 +14678,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15159,20 +15159,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15642,20 +15642,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -16123,20 +16123,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -16587,20 +16587,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -17056,20 +17056,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -17539,20 +17539,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -18014,20 +18014,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -18491,20 +18491,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -18972,20 +18972,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -19455,20 +19455,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -19936,20 +19936,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -20453,20 +20453,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -20974,20 +20974,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -21509,20 +21509,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -22036,20 +22036,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -22567,20 +22567,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -23100,20 +23100,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -23635,20 +23635,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -24168,20 +24168,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -24684,20 +24684,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -25205,20 +25205,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -25740,20 +25740,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -26267,20 +26267,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -26796,20 +26796,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -27329,20 +27329,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -27864,20 +27864,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -28397,20 +28397,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -28913,20 +28913,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -29434,20 +29434,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -29969,20 +29969,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -30496,20 +30496,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -31027,20 +31027,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -31560,20 +31560,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -32095,20 +32095,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -32628,20 +32628,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -33144,20 +33144,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -33665,20 +33665,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -34200,20 +34200,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -34727,20 +34727,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -35256,20 +35256,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -35789,20 +35789,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -36324,20 +36324,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -36857,20 +36857,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -37332,20 +37332,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -37803,20 +37803,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -38288,20 +38288,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -38763,20 +38763,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -39244,20 +39244,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -39725,20 +39725,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -40210,20 +40210,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -40693,20 +40693,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -41212,20 +41212,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -41735,20 +41735,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -42272,20 +42272,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -42799,20 +42799,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -43332,20 +43332,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -43865,20 +43865,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -44402,20 +44402,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -44937,20 +44937,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -45455,20 +45455,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -45978,20 +45978,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -46515,20 +46515,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -47042,20 +47042,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -47575,20 +47575,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -48108,20 +48108,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -48645,20 +48645,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -49180,20 +49180,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -49651,20 +49651,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -50123,20 +50123,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -50609,20 +50609,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -51089,20 +51089,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -51571,20 +51571,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -52057,20 +52057,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -52543,20 +52543,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -53027,20 +53027,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -53494,20 +53494,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -53966,20 +53966,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -54452,20 +54452,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -54932,20 +54932,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -55414,20 +55414,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -55900,20 +55900,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -56386,20 +56386,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -56870,20 +56870,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -57390,20 +57390,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -57914,20 +57914,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -58452,20 +58452,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -58984,20 +58984,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -59518,20 +59518,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -60056,20 +60056,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -60594,20 +60594,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -61130,20 +61130,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -61649,20 +61649,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -62173,20 +62173,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -62711,20 +62711,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -63243,20 +63243,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -63777,20 +63777,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -64315,20 +64315,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -64853,20 +64853,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -65389,20 +65389,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -65908,20 +65908,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -66432,20 +66432,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -66970,20 +66970,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -67502,20 +67502,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -68036,20 +68036,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -68574,20 +68574,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -69112,20 +69112,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -69648,20 +69648,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -70167,20 +70167,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -70691,20 +70691,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -71229,20 +71229,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -71761,20 +71761,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -72295,20 +72295,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -72833,20 +72833,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -73371,20 +73371,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -73907,20 +73907,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/r/partition_alter4_myisam.result b/mysql-test/suite/parts/r/partition_alter4_myisam.result index ec7a612c6f3..e8d0e2afa37 100644 --- a/mysql-test/suite/parts/r/partition_alter4_myisam.result +++ b/mysql-test/suite/parts/r/partition_alter4_myisam.result @@ -77,12 +77,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -542,18 +542,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -1021,24 +1021,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -1504,20 +1504,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -1979,24 +1979,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -2464,24 +2464,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -2947,24 +2947,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -3428,26 +3428,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -3909,12 +3909,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -4374,18 +4374,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -4853,24 +4853,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -5336,20 +5336,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -5811,24 +5811,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -6296,24 +6296,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -6779,24 +6779,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -7260,26 +7260,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -7741,12 +7741,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -8206,18 +8206,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -8685,24 +8685,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -9168,20 +9168,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -9643,24 +9643,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -10128,24 +10128,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -10611,24 +10611,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -11092,26 +11092,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -11573,12 +11573,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -12038,18 +12038,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -12517,24 +12517,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -13000,20 +13000,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -13475,24 +13475,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -13960,24 +13960,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -14443,24 +14443,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -14924,26 +14924,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -15405,12 +15405,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -15870,18 +15870,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -16349,24 +16349,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -16832,20 +16832,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -17307,24 +17307,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -17792,24 +17792,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -18275,24 +18275,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -18756,26 +18756,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -19240,12 +19240,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -19705,18 +19705,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -20184,24 +20184,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -20667,20 +20667,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -21142,24 +21142,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -21627,24 +21627,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -22110,24 +22110,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -22591,26 +22591,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -23072,12 +23072,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -23537,18 +23537,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -24016,24 +24016,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -24499,20 +24499,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -24974,24 +24974,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -25459,24 +25459,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -25942,24 +25942,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -26423,26 +26423,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -26904,12 +26904,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -27369,18 +27369,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -27848,24 +27848,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -28331,20 +28331,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -28806,24 +28806,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -29291,24 +29291,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -29774,24 +29774,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -30255,26 +30255,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -30736,12 +30736,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -31201,18 +31201,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -31680,24 +31680,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -32163,20 +32163,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -32638,24 +32638,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -33123,24 +33123,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -33606,24 +33606,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -34087,26 +34087,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -34568,12 +34568,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -35033,18 +35033,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -35512,24 +35512,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -35995,20 +35995,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -36470,24 +36470,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -36955,24 +36955,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -37438,24 +37438,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -37919,26 +37919,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -38403,12 +38403,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -38868,18 +38868,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -39347,24 +39347,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -39830,20 +39830,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -40305,24 +40305,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -40790,24 +40790,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -41273,24 +41273,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -41754,26 +41754,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -42235,12 +42235,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -42700,18 +42700,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -43179,24 +43179,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -43662,20 +43662,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -44137,24 +44137,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -44622,24 +44622,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -45105,24 +45105,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -45586,26 +45586,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -46067,12 +46067,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -46532,18 +46532,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -47011,24 +47011,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -47494,20 +47494,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -47969,24 +47969,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -48454,24 +48454,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -48937,24 +48937,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -49418,26 +49418,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -49899,12 +49899,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -50364,18 +50364,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -50843,24 +50843,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -51326,20 +51326,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -51801,24 +51801,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -52286,24 +52286,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -52769,24 +52769,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -53250,26 +53250,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -53731,12 +53731,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -54196,18 +54196,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -54675,24 +54675,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -55158,20 +55158,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -55633,24 +55633,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -56118,24 +56118,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -56601,24 +56601,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -57082,26 +57082,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -57564,12 +57564,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -58027,18 +58027,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -58504,24 +58504,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -58985,20 +58985,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -59458,24 +59458,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -59941,24 +59941,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -60422,24 +60422,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -60901,26 +60901,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -61380,12 +61380,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -61843,18 +61843,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -62320,24 +62320,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -62801,20 +62801,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -63274,24 +63274,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -63757,24 +63757,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -64238,24 +64238,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -64717,26 +64717,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -65516,12 +65516,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -65979,18 +65979,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -66456,24 +66456,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -66937,20 +66937,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -67410,24 +67410,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -67893,24 +67893,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -68374,24 +68374,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -68853,26 +68853,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -69337,12 +69337,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -69802,18 +69802,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -70281,24 +70281,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -70764,20 +70764,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -71239,24 +71239,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -71724,24 +71724,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -72207,24 +72207,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -72688,26 +72688,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -73169,12 +73169,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -73634,18 +73634,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -74113,24 +74113,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -74596,20 +74596,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -75071,24 +75071,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -75556,24 +75556,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -76039,24 +76039,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -76520,26 +76520,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -77001,12 +77001,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -77466,18 +77466,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -77945,24 +77945,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -78428,20 +78428,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -78903,24 +78903,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -79388,24 +79388,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -79871,24 +79871,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -80352,26 +80352,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -80833,12 +80833,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -81298,18 +81298,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -81777,24 +81777,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -82260,20 +82260,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -82735,24 +82735,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -83220,24 +83220,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -83703,24 +83703,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -84184,26 +84184,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -84665,12 +84665,12 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -85130,18 +85130,18 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = MyISAM, PARTITION part_2 ENGINE = MyISAM, PARTITION part_3 ENGINE = MyISAM, PARTITION part_4 ENGINE = MyISAM, PARTITION part_5 ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -85609,24 +85609,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part0.MYD +t1#P#part0.MYI +t1#P#part1.MYD +t1#P#part1.MYI +t1#P#part2.MYD +t1#P#part2.MYI +t1#P#part3.MYD +t1#P#part3.MYI +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_N.MYD +t1#P#part_N.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -86092,20 +86092,20 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_1 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_5.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1.MYD +t1#P#part_1.MYI +t1#P#part_2.MYD +t1#P#part_2.MYI +t1#P#part_3.MYD +t1#P#part_3.MYI +t1#P#part_4.MYD +t1#P#part_4.MYI +t1#P#part_5.MYD +t1#P#part_5.MYI +t1#P#parta.MYD +t1#P#parta.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -86567,24 +86567,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION part_2 VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION part_3 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#part_4sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_4#SP#part_4sp0.MYD +t1#P#part_4#SP#part_4sp0.MYI +t1#P#part_4#SP#part_4sp1.MYD +t1#P#part_4#SP#part_4sp1.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -87052,24 +87052,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#subpart12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#subpart22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#subpart32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#subpart42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#subpart11.MYD +t1#P#part_1#SP#subpart11.MYI +t1#P#part_1#SP#subpart12.MYD +t1#P#part_1#SP#subpart12.MYI +t1#P#part_2#SP#subpart21.MYD +t1#P#part_2#SP#subpart21.MYI +t1#P#part_2#SP#subpart22.MYD +t1#P#part_2#SP#subpart22.MYI +t1#P#part_3#SP#subpart31.MYD +t1#P#part_3#SP#subpart31.MYI +t1#P#part_3#SP#subpart32.MYD +t1#P#part_3#SP#subpart32.MYI +t1#P#part_4#SP#subpart41.MYD +t1#P#part_4#SP#subpart41.MYI +t1#P#part_4#SP#subpart42.MYD +t1#P#part_4#SP#subpart42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -87535,24 +87535,24 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp11.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#sp12.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp21.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#sp22.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp31.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#sp32.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp41.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_4#SP#sp42.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#sp11.MYD +t1#P#part_1#SP#sp11.MYI +t1#P#part_1#SP#sp12.MYD +t1#P#part_1#SP#sp12.MYI +t1#P#part_2#SP#sp21.MYD +t1#P#part_2#SP#sp21.MYI +t1#P#part_2#SP#sp22.MYD +t1#P#part_2#SP#sp22.MYI +t1#P#part_3#SP#sp31.MYD +t1#P#part_3#SP#sp31.MYI +t1#P#part_3#SP#sp32.MYD +t1#P#part_3#SP#sp32.MYI +t1#P#part_4#SP#sp41.MYD +t1#P#part_4#SP#sp41.MYI +t1#P#part_4#SP#sp42.MYD +t1#P#part_4#SP#sp42.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -88016,26 +88016,26 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = MyISAM, PARTITION part_2 VALUES IN (1) ENGINE = MyISAM, PARTITION part_3 VALUES IN (NULL) ENGINE = MyISAM) */ unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1#SP#part_1sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2#SP#part_2sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp0.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYD -$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3#SP#part_3sp2.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm -$MYSQLTEST_VARDIR/master-data/test/t1.par +t1#P#part_1#SP#part_1sp0.MYD +t1#P#part_1#SP#part_1sp0.MYI +t1#P#part_1#SP#part_1sp1.MYD +t1#P#part_1#SP#part_1sp1.MYI +t1#P#part_1#SP#part_1sp2.MYD +t1#P#part_1#SP#part_1sp2.MYI +t1#P#part_2#SP#part_2sp0.MYD +t1#P#part_2#SP#part_2sp0.MYI +t1#P#part_2#SP#part_2sp1.MYD +t1#P#part_2#SP#part_2sp1.MYI +t1#P#part_2#SP#part_2sp2.MYD +t1#P#part_2#SP#part_2sp2.MYI +t1#P#part_3#SP#part_3sp0.MYD +t1#P#part_3#SP#part_3sp0.MYI +t1#P#part_3#SP#part_3sp1.MYD +t1#P#part_3#SP#part_3sp1.MYI +t1#P#part_3#SP#part_3sp2.MYD +t1#P#part_3#SP#part_3sp2.MYI +t1.frm +t1.par # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -88498,9 +88498,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -88958,9 +88958,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -89426,9 +89426,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -89892,9 +89892,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -90356,9 +90356,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -90824,9 +90824,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -91292,9 +91292,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 @@ -91756,9 +91756,9 @@ t1 CREATE TABLE `t1` ( ) ENGINE=MyISAM DEFAULT CHARSET=latin1 unified filelist -$MYSQLTEST_VARDIR/master-data/test/t1.MYD -$MYSQLTEST_VARDIR/master-data/test/t1.MYI -$MYSQLTEST_VARDIR/master-data/test/t1.frm +t1.MYD +t1.MYI +t1.frm # check prerequisites-1 success: 1 # check COUNT(*) success: 1 diff --git a/mysql-test/suite/parts/r/partition_basic_innodb.result b/mysql-test/suite/parts/r/partition_basic_innodb.result index 1c340d913bf..2f6e58b186a 100644 --- a/mysql-test/suite/parts/r/partition_basic_innodb.result +++ b/mysql-test/suite/parts/r/partition_basic_innodb.result @@ -482,16 +482,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -934,16 +935,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1394,16 +1396,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1850,16 +1853,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2306,16 +2310,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2764,16 +2769,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3228,16 +3234,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3684,16 +3691,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4138,16 +4146,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4590,16 +4599,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5050,16 +5060,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5506,16 +5517,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5960,16 +5972,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6418,16 +6431,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -6878,16 +6892,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7334,16 +7349,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -7829,16 +7845,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8318,16 +8335,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -8815,16 +8833,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9308,16 +9327,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -9801,16 +9821,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10296,16 +10317,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -10797,16 +10819,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11290,16 +11313,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -11780,16 +11804,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12269,16 +12294,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -12766,16 +12792,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13259,16 +13286,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -13752,16 +13780,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14247,16 +14276,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -14748,16 +14778,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15241,16 +15272,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -15747,16 +15779,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16252,16 +16285,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -16765,16 +16799,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17274,16 +17309,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -17783,16 +17819,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18294,16 +18331,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -18811,16 +18849,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19320,16 +19359,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -19815,16 +19855,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20304,16 +20345,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -20801,16 +20843,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21294,16 +21337,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -21785,16 +21829,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22280,16 +22325,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -22777,16 +22823,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23270,16 +23317,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -23760,16 +23808,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24249,16 +24298,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -24746,16 +24796,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25239,16 +25290,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -25730,16 +25782,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26225,16 +26278,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -26722,16 +26776,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27215,16 +27270,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -27721,16 +27777,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -28226,16 +28283,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -28739,16 +28797,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29248,16 +29307,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -29755,16 +29815,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30266,16 +30327,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -30779,16 +30841,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -31288,16 +31351,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/parts/r/partition_basic_myisam.result b/mysql-test/suite/parts/r/partition_basic_myisam.result index 72592d8ee92..abb9518f89a 100644 --- a/mysql-test/suite/parts/r/partition_basic_myisam.result +++ b/mysql-test/suite/parts/r/partition_basic_myisam.result @@ -488,20 +488,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -952,20 +952,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1430,20 +1430,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1900,20 +1900,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2374,20 +2374,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2850,20 +2850,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3332,20 +3332,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3808,20 +3808,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4268,20 +4268,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4732,20 +4732,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5210,20 +5210,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5680,20 +5680,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6152,20 +6152,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6628,20 +6628,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7106,20 +7106,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7582,20 +7582,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8099,20 +8099,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8616,20 +8616,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9147,20 +9147,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9670,20 +9670,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10197,20 +10197,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10726,20 +10726,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11261,20 +11261,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11790,20 +11790,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12307,20 +12307,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12824,20 +12824,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13355,20 +13355,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13878,20 +13878,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14403,20 +14403,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14932,20 +14932,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15463,20 +15463,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15992,20 +15992,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/r/partition_basic_symlink_myisam.result b/mysql-test/suite/parts/r/partition_basic_symlink_myisam.result index 658e255dfac..2d7df9225ac 100644 --- a/mysql-test/suite/parts/r/partition_basic_symlink_myisam.result +++ b/mysql-test/suite/parts/r/partition_basic_symlink_myisam.result @@ -502,20 +502,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -991,20 +991,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1493,20 +1493,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1987,20 +1987,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2485,20 +2485,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2981,20 +2981,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3499,20 +3499,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3999,20 +3999,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4469,20 +4469,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4958,20 +4958,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5460,20 +5460,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5954,20 +5954,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6450,20 +6450,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -6946,20 +6946,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7464,20 +7464,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -7964,20 +7964,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -8491,20 +8491,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9033,20 +9033,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -9588,20 +9588,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10135,20 +10135,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -10686,20 +10686,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11235,20 +11235,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -11806,20 +11806,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12359,20 +12359,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -12886,20 +12886,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13428,20 +13428,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -13983,20 +13983,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -14530,20 +14530,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15079,20 +15079,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -15628,20 +15628,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -16199,20 +16199,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -16752,20 +16752,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -17273,20 +17273,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -17805,20 +17805,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -18353,20 +18353,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -18888,20 +18888,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -19427,20 +19427,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -19968,20 +19968,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -20529,20 +20529,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/r/partition_engine_innodb.result b/mysql-test/suite/parts/r/partition_engine_innodb.result index 4aad4c3c36a..638b1fc67e6 100644 --- a/mysql-test/suite/parts/r/partition_engine_innodb.result +++ b/mysql-test/suite/parts/r/partition_engine_innodb.result @@ -473,16 +473,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -927,16 +928,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1380,16 +1382,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -1896,16 +1899,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2388,16 +2392,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -2841,16 +2846,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3296,16 +3302,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -3749,16 +3756,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4205,16 +4213,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -4656,16 +4665,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text @@ -5105,16 +5115,17 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize note Table does not support optimize, doing recreate + analyze instead +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text diff --git a/mysql-test/suite/parts/r/partition_engine_myisam.result b/mysql-test/suite/parts/r/partition_engine_myisam.result index 79fdfbb62b0..233bffd75b0 100644 --- a/mysql-test/suite/parts/r/partition_engine_myisam.result +++ b/mysql-test/suite/parts/r/partition_engine_myisam.result @@ -483,20 +483,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -947,20 +947,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1414,20 +1414,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -1944,20 +1944,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2450,20 +2450,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -2917,20 +2917,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3382,20 +3382,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -3849,20 +3849,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4319,20 +4319,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -4778,20 +4778,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; @@ -5237,20 +5237,20 @@ AND f_int2 <> CAST(f_char1 AS SIGNED INT) AND f_charbig = '####updated per insert trigger####'; ANALYZE TABLE t1; Table Op Msg_type Msg_text -test.t1 analyze note The storage engine for the table doesn't support analyze +test.t1 analyze status OK CHECK TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 check note The storage engine for the table doesn't support check +test.t1 check status OK CHECKSUM TABLE t1 EXTENDED; Table Checksum test.t1 OPTIMIZE TABLE t1; Table Op Msg_type Msg_text -test.t1 optimize note The storage engine for the table doesn't support optimize +test.t1 optimize status OK # check layout success: 1 REPAIR TABLE t1 EXTENDED; Table Op Msg_type Msg_text -test.t1 repair note The storage engine for the table doesn't support repair +test.t1 repair status OK # check layout success: 1 TRUNCATE t1; diff --git a/mysql-test/suite/parts/t/disabled.def b/mysql-test/suite/parts/t/disabled.def index c2707f5a763..1885e17d73d 100644 --- a/mysql-test/suite/parts/t/disabled.def +++ b/mysql-test/suite/parts/t/disabled.def @@ -7,5 +7,3 @@ 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 -partition_alter4_myisam : Bug#20129 / WL#4176 -partition_alter4_innodb : Bug#20129 / WL#4176 From 44d0fcddf1fa63510dfddc80c4bf4f224839d006 Mon Sep 17 00:00:00 2001 From: He Zhenxing Date: Tue, 12 Aug 2008 17:09:36 +0800 Subject: [PATCH 339/435] Apply tomas's patch to fix rpl_row_basic.test, this can fix BUG#37884, BUG#38369, enable rpl_row_basic_7ndb test --- mysql-test/extra/rpl_tests/rpl_row_basic.test | 68 +++++++++++------- .../suite/rpl/r/rpl_row_basic_2myisam.result | 26 ++++--- .../suite/rpl/r/rpl_row_basic_3innodb.result | 26 ++++--- .../suite/rpl_ndb/r/rpl_row_basic_7ndb.result | 71 ++++++++++++++++++- mysql-test/suite/rpl_ndb/t/disabled.def | 1 - 5 files changed, 146 insertions(+), 46 deletions(-) diff --git a/mysql-test/extra/rpl_tests/rpl_row_basic.test b/mysql-test/extra/rpl_tests/rpl_row_basic.test index 4be7ad54cb3..91894e12726 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_basic.test +++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test @@ -309,52 +309,54 @@ sync_slave_with_master; # 7. Replicating UTF-8 CHAR(255) to CHAR(255) UTF-8 connection master; -CREATE TABLE t1 (i INT NOT NULL, - c CHAR(16) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t1 (i INT NOT NULL, + c CHAR(16) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; -CREATE TABLE t2 (i INT NOT NULL, - c CHAR(16) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t2 (i INT NOT NULL, + c CHAR(16) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; sync_slave_with_master; ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; connection master; -CREATE TABLE t3 (i INT NOT NULL, - c CHAR(128) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t3 (i INT NOT NULL, + c CHAR(128) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; sync_slave_with_master; ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; connection master; -CREATE TABLE t4 (i INT NOT NULL, - c CHAR(128) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t4 (i INT NOT NULL, + c CHAR(128) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; -CREATE TABLE t5 (i INT NOT NULL, - c CHAR(255) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t5 (i INT NOT NULL, + c CHAR(255) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; sync_slave_with_master; ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; connection master; -CREATE TABLE t6 (i INT NOT NULL, - c CHAR(255) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t6 (i INT NOT NULL, + c CHAR(255) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; sync_slave_with_master; ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; connection master; -CREATE TABLE t7 (i INT NOT NULL, - c CHAR(255) CHARACTER SET utf8 NOT NULL, - j INT NOT NULL); +eval CREATE TABLE t7 (i INT NOT NULL, + c CHAR(255) CHARACTER SET utf8 NOT NULL, + j INT NOT NULL) ENGINE = $type ; --echo [expecting slave to replicate correctly] connection master; INSERT INTO t1 VALUES (1, "", 1); INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); +sync_slave_with_master; + let $diff_table_1=master:test.t1; let $diff_table_2=slave:test.t1; source include/diff_tables.inc; @@ -364,6 +366,8 @@ connection master; INSERT INTO t2 VALUES (1, "", 1); INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2); +sync_slave_with_master; + let $diff_table_1=master:test.t2; let $diff_table_2=slave:test.t2; source include/diff_tables.inc; @@ -379,7 +383,11 @@ let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); disable_query_log; eval SELECT "$last_error" AS Last_SQL_Error; enable_query_log; -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +connection master; +RESET MASTER; +connection slave; +STOP SLAVE; +RESET SLAVE; START SLAVE; source include/wait_for_slave_to_start.inc; @@ -388,6 +396,8 @@ connection master; INSERT INTO t4 VALUES (1, "", 1); INSERT INTO t4 VALUES (2, repeat(_utf8'a', 128), 2); +sync_slave_with_master; + let $diff_table_1=master:test.t4; let $diff_table_2=slave:test.t4; source include/diff_tables.inc; @@ -403,7 +413,11 @@ let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); disable_query_log; eval SELECT "$last_error" AS Last_SQL_Error; enable_query_log; -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +connection master; +RESET MASTER; +connection slave; +STOP SLAVE; +RESET SLAVE; START SLAVE; source include/wait_for_slave_to_start.inc; @@ -418,7 +432,11 @@ let $last_error = query_get_value("SHOW SLAVE STATUS", Last_SQL_Error, 1); disable_query_log; eval SELECT "$last_error" AS Last_SQL_Error; enable_query_log; -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +connection master; +RESET MASTER; +connection slave; +STOP SLAVE; +RESET SLAVE; START SLAVE; source include/wait_for_slave_to_start.inc; @@ -427,6 +445,8 @@ connection master; INSERT INTO t7 VALUES (1, "", 1); INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); +sync_slave_with_master; + let $diff_table_1=master:test.t7; let $diff_table_2=slave:test.t7; source include/diff_tables.inc; diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result index a001a771541..4cb1b037345 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result @@ -453,29 +453,29 @@ a b c DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; CREATE TABLE t1 (i INT NOT NULL, c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; CREATE TABLE t2 (i INT NOT NULL, c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; CREATE TABLE t3 (i INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; CREATE TABLE t4 (i INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; CREATE TABLE t5 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; CREATE TABLE t6 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; CREATE TABLE t7 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'MYISAM' ; [expecting slave to replicate correctly] INSERT INTO t1 VALUES (1, "", 1); INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); @@ -489,7 +489,9 @@ INSERT INTO t3 VALUES (1, "", 1); INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); Last_SQL_Error Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +RESET MASTER; +STOP SLAVE; +RESET SLAVE; START SLAVE; [expecting slave to replicate correctly] INSERT INTO t4 VALUES (1, "", 1); @@ -500,14 +502,18 @@ INSERT INTO t5 VALUES (1, "", 1); INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); Last_SQL_Error Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +RESET MASTER; +STOP SLAVE; +RESET SLAVE; START SLAVE; [expecting slave to stop] INSERT INTO t6 VALUES (1, "", 1); INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); Last_SQL_Error Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +RESET MASTER; +STOP SLAVE; +RESET SLAVE; START SLAVE; [expecting slave to replicate correctly] INSERT INTO t7 VALUES (1, "", 1); diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result index b67902f414a..913ca8d4a49 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result @@ -453,29 +453,29 @@ a b c DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; CREATE TABLE t1 (i INT NOT NULL, c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; CREATE TABLE t2 (i INT NOT NULL, c CHAR(16) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; CREATE TABLE t3 (i INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; CREATE TABLE t4 (i INT NOT NULL, c CHAR(128) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; CREATE TABLE t5 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; CREATE TABLE t6 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; CREATE TABLE t7 (i INT NOT NULL, c CHAR(255) CHARACTER SET utf8 NOT NULL, -j INT NOT NULL); +j INT NOT NULL) ENGINE = 'INNODB' ; [expecting slave to replicate correctly] INSERT INTO t1 VALUES (1, "", 1); INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); @@ -489,7 +489,9 @@ INSERT INTO t3 VALUES (1, "", 1); INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); Last_SQL_Error Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +RESET MASTER; +STOP SLAVE; +RESET SLAVE; START SLAVE; [expecting slave to replicate correctly] INSERT INTO t4 VALUES (1, "", 1); @@ -500,14 +502,18 @@ INSERT INTO t5 VALUES (1, "", 1); INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); Last_SQL_Error Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +RESET MASTER; +STOP SLAVE; +RESET SLAVE; START SLAVE; [expecting slave to stop] INSERT INTO t6 VALUES (1, "", 1); INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); Last_SQL_Error Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. -SET GLOBAL SQL_SLAVE_SKIP_COUNTER=8; +RESET MASTER; +STOP SLAVE; +RESET SLAVE; START SLAVE; [expecting slave to replicate correctly] INSERT INTO t7 VALUES (1, "", 1); diff --git a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result index b1554bec156..c2cbb6885f2 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result @@ -437,7 +437,7 @@ SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 set @@global.slave_exec_mode= default; Last_SQL_Error -0 + SELECT COUNT(*) FROM t1 ORDER BY c1,c2; COUNT(*) 0 **** Test for BUG#37076 **** @@ -451,3 +451,72 @@ SELECT * FROM t1; a b c 2005-11-14 01:01:01 2005-11-14 01:01:02 2005-11-14 DROP TABLE IF EXISTS t1,t2,t3,t4,t5,t6,t7,t8; +CREATE TABLE t1 (i INT NOT NULL, +c CHAR(16) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +CREATE TABLE t2 (i INT NOT NULL, +c CHAR(16) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +ALTER TABLE t2 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t3 (i INT NOT NULL, +c CHAR(128) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +ALTER TABLE t3 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t4 (i INT NOT NULL, +c CHAR(128) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +CREATE TABLE t5 (i INT NOT NULL, +c CHAR(255) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +ALTER TABLE t5 MODIFY c CHAR(16) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t6 (i INT NOT NULL, +c CHAR(255) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +ALTER TABLE t6 MODIFY c CHAR(128) CHARACTER SET utf8 NOT NULL; +CREATE TABLE t7 (i INT NOT NULL, +c CHAR(255) CHARACTER SET utf8 NOT NULL, +j INT NOT NULL) ENGINE = 'NDB' ; +[expecting slave to replicate correctly] +INSERT INTO t1 VALUES (1, "", 1); +INSERT INTO t1 VALUES (2, repeat(_utf8'a', 16), 2); +Comparing tables master:test.t1 and slave:test.t1 +[expecting slave to replicate correctly] +INSERT INTO t2 VALUES (1, "", 1); +INSERT INTO t2 VALUES (2, repeat(_utf8'a', 16), 2); +Comparing tables master:test.t2 and slave:test.t2 +[expecting slave to stop] +INSERT INTO t3 VALUES (1, "", 1); +INSERT INTO t3 VALUES (2, repeat(_utf8'a', 128), 2); +Last_SQL_Error +Table definition on master and slave does not match: Column 1 size mismatch - master has size 384, test.t3 on slave has size 49. Master's column size should be <= the slave's column size. +RESET MASTER; +STOP SLAVE; +RESET SLAVE; +START SLAVE; +[expecting slave to replicate correctly] +INSERT INTO t4 VALUES (1, "", 1); +INSERT INTO t4 VALUES (2, repeat(_utf8'a', 128), 2); +Comparing tables master:test.t4 and slave:test.t4 +[expecting slave to stop] +INSERT INTO t5 VALUES (1, "", 1); +INSERT INTO t5 VALUES (2, repeat(_utf8'a', 255), 2); +Last_SQL_Error +Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t5 on slave has size 49. Master's column size should be <= the slave's column size. +RESET MASTER; +STOP SLAVE; +RESET SLAVE; +START SLAVE; +[expecting slave to stop] +INSERT INTO t6 VALUES (1, "", 1); +INSERT INTO t6 VALUES (2, repeat(_utf8'a', 255), 2); +Last_SQL_Error +Table definition on master and slave does not match: Column 1 size mismatch - master has size 765, test.t6 on slave has size 385. Master's column size should be <= the slave's column size. +RESET MASTER; +STOP SLAVE; +RESET SLAVE; +START SLAVE; +[expecting slave to replicate correctly] +INSERT INTO t7 VALUES (1, "", 1); +INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); +Comparing tables master:test.t7 and slave:test.t7 +drop table t1, t2, t3, t4, t5, t6, t7; diff --git a/mysql-test/suite/rpl_ndb/t/disabled.def b/mysql-test/suite/rpl_ndb/t/disabled.def index 7010fba26b2..ebc99feeac6 100644 --- a/mysql-test/suite/rpl_ndb/t/disabled.def +++ b/mysql-test/suite/rpl_ndb/t/disabled.def @@ -12,6 +12,5 @@ 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_row_basic_7ndb : Bug#38369 rpl_ndb.rpl_row_basic_7ndb fails # the below testcase have been reworked to avoid the bug, test contains comment, keep bug open From 7ea370d2a2360a1ee6a3205fd2b0f188309e9885 Mon Sep 17 00:00:00 2001 From: Marc Alff Date: Tue, 12 Aug 2008 17:05:19 -0600 Subject: [PATCH 340/435] Bug#38296 (low memory crash with many conditions in a query) This fix is for 5.1 only : back porting the 6.0 patch manually The parser code in sql/sql_yacc.yy needs to be more robust to out of memory conditions, so that when parsing a query fails due to OOM, the thread gracefully returns an error. Before this fix, a new/alloc returning NULL could: - cause a crash, if dereferencing the NULL pointer, - produce a corrupted parsed tree, containing NULL nodes, - alter the semantic of a query, by silently dropping token values or nodes With this fix: - C++ constructors are *not* executed with a NULL "this" pointer when operator new fails. This is achieved by declaring "operator new" with a "throw ()" clause, so that a failed new gracefully returns NULL on OOM conditions. - calls to new/alloc are tested for a NULL result, - The thread diagnostic area is set to an error status when OOM occurs. This ensures that a request failing in the server properly returns an ER_OUT_OF_RESOURCES error to the client. - OOM conditions cause the parser to stop immediately (MYSQL_YYABORT). This prevents causing further crashes when using a partially built parsed tree in further rules in the parser. No test scripts are provided, since automating OOM failures is not instrumented in the server. Tested under the debugger, to verify that an error in alloc_root cause the thread to returns gracefully all the way to the client application, with an ER_OUT_OF_RESOURCES error. --- sql/sql_yacc.yy | 1648 ++++++++++++++++++++++++++++++++++++--------- sql/thr_malloc.cc | 30 +- 2 files changed, 1342 insertions(+), 336 deletions(-) diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index ccd64c24960..b5bcbd4207f 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -1715,6 +1715,8 @@ create: } key= new Key($2, $4.str, &lex->key_create_info, 0, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); } @@ -1869,7 +1871,10 @@ opt_ev_status: ev_starts: /* empty */ { - Lex->event_parse_data->item_starts= new Item_func_now_local(); + Item *item= new (YYTHD->mem_root) Item_func_now_local(); + if (item == NULL) + MYSQL_YYABORT; + Lex->event_parse_data->item_starts= item; } | STARTS_SYM expr { @@ -2016,6 +2021,8 @@ sp_name: MYSQL_YYABORT; } $$= new sp_name($1, $3, true); + if ($$ == NULL) + MYSQL_YYABORT; $$->init_qname(YYTHD); } | ident @@ -2030,8 +2037,9 @@ sp_name: if (lex->copy_db_to(&db.str, &db.length)) MYSQL_YYABORT; $$= new sp_name(db, $1, false); - if ($$) - $$->init_qname(thd); + if ($$ == NULL) + MYSQL_YYABORT; + $$->init_qname(thd); } ; @@ -2268,6 +2276,7 @@ sp_decl: type sp_opt_default { + THD *thd= YYTHD; LEX *lex= Lex; sp_pcontext *pctx= lex->spcont; uint num_vars= pctx->context_var_count(); @@ -2276,7 +2285,9 @@ sp_decl: if (!dflt_value_item) { - dflt_value_item= new Item_null(); + dflt_value_item= new (thd->mem_root) Item_null(); + if (dflt_value_item == NULL) + MYSQL_YYABORT; /* QQ Set to the var_type with null_value? */ } @@ -2302,10 +2313,17 @@ sp_decl: /* The last instruction is responsible for freeing LEX. */ - lex->sphead->add_instr( - new sp_instr_set(lex->sphead->instructions(), pctx, var_idx, - dflt_value_item, var_type, lex, - (i == num_vars - 1))); + sp_instr_set *is= new sp_instr_set(lex->sphead->instructions(), + pctx, + var_idx, + dflt_value_item, + var_type, + lex, + (i == num_vars - 1)); + if (is == NULL) + MYSQL_YYABORT; + + lex->sphead->add_instr(is); } pctx->declare_var_boundary(0); @@ -2339,7 +2357,8 @@ sp_decl: sp_instr_hpush_jump *i= new sp_instr_hpush_jump(sp->instructions(), ctx, $2, ctx->current_var_count()); - + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); sp->push_backpatch(i, ctx->push_label((char *)"", 0)); } @@ -2355,12 +2374,15 @@ sp_decl: { i= new sp_instr_hreturn(sp->instructions(), ctx, ctx->current_var_count()); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); } else { /* EXIT or UNDO handler, just jump to the end of the block */ i= new sp_instr_hreturn(sp->instructions(), ctx, 0); - + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); sp->push_backpatch(i, lex->spcont->last_label()); /* Block end */ } @@ -2388,6 +2410,8 @@ sp_decl: } i= new sp_instr_cpush(sp->instructions(), ctx, $5, ctx->current_cursor_count()); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); ctx->push_cursor(&$2); $$.vars= $$.conds= $$.hndlrs= 0; @@ -2457,6 +2481,8 @@ sp_cond: ulong_num { /* mysql errno */ $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; $$->type= sp_cond_type_t::number; $$->mysqlerr= $1; } @@ -2468,6 +2494,8 @@ sp_cond: MYSQL_YYABORT; } $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; $$->type= sp_cond_type_t::state; memcpy($$->sqlstate, $3.str, 5); $$->sqlstate[5]= '\0'; @@ -2496,16 +2524,22 @@ sp_hcond: | SQLWARNING_SYM /* SQLSTATEs 01??? */ { $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; $$->type= sp_cond_type_t::warning; } | not FOUND_SYM /* SQLSTATEs 02??? */ { $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; $$->type= sp_cond_type_t::notfound; } | SQLEXCEPTION_SYM /* All other SQLSTATEs */ { $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); + if ($$ == NULL) + MYSQL_YYABORT; $$->type= sp_cond_type_t::exception; } ; @@ -2604,6 +2638,8 @@ sp_proc_stmt_statement: { sp_instr_stmt *i=new sp_instr_stmt(sp->instructions(), lex->spcont, lex); + if (i == NULL) + MYSQL_YYABORT; /* Extract the query statement from the tokenizer. The @@ -2642,6 +2678,8 @@ sp_proc_stmt_return: i= new sp_instr_freturn(sp->instructions(), lex->spcont, $3, sp->m_return_field_def.sql_type, lex); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); sp->m_flags|= sp_head::HAS_RETURN; } @@ -2752,6 +2790,8 @@ sp_proc_stmt_iterate: sp->add_instr(cpop); } i= new sp_instr_jump(ip, ctx, lab->ip); /* Jump back */ + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); } } @@ -2771,6 +2811,8 @@ sp_proc_stmt_open: MYSQL_YYABORT; } i= new sp_instr_copen(sp->instructions(), lex->spcont, offset); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); } ; @@ -2789,6 +2831,8 @@ sp_proc_stmt_fetch: MYSQL_YYABORT; } i= new sp_instr_cfetch(sp->instructions(), lex->spcont, offset); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); } sp_fetch_list @@ -2809,6 +2853,8 @@ sp_proc_stmt_close: MYSQL_YYABORT; } i= new sp_instr_cclose(sp->instructions(), lex->spcont, offset); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); } ; @@ -2872,6 +2918,8 @@ sp_if: uint ip= sp->instructions(); sp_instr_jump_if_not *i = new sp_instr_jump_if_not(ip, ctx, $2, lex); + if (i == NULL) + MYSQL_YYABORT; sp->push_backpatch(i, ctx->push_label((char *)"", 0)); sp->add_cont_backpatch(i); @@ -2884,6 +2932,8 @@ sp_if: sp_pcontext *ctx= Lex->spcont; uint ip= sp->instructions(); sp_instr_jump *i = new sp_instr_jump(ip, ctx); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); sp->backpatch(ctx->pop_label()); @@ -3007,6 +3057,8 @@ else_clause_opt: uint ip= sp->instructions(); sp_instr_error *i= new sp_instr_error(ip, lex->spcont, ER_SP_CASE_NOT_FOUND); + if (i == NULL) + MYSQL_YYABORT; sp->add_instr(i); } | ELSE sp_proc_stmts1 @@ -3115,14 +3167,23 @@ sp_block_content: LEX *lex= Lex; sp_head *sp= lex->sphead; sp_pcontext *ctx= lex->spcont; + sp_instr *i; sp->backpatch(ctx->last_label()); /* We always have a label */ if ($3.hndlrs) - sp->add_instr(new sp_instr_hpop(sp->instructions(), ctx, - $3.hndlrs)); + { + i= new sp_instr_hpop(sp->instructions(), ctx, $3.hndlrs); + if (i == NULL) + MYSQL_YYABORT; + sp->add_instr(i); + } if ($3.curs) - sp->add_instr(new sp_instr_cpop(sp->instructions(), ctx, - $3.curs)); + { + i= new sp_instr_cpop(sp->instructions(), ctx, $3.curs); + if (i == NULL) + MYSQL_YYABORT; + sp->add_instr(i); + } lex->spcont= ctx->pop_context(); } ; @@ -3135,7 +3196,8 @@ sp_unlabeled_control: uint ip= lex->sphead->instructions(); sp_label_t *lab= lex->spcont->last_label(); /* Jumping back */ sp_instr_jump *i = new sp_instr_jump(ip, lex->spcont, lab->ip); - + if (i == NULL) + MYSQL_YYABORT; lex->sphead->add_instr(i); } | WHILE_SYM @@ -3147,7 +3209,8 @@ sp_unlabeled_control: uint ip= sp->instructions(); sp_instr_jump_if_not *i = new sp_instr_jump_if_not(ip, lex->spcont, $3, lex); - + if (i == NULL) + MYSQL_YYABORT; /* Jumping forward */ sp->push_backpatch(i, lex->spcont->last_label()); sp->new_cont_backpatch(i); @@ -3160,7 +3223,8 @@ sp_unlabeled_control: uint ip= lex->sphead->instructions(); sp_label_t *lab= lex->spcont->last_label(); /* Jumping back */ sp_instr_jump *i = new sp_instr_jump(ip, lex->spcont, lab->ip); - + if (i == NULL) + MYSQL_YYABORT; lex->sphead->add_instr(i); lex->sphead->do_cont_backpatch(); } @@ -3174,6 +3238,8 @@ sp_unlabeled_control: sp_instr_jump_if_not *i = new sp_instr_jump_if_not(ip, lex->spcont, $5, lab->ip, lex); + if (i == NULL) + MYSQL_YYABORT; lex->sphead->add_instr(i); lex->sphead->restore_lex(YYTHD); /* We can shortcut the cont_backpatch here */ @@ -3390,6 +3456,8 @@ tablespace_name: { LEX *lex= Lex; lex->alter_tablespace_info= new st_alter_tablespace(); + if (lex->alter_tablespace_info == NULL) + MYSQL_YYABORT; lex->alter_tablespace_info->tablespace_name= $1.str; lex->sql_command= SQLCOM_ALTER_TABLESPACE; } @@ -3400,6 +3468,8 @@ logfile_group_name: { LEX *lex= Lex; lex->alter_tablespace_info= new st_alter_tablespace(); + if (lex->alter_tablespace_info == NULL) + MYSQL_YYABORT; lex->alter_tablespace_info->logfile_group_name= $1.str; lex->sql_command= SQLCOM_ALTER_TABLESPACE; } @@ -3775,7 +3845,10 @@ part_func: uint expr_len= (uint)($4 - $2) - 1; lex->part_info->list_of_part_fields= FALSE; lex->part_info->part_expr= $3; - lex->part_info->part_func_string= (char* ) sql_memdup($2+1, expr_len); + char *func_string= (char*) sql_memdup($2+1, expr_len); + if (func_string == NULL) + MYSQL_YYABORT; + lex->part_info->part_func_string= func_string; lex->part_info->part_func_len= expr_len; } ; @@ -3787,7 +3860,10 @@ sub_part_func: uint expr_len= (uint)($4 - $2) - 1; lex->part_info->list_of_subpart_fields= FALSE; lex->part_info->subpart_expr= $3; - lex->part_info->subpart_func_string= (char* ) sql_memdup($2+1, expr_len); + char *func_string= (char*) sql_memdup($2+1, expr_len); + if (func_string == NULL) + MYSQL_YYABORT; + lex->part_info->subpart_func_string= func_string; lex->part_info->subpart_func_len= expr_len; } ; @@ -4579,6 +4655,8 @@ key_def: } Key *key= new Key($1, $2, &lex->key_create_info, 0, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); /* Alloced by sql_alloc */ } @@ -4589,6 +4667,8 @@ key_def: const char *key_name= $3 ? $3 : $1; Key *key= new Key($2, key_name, &lex->key_create_info, 0, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); /* Alloced by sql_alloc */ } @@ -4603,10 +4683,14 @@ key_def: lex->fk_delete_opt, lex->fk_update_opt, lex->fk_match_option); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); key= new Key(Key::MULTIPLE, key_name, &default_key_create_info, 1, lex->col_list); + if (key == NULL) + MYSQL_YYABORT; lex->alter_info.key_list.push_back(key); lex->col_list.empty(); /* Alloced by sql_alloc */ /* Only used for ALTER TABLE. Ignored otherwise. */ @@ -4944,7 +5028,12 @@ attribute: | not NULL_SYM { Lex->type|= NOT_NULL_FLAG; } | DEFAULT now_or_signed_literal { Lex->default_value=$2; } | ON UPDATE_SYM NOW_SYM optional_braces - { Lex->on_update_value= new Item_func_now_local(); } + { + Item *item= new (YYTHD->mem_root) Item_func_now_local(); + if (item == NULL) + MYSQL_YYABORT; + Lex->on_update_value= item; + } | AUTO_INC { Lex->type|= AUTO_INCREMENT_FLAG | NOT_NULL_FLAG; } | SERIAL_SYM DEFAULT VALUE_SYM { @@ -4988,7 +5077,11 @@ attribute: now_or_signed_literal: NOW_SYM optional_braces - { $$= new Item_func_now_local(); } + { + $$= new (YYTHD->mem_root) Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; + } | signed_literal { $$=$1; } ; @@ -5125,8 +5218,20 @@ opt_ref_list: ; ref_list: - ref_list ',' ident { Lex->ref_list.push_back(new Key_part_spec($3.str)); } - | ident { Lex->ref_list.push_back(new Key_part_spec($1.str)); } + ref_list ',' ident + { + Key_part_spec *key= new Key_part_spec($3.str); + if (key == NULL) + MYSQL_YYABORT; + Lex->ref_list.push_back(key); + } + | ident + { + Key_part_spec *key= new Key_part_spec($1.str); + if (key == NULL) + MYSQL_YYABORT; + Lex->ref_list.push_back(key); + } ; opt_on_delete: @@ -5267,7 +5372,12 @@ key_list: ; key_part: - ident { $$=new Key_part_spec($1.str); } + ident + { + $$= new Key_part_spec($1.str); + if ($$ == NULL) + MYSQL_YYABORT; + } | ident '(' NUM ')' { int key_part_len= atoi($3.str); @@ -5275,7 +5385,9 @@ key_part: { my_error(ER_KEY_PART_0, MYF(0), $1.str); } - $$=new Key_part_spec($1.str,(uint) key_part_len); + $$= new Key_part_spec($1.str,(uint) key_part_len); + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -5635,7 +5747,7 @@ reorg_partition_rule: lex->part_info= new partition_info(); if (!lex->part_info) { - mem_alloc_error(sizeof(partition_info)); + mem_alloc_error(sizeof(partition_info)); MYSQL_YYABORT; } lex->no_write_to_binlog= $3; @@ -5735,8 +5847,10 @@ alter_list_item: | DROP opt_column field_ident opt_restrict { LEX *lex=Lex; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::COLUMN, - $3.str)); + Alter_drop *ad= new Alter_drop(Alter_drop::COLUMN, $3.str); + if (ad == NULL) + MYSQL_YYABORT; + lex->alter_info.drop_list.push_back(ad); lex->alter_info.flags|= ALTER_DROP_COLUMN; } | DROP FOREIGN KEY_SYM opt_ident @@ -5746,15 +5860,19 @@ alter_list_item: | DROP PRIMARY_SYM KEY_SYM { LEX *lex=Lex; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY, - primary_key_name)); + Alter_drop *ad= new Alter_drop(Alter_drop::KEY, primary_key_name); + if (ad == NULL) + MYSQL_YYABORT; + lex->alter_info.drop_list.push_back(ad); lex->alter_info.flags|= ALTER_DROP_INDEX; } | DROP key_or_index field_ident { LEX *lex=Lex; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY, - $3.str)); + Alter_drop *ad= new Alter_drop(Alter_drop::KEY, $3.str); + if (ad == NULL) + MYSQL_YYABORT; + lex->alter_info.drop_list.push_back(ad); lex->alter_info.flags|= ALTER_DROP_INDEX; } | DISABLE_SYM KEYS @@ -5772,14 +5890,19 @@ alter_list_item: | ALTER opt_column field_ident SET DEFAULT signed_literal { LEX *lex=Lex; - lex->alter_info.alter_list.push_back(new Alter_column($3.str,$6)); + Alter_column *ac= new Alter_column($3.str,$6); + if (ac == NULL) + MYSQL_YYABORT; + lex->alter_info.alter_list.push_back(ac); lex->alter_info.flags|= ALTER_CHANGE_COLUMN_DEFAULT; } | ALTER opt_column field_ident DROP DEFAULT { LEX *lex=Lex; - lex->alter_info.alter_list.push_back(new Alter_column($3.str, - (Item*) 0)); + Alter_column *ac= new Alter_column($3.str, (Item*) 0); + if (ac == NULL) + MYSQL_YYABORT; + lex->alter_info.alter_list.push_back(ac); lex->alter_info.flags|= ALTER_CHANGE_COLUMN_DEFAULT; } | RENAME opt_to table_ident @@ -6419,10 +6542,12 @@ select_item_list: | '*' { THD *thd= YYTHD; - if (add_item_to_list(thd, - new Item_field(&thd->lex->current_select-> - context, - NULL, NULL, "*"))) + Item *item= new (thd->mem_root) + Item_field(&thd->lex->current_select->context, + NULL, NULL, "*"); + if (item == NULL) + MYSQL_YYABORT; + if (add_item_to_list(thd, item)) MYSQL_YYABORT; (thd->lex->current_select->with_wild)++; } @@ -6533,12 +6658,16 @@ expr: { /* X OR Y */ $$ = new (YYTHD->mem_root) Item_cond_or($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; } } | expr XOR expr %prec XOR { /* XOR is a proprietary extension */ $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; } | expr and expr %prec AND_SYM { @@ -6579,36 +6708,86 @@ expr: { /* X AND Y */ $$ = new (YYTHD->mem_root) Item_cond_and($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; } } | NOT_SYM expr %prec NOT_SYM - { $$= negate_expression(YYTHD, $2); } + { + $$= negate_expression(YYTHD, $2); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS TRUE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_istrue($1); } + { + $$= new (YYTHD->mem_root) Item_func_istrue($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not TRUE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_isnottrue($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnottrue($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS FALSE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_isfalse($1); } + { + $$= new (YYTHD->mem_root) Item_func_isfalse($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not FALSE_SYM %prec IS - { $$= new (YYTHD->mem_root) Item_func_isnotfalse($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnotfalse($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS UNKNOWN_SYM %prec IS - { $$= new Item_func_isnull($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not UNKNOWN_SYM %prec IS - { $$= new Item_func_isnotnull($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnotnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri ; bool_pri: bool_pri IS NULL_SYM %prec IS - { $$= new Item_func_isnull($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri IS not NULL_SYM %prec IS - { $$= new Item_func_isnotnull($1); } + { + $$= new (YYTHD->mem_root) Item_func_isnotnull($1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM - { $$= new Item_func_equal($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_equal($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri comp_op predicate %prec EQ - { $$= (*$2)(0)->create($1,$3); } + { + $$= (*$2)(0)->create($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bool_pri comp_op all_or_any '(' subselect ')' %prec EQ - { $$= all_any_subquery_creator($1, $2, $3, $5); } + { + $$= all_any_subquery_creator($1, $2, $3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | predicate ; @@ -6616,87 +6795,193 @@ predicate: bit_expr IN_SYM '(' subselect ')' { $$= new (YYTHD->mem_root) Item_in_subselect($1, $4); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr not IN_SYM '(' subselect ')' { THD *thd= YYTHD; Item *item= new (thd->mem_root) Item_in_subselect($1, $5); + if (item == NULL) + MYSQL_YYABORT; $$= negate_expression(thd, item); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr IN_SYM '(' expr ')' { $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr IN_SYM '(' expr ',' expr_list ')' { $6->push_front($4); $6->push_front($1); $$= new (YYTHD->mem_root) Item_func_in(*$6); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr not IN_SYM '(' expr ')' { $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr not IN_SYM '(' expr ',' expr_list ')' { $7->push_front($5); $7->push_front($1); Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7); + if (item == NULL) + MYSQL_YYABORT; item->negate(); $$= item; } | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate - { $$= new Item_func_between($1,$3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate { - Item_func_between *item= new Item_func_between($1,$4,$6); + Item_func_between *item; + item= new (YYTHD->mem_root) Item_func_between($1,$4,$6); + if (item == NULL) + MYSQL_YYABORT; item->negate(); $$= item; } | bit_expr SOUNDS_SYM LIKE bit_expr { - $$= new Item_func_eq(new Item_func_soundex($1), - new Item_func_soundex($4)); + Item *item1= new (YYTHD->mem_root) Item_func_soundex($1); + Item *item4= new (YYTHD->mem_root) Item_func_soundex($4); + if ((item1 == NULL) || (item4 == NULL)) + MYSQL_YYABORT; + $$= new (YYTHD->mem_root) Item_func_eq(item1, item4); + if ($$ == NULL) + MYSQL_YYABORT; } | bit_expr LIKE simple_expr opt_escape - { $$= new Item_func_like($1,$3,$4,Lex->escape_used); } + { + $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr not LIKE simple_expr opt_escape - { $$= new Item_func_not(new Item_func_like($1,$4,$5, Lex->escape_used)); } - | bit_expr REGEXP bit_expr { $$= new Item_func_regex($1,$3); } + { + Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5, + Lex->escape_used); + if (item == NULL) + MYSQL_YYABORT; + $$= new (YYTHD->mem_root) Item_func_not(item); + if ($$ == NULL) + MYSQL_YYABORT; + } + | bit_expr REGEXP bit_expr + { + $$= new (YYTHD->mem_root) Item_func_regex($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr not REGEXP bit_expr - { $$= negate_expression(YYTHD, new Item_func_regex($1,$4)); } + { + Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4); + if (item == NULL) + MYSQL_YYABORT; + $$= negate_expression(YYTHD, item); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr ; bit_expr: bit_expr '|' bit_expr %prec '|' - { $$= new Item_func_bit_or($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '&' bit_expr %prec '&' - { $$= new Item_func_bit_and($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT - { $$= new Item_func_shift_left($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT - { $$= new Item_func_shift_right($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '+' bit_expr %prec '+' - { $$= new Item_func_plus($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_plus($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '-' bit_expr %prec '-' - { $$= new Item_func_minus($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_minus($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '+' INTERVAL_SYM expr interval %prec '+' - { $$= new Item_date_add_interval($1,$4,$5,0); } + { + $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '-' INTERVAL_SYM expr interval %prec '-' - { $$= new Item_date_add_interval($1,$4,$5,1); } + { + $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '*' bit_expr %prec '*' - { $$= new Item_func_mul($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_mul($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '/' bit_expr %prec '/' - { $$= new Item_func_div($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_div($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '%' bit_expr %prec '%' - { $$= new Item_func_mod($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_mod($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr DIV_SYM bit_expr %prec DIV_SYM - { $$= new Item_func_int_div($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_int_div($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr MOD_SYM bit_expr %prec MOD_SYM - { $$= new Item_func_mod($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_mod($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | bit_expr '^' bit_expr - { $$= new Item_func_bit_xor($1,$3); } + { + $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | simple_expr ; @@ -6746,45 +7031,80 @@ simple_expr: Item *i1= new (thd->mem_root) Item_string($3.str, $3.length, thd->charset()); + if (i1 == NULL) + MYSQL_YYABORT; $$= new (thd->mem_root) Item_func_set_collation($1, i1); + if ($$ == NULL) + MYSQL_YYABORT; } | literal | param_marker | variable | sum_expr | simple_expr OR_OR_SYM simple_expr - { $$= new (YYTHD->mem_root) Item_func_concat($1, $3); } - | '+' simple_expr %prec NEG { $$= $2; } + { + $$= new (YYTHD->mem_root) Item_func_concat($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '+' simple_expr %prec NEG + { + $$= $2; + } | '-' simple_expr %prec NEG - { $$= new (YYTHD->mem_root) Item_func_neg($2); } + { + $$= new (YYTHD->mem_root) Item_func_neg($2); + if ($$ == NULL) + MYSQL_YYABORT; + } | '~' simple_expr %prec NEG - { $$= new (YYTHD->mem_root) Item_func_bit_neg($2); } + { + $$= new (YYTHD->mem_root) Item_func_bit_neg($2); + if ($$ == NULL) + MYSQL_YYABORT; + } | not2 simple_expr %prec NEG - { $$= negate_expression(YYTHD, $2); } + { + $$= negate_expression(YYTHD, $2); + if ($$ == NULL) + MYSQL_YYABORT; + } | '(' subselect ')' { - $$= new (YYTHD->mem_root) Item_singlerow_subselect($2); + $$= new (YYTHD->mem_root) Item_singlerow_subselect($2); + if ($$ == NULL) + MYSQL_YYABORT; } - | '(' expr ')' { $$= $2; } + | '(' expr ')' + { $$= $2; } | '(' expr ',' expr_list ')' { $4->push_front($2); $$= new (YYTHD->mem_root) Item_row(*$4); + if ($$ == NULL) + MYSQL_YYABORT; } | ROW_SYM '(' expr ',' expr_list ')' { $5->push_front($3); $$= new (YYTHD->mem_root) Item_row(*$5); + if ($$ == NULL) + MYSQL_YYABORT; } | EXISTS '(' subselect ')' { - $$= new (YYTHD->mem_root) Item_exists_subselect($3); + $$= new (YYTHD->mem_root) Item_exists_subselect($3); + if ($$ == NULL) + MYSQL_YYABORT; } - | '{' ident expr '}' { $$= $3; } + | '{' ident expr '}' + { $$= $3; } | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' { $2->push_front($5); Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6); + if (i1 == NULL) + MYSQL_YYABORT; Select->add_ftfunc_to_list(i1); $$= i1; } @@ -6792,26 +7112,36 @@ simple_expr: { $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL, &my_charset_bin); + if ($$ == NULL) + MYSQL_YYABORT; } | CAST_SYM '(' expr AS cast_type ')' { LEX *lex= Lex; $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec, lex->charset); - if (!$$) + if ($$ == NULL) MYSQL_YYABORT; } | CASE_SYM opt_expr when_list opt_else END - { $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 ); } + { + $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 ); + if ($$ == NULL) + MYSQL_YYABORT; + } | CONVERT_SYM '(' expr ',' cast_type ')' { $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec, Lex->charset); - if (!$$) + if ($$ == NULL) MYSQL_YYABORT; } | CONVERT_SYM '(' expr USING charset_name ')' - { $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | DEFAULT '(' simple_ident ')' { if ($3->is_splocal()) @@ -6823,15 +7153,23 @@ simple_expr: } $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(), $3); + if ($$ == NULL) + MYSQL_YYABORT; } | VALUES '(' simple_ident_nospvar ')' { $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(), $3); + if ($$ == NULL) + MYSQL_YYABORT; } | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM /* we cannot put interval before - */ - { $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0); } + { + $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } ; /* @@ -6842,31 +7180,63 @@ simple_expr: */ function_call_keyword: CHAR_SYM '(' expr_list ')' - { $$= new (YYTHD->mem_root) Item_func_char(*$3); } + { + $$= new (YYTHD->mem_root) Item_func_char(*$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | CHAR_SYM '(' expr_list USING charset_name ')' - { $$= new (YYTHD->mem_root) Item_func_char(*$3, $5); } + { + $$= new (YYTHD->mem_root) Item_func_char(*$3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | CURRENT_USER optional_braces { $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context()); + if ($$ == NULL) + MYSQL_YYABORT; Lex->set_stmt_unsafe(); Lex->safe_to_cache_query= 0; } | DATE_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_date_typecast($3); } + { + $$= new (YYTHD->mem_root) Item_date_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | DAY_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_dayofmonth($3); } + { + $$= new (YYTHD->mem_root) Item_func_dayofmonth($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | HOUR_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_hour($3); } + { + $$= new (YYTHD->mem_root) Item_func_hour($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | INSERT '(' expr ',' expr ',' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9); } + { + $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9); + if ($$ == NULL) + MYSQL_YYABORT; + } | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM { THD *thd= YYTHD; List *list= new (thd->mem_root) List; + if (list == NULL) + MYSQL_YYABORT; list->push_front($5); list->push_front($3); Item_row *item= new (thd->mem_root) Item_row(*list); + if (item == NULL) + MYSQL_YYABORT; $$= new (thd->mem_root) Item_func_interval(item); + if ($$ == NULL) + MYSQL_YYABORT; } | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM { @@ -6874,48 +7244,122 @@ function_call_keyword: $7->push_front($5); $7->push_front($3); Item_row *item= new (thd->mem_root) Item_row(*$7); + if (item == NULL) + MYSQL_YYABORT; $$= new (thd->mem_root) Item_func_interval(item); + if ($$ == NULL) + MYSQL_YYABORT; } | LEFT '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_left($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_left($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | MINUTE_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_minute($3); } + { + $$= new (YYTHD->mem_root) Item_func_minute($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | MONTH_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_month($3); } + { + $$= new (YYTHD->mem_root) Item_func_month($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | RIGHT '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_right($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_right($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | SECOND_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_second($3); } + { + $$= new (YYTHD->mem_root) Item_func_second($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIME_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_time_typecast($3); } + { + $$= new (YYTHD->mem_root) Item_time_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP '(' expr ')' - { $$= new (YYTHD->mem_root) Item_datetime_typecast($3); } + { + $$= new (YYTHD->mem_root) Item_datetime_typecast($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0); } + { + $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_trim($3); } + { + $$= new (YYTHD->mem_root) Item_func_trim($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' LEADING expr FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4); } + { + $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' TRAILING expr FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4); } + { + $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' BOTH expr FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_trim($6,$4); } + { + $$= new (YYTHD->mem_root) Item_func_trim($6,$4); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' LEADING FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_ltrim($5); } + { + $$= new (YYTHD->mem_root) Item_func_ltrim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' TRAILING FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_rtrim($5); } + { + $$= new (YYTHD->mem_root) Item_func_rtrim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' BOTH FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_trim($5); } + { + $$= new (YYTHD->mem_root) Item_func_trim($5); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRIM '(' expr FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_trim($5,$3); } + { + $$= new (YYTHD->mem_root) Item_func_trim($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | USER '(' ')' { $$= new (YYTHD->mem_root) Item_func_user(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->set_stmt_unsafe(); Lex->safe_to_cache_query=0; } | YEAR_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_year($3); } + { + $$= new (YYTHD->mem_root) Item_func_year($3); + if ($$ == NULL) + MYSQL_YYABORT; + } ; /* @@ -6935,65 +7379,127 @@ function_call_nonkeyword: { $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5, INTERVAL_DAY, 0); + if ($$ == NULL) + MYSQL_YYABORT; } | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' - { $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0); } + { + $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | CURDATE optional_braces { $$= new (YYTHD->mem_root) Item_func_curdate_local(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | CURTIME optional_braces { $$= new (YYTHD->mem_root) Item_func_curtime_local(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | CURTIME '(' expr ')' { $$= new (YYTHD->mem_root) Item_func_curtime_local($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } - | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' %prec INTERVAL_SYM - { $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0); } - | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' %prec INTERVAL_SYM - { $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1); } + | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' + %prec INTERVAL_SYM + { + $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' + %prec INTERVAL_SYM + { + $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1); + if ($$ == NULL) + MYSQL_YYABORT; + } | EXTRACT_SYM '(' interval FROM expr ')' - { $$=new (YYTHD->mem_root) Item_extract( $3, $5); } + { + $$=new (YYTHD->mem_root) Item_extract( $3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | GET_FORMAT '(' date_time_type ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_get_format($3, $5); } + { + $$= new (YYTHD->mem_root) Item_func_get_format($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | NOW_SYM optional_braces { $$= new (YYTHD->mem_root) Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | NOW_SYM '(' expr ')' { $$= new (YYTHD->mem_root) Item_func_now_local($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | POSITION_SYM '(' bit_expr IN_SYM expr ')' - { $$ = new (YYTHD->mem_root) Item_func_locate($5,$3); } + { + $$ = new (YYTHD->mem_root) Item_func_locate($5,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBDATE_SYM '(' expr ',' expr ')' { $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5, INTERVAL_DAY, 1); + if ($$ == NULL) + MYSQL_YYABORT; } | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' - { $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1); } + { + $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr ',' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); } + { + $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_substr($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_substr($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr FROM expr FOR_SYM expr ')' - { $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); } + { + $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUBSTRING '(' expr FROM expr ')' - { $$= new (YYTHD->mem_root) Item_func_substr($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_substr($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | SYSDATE optional_braces { if (global_system_variables.sysdate_is_now == 0) $$= new (YYTHD->mem_root) Item_func_sysdate_local(); else $$= new (YYTHD->mem_root) Item_func_now_local(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | SYSDATE '(' expr ')' @@ -7002,25 +7508,41 @@ function_call_nonkeyword: $$= new (YYTHD->mem_root) Item_func_sysdate_local($3); else $$= new (YYTHD->mem_root) Item_func_now_local($3); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0); } + { + $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3); } + { + $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3); + if ($$ == NULL) + MYSQL_YYABORT; + } | UTC_DATE_SYM optional_braces { $$= new (YYTHD->mem_root) Item_func_curdate_utc(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | UTC_TIME_SYM optional_braces { $$= new (YYTHD->mem_root) Item_func_curtime_utc(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | UTC_TIMESTAMP_SYM optional_braces { $$= new (YYTHD->mem_root) Item_func_now_utc(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } ; @@ -7032,26 +7554,60 @@ function_call_nonkeyword: */ function_call_conflict: ASCII_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_ascii($3); } + { + $$= new (YYTHD->mem_root) Item_func_ascii($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | CHARSET '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_charset($3); } + { + $$= new (YYTHD->mem_root) Item_func_charset($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COALESCE '(' expr_list ')' - { $$= new (YYTHD->mem_root) Item_func_coalesce(* $3); } + { + $$= new (YYTHD->mem_root) Item_func_coalesce(* $3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COLLATION_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_collation($3); } + { + $$= new (YYTHD->mem_root) Item_func_collation($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | DATABASE '(' ')' { $$= new (YYTHD->mem_root) Item_func_database(); + if ($$ == NULL) + MYSQL_YYABORT; Lex->safe_to_cache_query=0; } | IF '(' expr ',' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7); } + { + $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | MICROSECOND_SYM '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_microsecond($3); } + { + $$= new (YYTHD->mem_root) Item_func_microsecond($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | MOD_SYM '(' expr ',' expr ')' - { $$ = new (YYTHD->mem_root) Item_func_mod( $3, $5); } + { + $$ = new (YYTHD->mem_root) Item_func_mod($3, $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | OLD_PASSWORD '(' expr ')' - { $$= new (YYTHD->mem_root) Item_func_old_password($3); } + { + $$= new (YYTHD->mem_root) Item_func_old_password($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | PASSWORD '(' expr ')' { THD *thd= YYTHD; @@ -7060,31 +7616,59 @@ function_call_conflict: i1= new (thd->mem_root) Item_func_old_password($3); else i1= new (thd->mem_root) Item_func_password($3); + if (i1 == NULL) + MYSQL_YYABORT; $$= i1; } | QUARTER_SYM '(' expr ')' - { $$ = new (YYTHD->mem_root) Item_func_quarter($3); } + { + $$ = new (YYTHD->mem_root) Item_func_quarter($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | REPEAT_SYM '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_repeat($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_repeat($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | REPLACE '(' expr ',' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7); } + { + $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7); + if ($$ == NULL) + MYSQL_YYABORT; + } | TRUNCATE_SYM '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_round($3,$5,1); } + { + $$= new (YYTHD->mem_root) Item_func_round($3,$5,1); + if ($$ == NULL) + MYSQL_YYABORT; + } | WEEK_SYM '(' expr ')' { THD *thd= YYTHD; Item *i1= new (thd->mem_root) Item_int((char*) "0", thd->variables.default_week_format, 1); - + if (i1 == NULL) + MYSQL_YYABORT; $$= new (thd->mem_root) Item_func_week($3, i1); + if ($$ == NULL) + MYSQL_YYABORT; } | WEEK_SYM '(' expr ',' expr ')' - { $$= new (YYTHD->mem_root) Item_func_week($3,$5); } + { + $$= new (YYTHD->mem_root) Item_func_week($3,$5); + if ($$ == NULL) + MYSQL_YYABORT; + } | geometry_function { #ifdef HAVE_SPATIAL $$= $1; + /* $1 may be NULL, GEOM_NEW not tested for out of memory */ + if ($$ == NULL) + MYSQL_YYABORT; #else my_error(ER_FEATURE_DISABLED, MYF(0), sym_group_geom.name, sym_group_geom.needed_define); @@ -7136,7 +7720,9 @@ geometry_function: Geometry::wkb_polygon)); } | POINT_SYM '(' expr ',' expr ')' - { $$= GEOM_NEW(YYTHD, Item_func_point($3,$5)); } + { + $$= GEOM_NEW(YYTHD, Item_func_point($3,$5)); + } | POLYGON '(' expr_list ')' { $$= GEOM_NEW(YYTHD, @@ -7281,6 +7867,8 @@ udf_expr_list: udf_expr { $$= new (YYTHD->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; $$->push_back($1); } | udf_expr_list ',' udf_expr @@ -7312,50 +7900,125 @@ udf_expr: sum_expr: AVG_SYM '(' in_sum_expr ')' - { $$=new Item_sum_avg($3); } + { + $$= new (YYTHD->mem_root) Item_sum_avg($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | AVG_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_avg_distinct($4); } + { + $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | BIT_AND '(' in_sum_expr ')' - { $$=new Item_sum_and($3); } + { + $$= new (YYTHD->mem_root) Item_sum_and($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | BIT_OR '(' in_sum_expr ')' - { $$=new Item_sum_or($3); } + { + $$= new (YYTHD->mem_root) Item_sum_or($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | BIT_XOR '(' in_sum_expr ')' - { $$=new Item_sum_xor($3); } + { + $$= new (YYTHD->mem_root) Item_sum_xor($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COUNT_SYM '(' opt_all '*' ')' - { $$=new Item_sum_count(new Item_int((int32) 0L,1)); } + { + Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1); + if (item == NULL) + MYSQL_YYABORT; + $$= new (YYTHD->mem_root) Item_sum_count(item); + if ($$ == NULL) + MYSQL_YYABORT; + } | COUNT_SYM '(' in_sum_expr ')' - { $$=new Item_sum_count($3); } + { + $$= new (YYTHD->mem_root) Item_sum_count($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | COUNT_SYM '(' DISTINCT { Select->in_sum_expr++; } expr_list { Select->in_sum_expr--; } ')' - { $$=new Item_sum_count_distinct(* $5); } + { + $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5); + if ($$ == NULL) + MYSQL_YYABORT; + } | MIN_SYM '(' in_sum_expr ')' - { $$=new Item_sum_min($3); } + { + $$= new (YYTHD->mem_root) Item_sum_min($3); + if ($$ == NULL) + MYSQL_YYABORT; + } /* According to ANSI SQL, DISTINCT is allowed and has no sense inside MIN and MAX grouping functions; so MIN|MAX(DISTINCT ...) is processed like an ordinary MIN | MAX() */ | MIN_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_min($4); } + { + $$= new (YYTHD->mem_root) Item_sum_min($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | MAX_SYM '(' in_sum_expr ')' - { $$=new Item_sum_max($3); } + { + $$= new (YYTHD->mem_root) Item_sum_max($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | MAX_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_max($4); } + { + $$= new (YYTHD->mem_root) Item_sum_max($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | STD_SYM '(' in_sum_expr ')' - { $$=new Item_sum_std($3, 0); } + { + $$= new (YYTHD->mem_root) Item_sum_std($3, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | VARIANCE_SYM '(' in_sum_expr ')' - { $$=new Item_sum_variance($3, 0); } + { + $$= new (YYTHD->mem_root) Item_sum_variance($3, 0); + if ($$ == NULL) + MYSQL_YYABORT; + } | STDDEV_SAMP_SYM '(' in_sum_expr ')' - { $$=new Item_sum_std($3, 1); } + { + $$= new (YYTHD->mem_root) Item_sum_std($3, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | VAR_SAMP_SYM '(' in_sum_expr ')' - { $$=new Item_sum_variance($3, 1); } + { + $$= new (YYTHD->mem_root) Item_sum_variance($3, 1); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUM_SYM '(' in_sum_expr ')' - { $$=new Item_sum_sum($3); } + { + $$= new (YYTHD->mem_root) Item_sum_sum($3); + if ($$ == NULL) + MYSQL_YYABORT; + } | SUM_SYM '(' DISTINCT in_sum_expr ')' - { $$=new Item_sum_sum_distinct($4); } + { + $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4); + if ($$ == NULL) + MYSQL_YYABORT; + } | GROUP_CONCAT_SYM '(' opt_distinct { Select->in_sum_expr++; } expr_list opt_gorder_clause @@ -7364,8 +8027,11 @@ sum_expr: { SELECT_LEX *sel= Select; sel->in_sum_expr--; - $$=new Item_func_group_concat(Lex->current_context(), $3, $5, - sel->gorder_list, $7); + $$= new (YYTHD->mem_root) + Item_func_group_concat(Lex->current_context(), $3, $5, + sel->gorder_list, $7); + if ($$ == NULL) + MYSQL_YYABORT; $5->empty(); } ; @@ -7388,13 +8054,17 @@ variable: variable_aux: ident_or_text SET_VAR expr { - $$= new Item_func_set_user_var($1, $3); + $$= new (YYTHD->mem_root) Item_func_set_user_var($1, $3); + if ($$ == NULL) + MYSQL_YYABORT; LEX *lex= Lex; lex->uncacheable(UNCACHEABLE_RAND); } | ident_or_text { - $$= new Item_func_get_user_var($1); + $$= new (YYTHD->mem_root) Item_func_get_user_var($1); + if ($$ == NULL) + MYSQL_YYABORT; LEX *lex= Lex; lex->uncacheable(UNCACHEABLE_RAND); } @@ -7420,9 +8090,11 @@ opt_distinct: opt_gconcat_separator: /* empty */ - { - $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1); - } + { + $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1); + if ($$ == NULL) + MYSQL_YYABORT; + } | SEPARATOR_SYM text_string { $$ = $2; } ; @@ -7437,6 +8109,8 @@ opt_gorder_clause: select->gorder_list= (SQL_LIST*) sql_memdup((char*) &select->order_list, sizeof(st_sql_list)); + if (select->gorder_list == NULL) + MYSQL_YYABORT; select->order_list.empty(); } ; @@ -7492,6 +8166,8 @@ expr_list: expr { $$= new (YYTHD->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; $$->push_back($1); } | expr_list ',' expr @@ -7510,6 +8186,8 @@ ident_list: simple_ident { $$= new (YYTHD->mem_root) List; + if ($$ == NULL) + MYSQL_YYABORT; $$->push_back($1); } | ident_list ',' simple_ident @@ -7533,6 +8211,8 @@ when_list: WHEN_SYM expr THEN_SYM expr { $$= new List; + if ($$ == NULL) + MYSQL_YYABORT; $$->push_back($2); $$->push_back($4); } @@ -7784,8 +8464,11 @@ table_factor: SELECT_LEX *sel= lex->current_select; SELECT_LEX_UNIT *unit= sel->master_unit(); lex->current_select= sel= unit->outer_select(); + Table_ident *ti= new Table_ident(unit); + if (ti == NULL) + MYSQL_YYABORT; if (!($$= sel->add_table_to_list(lex->thd, - new Table_ident(unit), $6, 0, + ti, $6, 0, TL_READ))) MYSQL_YYABORT; @@ -7952,15 +8635,21 @@ using_list: { if (!($$= new List)) MYSQL_YYABORT; - $$->push_back(new (YYTHD->mem_root) - String((const char *) $1.str, $1.length, - system_charset_info)); + String *s= new (YYTHD->mem_root) String((const char *) $1.str, + $1.length, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + $$->push_back(s); } | using_list ',' ident { - $1->push_back(new (YYTHD->mem_root) - String((const char *) $3.str, $3.length, - system_charset_info)); + String *s= new (YYTHD->mem_root) String((const char *) $3.str, + $3.length, + system_charset_info); + if (s == NULL) + MYSQL_YYABORT; + $1->push_back(s); $$= $1; } ; @@ -8028,7 +8717,11 @@ table_alias: opt_table_alias: /* empty */ { $$=0; } | table_alias ident - { $$= (LEX_STRING*) sql_memdup(&$2,sizeof(LEX_STRING)); } + { + $$= (LEX_STRING*) sql_memdup(&$2,sizeof(LEX_STRING)); + if ($$ == NULL) + MYSQL_YYABORT; + } ; opt_all: @@ -8076,10 +8769,13 @@ opt_escape: } | /* empty */ { + THD *thd= YYTHD; Lex->escape_used= FALSE; - $$= ((YYTHD->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? - new Item_string("", 0, &my_charset_latin1) : - new Item_string("\\", 1, &my_charset_latin1)); + $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? + new (thd->mem_root) Item_string("", 0, &my_charset_latin1) : + new (thd->mem_root) Item_string("\\", 1, &my_charset_latin1)); + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -8256,9 +8952,24 @@ limit_option: { ((Item_param *) $1)->limit_clause_param= TRUE; } - | ULONGLONG_NUM { $$= new Item_uint($1.str, $1.length); } - | LONG_NUM { $$= new Item_uint($1.str, $1.length); } - | NUM { $$= new Item_uint($1.str, $1.length); } + | ULONGLONG_NUM + { + $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | LONG_NUM + { + $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | NUM + { + $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } ; delete_limit_clause: @@ -8342,10 +9053,12 @@ procedure_clause: lex->proc_list.elements=0; lex->proc_list.first=0; lex->proc_list.next= (uchar**) &lex->proc_list.first; - if (add_proc_to_list(lex->thd, new Item_field(&lex-> - current_select-> - context, - NULL,NULL,$2.str))) + Item_field *item= new (YYTHD->mem_root) + Item_field(&lex->current_select->context, + NULL, NULL, $2.str); + if (item == NULL) + MYSQL_YYABORT; + if (add_proc_to_list(lex->thd, item)) MYSQL_YYABORT; Lex->uncacheable(UNCACHEABLE_SIDEEFFECT); } @@ -8395,13 +9108,20 @@ select_var_ident: { LEX *lex=Lex; if (lex->result) - ((select_dumpvar *)lex->result)->var_list.push_back( new my_var($2,0,0,(enum_field_types)0)); + { + my_var *var= new my_var($2,0,0,(enum_field_types)0); + if (var == NULL) + MYSQL_YYABORT; + ((select_dumpvar *)lex->result)->var_list.push_back(var); + } else + { /* The parser won't create select_result instance only if it's an EXPLAIN. */ DBUG_ASSERT(lex->describe); + } } | ident_or_text { @@ -8415,12 +9135,12 @@ select_var_ident: } if (lex->result) { - my_var *var; - ((select_dumpvar *)lex->result)-> - var_list.push_back(var= new my_var($1,1,t->offset,t->type)); + my_var *var= new my_var($1,1,t->offset,t->type); + if (var == NULL) + MYSQL_YYABORT; + ((select_dumpvar *)lex->result)->var_list.push_back(var); #ifndef DBUG_OFF - if (var) - var->sp= lex->sphead; + var->sp= lex->sphead; #endif } else @@ -8506,11 +9226,13 @@ drop: | DROP INDEX_SYM ident ON table_ident {} { LEX *lex=Lex; + Alter_drop *ad= new Alter_drop(Alter_drop::KEY, $3.str); + if (ad == NULL) + MYSQL_YYABORT; lex->sql_command= SQLCOM_DROP_INDEX; lex->alter_info.reset(); lex->alter_info.flags= ALTER_DROP_INDEX; - lex->alter_info.drop_list.push_back(new Alter_drop(Alter_drop::KEY, - $3.str)); + lex->alter_info.drop_list.push_back(ad); if (!lex->current_select->add_table_to_list(lex->thd, $5, NULL, TL_OPTION_UPDATING)) MYSQL_YYABORT; @@ -8535,6 +9257,8 @@ drop: lex->sql_command = SQLCOM_DROP_FUNCTION; lex->drop_if_exists= $3; spname= new sp_name($4, $6, true); + if (spname == NULL) + MYSQL_YYABORT; spname->init_qname(thd); lex->spname= spname; } @@ -8554,6 +9278,8 @@ drop: lex->sql_command = SQLCOM_DROP_FUNCTION; lex->drop_if_exists= $3; spname= new sp_name(db, $4, false); + if (spname == NULL) + MYSQL_YYABORT; spname->init_qname(thd); lex->spname= spname; } @@ -8821,7 +9547,12 @@ values: expr_or_default: expr { $$= $1;} - | DEFAULT {$$= new Item_default_value(Lex->current_context()); } + | DEFAULT + { + $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context()); + if ($$ == NULL) + MYSQL_YYABORT; + } ; opt_insert_update: @@ -8945,7 +9676,11 @@ table_wild_list: table_wild_one: ident opt_wild opt_table_alias { - if (!Select->add_table_to_list(YYTHD, new Table_ident($1), + Table_ident *ti= new Table_ident($1); + if (ti == NULL) + MYSQL_YYABORT; + if (!Select->add_table_to_list(YYTHD, + ti, $3, TL_OPTION_UPDATING | TL_OPTION_ALIAS, Lex->lock_option)) @@ -8953,8 +9688,11 @@ table_wild_one: } | ident '.' ident opt_wild opt_table_alias { + Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0); + if (ti == NULL) + MYSQL_YYABORT; if (!Select->add_table_to_list(YYTHD, - new Table_ident(YYTHD, $1, $3, 0), + ti, $5, TL_OPTION_UPDATING | TL_OPTION_ALIAS, Lex->lock_option)) @@ -9450,6 +10188,8 @@ wild_and_where: { Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length, system_charset_info); + if (Lex->wild == NULL) + MYSQL_YYABORT; } | WHERE expr { @@ -9502,6 +10242,8 @@ opt_describe_column: Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str, $1.length, system_charset_info); + if (Lex->wild == NULL) + MYSQL_YYABORT; } ; @@ -9820,7 +10562,11 @@ fields_or_vars: field_or_var: simple_ident_nospvar {$$= $1;} | '@' ident_or_text - { $$= new Item_user_var_as_out_param($2); } + { + $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2); + if ($$ == NULL) + MYSQL_YYABORT; + } ; opt_load_data_set_spec: @@ -9845,21 +10591,34 @@ text_literal: my_charset_is_ascii_based(cs_con))) tmp= $1; else - thd->convert_string(&tmp, cs_con, $1.str, $1.length, cs_cli); - $$= new Item_string(tmp.str, tmp.length, cs_con, - DERIVATION_COERCIBLE, repertoire); + { + if (thd->convert_string(&tmp, cs_con, $1.str, $1.length, cs_cli)) + MYSQL_YYABORT; + } + $$= new (thd->mem_root) Item_string(tmp.str, tmp.length, cs_con, + DERIVATION_COERCIBLE, + repertoire); + if ($$ == NULL) + MYSQL_YYABORT; } | NCHAR_STRING { uint repertoire= Lex->text_string_is_7bit ? MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30; DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); - $$= new Item_string($1.str, $1.length, national_charset_info, - DERIVATION_COERCIBLE, repertoire); + $$= new (YYTHD->mem_root) Item_string($1.str, $1.length, + national_charset_info, + DERIVATION_COERCIBLE, + repertoire); + if ($$ == NULL) + MYSQL_YYABORT; } | UNDERSCORE_CHARSET TEXT_STRING { - Item_string *str= new Item_string($2.str, $2.length, $1); + Item_string *str= new (YYTHD->mem_root) Item_string($2.str, + $2.length, $1); + if (str == NULL) + MYSQL_YYABORT; str->set_repertoire_from_value(); str->set_cs_specified(TRUE); @@ -9889,27 +10648,32 @@ text_string: $$= new (YYTHD->mem_root) String($1.str, $1.length, YYTHD->variables.collation_connection); + if ($$ == NULL) + MYSQL_YYABORT; } | HEX_NUM { - Item *tmp= new Item_hex_string($1.str, $1.length); + Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fields, because we need only value of constant */ - $$= tmp ? - tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; + tmp->quick_fix_field(); + $$= tmp->val_str((String*) 0); } | BIN_NUM { - Item *tmp= new Item_bin_string($1.str, $1.length); + Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fields, because we need only value of constant */ - $$= tmp ? tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; + tmp->quick_fix_field(); + $$= tmp->val_str((String*) 0); } ; @@ -9925,7 +10689,7 @@ param_marker: my_error(ER_VIEW_SELECT_VARIABLE, MYF(0)); MYSQL_YYABORT; } - item= new Item_param((uint) (lip->get_tok_start() - thd->query)); + item= new (thd->mem_root) Item_param((uint) (lip->get_tok_start() - thd->query)); if (!($$= item) || lex->param_list.push_back(item)) { my_message(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0)); @@ -9949,29 +10713,53 @@ literal: | NUM_literal { $$ = $1; } | NULL_SYM { - $$ = new Item_null(); + $$ = new (YYTHD->mem_root) Item_null(); + if ($$ == NULL) + MYSQL_YYABORT; YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT; } - | FALSE_SYM { $$= new Item_int((char*) "FALSE",0,1); } - | TRUE_SYM { $$= new Item_int((char*) "TRUE",1,1); } - | HEX_NUM { $$ = new Item_hex_string($1.str, $1.length);} - | BIN_NUM { $$= new Item_bin_string($1.str, $1.length); } + | FALSE_SYM + { + $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | TRUE_SYM + { + $$= new (YYTHD->mem_root) Item_int((char*) "TRUE",1,1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | HEX_NUM + { + $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BIN_NUM + { + $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } | UNDERSCORE_CHARSET HEX_NUM { - Item *tmp= new Item_hex_string($2.str, $2.length); + Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fieds, because we need only value of constant */ - String *str= tmp ? - tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; + tmp->quick_fix_field(); + String *str= tmp->val_str((String*) 0); - Item_string *item_str= - new Item_string(NULL, /* name will be set in select_item */ - str ? str->ptr() : "", - str ? str->length() : 0, - $1); + Item_string *item_str; + item_str= new (YYTHD->mem_root) + Item_string(NULL, /* name will be set in select_item */ + str ? str->ptr() : "", + str ? str->length() : 0, + $1); if (!item_str || !item_str->check_well_formed_result(&item_str->str_value, TRUE)) { @@ -9985,20 +10773,22 @@ literal: } | UNDERSCORE_CHARSET BIN_NUM { - Item *tmp= new Item_bin_string($2.str, $2.length); + Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length); + if (tmp == NULL) + MYSQL_YYABORT; /* it is OK only emulate fix_fieds, because we need only value of constant */ - String *str= tmp ? - tmp->quick_fix_field(), tmp->val_str((String*) 0) : - (String*) 0; + tmp->quick_fix_field(); + String *str= tmp->val_str((String*) 0); - Item_string *item_str= - new Item_string(NULL, /* name will be set in select_item */ - str ? str->ptr() : "", - str ? str->length() : 0, - $1); + Item_string *item_str; + item_str= new (YYTHD->mem_root) + Item_string(NULL, /* name will be set in select_item */ + str ? str->ptr() : "", + str ? str->length() : 0, + $1); if (!item_str || !item_str->check_well_formed_result(&item_str->str_value, TRUE)) { @@ -10018,27 +10808,42 @@ NUM_literal: NUM { int error; - $$ = new Item_int($1.str, (longlong) my_strtoll10($1.str, NULL, &error), $1.length); + $$= new (YYTHD->mem_root) + Item_int($1.str, + (longlong) my_strtoll10($1.str, NULL, &error), + $1.length); + if ($$ == NULL) + MYSQL_YYABORT; } | LONG_NUM { int error; - $$ = new Item_int($1.str, (longlong) my_strtoll10($1.str, NULL, &error), $1.length); + $$= new (YYTHD->mem_root) + Item_int($1.str, + (longlong) my_strtoll10($1.str, NULL, &error), + $1.length); + if ($$ == NULL) + MYSQL_YYABORT; } | ULONGLONG_NUM - { $$ = new Item_uint($1.str, $1.length); } + { + $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); + if ($$ == NULL) + MYSQL_YYABORT; + } | DECIMAL_NUM { - $$= new Item_decimal($1.str, $1.length, YYTHD->charset()); - if (YYTHD->is_error()) + $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length, + YYTHD->charset()); + if (($$ == NULL) || (YYTHD->is_error())) { MYSQL_YYABORT; } } | FLOAT_NUM { - $$ = new Item_float($1.str, $1.length); - if (YYTHD->is_error()) + $$= new (YYTHD->mem_root) Item_float($1.str, $1.length); + if (($$ == NULL) || (YYTHD->is_error())) { MYSQL_YYABORT; } @@ -10058,15 +10863,23 @@ table_wild: ident '.' '*' { SELECT_LEX *sel= Select; - $$ = new Item_field(Lex->current_context(), NullS, $1.str, "*"); + $$= new (YYTHD->mem_root) Item_field(Lex->current_context(), + NullS, $1.str, "*"); + if ($$ == NULL) + MYSQL_YYABORT; sel->with_wild++; } | ident '.' ident '.' '*' { + THD *thd= YYTHD; SELECT_LEX *sel= Select; - $$ = new Item_field(Lex->current_context(), (YYTHD->client_capabilities & - CLIENT_NO_SCHEMA ? NullS : $1.str), - $3.str,"*"); + const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ? + NullS : $1.str; + $$= new (thd->mem_root) Item_field(Lex->current_context(), + schema, + $3.str,"*"); + if ($$ == NULL) + MYSQL_YYABORT; sel->with_wild++; } ; @@ -10093,24 +10906,34 @@ simple_ident: } Item_splocal *splocal; - splocal= new Item_splocal($1, spv->offset, spv->type, - lip->get_tok_start_prev() - - lex->sphead->m_tmp_query, - lip->get_tok_end() - lip->get_tok_start_prev()); + splocal= new (thd->mem_root) + Item_splocal($1, spv->offset, spv->type, + lip->get_tok_start_prev() - lex->sphead->m_tmp_query, + lip->get_tok_end() - lip->get_tok_start_prev()); + if (splocal == NULL) + MYSQL_YYABORT; #ifndef DBUG_OFF - if (splocal) - splocal->m_sp= lex->sphead; + splocal->m_sp= lex->sphead; #endif - $$ = (Item*) splocal; + $$= splocal; lex->safe_to_cache_query=0; } else { SELECT_LEX *sel=Select; - $$= (sel->parsing_place != IN_HAVING || - sel->get_in_sum_expr() > 0) ? - (Item*) new Item_field(Lex->current_context(), NullS, NullS, $1.str) : - (Item*) new Item_ref(Lex->current_context(), NullS, NullS, $1.str); + if ((sel->parsing_place != IN_HAVING) || + (sel->get_in_sum_expr() > 0)) + { + $$= new (thd->mem_root) Item_field(Lex->current_context(), + NullS, NullS, $1.str); + } + else + { + $$= new (thd->mem_root) Item_ref(Lex->current_context(), + NullS, NullS, $1.str); + } + if ($$ == NULL) + MYSQL_YYABORT; } } | simple_ident_q { $$= $1; } @@ -10119,11 +10942,21 @@ simple_ident: simple_ident_nospvar: ident { + THD *thd= YYTHD; SELECT_LEX *sel=Select; - $$= (sel->parsing_place != IN_HAVING || - sel->get_in_sum_expr() > 0) ? - (Item*) new Item_field(Lex->current_context(), NullS, NullS, $1.str) : - (Item*) new Item_ref(Lex->current_context(), NullS, NullS, $1.str); + if ((sel->parsing_place != IN_HAVING) || + (sel->get_in_sum_expr() > 0)) + { + $$= new (thd->mem_root) Item_field(Lex->current_context(), + NullS, NullS, $1.str); + } + else + { + $$= new (thd->mem_root) Item_ref(Lex->current_context(), + NullS, NullS, $1.str); + } + if ($$ == NULL) + MYSQL_YYABORT; } | simple_ident_q { $$= $1; } ; @@ -10165,13 +10998,15 @@ simple_ident_q: lex->trg_chistics.event == TRG_EVENT_UPDATE)); const bool read_only= !(new_row && lex->trg_chistics.action_time == TRG_ACTION_BEFORE); - if (!(trg_fld= new Item_trigger_field(Lex->current_context(), - new_row ? - Item_trigger_field::NEW_ROW: - Item_trigger_field::OLD_ROW, - $3.str, - SELECT_ACL, - read_only))) + trg_fld= new (thd->mem_root) + Item_trigger_field(Lex->current_context(), + new_row ? + Item_trigger_field::NEW_ROW: + Item_trigger_field::OLD_ROW, + $3.str, + SELECT_ACL, + read_only); + if (trg_fld == NULL) MYSQL_YYABORT; /* @@ -10181,7 +11016,7 @@ simple_ident_q: lex->trg_table_fields.link_in_list((uchar*) trg_fld, (uchar**) &trg_fld->next_trg_field); - $$= (Item *)trg_fld; + $$= trg_fld; } else { @@ -10191,10 +11026,19 @@ simple_ident_q: my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), $1.str, thd->where); } - $$= (sel->parsing_place != IN_HAVING || - sel->get_in_sum_expr() > 0) ? - (Item*) new Item_field(Lex->current_context(), NullS, $1.str, $3.str) : - (Item*) new Item_ref(Lex->current_context(), NullS, $1.str, $3.str); + if ((sel->parsing_place != IN_HAVING) || + (sel->get_in_sum_expr() > 0)) + { + $$= new (thd->mem_root) Item_field(Lex->current_context(), + NullS, $1.str, $3.str); + } + else + { + $$= new (thd->mem_root) Item_ref(Lex->current_context(), + NullS, $1.str, $3.str); + } + if ($$ == NULL) + MYSQL_YYABORT; } } | '.' ident '.' ident @@ -10207,31 +11051,48 @@ simple_ident_q: my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), $2.str, thd->where); } - $$= (sel->parsing_place != IN_HAVING || - sel->get_in_sum_expr() > 0) ? - (Item*) new Item_field(Lex->current_context(), NullS, $2.str, $4.str) : - (Item*) new Item_ref(Lex->current_context(), NullS, $2.str, $4.str); + if ((sel->parsing_place != IN_HAVING) || + (sel->get_in_sum_expr() > 0)) + { + $$= new (thd->mem_root) Item_field(Lex->current_context(), + NullS, $2.str, $4.str); + + } + else + { + $$= new (thd->mem_root) Item_ref(Lex->current_context(), + NullS, $2.str, $4.str); + } + if ($$ == NULL) + MYSQL_YYABORT; } | ident '.' ident '.' ident { THD *thd= YYTHD; LEX *lex= thd->lex; SELECT_LEX *sel= lex->current_select; + const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ? + NullS : $1.str); if (sel->no_table_names_allowed) { my_error(ER_TABLENAME_NOT_ALLOWED_HERE, MYF(0), $3.str, thd->where); } - $$= (sel->parsing_place != IN_HAVING || - sel->get_in_sum_expr() > 0) ? - (Item*) new Item_field(Lex->current_context(), - (YYTHD->client_capabilities & - CLIENT_NO_SCHEMA ? NullS : $1.str), - $3.str, $5.str) : - (Item*) new Item_ref(Lex->current_context(), - (YYTHD->client_capabilities & - CLIENT_NO_SCHEMA ? NullS : $1.str), - $3.str, $5.str); + if ((sel->parsing_place != IN_HAVING) || + (sel->get_in_sum_expr() > 0)) + { + $$= new (thd->mem_root) Item_field(Lex->current_context(), + schema, + $3.str, $5.str); + } + else + { + $$= new (thd->mem_root) Item_ref(Lex->current_context(), + schema, + $3.str, $5.str); + } + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -10267,16 +11128,34 @@ field_ident: ; table_ident: - ident { $$=new Table_ident($1); } - | ident '.' ident { $$=new Table_ident(YYTHD, $1,$3,0);} - | '.' ident { $$=new Table_ident($2);} /* For Delphi */ + ident + { + $$= new Table_ident($1); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ident '.' ident + { + $$= new Table_ident(YYTHD, $1,$3,0); + if ($$ == NULL) + MYSQL_YYABORT; + } + | '.' ident + { + /* For Delphi */ + $$= new Table_ident($2); + if ($$ == NULL) + MYSQL_YYABORT; + } ; table_ident_nodb: ident { LEX_STRING db={(char*) any_db,3}; - $$=new Table_ident(YYTHD, db,$1,0); + $$= new Table_ident(YYTHD, db,$1,0); + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -10302,8 +11181,11 @@ IDENT_sys: $$= $1; } else - thd->convert_string(&$$, system_charset_info, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, system_charset_info, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -10315,8 +11197,11 @@ TEXT_STRING_sys: if (thd->charset_is_system_charset) $$= $1; else - thd->convert_string(&$$, system_charset_info, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, system_charset_info, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -10328,8 +11213,11 @@ TEXT_STRING_literal: if (thd->charset_is_collation_connection) $$= $1; else - thd->convert_string(&$$, thd->variables.collation_connection, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, thd->variables.collation_connection, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -10341,8 +11229,12 @@ TEXT_STRING_filesystem: if (thd->charset_is_character_set_filesystem) $$= $1; else - thd->convert_string(&$$, thd->variables.character_set_filesystem, - $1.str, $1.length, thd->charset()); + { + if (thd->convert_string(&$$, + thd->variables.character_set_filesystem, + $1.str, $1.length, thd->charset())) + MYSQL_YYABORT; + } } ; @@ -10352,6 +11244,8 @@ ident: { THD *thd= YYTHD; $$.str= thd->strmake($1.str, $1.length); + if ($$.str == NULL) + MYSQL_YYABORT; $$.length= $1.length; } ; @@ -10362,6 +11256,8 @@ label_ident: { THD *thd= YYTHD; $$.str= thd->strmake($1.str, $1.length); + if ($$.str == NULL) + MYSQL_YYABORT; $$.length= $1.length; } ; @@ -10880,6 +11776,7 @@ ext_option_value: sys_option_value: option_type internal_variable_name equal set_expr_or_default { + THD *thd= YYTHD; LEX *lex=Lex; if ($2.var == trg_new_row_fake_var) @@ -10905,15 +11802,21 @@ sys_option_value: DBUG_ASSERT(lex->trg_chistics.action_time == TRG_ACTION_BEFORE && (lex->trg_chistics.event == TRG_EVENT_INSERT || lex->trg_chistics.event == TRG_EVENT_UPDATE)); - if (!(trg_fld= new Item_trigger_field(Lex->current_context(), - Item_trigger_field::NEW_ROW, - $2.base_name.str, - UPDATE_ACL, FALSE)) || - !(sp_fld= new sp_instr_set_trigger_field(lex->sphead-> - instructions(), - lex->spcont, - trg_fld, - it, lex))) + + trg_fld= new (thd->mem_root) + Item_trigger_field(Lex->current_context(), + Item_trigger_field::NEW_ROW, + $2.base_name.str, + UPDATE_ACL, FALSE); + if (trg_fld == NULL) + MYSQL_YYABORT; + + sp_fld= new sp_instr_set_trigger_field(lex->sphead-> + instructions(), + lex->spcont, + trg_fld, + it, lex); + if (sp_fld == NULL) MYSQL_YYABORT; /* @@ -10930,8 +11833,11 @@ sys_option_value: { /* System variable */ if ($1) lex->option_type= $1; - lex->var_list.push_back(new set_var(lex->option_type, $2.var, - &$2.base_name, $4)); + set_var *var= new set_var(lex->option_type, $2.var, + &$2.base_name, $4); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } else { @@ -10953,39 +11859,69 @@ sys_option_value: else if (spv->dflt) it= spv->dflt; else - it= new Item_null(); + { + it= new (thd->mem_root) Item_null(); + if (it == NULL) + MYSQL_YYABORT; + } sp_set= new sp_instr_set(lex->sphead->instructions(), ctx, spv->offset, it, spv->type, lex, TRUE); + if (sp_set == NULL) + MYSQL_YYABORT; lex->sphead->add_instr(sp_set); } } | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types { + THD *thd= YYTHD; LEX *lex=Lex; lex->option_type= $1; - lex->var_list.push_back(new set_var(lex->option_type, - find_sys_var(YYTHD, "tx_isolation"), - &null_lex_str, - new Item_int((int32) $5))); + Item *item= new (thd->mem_root) Item_int((int32) $5); + if (item == NULL) + MYSQL_YYABORT; + set_var *var= new set_var(lex->option_type, + find_sys_var(thd, "tx_isolation"), + &null_lex_str, + item); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } ; option_value: '@' ident_or_text equal expr { - Lex->var_list.push_back(new set_var_user(new Item_func_set_user_var($2,$4))); + Item_func_set_user_var *item; + item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4); + if (item == NULL) + MYSQL_YYABORT; + set_var_user *var= new set_var_user(item); + if (var == NULL) + MYSQL_YYABORT; + Lex->var_list.push_back(var); } | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default { LEX *lex=Lex; - lex->var_list.push_back(new set_var($3, $4.var, &$4.base_name, $6)); + set_var *var= new set_var($3, $4.var, &$4.base_name, $6); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } | charset old_or_new_charset_name_or_default { THD *thd= YYTHD; LEX *lex= thd->lex; - $2= $2 ? $2: global_system_variables.character_set_client; - lex->var_list.push_back(new set_var_collation_client($2,thd->variables.collation_database,$2)); + CHARSET_INFO *cs2; + cs2= $2 ? $2: global_system_variables.character_set_client; + set_var_collation_client *var; + var= new set_var_collation_client(cs2, + thd->variables.collation_database, + cs2); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } | NAMES_SYM equal expr { @@ -11005,15 +11941,21 @@ option_value: | NAMES_SYM charset_name_or_default opt_collate { LEX *lex= Lex; - $2= $2 ? $2 : global_system_variables.character_set_client; - $3= $3 ? $3 : $2; - if (!my_charset_same($2,$3)) + CHARSET_INFO *cs2; + CHARSET_INFO *cs3; + cs2= $2 ? $2 : global_system_variables.character_set_client; + cs3= $3 ? $3 : cs2; + if (!my_charset_same(cs2, cs3)) { my_error(ER_COLLATION_CHARSET_MISMATCH, MYF(0), - $3->name, $2->csname); + cs3->name, cs2->csname); MYSQL_YYABORT; } - lex->var_list.push_back(new set_var_collation_client($3,$3,$3)); + set_var_collation_client *var; + var= new set_var_collation_client(cs3, cs3, cs3); + if (var == NULL) + MYSQL_YYABORT; + lex->var_list.push_back(var); } | PASSWORD equal text_or_password { @@ -11034,14 +11976,20 @@ option_value: MYSQL_YYABORT; user->host=null_lex_str; user->user.str=thd->security_ctx->priv_user; - thd->lex->var_list.push_back(new set_var_password(user, $3)); + set_var_password *var= new set_var_password(user, $3); + if (var == NULL) + MYSQL_YYABORT; + thd->lex->var_list.push_back(var); thd->lex->autocommit= TRUE; if (lex->sphead) lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT; } | PASSWORD FOR_SYM user equal text_or_password { - Lex->var_list.push_back(new set_var_password($3,$5)); + set_var_password *var= new set_var_password($3,$5); + if (var == NULL) + MYSQL_YYABORT; + Lex->var_list.push_back(var); Lex->autocommit= TRUE; if (Lex->sphead) Lex->sphead->m_flags|= sp_head::HAS_SET_AUTOCOMMIT_STMT; @@ -11152,11 +12100,15 @@ text_or_password: Item_func_old_password::alloc(YYTHD, $3.str) : Item_func_password::alloc(YYTHD, $3.str) : $3.str; + if ($$ == NULL) + MYSQL_YYABORT; } | OLD_PASSWORD '(' TEXT_STRING ')' { $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str) : $3.str; + if ($$ == NULL) + MYSQL_YYABORT; } ; @@ -11164,9 +12116,24 @@ text_or_password: set_expr_or_default: expr { $$=$1; } | DEFAULT { $$=0; } - | ON { $$=new Item_string("ON", 2, system_charset_info); } - | ALL { $$=new Item_string("ALL", 3, system_charset_info); } - | BINARY { $$=new Item_string("binary", 6, system_charset_info); } + | ON + { + $$=new (YYTHD->mem_root) Item_string("ON", 2, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } + | ALL + { + $$=new (YYTHD->mem_root) Item_string("ALL", 3, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } + | BINARY + { + $$=new (YYTHD->mem_root) Item_string("binary", 6, system_charset_info); + if ($$ == NULL) + MYSQL_YYABORT; + } ; /* Lock function */ @@ -11268,7 +12235,10 @@ handler: lex->expr_allows_subselect= FALSE; lex->sql_command = SQLCOM_HA_READ; lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */ - lex->current_select->select_limit= new Item_int((int32) 1); + Item *one= new (YYTHD->mem_root) Item_int((int32) 1); + if (one == NULL) + MYSQL_YYABORT; + lex->current_select->select_limit= one; lex->current_select->offset_limit= 0; if (!lex->current_select->add_table_to_list(lex->thd, $2, 0, 0)) MYSQL_YYABORT; @@ -11591,8 +12561,9 @@ grant_user: { char *buff= (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1); - if (buff) - make_scrambled_password_323(buff, $4.str); + if (buff == NULL) + MYSQL_YYABORT; + make_scrambled_password_323(buff, $4.str); $1->password.str= buff; $1->password.length= SCRAMBLED_PASSWORD_CHAR_LENGTH_323; } @@ -11600,8 +12571,9 @@ grant_user: { char *buff= (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1); - if (buff) - make_scrambled_password(buff, $4.str); + if (buff == NULL) + MYSQL_YYABORT; + make_scrambled_password(buff, $4.str); $1->password.str= buff; $1->password.length= SCRAMBLED_PASSWORD_CHAR_LENGTH; } @@ -11631,6 +12603,8 @@ column_list_id: ident { String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info); + if (new_str == NULL) + MYSQL_YYABORT; List_iterator iter(Lex->columns); class LEX_COLUMN *point; LEX *lex=Lex; @@ -11644,7 +12618,12 @@ column_list_id: if (point) point->rights |= lex->which_columns; else - lex->columns.push_back(new LEX_COLUMN (*new_str,lex->which_columns)); + { + LEX_COLUMN *col= new LEX_COLUMN (*new_str,lex->which_columns); + if (col == NULL) + MYSQL_YYABORT; + lex->columns.push_back(col); + } } ; @@ -12068,7 +13047,6 @@ view_list: view_select: { - THD *thd= YYTHD; LEX *lex= Lex; lex->parsing_options.allows_variable= FALSE; lex->parsing_options.allows_select_into= FALSE; @@ -12254,6 +13232,8 @@ sf_tail: } /* Order is important here: new - reset - init */ sp= new sp_head(); + if (sp == NULL) + MYSQL_YYABORT; sp->reset_thd_mem_root(thd); sp->init(lex); sp->init_sp_name(thd, lex->spname); @@ -12381,6 +13361,8 @@ sp_tail: /* Order is important here: new - reset - init */ sp= new sp_head(); + if (sp == NULL) + MYSQL_YYABORT; sp->reset_thd_mem_root(YYTHD); sp->init(lex); sp->m_type= TYPE_ENUM_PROCEDURE; diff --git a/sql/thr_malloc.cc b/sql/thr_malloc.cc index ddf35002880..6bf43b51df0 100644 --- a/sql/thr_malloc.cc +++ b/sql/thr_malloc.cc @@ -21,10 +21,34 @@ extern "C" { void sql_alloc_error_handler(void) { - THD *thd=current_thd; - if (thd) // QQ; To be removed - thd->fatal_error(); /* purecov: inspected */ sql_print_error(ER(ER_OUT_OF_RESOURCES)); + + THD *thd= current_thd; + if (thd) + { + if (! thd->is_error()) + { + /* + This thread is Out Of Memory. + An OOM condition is a fatal error. + It should not be caught by error handlers in stored procedures. + Also, recording that SQL condition in the condition area could + cause more memory allocations, which in turn could raise more + OOM conditions, causing recursion in the error handling code itself. + As a result, my_error() should not be invoked, and the + thread diagnostics area is set to an error status directly. + Note that Diagnostics_area::set_error_status() is safe, + since it does not call any memory allocation routines. + The visible result for a client application will be: + - a query fails with an ER_OUT_OF_RESOURCES error, + returned in the error packet. + - SHOW ERROR/SHOW WARNINGS may be empty. + */ + thd->main_da.set_error_status(thd, + ER_OUT_OF_RESOURCES, + ER(ER_OUT_OF_RESOURCES)); + } + } } } From c8d01f1401af42693abc9480e0a9927002cd3670 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Wed, 13 Aug 2008 10:47:24 +0200 Subject: [PATCH 341/435] Bug#37402: Mysql cant read partitioned table with capital letter in the name Post push fix (compiler warning) sql/ha_partition.cc: Bug#37402: Mysql cant read partitioned table with capital letter in the name fix to prevent a compiler warning. --- sql/ha_partition.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index dfaa58c9249..af3ee000874 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -1798,7 +1798,8 @@ uint ha_partition::del_ren_cre_table(const char *from, char from_buff[FN_REFLEN], to_buff[FN_REFLEN], from_lc_buff[FN_REFLEN], to_lc_buff[FN_REFLEN]; char *name_buffer_ptr; - const char *from_path, *to_path; + const char *from_path; + const char *to_path= NULL; uint i; handler **file, **abort_file; DBUG_ENTER("del_ren_cre_table()"); From 6cab759d7a2d1534cf167971a4da0b7d0e5f0f5c Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 13 Aug 2008 11:05:24 +0200 Subject: [PATCH 342/435] Raise version number after cloning 5.0.68 --- configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index ab56fc24c71..e302aaa5c4a 100644 --- a/configure.in +++ b/configure.in @@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! # remember to also change ndb version below and update version.c in ndb -AM_INIT_AUTOMAKE(mysql, 5.0.68) +AM_INIT_AUTOMAKE(mysql, 5.0.69) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 @@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0 # ndb version NDB_VERSION_MAJOR=5 NDB_VERSION_MINOR=0 -NDB_VERSION_BUILD=68 +NDB_VERSION_BUILD=69 NDB_VERSION_STATUS="" # Set all version vars based on $VERSION. How do we do this more elegant ? From 182b2383347cca5c6870b3f574191d5984799f67 Mon Sep 17 00:00:00 2001 From: Joerg Bruehe Date: Wed, 13 Aug 2008 12:34:35 +0200 Subject: [PATCH 343/435] Correct the version number to 5.0.70. configure.in: Version number raise was incomplete, the 5.0 tree steps by 2. --- configure.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.in b/configure.in index e302aaa5c4a..bd993bb5fcf 100644 --- a/configure.in +++ b/configure.in @@ -7,7 +7,7 @@ AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! # remember to also change ndb version below and update version.c in ndb -AM_INIT_AUTOMAKE(mysql, 5.0.69) +AM_INIT_AUTOMAKE(mysql, 5.0.70) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 @@ -23,7 +23,7 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0 # ndb version NDB_VERSION_MAJOR=5 NDB_VERSION_MINOR=0 -NDB_VERSION_BUILD=69 +NDB_VERSION_BUILD=70 NDB_VERSION_STATUS="" # Set all version vars based on $VERSION. How do we do this more elegant ? From b789b4f33cdf245d1f582aa755410754b197a693 Mon Sep 17 00:00:00 2001 From: Evgeny Potemkin Date: Wed, 13 Aug 2008 22:24:55 +0400 Subject: [PATCH 344/435] Bug#38195: Incorrect handling of aggregate functions when loose index scan is used causes server crash. When the loose index scan access method is used values of aggregated functions are precomputed by it. Aggregation of such functions shouldn't be performed in this case and functions should be treated as normal ones. The create_tmp_table function wasn't taking this into account and this led to a crash if a query has MIN/MAX aggregate functions and employs temporary table and loose index scan. Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used. mysql-test/r/group_min_max.result: Added a test case for the bug#38195. mysql-test/t/group_min_max.test: Added a test case for the bug#38195. sql/sql_select.cc: Bug#38195: Incorrect handling of aggregate functions when loose index scan is used causes server crash. Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used. --- mysql-test/r/group_min_max.result | 27 +++++++++++++++++++++++++++ mysql-test/t/group_min_max.test | 12 ++++++++++++ sql/sql_select.cc | 5 ++++- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result index 5982931e677..846e8ece656 100644 --- a/mysql-test/r/group_min_max.result +++ b/mysql-test/r/group_min_max.result @@ -2353,3 +2353,30 @@ a MIN(b) MAX(b) AVG(b) 2 1 3 2.0000 1 1 3 2.0000 DROP TABLE t1; +create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM; +insert into t1 (a,b) values (0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7), +(0,8),(0,9),(0,10),(0,11),(0,12),(0,13); +insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a; +select * from t1; +a b +0 0 +0 1 +0 2 +0 3 +0 4 +0 5 +0 6 +0 7 +0 8 +0 9 +0 10 +0 11 +0 12 +0 13 +0 14 +explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range PRIMARY,index PRIMARY 4 NULL 6 Using where; Using index for group-by; Using temporary +Warnings: +Note 1003 select sql_buffer_result `test`.`t1`.`a` AS `a`,(max(`test`.`t1`.`b`) + 1) AS `max(b)+1` from `test`.`t1` where (`test`.`t1`.`a` = 0) group by `test`.`t1`.`a` +drop table t1; diff --git a/mysql-test/t/group_min_max.test b/mysql-test/t/group_min_max.test index 7f2607b513d..196dd3379f9 100644 --- a/mysql-test/t/group_min_max.test +++ b/mysql-test/t/group_min_max.test @@ -916,3 +916,15 @@ SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC; SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC; DROP TABLE t1; + +# +# Bug#38195: Incorrect handling of aggregate functions when loose index scan is +# used causes server crash. +# +create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM; +insert into t1 (a,b) values (0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7), +(0,8),(0,9),(0,10),(0,11),(0,12),(0,13); +insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a; +select * from t1; +explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a; +drop table t1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 6de4b296d34..6928effc1a5 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1724,7 +1724,8 @@ JOIN::exec() if (!items1) { items1= items0 + all_fields.elements; - if (sort_and_group || curr_tmp_table->group) + if (sort_and_group || curr_tmp_table->group || + tmp_table_param.precomputed_group_by) { if (change_to_use_tmp_fields(thd, items1, tmp_fields_list1, tmp_all_fields1, @@ -9259,6 +9260,8 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, MI_COLUMNDEF *recinfo; uint total_uneven_bit_length= 0; bool force_copy_fields= param->force_copy_fields; + /* Treat sum functions as normal ones when loose index scan is used. */ + save_sum_fields|= param->precomputed_group_by; DBUG_ENTER("create_tmp_table"); DBUG_PRINT("enter",("distinct: %d save_sum_fields: %d rows_limit: %lu group: %d", (int) distinct, (int) save_sum_fields, From fd7c7e20afa4fc66776b213c7cb3927fcf4a07fe Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Wed, 13 Aug 2008 20:50:08 +0200 Subject: [PATCH 345/435] Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Post push fix an DBUG_ASSERT broke the embedded server, fixed by initializing it in the embedded version of Protocol_text::prepare_for_resend libmysqld/lib_sql.cc: Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that partition is corrupt Post push fix an DBUG_ASSERT in Protocol_text::store broke the embedded server, fixed by initializing it in the embedded version of Protocol_text::prepare_for_resend --- libmysqld/lib_sql.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc index e1c8ab5abb4..6e82812239e 100644 --- a/libmysqld/lib_sql.cc +++ b/libmysqld/lib_sql.cc @@ -1103,6 +1103,9 @@ void Protocol_text::prepare_for_resend() data->embedded_info->prev_ptr= &cur->next; next_field=cur->data; next_mysql_field= data->embedded_info->fields_list; +#ifndef DBUG_OFF + field_pos= 0; +#endif DBUG_VOID_RETURN; } From f2188dc3238661440ab4566e1e93dec24b8f9f5b Mon Sep 17 00:00:00 2001 From: Serge Kozlov Date: Wed, 13 Aug 2008 23:12:51 +0400 Subject: [PATCH 346/435] Bug#18817, removing --binlog-format option from .opt files --- mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt | 1 - mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt | 1 - mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt | 1 - mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test | 2 +- 4 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt delete mode 100644 mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt diff --git a/mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt b/mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt deleted file mode 100644 index 83ed8522e72..00000000000 --- a/mysql-test/suite/rpl/t/rpl_row_err_daisychain-master.opt +++ /dev/null @@ -1 +0,0 @@ ---binlog-format=row diff --git a/mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt b/mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt deleted file mode 100644 index 4cb7a31da81..00000000000 --- a/mysql-test/suite/rpl/t/rpl_row_err_daisychain-slave.opt +++ /dev/null @@ -1 +0,0 @@ ---binlog-format=statement --log-slave-updates diff --git a/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt b/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt deleted file mode 100644 index 01cf3e0520f..00000000000 --- a/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2-master.opt +++ /dev/null @@ -1 +0,0 @@ ---binlog-format=mixed diff --git a/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test b/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test index 4ee6c98d463..5381dff95a3 100644 --- a/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test +++ b/mysql-test/suite/rpl/t/rpl_truncate_7ndb_2.test @@ -1,6 +1,6 @@ # Same test as rpl_truncate_7ndb.test, but with mixed mode # This is marked with 'big_test' just because the rpl_truncate_7ndb test is # so slow... - +--source include/have_binlog_format_mixed.inc --source include/big_test.inc --source t/rpl_truncate_7ndb.test From 632cf8ef4360b25821bdd57ef65241f4755a12e0 Mon Sep 17 00:00:00 2001 From: Matthias Leich Date: Wed, 13 Aug 2008 21:42:21 +0200 Subject: [PATCH 347/435] Improve the testcases for Bug 12093 in ps_ddl.test Details: - add subtest with drop unrelated view - rearrange existing tests so that a distinction between drop procedure and drop function effects is possible --- mysql-test/include/ps_ddl_1.inc | 25 ++++++++++++++++++ mysql-test/r/ps_ddl.result | 47 ++++++++++++++++++++++++++++++++- mysql-test/t/ps_ddl.test | 36 +++++++++---------------- 3 files changed, 84 insertions(+), 24 deletions(-) create mode 100644 mysql-test/include/ps_ddl_1.inc diff --git a/mysql-test/include/ps_ddl_1.inc b/mysql-test/include/ps_ddl_1.inc new file mode 100644 index 00000000000..f6b4c8108a1 --- /dev/null +++ b/mysql-test/include/ps_ddl_1.inc @@ -0,0 +1,25 @@ +# include/ps_ddl_1.inc +# +# Auxiliary script to be used in ps_ddl.test +# + +prepare stmt_sf from 'select f_12093();'; +prepare stmt_sp from 'call p_12093(f_12093())'; +execute stmt_sf; +execute stmt_sp; + +connection con1; +eval $my_drop; +# +connection default; +--echo # XXX: used to be a bug +execute stmt_sf; +--echo # XXX: used to be a bug +execute stmt_sp; +# +--echo # XXX: used to be a bug +execute stmt_sf; +--echo # XXX: used to be a bug +execute stmt_sp; + +connection default; diff --git a/mysql-test/r/ps_ddl.result b/mysql-test/r/ps_ddl.result index 58542f23cf2..c7e8812320c 100644 --- a/mysql-test/r/ps_ddl.result +++ b/mysql-test/r/ps_ddl.result @@ -1567,11 +1567,13 @@ drop table if exists t_12093; drop function if exists f_12093; drop function if exists f_12093_unrelated; drop procedure if exists p_12093; +drop view if exists v_12093_unrelated; create table t_12093 (a int); create function f_12093() returns int return (select count(*) from t_12093); create procedure p_12093(a int) select * from t_12093; create function f_12093_unrelated() returns int return 2; create procedure p_12093_unrelated() begin end; +create view v_12093_unrelated as select * from t_12093; prepare stmt_sf from 'select f_12093();'; prepare stmt_sp from 'call p_12093(f_12093())'; execute stmt_sf; @@ -1580,6 +1582,27 @@ f_12093() execute stmt_sp; a drop function f_12093_unrelated; +# XXX: used to be a bug +execute stmt_sf; +f_12093() +0 +# XXX: used to be a bug +execute stmt_sp; +a +# XXX: used to be a bug +execute stmt_sf; +f_12093() +0 +# XXX: used to be a bug +execute stmt_sp; +a +prepare stmt_sf from 'select f_12093();'; +prepare stmt_sp from 'call p_12093(f_12093())'; +execute stmt_sf; +f_12093() +0 +execute stmt_sp; +a drop procedure p_12093_unrelated; # XXX: used to be a bug execute stmt_sf; @@ -1595,7 +1618,29 @@ f_12093() # XXX: used to be a bug execute stmt_sp; a -call p_verify_reprepare_count(2); +prepare stmt_sf from 'select f_12093();'; +prepare stmt_sp from 'call p_12093(f_12093())'; +execute stmt_sf; +f_12093() +0 +execute stmt_sp; +a +drop view v_12093_unrelated; +# XXX: used to be a bug +execute stmt_sf; +f_12093() +0 +# XXX: used to be a bug +execute stmt_sp; +a +# XXX: used to be a bug +execute stmt_sf; +f_12093() +0 +# XXX: used to be a bug +execute stmt_sp; +a +call p_verify_reprepare_count(6); SUCCESS drop table t_12093; diff --git a/mysql-test/t/ps_ddl.test b/mysql-test/t/ps_ddl.test index 8899ca967ca..fee235cd36c 100644 --- a/mysql-test/t/ps_ddl.test +++ b/mysql-test/t/ps_ddl.test @@ -1363,44 +1363,34 @@ drop table if exists t_12093; drop function if exists f_12093; drop function if exists f_12093_unrelated; drop procedure if exists p_12093; +drop view if exists v_12093_unrelated; --enable_warnings create table t_12093 (a int); - create function f_12093() returns int return (select count(*) from t_12093); - create procedure p_12093(a int) select * from t_12093; create function f_12093_unrelated() returns int return 2; create procedure p_12093_unrelated() begin end; - -prepare stmt_sf from 'select f_12093();'; -prepare stmt_sp from 'call p_12093(f_12093())'; - -execute stmt_sf; -execute stmt_sp; +create view v_12093_unrelated as select * from t_12093; connect (con1,localhost,root,,); -connection con1; - -drop function f_12093_unrelated; -drop procedure p_12093_unrelated; - connection default; ---echo # XXX: used to be a bug -execute stmt_sf; ---echo # XXX: used to be a bug -execute stmt_sp; +let $my_drop = drop function f_12093_unrelated; +--source include/ps_ddl_1.inc +# +let $my_drop = drop procedure p_12093_unrelated; +--source include/ps_ddl_1.inc +# +# A reprepare of stmt_sf and stmt_sp is necessary because there is no +# information about views within the table definition cache. +let $my_drop = drop view v_12093_unrelated; +--source include/ps_ddl_1.inc ---echo # XXX: used to be a bug -execute stmt_sf; ---echo # XXX: used to be a bug -execute stmt_sp; -call p_verify_reprepare_count(2); +call p_verify_reprepare_count(6); disconnect con1; - drop table t_12093; drop function f_12093; drop procedure p_12093; From d23e8e06a184bb7ed4f97afb4d4c0cc696788512 Mon Sep 17 00:00:00 2001 From: Matthias Leich Date: Wed, 13 Aug 2008 21:44:54 +0200 Subject: [PATCH 348/435] Fix for Bug#37853 Test "funcs_1.processlist_val_ps" fails in various ways + corrections of logic in poll routines + minor improvements --- .../funcs_1/datadict/processlist_val.inc | 612 +++++++++++------- .../funcs_1/r/processlist_val_no_prot.result | 298 ++++++--- .../suite/funcs_1/r/processlist_val_ps.result | 298 ++++++--- 3 files changed, 784 insertions(+), 424 deletions(-) diff --git a/mysql-test/suite/funcs_1/datadict/processlist_val.inc b/mysql-test/suite/funcs_1/datadict/processlist_val.inc index 16c3dc71ff1..c34fb626bcd 100644 --- a/mysql-test/suite/funcs_1/datadict/processlist_val.inc +++ b/mysql-test/suite/funcs_1/datadict/processlist_val.inc @@ -1,313 +1,465 @@ -########### suite/funcs_1/datadict/processlist_val.inc ################# -# # -# Testing of values within INFORMATION_SCHEMA.PROCESSLIST # -# # -# Ensure that the values fit to the current event of the connection # -# and especially that they change if a connection does nothing or # -# runs some SQL. # -# Examples: # -# - change the default database # -# - send some time no SQL command to the server # -# - send a long running query # -# # -# Note(mleich): # -# 1. Please inform me if this test fails because of timing problems. # -# I tried to avoid instabilities but the values within the column # -# TIME are very sensible to fluctuations of the machine load. # -# I had to unify some TIME values with "--replace_result" in cases # -# where they are too unstable. # -# 2. Storage engine variants of this test do not make sense. # -# - I_S tables use the MEMORY storage engine whenever possible. # -# - There are some I_S table which need column data types which # -# are not supported by MEMORY. Example: LONGTEXT/BLOB # -# MyISAM will be used for such tables. # -# The column PROCESSLIST.INFO is of data type LONGTEXT # -# ----> MyISAM # -# - There is no impact of the GLOBAL(server) or SESSION default # -# storage engine setting on the engine used for I_S tables. # -# That means we cannot get NDB or InnoDB instead. # -# 3. The SHOW (FULL) PROCESSLIST command are for comparison. # -# The main test target is INFORMATION_SCHEMA.PROCESSLIST ! # -# # -# Creation: # -# 2007-08-09 mleich Implement this test as part of # -# WL#3982 Test information_schema.processlist # -# 2008-01-05 HHunger Changed time test and long statement test. # -# It could happen that the long statement test # -# fail due to timing problems. # -# 2008-04-14 pcrews Changed --replace_columns to include host # -# this is due to failure occurring on Windows # -# Win results included port number as well causing # -# test failures # -######################################################################## +########### suite/funcs_1/datadict/processlist_val.inc ######################### +# # +# Testing of values within INFORMATION_SCHEMA.PROCESSLIST # +# # +# Ensure that the values fit to the current state of the connection and # +# especially that they change if a connection does nothing or runs some SQL. # +# runs some SQL. # +# Examples: # +# - change the default database # +# - send some period of time no SQL command to the server # +# - send a long running query # +# # +# Note(mleich): # +# 1. Please inform me if this test fails because of timing problems. # +# 2. Storage engine variants of this test do not make sense. # +# - I_S tables use the MEMORY storage engine whenever possible. # +# - There are some I_S tables which need column data types which are not # +# supported by MEMORY. Example: LONGTEXT/BLOB # +# MyISAM will be used for such tables. # +# The column PROCESSLIST.INFO is of data type LONGTEXT ----> MyISAM # +# - There is no impact of the GLOBAL(server) or SESSION default storage # +# engine setting on the engine used for I_S tables. # +# That means we cannot get NDB or InnoDB instead. # +# 3. The SHOW (FULL) PROCESSLIST command are for comparison. # +# The main test target is INFORMATION_SCHEMA.PROCESSLIST ! # +# 4. Attention: # +# The values of the PROCESSLIST columns HOST and TIME tend to cause # +# problems and therefore their printing has to be suppressed. # +# Examples of the exact values: # +# HOST: 'localhost' (UNIX derivates) # +# 'localhost:' (WINDOWS) # +# TIME: In many cases within this test 0 seconds but if the testing box is # +# overloaded we might get up to 2 seconds. # +# Solution: # +# --replace_column 1 3 6 + + + + + +
table_map_for_updateQ_TABLE_MAP_FOR_UPDATE_CODE == 98 byte integerThe value of the table map that is to be updated by the + multi-table update query statement. Every bit of this variable + represents a table, and is set to 1 if the corresponding table is + to be updated by this statement. + + The value of this variable is set when executing a multi-table update + statement and used by slave to apply filter rules without opening + all the tables on slave. This is required because some tables may + not exist on slave because of the filter rules. +
@subsection Query_log_event_notes_on_previous_versions Notes on Previous Versions @@ -1471,6 +1492,9 @@ protected: * See Q_CHARSET_DATABASE_CODE in the table above. + * When adding new status vars, please don't forget to update the + MAX_SIZE_LOG_EVENT_STATUS, and update function code_name + */ class Query_log_event: public Log_event { @@ -1548,6 +1572,11 @@ public: const char *time_zone_str; uint lc_time_names_number; /* 0 means en_US */ uint charset_database_number; + /* + map for tables that will be updated for a multi-table update query + statement, for other query statements, this will be zero. + */ + ulonglong table_map_for_update; #ifndef MYSQL_CLIENT diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 186d6518676..e342e739865 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -1113,6 +1113,8 @@ void THD::cleanup_after_query() free_items(); /* Reset where. */ where= THD::DEFAULT_WHERE; + /* reset table map for multi-table update */ + table_map_for_update= 0; } diff --git a/sql/sql_class.h b/sql/sql_class.h index 9e0272b8891..8ceb93940ab 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -396,7 +396,6 @@ struct system_variables DATE_TIME_FORMAT *datetime_format; DATE_TIME_FORMAT *time_format; my_bool sysdate_is_now; - }; @@ -1446,6 +1445,13 @@ public: Note: in the parser, stmt_arena == thd, even for PS/SP. */ Query_arena *stmt_arena; + + /* + map for tables that will be updated for a multi-table update query + statement, for other query statements, this will be zero. + */ + table_map table_map_for_update; + /* Tells if LAST_INSERT_ID(#) was called for the current statement */ bool arg_of_last_insert_id_function; /* diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index dfa8233a37f..f88fff656cc 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -1902,6 +1902,10 @@ mysql_execute_command(THD *thd) TABLE_LIST *all_tables; /* most outer SELECT_LEX_UNIT of query */ SELECT_LEX_UNIT *unit= &lex->unit; +#ifdef HAVE_REPLICATION + /* have table map for update for multi-update statement (BUG#37051) */ + bool have_table_map_for_update= FALSE; +#endif /* Saved variable value */ DBUG_ENTER("mysql_execute_command"); #ifdef WITH_PARTITION_STORAGE_ENGINE @@ -1967,6 +1971,48 @@ mysql_execute_command(THD *thd) // force searching in slave.cc:tables_ok() all_tables->updating= 1; } + + /* + For fix of BUG#37051, the master stores the table map for update + in the Query_log_event, and the value is assigned to + thd->variables.table_map_for_update before executing the update + query. + + If thd->variables.table_map_for_update is set, then we are + replicating from a new master, we can use this value to apply + filter rules without opening all the tables. However If + thd->variables.table_map_for_update is not set, then we are + replicating from an old master, so we just skip this and + continue with the old method. And of course, the bug would still + exist for old masters. + */ + if (lex->sql_command == SQLCOM_UPDATE_MULTI && + thd->table_map_for_update) + { + have_table_map_for_update= TRUE; + table_map table_map_for_update= thd->table_map_for_update; + uint nr= 0; + TABLE_LIST *table; + for (table=all_tables; table; table=table->next_global, nr++) + { + if (table_map_for_update & ((table_map)1 << nr)) + table->updating= TRUE; + else + table->updating= FALSE; + } + + if (all_tables_not_ok(thd, all_tables)) + { + /* we warn the slave SQL thread */ + my_message(ER_SLAVE_IGNORED_TABLE, ER(ER_SLAVE_IGNORED_TABLE), MYF(0)); + if (thd->one_shot_set) + reset_one_shot_variables(thd); + DBUG_RETURN(0); + } + + for (table=all_tables; table; table=table->next_global) + table->updating= TRUE; + } /* Check if statment should be skipped because of slave filtering @@ -2881,7 +2927,7 @@ end_with_restore_list: #ifdef HAVE_REPLICATION /* Check slave filtering rules */ - if (unlikely(thd->slave_thread)) + if (unlikely(thd->slave_thread && !have_table_map_for_update)) { if (all_tables_not_ok(thd, all_tables)) { diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 637bc00fe8a..b9ad88ee663 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -1000,7 +1000,7 @@ reopen_tables: DBUG_RETURN(TRUE); } - tables_for_update= get_table_map(fields); + thd->table_map_for_update= tables_for_update= get_table_map(fields); /* Setup timestamp handling and locking mode From 6b85127976e39bc9d8d835b5c875fe241d061f41 Mon Sep 17 00:00:00 2001 From: He Zhenxing Date: Tue, 26 Aug 2008 18:07:56 +0800 Subject: [PATCH 400/435] Cherry picking post fixes for BUG#37051 --- mysql-test/r/multi_update.result | 4 ++-- sql/sql_class.cc | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result index 421a63cd54c..aa88b44f5b4 100644 --- a/mysql-test/r/multi_update.result +++ b/mysql-test/r/multi_update.result @@ -627,7 +627,7 @@ a b 4 4 show master status /* there must be the UPDATE query event */; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 197 +master-bin.000001 206 delete from t1; delete from t2; insert into t1 values (1,2),(3,4),(4,4); @@ -637,7 +637,7 @@ UPDATE t2,t1 SET t2.a=t2.b where t2.a=t1.a; ERROR 23000: Duplicate entry '4' for key 'PRIMARY' show master status /* there must be the UPDATE query event */; File Position Binlog_Do_DB Binlog_Ignore_DB -master-bin.000001 212 +master-bin.000001 221 drop table t1, t2; set @@session.binlog_format= @sav_binlog_format; drop table if exists t1, t2, t3; diff --git a/sql/sql_class.cc b/sql/sql_class.cc index e342e739865..4712caa5d1b 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -514,6 +514,7 @@ THD::THD() lock_id(&main_lock_id), user_time(0), in_sub_stmt(0), binlog_table_maps(0), binlog_flags(0UL), + table_map_for_update(0), arg_of_last_insert_id_function(FALSE), first_successful_insert_id_in_prev_stmt(0), first_successful_insert_id_in_prev_stmt_for_binlog(0), From ebe1b65ee3a3b746d75dc4e3ea85107c22cb94fe Mon Sep 17 00:00:00 2001 From: Alexey Botchkov Date: Tue, 26 Aug 2008 15:22:09 +0500 Subject: [PATCH 401/435] merging --- mysql-test/r/udf.result | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mysql-test/r/udf.result b/mysql-test/r/udf.result index e6b818cecdc..15410ac2039 100644 --- a/mysql-test/r/udf.result +++ b/mysql-test/r/udf.result @@ -1,7 +1,5 @@ drop table if exists t1; CREATE FUNCTION metaphon RETURNS STRING SONAME "UDF_EXAMPLE_LIB"; -Warnings: -Warning 1105 plugin_dir was not specified CREATE FUNCTION myfunc_double RETURNS REAL SONAME "UDF_EXAMPLE_LIB"; CREATE FUNCTION myfunc_nonexist RETURNS INTEGER SONAME "UDF_EXAMPLE_LIB"; ERROR HY000: Can't find symbol 'myfunc_nonexist' in library @@ -237,8 +235,6 @@ DROP FUNCTION avgcost; select * from mysql.func; name ret dl type CREATE FUNCTION is_const RETURNS STRING SONAME "UDF_EXAMPLE_LIB"; -Warnings: -Warning 1105 plugin_dir was not specified select IS_const(3); IS_const(3) const @@ -248,8 +244,6 @@ name ret dl type select is_const(3); ERROR 42000: FUNCTION test.is_const does not exist CREATE FUNCTION is_const RETURNS STRING SONAME "UDF_EXAMPLE_LIB"; -Warnings: -Warning 1105 plugin_dir was not specified select is_const(3) as const, is_const(3.14) as const, From 4e6de6ed27007c26a0ad249d6e0f1e6bf2af2d54 Mon Sep 17 00:00:00 2001 From: He Zhenxing Date: Tue, 26 Aug 2008 20:11:56 +0800 Subject: [PATCH 402/435] Fix cherry picking patch of BUG#37051 mysql-test/include/wait_for_slave_sql_error_and_skip.inc: include/start_slave.inc not exist yet, changed to start slave and source include/wait_for_slave_to_start.inc mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result: update result --- .../wait_for_slave_sql_error_and_skip.inc | 3 +- .../rpl/r/rpl_filter_tables_not_exist.result | 32 +++++++++---------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc index c38277b33ff..ef17ffed12f 100644 --- a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc +++ b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc @@ -19,5 +19,6 @@ if ($show_sql_error) # skip the erroneous statement set global sql_slave_skip_counter=1; -source include/start_slave.inc; +start slave; +source include/wait_for_slave_to_start.inc; connection master; diff --git a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result index 7eddaabc636..fb7f29da656 100644 --- a/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result +++ b/mysql-test/suite/rpl/r/rpl_filter_tables_not_exist.result @@ -50,82 +50,82 @@ UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7) ON (t1.id=t4.id and t1.id=t7.id) SET a=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t4, t7) ON (t1.id=t2.id and t1.id=t4.id and t1.id=t7.id) SET a=0, b=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t2, t3, t7) ON (t1.id=t2.id and t1.id=t3.id and t1.id=t7.id) SET a=0, b=0, c=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t7 ON (t1.id=t7.id) SET a=0, g=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN t1 ON (t1.id=t7.id) SET a=0, g=0 where t7.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t7) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t7.id) SET a=0, g=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t7, t8) ON (t1.id=t4.id and t1.id=t7.id and t1.id=t8.id) SET a=0, g=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t7, t8, t9) ON (t1.id=t7.id and t1.id=t8.id and t1.id=t9.id) SET a=0, g=0, h=0, i=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t2, t3) ON (t7.id=t1.id and t7.id=t2.id and t7.id=t3.id) SET g=0, a=0, b=0, c=0 where t7.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t4, t5, t3) ON (t7.id=t4.id and t7.id=t5.id and t7.id=t3.id) SET g=0, c=0 where t7.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t8, t9, t3) ON (t7.id=t8.id and t7.id=t9.id and t7.id=t3.id) SET g=0, h=0, i=0, c=0 where t7.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN t4 ON (t1.id=t4.id) SET a=0, d=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t1 LEFT JOIN (t4, t5, t6) ON (t1.id=t4.id and t1.id=t5.id and t1.id=t6.id) SET a=0, d=0, e=0, f=0 where t1.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t4' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t4 LEFT JOIN (t1, t5, t6) ON (t4.id=t1.id and t4.id=t5.id and t4.id=t6.id) SET a=0, e=0, f=0 where t4.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1; --source include/wait_for_slave_sql_error_and_skip.inc Last_SQL_Error = Error 'Table 'test.t7' doesn't exist' on query. Default database: 'test'. Query: 'UPDATE t7 LEFT JOIN (t1, t4, t2) ON (t7.id=t1.id and t7.id=t4.id and t7.id=t2.id) SET a=0, b=0, d=0, g=0 where t7.id=1' set global sql_slave_skip_counter=1; -include/start_slave.inc +start slave; [on slave] show tables like 't%'; Tables_in_test (t%) From b21997851493d2da85a34e8de669f55ae60a12f5 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Tue, 26 Aug 2008 18:48:50 +0500 Subject: [PATCH 403/435] Fix for bug #37310: 'on update CURRENT_TIMESTAMP' option crashes the table Problem: data consistency check (maximum record length) for a correct MyISAM table with CHECKSUM=1 and ROW_FORMAT=DYNAMIC option may fail due to wrong inner MyISAM parameter. In result we may have the table marked as 'corrupted'. Fix: properly set MyISAM maximum record length parameter. myisam/mi_create.c: Fix for bug #37310: 'on update CURRENT_TIMESTAMP' option crashes the table Use HA_OPTION_PACK_RECORD instead of HA_PACK_RECORD (typo?) calculating packed record length. --- myisam/mi_create.c | 2 +- mysql-test/r/myisam.result | 22 ++++++++++++++++++++++ mysql-test/t/myisam.test | 15 +++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/myisam/mi_create.c b/myisam/mi_create.c index 75863ed976f..bb53393c345 100644 --- a/myisam/mi_create.c +++ b/myisam/mi_create.c @@ -192,7 +192,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, packed=(packed+7)/8; if (pack_reclength != INT_MAX32) pack_reclength+= reclength+packed + - test(test_all_bits(options, HA_OPTION_CHECKSUM | HA_PACK_RECORD)); + test(test_all_bits(options, HA_OPTION_CHECKSUM | HA_OPTION_PACK_RECORD)); min_pack_length+=packed; if (!ci->data_file_length && ci->max_rows) diff --git a/mysql-test/r/myisam.result b/mysql-test/r/myisam.result index 33f64d600bb..53bb022147e 100644 --- a/mysql-test/r/myisam.result +++ b/mysql-test/r/myisam.result @@ -1861,4 +1861,26 @@ id ref 3 2 4 5 DROP TABLE t1, t2; +CREATE TABLE t1 (a INT) ENGINE=MyISAM CHECKSUM=1 ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES (0); +UPDATE t1 SET a=1; +SELECT a FROM t1; +a +1 +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +INSERT INTO t1 VALUES (0), (5), (4), (2); +UPDATE t1 SET a=2; +SELECT a FROM t1; +a +2 +2 +2 +2 +2 +CHECK TABLE t1; +Table Op Msg_type Msg_text +test.t1 check status OK +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/myisam.test b/mysql-test/t/myisam.test index 90d4fc01afb..254b0378aa8 100644 --- a/mysql-test/t/myisam.test +++ b/mysql-test/t/myisam.test @@ -1210,4 +1210,19 @@ SELECT * FROM t1; DROP TABLE t1, t2; + +# +# Bug#37310: 'on update CURRENT_TIMESTAMP' option crashes the table +# +CREATE TABLE t1 (a INT) ENGINE=MyISAM CHECKSUM=1 ROW_FORMAT=DYNAMIC; +INSERT INTO t1 VALUES (0); +UPDATE t1 SET a=1; +SELECT a FROM t1; +CHECK TABLE t1; +INSERT INTO t1 VALUES (0), (5), (4), (2); +UPDATE t1 SET a=2; +SELECT a FROM t1; +CHECK TABLE t1; +DROP TABLE t1; + --echo End of 5.0 tests From 42d0266afe88fb34877d5a33e38a356dd26b02e3 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Tue, 26 Aug 2008 18:51:06 +0500 Subject: [PATCH 404/435] Fix for bug#37277: Potential crash when a spatial index isn't the first key Typo fixed. No test case as we actually don't use rtree_get_first() and rtree_get_next() at present. --- myisam/rt_index.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/myisam/rt_index.c b/myisam/rt_index.c index 8ecb3688ad5..df8964edc20 100644 --- a/myisam/rt_index.c +++ b/myisam/rt_index.c @@ -389,7 +389,7 @@ int rtree_get_first(MI_INFO *info, uint keynr, uint key_length) info->rtree_recursion_depth = -1; info->buff_used = 1; - return rtree_get_req(info, &keyinfo[keynr], key_length, root, 0); + return rtree_get_req(info, keyinfo, key_length, root, 0); } @@ -436,7 +436,7 @@ int rtree_get_next(MI_INFO *info, uint keynr, uint key_length) return -1; } - return rtree_get_req(info, &keyinfo[keynr], key_length, root, 0); + return rtree_get_req(info, keyinfo, key_length, root, 0); } } From 84dc95cfcdb3391c3dc6c03f3531c8a97903f825 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Tue, 26 Aug 2008 16:31:30 +0200 Subject: [PATCH 405/435] Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY post push fix Updated partition_symlink since different error behavior if embedded (or not partitioned) mysql-test/r/partition_symlink.result: Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY updated result file mysql-test/t/partition_symlink.test: Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY Fix for embedded --- mysql-test/r/partition_symlink.result | 4 ++-- mysql-test/t/partition_symlink.test | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mysql-test/r/partition_symlink.result b/mysql-test/r/partition_symlink.result index 6c5d3153ffd..73844e9e70d 100644 --- a/mysql-test/r/partition_symlink.result +++ b/mysql-test/r/partition_symlink.result @@ -113,9 +113,9 @@ set @@sql_mode=@org_mode; create table t1 (a int) partition by key (a) (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); -ERROR HY000: Incorrect arguments to DATA DIRECTORY +Got one of the listed errors create table t1 (a int) partition by key (a) (partition p0, partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); -ERROR HY000: Incorrect arguments to DATA DIRECTORY +Got one of the listed errors diff --git a/mysql-test/t/partition_symlink.test b/mysql-test/t/partition_symlink.test index b8b417547e6..4147d2c6e89 100644 --- a/mysql-test/t/partition_symlink.test +++ b/mysql-test/t/partition_symlink.test @@ -154,7 +154,8 @@ set @@sql_mode=@org_mode; # # Bug 21350: Data Directory problems # --- error ER_WRONG_ARGUMENTS +# Added ER_WRONG_TABLE_NAME and reported bug#39045 +-- error ER_WRONG_ARGUMENTS, ER_WRONG_TABLE_NAME create table t1 (a int) partition by key (a) (partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data'); @@ -163,7 +164,8 @@ partition by key (a) # Insert a test that manages to create the first partition and fails with # the second, ensure that we clean up afterwards in a proper manner. # ---error ER_WRONG_ARGUMENTS +# Added ER_WRONG_TABLE_NAME and reported bug#39045 +--error ER_WRONG_ARGUMENTS, ER_WRONG_TABLE_NAME create table t1 (a int) partition by key (a) (partition p0, From 0203409175ce8f68111c296c3fc9a7306f04cca5 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Wed, 27 Aug 2008 10:40:11 +0200 Subject: [PATCH 406/435] Bug #38773: DROP DATABASE cause switch to stmt-mode when there are temporary tables open When executing a DROP DATABASE statement in ROW mode and having temporary tables open at the same time, the existance of temporary tables prevent the server from switching back to row mode after temporarily switching to statement mode to handle the logging of the statement. Fixed the problem by removing the code to switch to statement mode and added code to temporarily disable the binary log while dropping the objects in the database. mysql-test/extra/binlog_tests/database.test: Added test to ensure that DROP DATABASE does not affect the replication mode. sql/sql_db.cc: Removed code that clears the current_stmt_binlog_row_based flag. Added code to disable the binary log while dropping the objects in a database. --- mysql-test/extra/binlog_tests/database.test | 15 ++++++ .../suite/binlog/r/binlog_database.result | 53 +++++++++++++++++++ sql/sql_db.cc | 27 +++++++--- 3 files changed, 88 insertions(+), 7 deletions(-) diff --git a/mysql-test/extra/binlog_tests/database.test b/mysql-test/extra/binlog_tests/database.test index 11a8f53a6d7..2e445f98adf 100644 --- a/mysql-test/extra/binlog_tests/database.test +++ b/mysql-test/extra/binlog_tests/database.test @@ -13,3 +13,18 @@ create trigger tr1 before insert on t1 for each row insert into t2 values (2*new create procedure sp1 (a int) insert into t1 values(a); drop database testing_1; source include/show_binlog_events.inc; + +# BUG#38773: DROP DATABASE cause switch to stmt-mode when there are +# temporary tables open + +use test; +reset master; +create temporary table tt1 (a int); +create table t1 (a int); +insert into t1 values (1); +disable_warnings; +drop database if exists mysqltest1; +enable_warnings; +insert into t1 values (1); +drop table tt1, t1; +source include/show_binlog_events.inc; diff --git a/mysql-test/suite/binlog/r/binlog_database.result b/mysql-test/suite/binlog/r/binlog_database.result index dc6b9ca51bb..3b470fe11af 100644 --- a/mysql-test/suite/binlog/r/binlog_database.result +++ b/mysql-test/suite/binlog/r/binlog_database.result @@ -17,6 +17,22 @@ master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int) insert into t1 values(a) master-bin.000001 # Query # # drop database testing_1 +use test; +reset master; +create temporary table tt1 (a int); +create table t1 (a int); +insert into t1 values (1); +drop database if exists mysqltest1; +insert into t1 values (1); +drop table tt1, t1; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int) +master-bin.000001 # Query # # use `test`; create table t1 (a int) +master-bin.000001 # Query # # use `test`; insert into t1 values (1) +master-bin.000001 # Query # # drop database if exists mysqltest1 +master-bin.000001 # Query # # use `test`; insert into t1 values (1) +master-bin.000001 # Query # # use `test`; drop table tt1, t1 set binlog_format=mixed; reset master; create database testing_1; @@ -36,6 +52,22 @@ master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int) insert into t1 values(a) master-bin.000001 # Query # # drop database testing_1 +use test; +reset master; +create temporary table tt1 (a int); +create table t1 (a int); +insert into t1 values (1); +drop database if exists mysqltest1; +insert into t1 values (1); +drop table tt1, t1; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int) +master-bin.000001 # Query # # use `test`; create table t1 (a int) +master-bin.000001 # Query # # use `test`; insert into t1 values (1) +master-bin.000001 # Query # # drop database if exists mysqltest1 +master-bin.000001 # Query # # use `test`; insert into t1 values (1) +master-bin.000001 # Query # # use `test`; drop table tt1, t1 set binlog_format=row; reset master; create database testing_1; @@ -55,6 +87,27 @@ master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int) insert into t1 values(a) master-bin.000001 # Query # # drop database testing_1 +use test; +reset master; +create temporary table tt1 (a int); +create table t1 (a int); +insert into t1 values (1); +drop database if exists mysqltest1; +insert into t1 values (1); +drop table tt1, t1; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; create table t1 (a int) +master-bin.000001 # Query # # use `test`; BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # use `test`; COMMIT +master-bin.000001 # Query # # drop database if exists mysqltest1 +master-bin.000001 # Query # # use `test`; BEGIN +master-bin.000001 # Table_map # # table_id: # (test.t1) +master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F +master-bin.000001 # Query # # use `test`; COMMIT +master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ show databases; Database information_schema diff --git a/sql/sql_db.cc b/sql/sql_db.cc index bb55f5f7a4f..e1bff5e435b 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -883,13 +883,6 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) VOID(pthread_mutex_lock(&LOCK_mysql_create_db)); - /* - This statement will be replicated as a statement, even when using - row-based replication. The flag will be reset at the end of the - statement. - */ - thd->clear_current_stmt_binlog_row_based(); - length= build_table_filename(path, sizeof(path), db, "", "", 0); strmov(path+length, MY_DB_OPT_FILE); // Append db option file name del_dbopt(path); // Remove dboption hash entry @@ -916,16 +909,36 @@ bool mysql_rm_db(THD *thd,char *db,bool if_exists, bool silent) error= -1; + /* + We temporarily disable the binary log while dropping the objects + in the database. Since the DROP DATABASE statement is always + replicated as a statement, execution of it will drop all objects + in the database on the slave as well, so there is no need to + replicate the removal of the individual objects in the database + as well. + + This is more of a safety precaution, since normally no objects + should be dropped while the database is being cleaned, but in + the event that a change in the code to remove other objects is + made, these drops should still not be logged. + + Notice that the binary log have to be enabled over the call to + ha_drop_database(), since NDB otherwise detects the binary log + as disabled and will not log the drop database statement on any + other connected server. + */ if ((deleted= mysql_rm_known_files(thd, dirp, db, path, 0, &dropped_tables)) >= 0) { ha_drop_database(path); + tmp_disable_binlog(thd); query_cache_invalidate1(db); (void) sp_drop_db_routines(thd, db); /* @todo Do not ignore errors */ #ifdef HAVE_EVENT_SCHEDULER Events::drop_schema_events(thd, db); #endif error = 0; + reenable_binlog(thd); } } if (!silent && deleted>=0) From 06bf25e4d429682a518bea5a1b67392fe51756da Mon Sep 17 00:00:00 2001 From: Evgeny Potemkin Date: Wed, 27 Aug 2008 17:03:17 +0400 Subject: [PATCH 407/435] Bug#38195: Incorrect handling of aggregate functions when loose index scan is used causes server crash. When the loose index scan access method is used values of aggregated functions are precomputed by it. Aggregation of such functions shouldn't be performed in this case and functions should be treated as normal ones. The create_tmp_table function wasn't taking this into account and this led to a crash if a query has MIN/MAX aggregate functions and employs temporary table and loose index scan. Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used. mysql-test/r/group_min_max.result: Added a test case for the bug#38195. mysql-test/t/group_min_max.test: Added a test case for the bug#38195. sql/sql_select.cc: Bug#38195: Incorrect handling of aggregate functions when loose index scan is used causes server crash. The JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used. --- mysql-test/r/group_min_max.result | 76 +++++++++++++++++++++++++++++++ mysql-test/t/group_min_max.test | 19 ++++++++ sql/sql_select.cc | 5 +- 3 files changed, 99 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result index 5982931e677..f2f488650d5 100644 --- a/mysql-test/r/group_min_max.result +++ b/mysql-test/r/group_min_max.result @@ -2353,3 +2353,79 @@ a MIN(b) MAX(b) AVG(b) 2 1 3 2.0000 1 1 3 2.0000 DROP TABLE t1; +create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM; +insert into t1 (a,b) values +(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6), +(0,7),(0,8),(0,9),(0,10),(0,11),(0,12),(0,13), +(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6), +(1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13), +(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6), +(2,7),(2,8),(2,9),(2,10),(2,11),(2,12),(2,13), +(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6), +(3,7),(3,8),(3,9),(3,10),(3,11),(3,12),(3,13); +insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a; +select * from t1; +a b +0 0 +0 1 +0 2 +0 3 +0 4 +0 5 +0 6 +0 7 +0 8 +0 9 +0 10 +0 11 +0 12 +0 13 +0 14 +1 0 +1 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +1 11 +1 12 +1 13 +2 0 +2 1 +2 2 +2 3 +2 4 +2 5 +2 6 +2 7 +2 8 +2 9 +2 10 +2 11 +2 12 +2 13 +3 0 +3 1 +3 2 +3 3 +3 4 +3 5 +3 6 +3 7 +3 8 +3 9 +3 10 +3 11 +3 12 +3 13 +explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 range PRIMARY,index PRIMARY 4 NULL 3 Using where; Using index for group-by; Using temporary +Warnings: +Note 1003 select sql_buffer_result `test`.`t1`.`a` AS `a`,(max(`test`.`t1`.`b`) + 1) AS `max(b)+1` from `test`.`t1` where (`test`.`t1`.`a` = 0) group by `test`.`t1`.`a` +drop table t1; diff --git a/mysql-test/t/group_min_max.test b/mysql-test/t/group_min_max.test index 7f2607b513d..f7aed7301fb 100644 --- a/mysql-test/t/group_min_max.test +++ b/mysql-test/t/group_min_max.test @@ -916,3 +916,22 @@ SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC; SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC; DROP TABLE t1; + +# +# Bug#38195: Incorrect handling of aggregate functions when loose index scan is +# used causes server crash. +# +create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM; +insert into t1 (a,b) values +(0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6), + (0,7),(0,8),(0,9),(0,10),(0,11),(0,12),(0,13), +(1,0),(1,1),(1,2),(1,3),(1,4),(1,5),(1,6), + (1,7),(1,8),(1,9),(1,10),(1,11),(1,12),(1,13), +(2,0),(2,1),(2,2),(2,3),(2,4),(2,5),(2,6), + (2,7),(2,8),(2,9),(2,10),(2,11),(2,12),(2,13), +(3,0),(3,1),(3,2),(3,3),(3,4),(3,5),(3,6), + (3,7),(3,8),(3,9),(3,10),(3,11),(3,12),(3,13); +insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a; +select * from t1; +explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a; +drop table t1; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 6de4b296d34..6928effc1a5 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1724,7 +1724,8 @@ JOIN::exec() if (!items1) { items1= items0 + all_fields.elements; - if (sort_and_group || curr_tmp_table->group) + if (sort_and_group || curr_tmp_table->group || + tmp_table_param.precomputed_group_by) { if (change_to_use_tmp_fields(thd, items1, tmp_fields_list1, tmp_all_fields1, @@ -9259,6 +9260,8 @@ create_tmp_table(THD *thd,TMP_TABLE_PARAM *param,List &fields, MI_COLUMNDEF *recinfo; uint total_uneven_bit_length= 0; bool force_copy_fields= param->force_copy_fields; + /* Treat sum functions as normal ones when loose index scan is used. */ + save_sum_fields|= param->precomputed_group_by; DBUG_ENTER("create_tmp_table"); DBUG_PRINT("enter",("distinct: %d save_sum_fields: %d rows_limit: %lu group: %d", (int) distinct, (int) save_sum_fields, From 554203f60bdb6c9bf111aeade387116e062e8a3e Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Wed, 27 Aug 2008 16:17:55 +0200 Subject: [PATCH 408/435] Result file change. --- mysql-test/suite/binlog/r/binlog_innodb.result | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql-test/suite/binlog/r/binlog_innodb.result b/mysql-test/suite/binlog/r/binlog_innodb.result index 896d8f734fc..adc90d007bd 100644 --- a/mysql-test/suite/binlog/r/binlog_innodb.result +++ b/mysql-test/suite/binlog/r/binlog_innodb.result @@ -115,14 +115,14 @@ master-bin.000001 # Xid # # COMMIT /* XID */ DROP TABLE t1; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 13 +Binlog_cache_use 15 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 0 create table t1 (a int) engine=innodb; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 14 +Binlog_cache_use 16 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 @@ -131,7 +131,7 @@ delete from t1; commit; show status like "binlog_cache_use"; Variable_name Value -Binlog_cache_use 15 +Binlog_cache_use 17 show status like "binlog_cache_disk_use"; Variable_name Value Binlog_cache_disk_use 1 From cab267ecc7952182b9506cf23aed2a0fa2009191 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Wed, 27 Aug 2008 18:19:22 +0300 Subject: [PATCH 409/435] Bug#37548: result value erronously reported being NULL in certain subqueries When switching to indexed ORDER BY we must be sure to reset the index read flag if we are switching from a covering index to non-covering. mysql-test/r/subselect.result: Bug#37548: test case mysql-test/t/subselect.test: Bug#37548: test case sql/sql_select.cc: Bug#37548: update the index read flag if the index for indexed ORDER BY is not covering. --- mysql-test/r/subselect.result | 39 +++++++++++++++++++++++++++++++ mysql-test/t/subselect.test | 44 +++++++++++++++++++++++++++++++++++ sql/sql_select.cc | 10 ++++++++ 3 files changed, 93 insertions(+) diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index ce4ac00b791..b4c70816eb6 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -4391,3 +4391,42 @@ SELECT * FROM t1 WHERE _utf8'a' = ANY (SELECT s1 FROM t1); s1 a DROP TABLE t1; +CREATE TABLE t1 (a int, b int, PRIMARY KEY (a), KEY b (b)); +INSERT INTO t1 VALUES (1,NULL), (9,NULL); +CREATE TABLE t2 ( +a int, +b int, +c int, +d int, +PRIMARY KEY (a), +UNIQUE KEY b (b,c,d), +KEY b_2 (b), +KEY c (c), +KEY d (d) +); +INSERT INTO t2 VALUES +(43, 2, 11 ,30), +(44, 2, 12 ,30), +(45, 1, 1 ,10000), +(46, 1, 2 ,10000), +(556,1, 32 ,10000); +CREATE TABLE t3 ( +a int, +b int, +c int, +PRIMARY KEY (a), +UNIQUE KEY b (b,c), +KEY c (c), +KEY b_2 (b) +); +INSERT INTO t3 VALUES (1,1,1), (2,32,1); +explain +SELECT t1.a, (SELECT 1 FROM t2 WHERE t2.b=t3.c AND t2.c=t1.a ORDER BY t2.d LIMIT 1) AS incorrect FROM t1, t3 WHERE t3.b=t1.a; +id select_type table type possible_keys key key_len ref rows Extra +1 PRIMARY t3 index b,b_2 b 10 NULL 2 Using index +1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t3.b 1 Using index +2 DEPENDENT SUBQUERY t2 index b,b_2,c d 5 NULL 1 Using where +SELECT t1.a, (SELECT 1 FROM t2 WHERE t2.b=t3.c AND t2.c=t1.a ORDER BY t2.d LIMIT 1) AS incorrect FROM t1, t3 WHERE t3.b=t1.a; +a incorrect +1 1 +DROP TABLE t1,t2,t3; diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index ee3a7428d4a..53257f32982 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -3273,3 +3273,47 @@ INSERT INTO t1 VALUES ('a'); SELECT * FROM t1 WHERE _utf8'a' = ANY (SELECT s1 FROM t1); DROP TABLE t1; +# +# Bug #37548: result value erronously reported being NULL in certain subqueries +# + +CREATE TABLE t1 (a int, b int, PRIMARY KEY (a), KEY b (b)); + +INSERT INTO t1 VALUES (1,NULL), (9,NULL); + +CREATE TABLE t2 ( + a int, + b int, + c int, + d int, + PRIMARY KEY (a), + UNIQUE KEY b (b,c,d), + KEY b_2 (b), + KEY c (c), + KEY d (d) +); + +INSERT INTO t2 VALUES + (43, 2, 11 ,30), + (44, 2, 12 ,30), + (45, 1, 1 ,10000), + (46, 1, 2 ,10000), + (556,1, 32 ,10000); + +CREATE TABLE t3 ( + a int, + b int, + c int, + PRIMARY KEY (a), + UNIQUE KEY b (b,c), + KEY c (c), + KEY b_2 (b) +); + +INSERT INTO t3 VALUES (1,1,1), (2,32,1); + +explain +SELECT t1.a, (SELECT 1 FROM t2 WHERE t2.b=t3.c AND t2.c=t1.a ORDER BY t2.d LIMIT 1) AS incorrect FROM t1, t3 WHERE t3.b=t1.a; +SELECT t1.a, (SELECT 1 FROM t2 WHERE t2.b=t3.c AND t2.c=t1.a ORDER BY t2.d LIMIT 1) AS incorrect FROM t1, t3 WHERE t3.b=t1.a; + +DROP TABLE t1,t2,t3; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2ef7aa13dd8..ee72dd5fae2 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -13155,6 +13155,16 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, table->key_read=1; table->file->extra(HA_EXTRA_KEYREAD); } + else if (table->key_read) + { + /* + Clear the covering key read flags that might have been + previously set for some key other than the current best_key. + */ + table->key_read= 0; + table->file->extra(HA_EXTRA_NO_KEYREAD); + } + table->file->ha_index_or_rnd_end(); if (join->select_options & SELECT_DESCRIBE) { From 54a59681d68d9e2edd1354443d35e54bd8373090 Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Thu, 28 Aug 2008 02:10:37 +0500 Subject: [PATCH 410/435] Bug #37799: SELECT with a BIT column in WHERE clause returns unexpected result If: 1. a table has a not nullable BIT column c1 with a length shorter than 8 bits and some additional not nullable columns c2 etc, and 2. the WHERE clause is like: (c1 = constant) AND c2 ..., the SELECT query returns unexpected result set. The server stores BIT columns in a tricky way to save disk space: if column's bit length is not divisible by 8, the server places reminder bits among the null bits at the start of a record. The rest bytes are stored in the record itself, and Field::ptr points to these rest bytes. However if a bit length of the whole column is less than 8, there are no remaining bytes, and there is nothing to store in the record at its regular place. In this case Field::ptr points to bytes actually occupied by the next column in a record. If both columns (BIT and the next column) are NOT NULL, the Field::eq function incorrectly deduces that this is the same column, so query transformation/equal item elimination code (see build_equal_items_for_cond) may mix these columns and damage conditions containing references to them. mysql-test/r/type_bit.result: Added test case for bug #37799. mysql-test/t/type_bit.test: Added test case for bug #37799. sql/field.h: 1. The Field::eq function has been modified to take types of comparing columns into account to distinguish between BIT and not BIT columns referencing the same bytes in a record. 2. Unnecessary type comparison has been removed from the Field_bit::eq function (moved to Field::eq). --- mysql-test/r/type_bit.result | 24 ++++++++++++++++++++++++ mysql-test/t/type_bit.test | 19 +++++++++++++++++++ sql/field.h | 3 +-- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/type_bit.result b/mysql-test/r/type_bit.result index 4c4fcb9a9ae..68c0e1635a3 100644 --- a/mysql-test/r/type_bit.result +++ b/mysql-test/r/type_bit.result @@ -684,4 +684,28 @@ SELECT 1 FROM t1 GROUP BY a; 1 1 DROP TABLE t1; +CREATE TABLE t1 (b BIT NOT NULL, i2 INTEGER NOT NULL, s VARCHAR(255) NOT NULL); +INSERT INTO t1 VALUES(0x01,100,''), (0x00,300,''), (0x01,200,''), (0x00,100,''); +SELECT HEX(b), i2 FROM t1 WHERE (i2>=100 AND i2<201) AND b=TRUE; +HEX(b) i2 +1 100 +1 200 +CREATE TABLE t2 (b1 BIT NOT NULL, b2 BIT NOT NULL, i2 INTEGER NOT NULL, +s VARCHAR(255) NOT NULL); +INSERT INTO t2 VALUES (0x01,0x00,100,''), (0x00,0x01,300,''), +(0x01,0x00,200,''), (0x00,0x01,100,''); +SELECT HEX(b1), i2 FROM t2 WHERE (i2>=100 AND i2<201) AND b1=TRUE; +HEX(b1) i2 +1 100 +1 200 +SELECT HEX(b2), i2 FROM t2 WHERE (i2>=100 AND i2<201) AND b2=FALSE; +HEX(b2) i2 +0 100 +0 200 +SELECT HEX(b1), HEX(b2), i2 FROM t2 +WHERE (i2>=100 AND i2<201) AND b1=TRUE AND b2=FALSE; +HEX(b1) HEX(b2) i2 +1 0 100 +1 0 200 +DROP TABLE t1, t2; End of 5.0 tests diff --git a/mysql-test/t/type_bit.test b/mysql-test/t/type_bit.test index 3095311bfbc..6a6b29deda4 100644 --- a/mysql-test/t/type_bit.test +++ b/mysql-test/t/type_bit.test @@ -333,4 +333,23 @@ SELECT 1 FROM t1 GROUP BY a; DROP TABLE t1; +# +# Bug#37799 SELECT with a BIT column in WHERE clause returns unexpected result +# + +CREATE TABLE t1 (b BIT NOT NULL, i2 INTEGER NOT NULL, s VARCHAR(255) NOT NULL); +INSERT INTO t1 VALUES(0x01,100,''), (0x00,300,''), (0x01,200,''), (0x00,100,''); +SELECT HEX(b), i2 FROM t1 WHERE (i2>=100 AND i2<201) AND b=TRUE; + +CREATE TABLE t2 (b1 BIT NOT NULL, b2 BIT NOT NULL, i2 INTEGER NOT NULL, + s VARCHAR(255) NOT NULL); +INSERT INTO t2 VALUES (0x01,0x00,100,''), (0x00,0x01,300,''), + (0x01,0x00,200,''), (0x00,0x01,100,''); +SELECT HEX(b1), i2 FROM t2 WHERE (i2>=100 AND i2<201) AND b1=TRUE; +SELECT HEX(b2), i2 FROM t2 WHERE (i2>=100 AND i2<201) AND b2=FALSE; +SELECT HEX(b1), HEX(b2), i2 FROM t2 + WHERE (i2>=100 AND i2<201) AND b1=TRUE AND b2=FALSE; + +DROP TABLE t1, t2; + --echo End of 5.0 tests diff --git a/sql/field.h b/sql/field.h index 241ad61f339..7b2dda77095 100644 --- a/sql/field.h +++ b/sql/field.h @@ -138,7 +138,7 @@ public: virtual bool eq(Field *field) { return (ptr == field->ptr && null_ptr == field->null_ptr && - null_bit == field->null_bit); + null_bit == field->null_bit && field->type() == type()); } virtual bool eq_def(Field *field); @@ -1489,7 +1489,6 @@ public: bool eq(Field *field) { return (Field::eq(field) && - field->type() == type() && bit_ptr == ((Field_bit *)field)->bit_ptr && bit_ofs == ((Field_bit *)field)->bit_ofs); } From d70d171ceef259920d975fa2ddccaa6a41ba91fe Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 28 Aug 2008 16:51:00 +0200 Subject: [PATCH 411/435] Raise version number after cloning 5.1.28-rc --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 56bdb4ba006..427a71d4cbc 100644 --- a/configure.in +++ b/configure.in @@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM # # When changing major version number please also check switch statement # in mysqlbinlog::check_master_version(). -AM_INIT_AUTOMAKE(mysql, 5.1.28) +AM_INIT_AUTOMAKE(mysql, 5.1.30) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 From 139a4ea88cc9e2a60e3bdbf3135358ff7bce0df5 Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Thu, 28 Aug 2008 16:59:22 +0200 Subject: [PATCH 412/435] Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY. post push patch when building with valgrind, it does not compile in realpath, so this test fails when using a valgrind build NOTE: building with valgrind is not the same as useing the --valgrind option with mysql-test-run mysql-test/t/partition_not_windows.test: Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY. disable test if running valgrind since realpath is not included in the valgrind build --- mysql-test/t/partition_not_windows.test | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mysql-test/t/partition_not_windows.test b/mysql-test/t/partition_not_windows.test index d7108d5af98..4814828c9b9 100644 --- a/mysql-test/t/partition_not_windows.test +++ b/mysql-test/t/partition_not_windows.test @@ -3,6 +3,8 @@ --source include/have_partition.inc # DATA DIRECTORY/INDEX DIRECTORY require symbolic link support --source include/have_symlink.inc +# realpath is not compiled in when building with valgrind +--source include/not_valgrind.inc # The test for Bug 20770 is disabled on Windows due to BUG#19107; it # should be moved into partition.test once the bug has been resolved. From bc2b637f8685d6c2e7f8ddc1b78d44e9b6202610 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 28 Aug 2008 18:15:54 +0300 Subject: [PATCH 413/435] On behalf of Jasonh: fix for a failing test case of bug 37051 --- mysql-test/include/wait_for_slave_sql_error_and_skip.inc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc index ef17ffed12f..4b4776d2923 100644 --- a/mysql-test/include/wait_for_slave_sql_error_and_skip.inc +++ b/mysql-test/include/wait_for_slave_sql_error_and_skip.inc @@ -17,6 +17,9 @@ if ($show_sql_error) echo Last_SQL_Error = $error; } +# wait for SQL thread to stop after the error +source include/wait_for_slave_sql_to_stop.inc; + # skip the erroneous statement set global sql_slave_skip_counter=1; start slave; From c0de944fdb2cff16b1ca9cc344e356f68c38d90a Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Fri, 29 Aug 2008 17:20:08 +0300 Subject: [PATCH 414/435] Bug #38798 Assertion mysql_bin_log.is_open() failed in binlog_trans_log_savepos() The assert is about binlogging must have been activated, but it was not actually according to the reported how-to-repeat instuctions. Analysis revealed that binlog_start_trans_and_stmt() was called without prior testing if binlogging is ON. Fixed with avoing entering binlog_start_trans_and_stmt() if binlog is not activated. mysql-test/r/skip_log_bin.result: new results. mysql-test/t/skip_log_bin-master.opt: the option to deactivate binlogging. mysql-test/t/skip_log_bin.test: regression test for the bug. sql/sql_insert.cc: avoing entering binlog_start_trans_and_stmt() if binlog is not activated. --- mysql-test/r/skip_log_bin.result | 6 ++++++ mysql-test/t/skip_log_bin-master.opt | 1 + mysql-test/t/skip_log_bin.test | 25 +++++++++++++++++++++++++ sql/sql_insert.cc | 12 +++++++----- 4 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 mysql-test/r/skip_log_bin.result create mode 100644 mysql-test/t/skip_log_bin-master.opt create mode 100644 mysql-test/t/skip_log_bin.test diff --git a/mysql-test/r/skip_log_bin.result b/mysql-test/r/skip_log_bin.result new file mode 100644 index 00000000000..2fdd88ff526 --- /dev/null +++ b/mysql-test/r/skip_log_bin.result @@ -0,0 +1,6 @@ +DROP TABLE IF EXISTS t1, t2; +set @@session.binlog_format=row; +create table t1 (a int); +insert into t1 values (1); +create table t2 select * from t1; +drop table t1, t2; diff --git a/mysql-test/t/skip_log_bin-master.opt b/mysql-test/t/skip_log_bin-master.opt new file mode 100644 index 00000000000..9ebccecc95e --- /dev/null +++ b/mysql-test/t/skip_log_bin-master.opt @@ -0,0 +1 @@ +--loose-skip-log-bin diff --git a/mysql-test/t/skip_log_bin.test b/mysql-test/t/skip_log_bin.test new file mode 100644 index 00000000000..6175b2cf7d3 --- /dev/null +++ b/mysql-test/t/skip_log_bin.test @@ -0,0 +1,25 @@ +# +# binlog_off.test purpose is to verify that the --skip-log-bin flag +# works correctly +# + +--disable_warnings +DROP TABLE IF EXISTS t1, t2; +--enable_warnings + +# +# Bug #38798 Assertion mysql_bin_log.is_open() failed in +# binlog_trans_log_savepos() +# Testing that there is no crash. +# Before BUG#38798, the code for CREATE...SELECT called an internal function to +# binlog the statement, even with --skip-log-bin. This caused an assertion +# to be thrown since the binlog was not open. + +set @@session.binlog_format=row; + +create table t1 (a int); +insert into t1 values (1); +create table t2 select * from t1; + +# clean-up +drop table t1, t2; diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 9e3c591ae2a..7d66ab487f4 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -3523,7 +3523,8 @@ select_create::prepare(List &values, SELECT_LEX_UNIT *u) temporary table, we need to start a statement transaction. */ if ((thd->lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) == 0 && - thd->current_stmt_binlog_row_based) + thd->current_stmt_binlog_row_based && + mysql_bin_log.is_open()) { thd->binlog_start_trans_and_stmt(); } @@ -3619,10 +3620,11 @@ select_create::binlog_show_create_table(TABLE **tables, uint count) result= store_create_info(thd, &tmp_table_list, &query, create_info); DBUG_ASSERT(result == 0); /* store_create_info() always return 0 */ - thd->binlog_query(THD::STMT_QUERY_TYPE, - query.ptr(), query.length(), - /* is_trans */ TRUE, - /* suppress_use */ FALSE); + if (mysql_bin_log.is_open()) + thd->binlog_query(THD::STMT_QUERY_TYPE, + query.ptr(), query.length(), + /* is_trans */ TRUE, + /* suppress_use */ FALSE); } void select_create::store_values(List &values) From dbe008cc8cf348e09766d0e001aae0f5e667869b Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Mon, 1 Sep 2008 11:27:41 +0200 Subject: [PATCH 415/435] Post-merge fixes to update result files. --- mysql-test/suite/rpl/r/rpl_row_log.result | 3 +-- mysql-test/suite/rpl/r/rpl_row_log_innodb.result | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_row_log.result b/mysql-test/suite/rpl/r/rpl_row_log.result index af46d6af9c1..c0d70bb0cdd 100644 --- a/mysql-test/suite/rpl/r/rpl_row_log.result +++ b/mysql-test/suite/rpl/r/rpl_row_log.result @@ -7,7 +7,7 @@ start slave; stop slave; reset master; reset slave; -reset master; +start slave; create table t1(n int not null auto_increment primary key)ENGINE=MyISAM; insert into t1 values (NULL); drop table t1; @@ -113,7 +113,6 @@ Aberdeen Abernathy aberrant aberration -start slave; let $result_pattern= '%127.0.0.1%root%master-bin.000002%slave-relay-bin.000005%Yes%Yes%0%0%None%' ; diff --git a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result index dc0f9545bc4..790038799c0 100644 --- a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result @@ -7,7 +7,7 @@ start slave; stop slave; reset master; reset slave; -reset master; +start slave; create table t1(n int not null auto_increment primary key)ENGINE=InnoDB; insert into t1 values (NULL); drop table t1; @@ -113,7 +113,6 @@ Aberdeen Abernathy aberrant aberration -start slave; let $result_pattern= '%127.0.0.1%root%master-bin.000002%slave-relay-bin.000005%Yes%Yes%0%0%None%' ; From 51bd4415cced1887cf23b99c935cadf601b8f638 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Mon, 1 Sep 2008 20:04:17 +0200 Subject: [PATCH 416/435] Bug#37226 Explicit call of my_thread_init() on Windows for every new thread. Bug#33031 app linked to libmysql.lib crash if run as service in vista under localsystem There are some problems using DllMain hook functions on Windows that automatically do global and per-thread initialization for libmysqld.dll 1)per-thread initialization(DLL_THREAD_ATTACH) MySQL internally counts number of active threads that and causes a delay in in my_end() if not all threads are exited. But,there are threads that can be started either by Windows internally (often in TCP/IP scenarios) or by user himself - those threads are not necessarily using libmysql.dll functionality, but nonetheless the contribute to the count of open threads. 2)process-initialization (DLL_PROCESS_ATTACH) my_init() calls WSAStartup that itself loads DLLs and can lead to a deadlock in Windows loader. Fix is to remove dll initialization code from libmysql.dll in general case. I still leave an environment variable LIBMYSQL_DLLINIT, which if set to any value will cause the old behavior (DLL init hooks will be called). This env.variable exists only to prevent breakage of existing Windows-only applications that don't do mysql_thread_init() and work ok today. Use of LIBMYSQL_DLLINIT is discouraged and it will be removed in 6.0 --- libmysql/dll.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libmysql/dll.c b/libmysql/dll.c index 7aa3b5bf96f..8fcf41c792c 100644 --- a/libmysql/dll.c +++ b/libmysql/dll.c @@ -89,9 +89,20 @@ BOOL APIENTRY LibMain(HANDLE hInst,DWORD ul_reason_being_called, UNREFERENCED_PARAMETER(lpReserved); } /* LibMain */ + +static BOOL do_libmain; int __stdcall DllMain(HANDLE hInst,DWORD ul_reason_being_called,LPVOID lpReserved) { - return LibMain(hInst,ul_reason_being_called,lpReserved); + /* + Unless environment variable LIBMYSQL_DLLINIT is set, do nothing. + The environment variable is checked once, during the first call to DllMain() + (in DLL_PROCESS_ATTACH hook). + */ + if (ul_reason_being_called == DLL_PROCESS_ATTACH) + do_libmain = (getenv("LIBMYSQL_DLLINIT") != NULL); + if (do_libmain) + return LibMain(hInst,ul_reason_being_called,lpReserved); + return TRUE; } #elif defined(WINDOWS) From 4be706e7b9cf61cad91e5b43d2369197fb456e45 Mon Sep 17 00:00:00 2001 From: Davi Arnaut Date: Mon, 1 Sep 2008 17:11:42 -0300 Subject: [PATCH 417/435] Restore tree name after merge from main. --- .bzr-mysql/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf index f79c1cd6319..e613cefc614 100644 --- a/.bzr-mysql/default.conf +++ b/.bzr-mysql/default.conf @@ -1,4 +1,4 @@ [MYSQL] post_commit_to = "commits@lists.mysql.com" post_push_to = "commits@lists.mysql.com" -tree_name = "mysql-5.0" +tree_name = "mysql-5.1-bugteam" From 58f0b3185a5de17427d9a2dab5b4cd319aaf38a3 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Mon, 1 Sep 2008 17:27:14 -0400 Subject: [PATCH 418/435] Fix "make dist" error - remove Visual Studio project files from distribution --- extra/yassl/Makefile.am | 3 +-- extra/yassl/taocrypt/Makefile.am | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/extra/yassl/Makefile.am b/extra/yassl/Makefile.am index 1c0e13c511a..ddd57d60a99 100644 --- a/extra/yassl/Makefile.am +++ b/extra/yassl/Makefile.am @@ -1,6 +1,5 @@ SUBDIRS = taocrypt src testsuite -EXTRA_DIST = yassl.dsp yassl.dsw yassl.vcproj \ - CMakeLists.txt +EXTRA_DIST = CMakeLists.txt # Don't update the files from bitkeeper %::SCCS/s.% diff --git a/extra/yassl/taocrypt/Makefile.am b/extra/yassl/taocrypt/Makefile.am index ac56cfdcf09..11fea2064f0 100644 --- a/extra/yassl/taocrypt/Makefile.am +++ b/extra/yassl/taocrypt/Makefile.am @@ -1,5 +1,5 @@ SUBDIRS = src test benchmark -EXTRA_DIST = taocrypt.dsw taocrypt.dsp taocrypt.vcproj CMakeLists.txt $(wildcard mySTL/*.hpp) +EXTRA_DIST = CMakeLists.txt $(wildcard mySTL/*.hpp) # Don't update the files from bitkeeper %::SCCS/s.% From ff8840491c752597cf6db6caae5287985c7957dc Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Mon, 1 Sep 2008 17:46:37 -0400 Subject: [PATCH 419/435] Bug#37226 Explicit call of my_thread_init() on Windows for every new thread. Bug#33031 app linked to libmysql.lib crash if run as service in vista under localsystem There are some problems using DllMain hook functions on Windows that automatically do global and per-thread initialization for libmysqld.dll 1)per-thread initialization(DLL_THREAD_ATTACH) MySQL internally counts number of active threads that and causes a delay in in my_end() if not all threads are exited. But,there are threads that can be started either by Windows internally (often in TCP/IP scenarios) or by user himself - those threads are not necessarily using libmysql.dll functionality, but nonetheless the contribute to the count of open threads. 2)process-initialization (DLL_PROCESS_ATTACH) my_init() calls WSAStartup that itself loads DLLs and can lead to a deadlock in Windows loader. Fix is to remove dll initialization code from libmysql.dll in general case. I still leave an environment variable LIBMYSQL_DLLINIT, which if set to any value will cause the old behavior (DLL init hooks will be called). This env.variable exists only to prevent breakage of existing Windows-only applications that don't do mysql_thread_init() and work ok today. Use of LIBMYSQL_DLLINIT is discouraged and it will be removed in 6.0 --- libmysql/dll.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libmysql/dll.c b/libmysql/dll.c index b0e4b9cab3b..7bea5f880c5 100644 --- a/libmysql/dll.c +++ b/libmysql/dll.c @@ -89,9 +89,20 @@ BOOL APIENTRY LibMain(HANDLE hInst,DWORD ul_reason_being_called, UNREFERENCED_PARAMETER(lpReserved); } /* LibMain */ + +static BOOL do_libmain; int __stdcall DllMain(HANDLE hInst,DWORD ul_reason_being_called,LPVOID lpReserved) { - return LibMain(hInst,ul_reason_being_called,lpReserved); + /* + Unless environment variable LIBMYSQL_DLLINIT is set, do nothing. + The environment variable is checked once, during the first call to DllMain() + (in DLL_PROCESS_ATTACH hook). + */ + if (ul_reason_being_called == DLL_PROCESS_ATTACH) + do_libmain = (getenv("LIBMYSQL_DLLINIT") != NULL); + if (do_libmain) + return LibMain(hInst,ul_reason_being_called,lpReserved); + return TRUE; } #elif defined(WINDOWS) From 770cafbcfe963f773287ba636954451add2a87bb Mon Sep 17 00:00:00 2001 From: Magnus Svensson Date: Tue, 2 Sep 2008 10:53:30 +0200 Subject: [PATCH 420/435] Bug#31315 mysql_install_db fails if a default table type of NDB is set in my.cnf - Use myisam as default storage engine when running mysqld in --bootstrap mode scripts/mysql_install_db.sh: Use myisam as default storage engine when running mysqld in --bootstrap mode --- scripts/mysql_install_db.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/mysql_install_db.sh b/scripts/mysql_install_db.sh index 4e5ca7305f8..5a2409eeb6f 100644 --- a/scripts/mysql_install_db.sh +++ b/scripts/mysql_install_db.sh @@ -339,6 +339,7 @@ mysqld_bootstrap="${MYSQLD_BOOTSTRAP-$mysqld}" mysqld_install_cmd_line="$mysqld_bootstrap $defaults $mysqld_opt --bootstrap \ --basedir=$basedir --datadir=$ldata --log-warnings=0 --loose-skip-innodb \ --loose-skip-ndbcluster $args --max_allowed_packet=8M \ + --default-storage-engine=myisam \ --net_buffer_length=16K" # Create the system and help tables by passing them to "mysqld --bootstrap" From 59b9d50c8a881e709e11da72d2617c7f66eb6b8b Mon Sep 17 00:00:00 2001 From: Gleb Shchepa Date: Wed, 3 Sep 2008 12:32:43 +0500 Subject: [PATCH 421/435] Bug #39002: The server crashes on the query: INSERT .. SELECT .. ON DUPLICATE KEY UPDATE col=DEFAULT In order to get correct values from update fields that belongs to the SELECT part in the INSERT .. SELECT .. ON DUPLICATE KEY UPDATE statement, the server adds referenced fields to the select list. Part of the code that does this transformation is shared between implementations of the DEFAULT(col) function and the DEFAULT keyword (in the col=DEFAULT expression), and an implementation of the DEFAULT keyword is incomplete. mysql-test/r/default.result: Added test case for bug #39002. mysql-test/t/default.test: Added test case for bug #39002. sql/item.cc: The Item_default_value::transform() function has been modified to take into account the fact that the DEFAULT keyword has no arguments unlike the DEFAULT(col) function that always has an argument. --- mysql-test/r/default.result | 15 +++++++++++++++ mysql-test/t/default.test | 19 +++++++++++++++++++ sql/item.cc | 7 +++++++ 3 files changed, 41 insertions(+) diff --git a/mysql-test/r/default.result b/mysql-test/r/default.result index e2eda69c2e7..5f27af882f2 100644 --- a/mysql-test/r/default.result +++ b/mysql-test/r/default.result @@ -205,4 +205,19 @@ Warnings: Warning 1364 Field 'id' doesn't have a default value drop view v1; drop table t1; +create table t1 (a int unique); +create table t2 (b int default 10); +insert into t1 (a) values (1); +insert into t2 (b) values (1); +insert into t1 (a) select b from t2 on duplicate key update a=default; +select * from t1; +a +NULL +insert into t1 (a) values (1); +insert into t1 (a) select b from t2 on duplicate key update a=default(b); +select * from t1; +a +NULL +10 +drop table t1, t2; End of 5.0 tests. diff --git a/mysql-test/t/default.test b/mysql-test/t/default.test index 14aa4b02cfe..b719cb83448 100644 --- a/mysql-test/t/default.test +++ b/mysql-test/t/default.test @@ -145,5 +145,24 @@ insert into t1 values(default); drop view v1; drop table t1; +# +# Bug #39002: crash with +# INSERT ... SELECT ... ON DUPLICATE KEY UPDATE col=DEFAULT +# + +create table t1 (a int unique); +create table t2 (b int default 10); +insert into t1 (a) values (1); +insert into t2 (b) values (1); + +insert into t1 (a) select b from t2 on duplicate key update a=default; +select * from t1; + +insert into t1 (a) values (1); +insert into t1 (a) select b from t2 on duplicate key update a=default(b); +select * from t1; + +drop table t1, t2; + --echo End of 5.0 tests. diff --git a/sql/item.cc b/sql/item.cc index bf447581afa..2874c51e22f 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -6039,6 +6039,13 @@ Item *Item_default_value::transform(Item_transformer transformer, byte *args) { DBUG_ASSERT(!current_thd->is_stmt_prepare()); + /* + If the value of arg is NULL, then this object represents a constant, + so further transformation is unnecessary (and impossible). + */ + if (!arg) + return 0; + Item *new_item= arg->transform(transformer, args); if (!new_item) return 0; From 2f8c0a16754147d451a0472866cc78e116f318cf Mon Sep 17 00:00:00 2001 From: Andrei Elkin Date: Wed, 3 Sep 2008 13:01:18 +0300 Subject: [PATCH 422/435] Bug#36099 replicate-do-db affects replaying RBR events with mysqlbinlog The replication filtering rules were inappropiately applied when executing BINLOG pseudo-query. The rules are supposed to be active only at times when the slave's sql thread executes an event. Fixed with correcting a condition to call replication rules only if the slave sql thread executes the event. mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result: new result file mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt: a filtering option that would refuse to replicate a row event of the main test on slave mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test: a regression test for the bug sql/log_event.cc: avoiding to call the filtering rules if the execution thread is not a slave. --- .../r/rpl_binlog_query_filter_rules.result | 11 +++++++ .../rpl_binlog_query_filter_rules-master.opt | 1 + .../rpl/t/rpl_binlog_query_filter_rules.test | 31 +++++++++++++++++++ sql/log_event.cc | 5 +-- 4 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result create mode 100644 mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt create mode 100644 mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test diff --git a/mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result b/mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result new file mode 100644 index 00000000000..520d500ed7c --- /dev/null +++ b/mysql-test/suite/rpl/r/rpl_binlog_query_filter_rules.result @@ -0,0 +1,11 @@ +drop table if exists t1; +reset master; +create table t1 (a int); +insert into t1 values (1); +flush logs; +drop table t1; +*** must be 1 *** +select * from t1; +a +1 +drop table t1; diff --git a/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt b/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt new file mode 100644 index 00000000000..33632bf98e8 --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules-master.opt @@ -0,0 +1 @@ +--replicate-do-db='impossible_database' diff --git a/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test b/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test new file mode 100644 index 00000000000..d8e25b244fa --- /dev/null +++ b/mysql-test/suite/rpl/t/rpl_binlog_query_filter_rules.test @@ -0,0 +1,31 @@ +# regression test for +# Bug#36099 replicate-do-db affects replaying RBR events with mysqlbinlog +# The test verifies that the slave side filtering rule does not affect +# applying of row-events on master via mysqlbinlog + +-- source include/have_log_bin.inc +-- source include/not_embedded.inc +-- source include/have_binlog_format_row.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + +reset master; + +create table t1 (a int); +insert into t1 values (1); + +flush logs; +--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000001 > $MYSQLTEST_VARDIR/tmp/bug36099.sql + +drop table t1; +--exec $MYSQL -e "source $MYSQLTEST_VARDIR/tmp/bug36099.sql" + +--echo *** must be 1 *** +select * from t1; + +# cleanup + +drop table t1; +remove_file $MYSQLTEST_VARDIR/tmp/bug36099.sql; diff --git a/sql/log_event.cc b/sql/log_event.cc index d2e45adbe0e..27e81c8ecd3 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -7843,8 +7843,9 @@ int Table_map_log_event::do_apply_event(Relay_log_info const *rli) int error= 0; - if (!rpl_filter->db_ok(table_list->db) || - (rpl_filter->is_on() && !rpl_filter->tables_ok("", table_list))) + if (rli->sql_thd->slave_thread /* filtering is for slave only */ && + (!rpl_filter->db_ok(table_list->db) || + (rpl_filter->is_on() && !rpl_filter->tables_ok("", table_list)))) { my_free(memory, MYF(MY_WME)); } From f0a50bd969fe707c5e210d321c197adb38cf250b Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Wed, 3 Sep 2008 15:17:19 +0500 Subject: [PATCH 423/435] Fix for bug#38821: Assert table->auto_increment_field_not_null failed in open_table() Problem: repeating "CREATE... ( AUTOINCREMENT) ... SELECT" may lead to an assertion failure. Fix: reset table->auto_increment_field_not_null after each record writing. mysql-test/r/create.result: Fix for bug#38821: Assert table->auto_increment_field_not_null failed in open_table() - test result. mysql-test/t/create.test: Fix for bug#38821: Assert table->auto_increment_field_not_null failed in open_table() - test case. sql/sql_insert.cc: Fix for bug#38821: Assert table->auto_increment_field_not_null failed in open_table() - reset table->auto_increment_field_not_null after writing a record for "{CREATE, INSERT}..SELECT". --- mysql-test/r/create.result | 11 +++++++++++ mysql-test/t/create.test | 18 ++++++++++++++++++ sql/sql_insert.cc | 6 +++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 53c2058f3ec..2d668499df3 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1546,4 +1546,15 @@ SHOW INDEX FROM t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment t1 1 c1 1 c1 A NULL NULL NULL YES BTREE DROP TABLE t1; +CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL); +INSERT IGNORE INTO t1 (b) VALUES (5); +CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) +SELECT a FROM t1; +CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) +SELECT a FROM t1; +ERROR 23000: Duplicate entry '1' for key 1 +CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) +SELECT a FROM t1; +ERROR 23000: Duplicate entry '1' for key 1 +DROP TABLE t1, t2; End of 5.0 tests diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 97a7ea71b29..61ee40477ee 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -1172,4 +1172,22 @@ SHOW INDEX FROM t1; DROP TABLE t1; +# +# Bug#38821: Assert table->auto_increment_field_not_null failed in open_table() +# +CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL); +INSERT IGNORE INTO t1 (b) VALUES (5); + +CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) + SELECT a FROM t1; +--error 1062 +CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) + SELECT a FROM t1; +--error 1062 +CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) + SELECT a FROM t1; + +DROP TABLE t1, t2; + + --echo End of 5.0 tests diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 746a04e03f3..3f43c902faa 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -2897,7 +2897,11 @@ bool select_insert::send_data(List &values) DBUG_RETURN(1); } } - if (!(error= write_record(thd, table, &info))) + + error= write_record(thd, table, &info); + table->auto_increment_field_not_null= FALSE; + + if (!error) { if (table->triggers || info.handle_duplicates == DUP_UPDATE) { From 1017b6c8bed2cc762a006151202ef2dd41f69108 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Wed, 3 Sep 2008 12:27:01 +0200 Subject: [PATCH 424/435] Updating result files for rpl_ndb test suite. --- mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result index 3bf5ea108ae..18558c57140 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_log.result @@ -7,7 +7,7 @@ start slave; stop slave; reset master; reset slave; -reset master; +start slave; create table t1(n int not null auto_increment primary key)ENGINE=NDB; insert into t1 values (NULL); drop table t1; @@ -117,7 +117,6 @@ Aberdeen Abernathy aberrant aberration -start slave; let $result_pattern= '%127.0.0.1%root%master-bin.000002%slave-relay-bin.000005%Yes%Yes%0%0%None%' ; From 3bad2119f9dedc581bf3b9d7335740f563db5803 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Wed, 3 Sep 2008 16:45:40 +0200 Subject: [PATCH 425/435] Bug#36086: SELECT * from views don't check column grants This patch also fixes bugs 36963 and 35600. - In many places a view was confused with an anonymous derived table, i.e. access checking was skipped. Fixed by introducing a predicate to tell the difference between named and anonymous derived tables. - When inserting fields for "SELECT * ", there was no distinction between base tables and views, where one should be made. View privileges are checked elsewhere. mysql-test/include/grant_cache.inc: Bug#36086: Changed test case. mysql-test/r/grant2.result: Bug#36086: Changed test result. mysql-test/r/grant_cache_no_prot.result: Bug#36086: Changed test result. mysql-test/r/grant_cache_ps_prot.result: Bug#36086: Changed test result. mysql-test/r/view_grant.result: Bug#36086: Test result. mysql-test/t/grant2.test: Bug#36086: Changed test case. mysql-test/t/view_grant.test: Bug#36086: Test case. sql/item.cc: Bug#36086: Replaced conditional with new methods. sql/sql_acl.cc: Bug no 35600: In mysql_table_grant: Replaced conditional with the new accessor method. In check_grant: - Changed the requirement table->derived != null to checking all anonymous derived tables. - Use of the accessor methods for getting object and database names. Bug#36086: In check_grant_all_columns: - Updated comment. This function is now called for views as well. - The error message should not disclose any column names unless the user has privilege to see all column names. - Changed names of Field_iterator_table_ref methods. sql/sql_base.cc: Bug no 36963: In insert_fields() - Commented. - We should call check_grant_all_columns() for views in this case. - Changed names of Field_iterator_table_ref methods. - We should not disclose column names in the error message when the user has no approprate privilege. sql/sql_cache.cc: Bug#36086: Replaced test with new predicate method. sql/sql_derived.cc: Bug#36086: commenting only. Updated and doxygenated comment for mysql_derived_prepare(). sql/sql_parse.cc: Bug no 35600: - In check_single_table_access: Due to the bug, check_grant would raise an error for a SHOW CREATE TABLE command for a TEMPTABLE view. It should in fact not be be invoked in this case. This table privilege is checked already. There is a test case for this in information_schema_db.test. - In check_access: replaced table->derived sql/table.cc: Bug#36086: - In TABLE_LIST::set_underlying_merge(): Commenting only. Doxygenated, corrected spelling, added. - Renamed table_name() and db_name() methods of Field_iterator_table_ref in order to be consistent with new methods in TABLE_LIST. sql/table.h: Bug#36086: - Commented GRANT_INFO. - Added a predicate is_anonymous_derived_table() to TABLE_LIST. - Added get_table_name() and get_db_name() to TABLE_LIST in order to hide the disparate representation of these properties. --- mysql-test/include/grant_cache.inc | 2 +- mysql-test/r/grant2.result | 2 +- mysql-test/r/grant_cache_no_prot.result | 2 +- mysql-test/r/grant_cache_ps_prot.result | 2 +- mysql-test/r/view_grant.result | 32 +++++++ mysql-test/t/grant2.test | 2 +- mysql-test/t/view_grant.test | 68 ++++++++++++++ sql/item.cc | 12 +-- sql/sql_acl.cc | 54 ++++++----- sql/sql_base.cc | 39 ++++++-- sql/sql_cache.cc | 2 +- sql/sql_derived.cc | 64 +++++++++---- sql/sql_parse.cc | 4 +- sql/table.cc | 31 +++++-- sql/table.h | 117 +++++++++++++++++++++++- 15 files changed, 356 insertions(+), 77 deletions(-) diff --git a/mysql-test/include/grant_cache.inc b/mysql-test/include/grant_cache.inc index dd65d1ed726..501e115f0ee 100644 --- a/mysql-test/include/grant_cache.inc +++ b/mysql-test/include/grant_cache.inc @@ -136,7 +136,7 @@ connect (user3,localhost,mysqltest_3,,mysqltest,$MASTER_MYPORT,$MASTER_MYSOCK); connection user3; select "user3"; --replace_result 127.0.0.1 localhost ---error ER_COLUMNACCESS_DENIED_ERROR +--error ER_TABLEACCESS_DENIED_ERROR select * from t1; select a from t1; --replace_result 127.0.0.1 localhost diff --git a/mysql-test/r/grant2.result b/mysql-test/r/grant2.result index b94de265d0c..03c4ea042f6 100644 --- a/mysql-test/r/grant2.result +++ b/mysql-test/r/grant2.result @@ -434,7 +434,7 @@ USE db1; SELECT c FROM t2; ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2' SELECT * FROM t2; -ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2' +ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for table 't2' SELECT * FROM t1 JOIN t2 USING (b); ERROR 42000: SELECT command denied to user 'mysqltest1'@'localhost' for column 'c' in table 't2' DROP TABLE db1.t1, db1.t2; diff --git a/mysql-test/r/grant_cache_no_prot.result b/mysql-test/r/grant_cache_no_prot.result index 02360c4c325..cb9acaf540d 100644 --- a/mysql-test/r/grant_cache_no_prot.result +++ b/mysql-test/r/grant_cache_no_prot.result @@ -155,7 +155,7 @@ select "user3"; user3 user3 select * from t1; -ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'b' in table 't1' +ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1' select a from t1; a 1 diff --git a/mysql-test/r/grant_cache_ps_prot.result b/mysql-test/r/grant_cache_ps_prot.result index 1e2cd1baa3a..cf1450f3b75 100644 --- a/mysql-test/r/grant_cache_ps_prot.result +++ b/mysql-test/r/grant_cache_ps_prot.result @@ -155,7 +155,7 @@ select "user3"; user3 user3 select * from t1; -ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'b' in table 't1' +ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for table 't1' select a from t1; a 1 diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result index 3585635d0f9..9a4fa95912d 100644 --- a/mysql-test/r/view_grant.result +++ b/mysql-test/r/view_grant.result @@ -957,3 +957,35 @@ Warning 1356 View 'test.v1' references invalid table(s) or column(s) or function DROP VIEW v1; DROP TABLE t1; End of 5.1 tests. +CREATE USER mysqluser1@localhost; +CREATE DATABASE mysqltest1; +USE mysqltest1; +CREATE TABLE t1 ( a INT, b INT ); +CREATE TABLE t2 ( a INT, b INT ); +CREATE VIEW v1 AS SELECT a, b FROM t1; +GRANT SELECT( a ) ON v1 TO mysqluser1@localhost; +GRANT UPDATE( b ) ON t2 TO mysqluser1@localhost; +SELECT * FROM mysqltest1.v1; +ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1' +CREATE VIEW v1 AS SELECT * FROM mysqltest1.t2; +ERROR 42000: ANY command denied to user 'mysqluser1'@'localhost' for table 't2' +DROP TABLE t1, t2; +DROP VIEW v1; +DROP DATABASE mysqltest1; +DROP USER mysqluser1@localhost; +CREATE USER mysqluser1@localhost; +CREATE DATABASE mysqltest1; +USE mysqltest1; +CREATE VIEW v1 AS SELECT * FROM information_schema.tables LIMIT 1; +CREATE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT 1 AS A; +GRANT SELECT ON mysqltest1.* to mysqluser1@localhost; +PREPARE stmt_v1 FROM "SELECT * FROM mysqltest1.v1"; +PREPARE stmt_v2 FROM "SELECT * FROM mysqltest1.v2"; +REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost; +EXECUTE stmt_v1; +ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1' +EXECUTE stmt_v2; +ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v2' +DROP VIEW v1, v2; +DROP DATABASE mysqltest1; +DROP USER mysqluser1@localhost; diff --git a/mysql-test/t/grant2.test b/mysql-test/t/grant2.test index 0f0c92e82eb..d91592f6bb6 100644 --- a/mysql-test/t/grant2.test +++ b/mysql-test/t/grant2.test @@ -605,7 +605,7 @@ connection conn1; USE db1; --error ER_COLUMNACCESS_DENIED_ERROR SELECT c FROM t2; ---error ER_COLUMNACCESS_DENIED_ERROR +--error ER_TABLEACCESS_DENIED_ERROR SELECT * FROM t2; --error ER_COLUMNACCESS_DENIED_ERROR SELECT * FROM t1 JOIN t2 USING (b); diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test index cbc66300173..afef5c5bc7b 100644 --- a/mysql-test/t/view_grant.test +++ b/mysql-test/t/view_grant.test @@ -1219,3 +1219,71 @@ DROP VIEW v1; DROP TABLE t1; --echo End of 5.1 tests. + +# +# Bug#36086: SELECT * from views don't check column grants +# +CREATE USER mysqluser1@localhost; +CREATE DATABASE mysqltest1; + +USE mysqltest1; + +CREATE TABLE t1 ( a INT, b INT ); +CREATE TABLE t2 ( a INT, b INT ); + +CREATE VIEW v1 AS SELECT a, b FROM t1; + +GRANT SELECT( a ) ON v1 TO mysqluser1@localhost; +GRANT UPDATE( b ) ON t2 TO mysqluser1@localhost; + +--connect (connection1, localhost, mysqluser1, , test) + +--error ER_TABLEACCESS_DENIED_ERROR +SELECT * FROM mysqltest1.v1; + +--error ER_TABLEACCESS_DENIED_ERROR +CREATE VIEW v1 AS SELECT * FROM mysqltest1.t2; + +--disconnect connection1 + +--connection default + +DROP TABLE t1, t2; +DROP VIEW v1; +DROP DATABASE mysqltest1; +DROP USER mysqluser1@localhost; + +# +# Bug#35600: Security breach via view, I_S table and prepared +# statement/stored procedure +# +CREATE USER mysqluser1@localhost; +CREATE DATABASE mysqltest1; + +USE mysqltest1; + +CREATE VIEW v1 AS SELECT * FROM information_schema.tables LIMIT 1; +CREATE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT 1 AS A; + +--connection default +GRANT SELECT ON mysqltest1.* to mysqluser1@localhost; + +--connect (connection1, localhost, mysqluser1, , test) +PREPARE stmt_v1 FROM "SELECT * FROM mysqltest1.v1"; +PREPARE stmt_v2 FROM "SELECT * FROM mysqltest1.v2"; + +--connection default +REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost; + +--connection connection1 + +--error ER_TABLEACCESS_DENIED_ERROR +EXECUTE stmt_v1; +--error ER_TABLEACCESS_DENIED_ERROR +EXECUTE stmt_v2; + +--disconnect connection1 +--connection default +DROP VIEW v1, v2; +DROP DATABASE mysqltest1; +DROP USER mysqluser1@localhost; diff --git a/sql/item.cc b/sql/item.cc index 3f41c7211c8..8e278d04064 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -4120,16 +4120,8 @@ bool Item_field::fix_fields(THD *thd, Item **reference) if (any_privileges) { char *db, *tab; - if (cached_table->view) - { - db= cached_table->view_db.str; - tab= cached_table->view_name.str; - } - else - { - db= cached_table->db; - tab= cached_table->table_name; - } + db= cached_table->get_db_name(); + tab= cached_table->get_table_name(); if (!(have_privileges= (get_column_grant(thd, &field->table->grant, db, tab, field_name) & VIEW_ANY_ACL))) diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index 226d41e0fb5..0043ef09229 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -3092,12 +3092,8 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, continue; // Add next user } - db_name= (table_list->view_db.length ? - table_list->view_db.str : - table_list->db); - table_name= (table_list->view_name.length ? - table_list->view_name.str : - table_list->table_name); + db_name= table_list->get_db_name(); + table_name= table_list->get_table_name(); /* Find/create cached table grant */ grant_table= table_hash_search(Str->host.str, NullS, db_name, @@ -3907,8 +3903,8 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables, if (!want_access) continue; // ok - if (!(~table->grant.privilege & want_access) || - table->derived || table->schema_table) + if (!(~table->grant.privilege & want_access) || + table->is_anonymous_derived_table() || table->schema_table) { /* It is subquery in the FROM clause. VIEW set table->derived after @@ -3926,8 +3922,8 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables, continue; } if (!(grant_table= table_hash_search(sctx->host, sctx->ip, - table->db, sctx->priv_user, - table->table_name,0))) + table->get_db_name(), sctx->priv_user, + table->get_table_name(), FALSE))) { want_access &= ~table->grant.privilege; goto err; // No grants @@ -3963,7 +3959,7 @@ err: command, sctx->priv_user, sctx->host_or_ip, - table ? table->table_name : "unknown"); + table ? table->get_table_name() : "unknown"); } DBUG_RETURN(1); } @@ -4118,7 +4114,7 @@ bool check_column_grant_in_table_ref(THD *thd, TABLE_LIST * table_ref, @retval 1 Falure @details This function walks over the columns of a table reference The columns may originate from different tables, depending on the kind of - table reference, e.g. join. + table reference, e.g. join, view. For each table it will retrieve the grant information and will use it to check the required access privileges for the fields requested from it. */ @@ -4133,6 +4129,11 @@ bool check_grant_all_columns(THD *thd, ulong want_access_arg, GRANT_INFO *grant; /* Initialized only to make gcc happy */ GRANT_TABLE *grant_table= NULL; + /* + Flag that gets set if privilege checking has to be performed on column + level. + */ + bool using_column_privileges= FALSE; rw_rdlock(&LOCK_grant); @@ -4140,10 +4141,10 @@ bool check_grant_all_columns(THD *thd, ulong want_access_arg, { const char *field_name= fields->name(); - if (table_name != fields->table_name()) + if (table_name != fields->get_table_name()) { - table_name= fields->table_name(); - db_name= fields->db_name(); + table_name= fields->get_table_name(); + db_name= fields->get_db_name(); grant= fields->grant(); /* get a fresh one for each table */ want_access= want_access_arg & ~grant->privilege; @@ -4169,6 +4170,8 @@ bool check_grant_all_columns(THD *thd, ulong want_access_arg, GRANT_COLUMN *grant_column= column_hash_search(grant_table, field_name, (uint) strlen(field_name)); + if (grant_column) + using_column_privileges= TRUE; if (!grant_column || (~grant_column->rights & want_access)) goto err; } @@ -4181,12 +4184,21 @@ err: char command[128]; get_privilege_desc(command, sizeof(command), want_access); - my_error(ER_COLUMNACCESS_DENIED_ERROR, MYF(0), - command, - sctx->priv_user, - sctx->host_or_ip, - fields->name(), - table_name); + /* + Do not give an error message listing a column name unless the user has + privilege to see all columns. + */ + if (using_column_privileges) + my_error(ER_TABLEACCESS_DENIED_ERROR, MYF(0), + command, sctx->priv_user, + sctx->host_or_ip, table_name); + else + my_error(ER_COLUMNACCESS_DENIED_ERROR, MYF(0), + command, + sctx->priv_user, + sctx->host_or_ip, + fields->name(), + table_name); return 1; } diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 36b9d53ce85..39030462f0b 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -7620,9 +7620,34 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name, continue; #ifndef NO_EMBEDDED_ACCESS_CHECKS - /* Ensure that we have access rights to all fields to be inserted. */ - if (!((table && (table->grant.privilege & SELECT_ACL) || - tables->view && (tables->grant.privilege & SELECT_ACL))) && + /* + Ensure that we have access rights to all fields to be inserted. Under + some circumstances, this check may be skipped. + + - If any_privileges is true, skip the check. + + - If the SELECT privilege has been found as fulfilled already for both + the TABLE and TABLE_LIST objects (and both of these exist, of + course), the check is skipped. + + - If the SELECT privilege has been found fulfilled for the TABLE object + and the TABLE_LIST represents a derived table other than a view (see + below), the check is skipped. + + - If the TABLE_LIST object represents a view, we may skip checking if + the SELECT privilege has been found fulfilled for it, regardless of + the TABLE object. + + - If there is no TABLE object, the test is skipped if either + * the TABLE_LIST does not represent a view, or + * the SELECT privilege has been found fulfilled. + + A TABLE_LIST that is not a view may be a subquery, an + information_schema table, or a nested table reference. See the comment + for TABLE_LIST. + */ + if (!(table && !tables->view && (table->grant.privilege & SELECT_ACL) || + tables->view && (tables->grant.privilege & SELECT_ACL)) && !any_privileges) { field_iterator.set(tables); @@ -7676,19 +7701,19 @@ insert_fields(THD *thd, Name_resolution_context *context, const char *db_name, tables->is_natural_join); DBUG_ASSERT(item->type() == Item::FIELD_ITEM); Item_field *fld= (Item_field*) item; - const char *field_table_name= field_iterator.table_name(); + const char *field_table_name= field_iterator.get_table_name(); if (!tables->schema_table && !(fld->have_privileges= (get_column_grant(thd, field_iterator.grant(), - field_iterator.db_name(), + field_iterator.get_db_name(), field_table_name, fld->field_name) & VIEW_ANY_ACL))) { - my_error(ER_COLUMNACCESS_DENIED_ERROR, MYF(0), "ANY", + my_error(ER_TABLEACCESS_DENIED_ERROR, MYF(0), "ANY", thd->security_ctx->priv_user, thd->security_ctx->host_or_ip, - fld->field_name, field_table_name); + field_table_name); DBUG_RETURN(TRUE); } } diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index 375ffc882b4..f5566acbc6f 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -2633,7 +2633,7 @@ Query_cache::register_tables_from_list(TABLE_LIST *tables_used, tables_used; tables_used= tables_used->next_global, n++, block_table++) { - if (tables_used->derived && !tables_used->view) + if (tables_used->is_anonymous_derived_table()) { DBUG_PRINT("qcache", ("derived table skipped")); n--; diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index 10b42e11b26..41be98621a6 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -73,29 +73,59 @@ out: } -/* - Create temporary table structure (but do not fill it) +/** + @brief Create temporary table structure (but do not fill it). - SYNOPSIS - mysql_derived_prepare() - thd Thread handle - lex LEX for this thread - orig_table_list TABLE_LIST for the upper SELECT + @param thd Thread handle + @param lex LEX for this thread + @param orig_table_list TABLE_LIST for the upper SELECT - IMPLEMENTATION - Derived table is resolved with temporary table. + @details - After table creation, the above TABLE_LIST is updated with a new table. + This function is called before any command containing derived tables is + executed. Currently the function is used for derived tables, i.e. - This function is called before any command containing derived table - is executed. + - Anonymous derived tables, or + - Named derived tables (aka views) with the @c TEMPTABLE algorithm. + + The table reference, contained in @c orig_table_list, is updated with the + fields of a new temporary table. - Derived tables is stored in thd->derived_tables and freed in - close_thread_tables() + Derived tables are stored in @c thd->derived_tables and closed by + close_thread_tables(). - RETURN - FALSE OK - TRUE Error + This function is part of the procedure that starts in + open_and_lock_tables(), a procedure that - among other things - introduces + new table and table reference objects (to represent derived tables) that + don't exist in the privilege database. This means that normal privilege + checking cannot handle them. Hence this function does some extra tricks in + order to bypass normal privilege checking, by exploiting the fact that the + current state of privilege verification is attached as GRANT_INFO structures + on the relevant TABLE and TABLE_REF objects. + + For table references, the current state of accrued access is stored inside + TABLE_LIST::grant. Hence this function must update the state of fulfilled + privileges for the new TABLE_LIST, an operation which is normally performed + exclusively by the table and database access checking functions, + check_access() and check_grant(), respectively. This modification is done + for both views and anonymous derived tables: The @c SELECT privilege is set + as fulfilled by the user. However, if a view is referenced and the table + reference is queried against directly (see TABLE_LIST::referencing_view), + the state of privilege checking (GRANT_INFO struct) is copied as-is to the + temporary table. + + This function implements a signature called "derived table processor", and + is passed as a function pointer to mysql_handle_derived(). + + @note This function sets @c SELECT_ACL for @c TEMPTABLE views as well as + anonymous derived tables, but this is ok since later access checking will + distinguish between them. + + @see mysql_handle_derived(), mysql_derived_filling(), GRANT_INFO + + @return + false OK + true Error */ bool mysql_derived_prepare(THD *thd, LEX *lex, TABLE_LIST *orig_table_list) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index eb643184e1f..9bfa21b5e4b 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -4872,6 +4872,8 @@ bool check_single_table_access(THD *thd, ulong privilege, /* Show only 1 table for check_grant */ if (!(all_tables->belong_to_view && (thd->lex->sql_command == SQLCOM_SHOW_FIELDS)) && + !(all_tables->view && + all_tables->effective_algorithm == VIEW_ALGORITHM_TMPTABLE) && check_grant(thd, privilege, all_tables, 0, 1, no_errors)) goto deny; @@ -5184,7 +5186,7 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables, continue; } - if (tables->derived || + if (tables->is_anonymous_derived_table() || (tables->table && (int)tables->table->s->tmp_table)) continue; thd->security_ctx= sctx; diff --git a/sql/table.cc b/sql/table.cc index 58cbde74822..40264a7cbb3 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -2993,16 +2993,27 @@ void TABLE_LIST::calc_md5(char *buffer) } -/* - set underlying TABLE for table place holder of VIEW +/** + @brief Set underlying table for table place holder of view. - DESCRIPTION - Replace all views that only uses one table with the table itself. - This allows us to treat the view as a simple table and even update - it (it is a kind of optimisation) + @details - SYNOPSIS - TABLE_LIST::set_underlying_merge() + Replace all views that only use one table with the table itself. This + allows us to treat the view as a simple table and even update it (it is a + kind of optimization). + + @note + + This optimization is potentially dangerous as it makes views + masquerade as base tables: Views don't have the pointer TABLE_LIST::table + set to non-@c NULL. + + We may have the case where a view accesses tables not normally accessible + in the current Security_context (only in the definer's + Security_context). According to the table's GRANT_INFO (TABLE::grant), + access is fulfilled, but this is implicitly meant in the definer's security + context. Hence we must never look at only a TABLE's GRANT_INFO without + looking at the one of the referring TABLE_LIST. */ void TABLE_LIST::set_underlying_merge() @@ -4082,7 +4093,7 @@ void Field_iterator_table_ref::next() } -const char *Field_iterator_table_ref::table_name() +const char *Field_iterator_table_ref::get_table_name() { if (table_ref->view) return table_ref->view_name.str; @@ -4095,7 +4106,7 @@ const char *Field_iterator_table_ref::table_name() } -const char *Field_iterator_table_ref::db_name() +const char *Field_iterator_table_ref::get_db_name() { if (table_ref->view) return table_ref->view_db.str; diff --git a/sql/table.h b/sql/table.h index da0e089794f..d21a9eefae8 100644 --- a/sql/table.h +++ b/sql/table.h @@ -66,13 +66,63 @@ typedef struct st_order { table_map used, depend_map; } ORDER; +/** + @brief The current state of the privilege checking process for the current + user, SQL statement and SQL object. + + @details The privilege checking process is divided into phases depending on + the level of the privilege to be checked and the type of object to be + accessed. Due to the mentioned scattering of privilege checking + functionality, it is necessary to keep track of the state of the + process. This information is stored in privilege, want_privilege, and + orig_want_privilege. + + A GRANT_INFO also serves as a cache of the privilege hash tables. Relevant + members are grant_table and version. + */ typedef struct st_grant_info { + /** + @brief A copy of the privilege information regarding the current host, + database, object and user. + + @details The version of this copy is found in GRANT_INFO::version. + */ GRANT_TABLE *grant_table; + /** + @brief Used for cache invalidation when caching privilege information. + + @details The privilege information is stored on disk, with dedicated + caches residing in memory: table-level and column-level privileges, + respectively, have their own dedicated caches. + + The GRANT_INFO works as a level 1 cache with this member updated to the + current value of the global variable @c grant_version (@c static variable + in sql_acl.cc). It is updated Whenever the GRANT_INFO is refreshed from + the level 2 cache. The level 2 cache is the @c column_priv_hash structure + (@c static variable in sql_acl.cc) + + @see grant_version + */ uint version; + /** + @brief The set of privileges that the current user has fulfilled for a + certain host, database, and object. + + @details This field is continually updated throughout the access checking + process. In each step the "wanted privilege" is checked against the + fulfilled privileges. When/if the intersection of these sets is empty, + access is granted. + + The set is implemented as a bitmap, with the bits defined in sql_acl.h. + */ ulong privilege; + /** + @brief the set of privileges that the current user needs to fulfil in + order to carry out the requested operation. + */ ulong want_privilege; - /* + /** Stores the requested access acl of top level tables list. Is used to check access rights to the underlying tables of a view. */ @@ -1104,6 +1154,27 @@ struct TABLE_LIST can see this lists can't be merged) */ TABLE_LIST *correspondent_table; + /** + @brief Normally, this field is non-null for anonymous derived tables only. + + @details This field is set to non-null for + + - Anonymous derived tables, In this case it points to the SELECT_LEX_UNIT + representing the derived table. E.g. for a query + + @verbatim SELECT * FROM (SELECT a FROM t1) b @endverbatim + + For the @c TABLE_LIST representing the derived table @c b, @c derived + points to the SELECT_LEX_UNIT representing the result of the query within + parenteses. + + - Views. This is set for views with @verbatim ALGORITHM = TEMPTABLE + @endverbatim by mysql_make_view(). + + @note Inside views, a subquery in the @c FROM clause is not allowed. + @note Do not use this field to separate views/base tables/anonymous + derived tables. Use TABLE_LIST::is_anonymous_derived_table(). + */ st_select_lex_unit *derived; /* SELECT_LEX_UNIT of derived table */ ST_SCHEMA_TABLE *schema_table; /* Information_schema table */ st_select_lex *schema_select_lex; @@ -1169,7 +1240,15 @@ struct TABLE_LIST ulonglong file_version; /* version of file's field set */ ulonglong updatable_view; /* VIEW can be updated */ ulonglong revision; /* revision control number */ - ulonglong algorithm; /* 0 any, 1 tmp tables , 2 merging */ + /** + @brief The declared algorithm, if this is a view. + @details One of + - VIEW_ALGORITHM_UNDEFINED + - VIEW_ALGORITHM_TMPTABLE + - VIEW_ALGORITHM_MERGE + @to do Replace with an enum + */ + ulonglong algorithm; ulonglong view_suid; /* view is suid (TRUE dy default) */ ulonglong with_check; /* WITH CHECK OPTION */ /* @@ -1177,7 +1256,15 @@ struct TABLE_LIST algorithm) */ uint8 effective_with_check; - uint8 effective_algorithm; /* which algorithm was really used */ + /** + @brief The view algorithm that is actually used, if this is a view. + @details One of + - VIEW_ALGORITHM_UNDEFINED + - VIEW_ALGORITHM_TMPTABLE + - VIEW_ALGORITHM_MERGE + @to do Replace with an enum + */ + uint8 effective_algorithm; GRANT_INFO grant; /* data need by some engines in query cache*/ ulonglong engine_data; @@ -1362,6 +1449,26 @@ struct TABLE_LIST m_table_ref_version= s->get_table_ref_version(); } + /** + @brief True if this TABLE_LIST represents an anonymous derived table, + i.e. the result of a subquery. + */ + bool is_anonymous_derived_table() const { return derived && !view; } + + /** + @brief Returns the name of the database that the referenced table belongs + to. + */ + char *get_db_name() { return view != NULL ? view_db.str : db; } + + /** + @brief Returns the name of the table that this TABLE_LIST represents. + + @details The unqualified table name or view name for a table or view, + respectively. + */ + char *get_table_name() { return view != NULL ? view_name.str : table_name; } + private: bool prep_check_option(THD *thd, uint8 check_opt_type); bool prep_where(THD *thd, Item **conds, bool no_where_clause); @@ -1491,8 +1598,8 @@ public: bool end_of_fields() { return (table_ref == last_leaf && field_it->end_of_fields()); } const char *name() { return field_it->name(); } - const char *table_name(); - const char *db_name(); + const char *get_table_name(); + const char *get_db_name(); GRANT_INFO *grant(); Item *create_item(THD *thd) { return field_it->create_item(thd); } Field *field() { return field_it->field(); } From 02a435404434a69f23e02d199e45a724729d9751 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Wed, 3 Sep 2008 22:04:07 +0200 Subject: [PATCH 426/435] Bug #32709: Assertion failed: trx_data->empty(), file log.cc The assertion indicates that some data was left in the transaction cache when the server was shut down, which means that a previous statement did not commit or rollback correctly. What happened was that a bug in the rollback of a transactional table caused the transaction cache to be emptied, but not reset. The error can be triggered by having a failing UPDATE or INSERT, on a transactional table, causing an implicit rollback. Fixed by always flushing the pending event to reset the state properly. mysql-test/extra/rpl_tests/rpl_row_basic.test: Testing that a failed update (that writes some rows to the transaction cache) does not cause the transaction cache to hold on to the data or forget to reset the transaction cache. sql/log.cc: Added call to remove pending event when the transaction cache is emptied instead of written to binary log. The call will also clear the outstanding table map count so that the cache is not left it in a state of "empty but not reset". Added function MYSQL_BIN_LOG::remove_pending_rows_event(). sql/log.h: Added function MYSQL_BIN_LOG::remove_pending_rows_event(). sql/sql_class.cc: Adding function THD::binlog_remove_pending_rows_event(). sql/sql_class.h: Adding function THD::binlog_remove_pending_rows_event(). --- mysql-test/extra/rpl_tests/rpl_row_basic.test | 20 ++++++++++++++ .../suite/rpl/r/rpl_row_basic_2myisam.result | 7 +++++ .../suite/rpl/r/rpl_row_basic_3innodb.result | 7 +++++ sql/log.cc | 26 +++++++++++++++++++ sql/log.h | 1 + sql/sql_class.cc | 15 +++++++++++ sql/sql_class.h | 1 + 7 files changed, 77 insertions(+) diff --git a/mysql-test/extra/rpl_tests/rpl_row_basic.test b/mysql-test/extra/rpl_tests/rpl_row_basic.test index 534842218b9..7cfbcdb4437 100644 --- a/mysql-test/extra/rpl_tests/rpl_row_basic.test +++ b/mysql-test/extra/rpl_tests/rpl_row_basic.test @@ -451,3 +451,23 @@ connection master; drop table t1, t2, t3, t4, t5, t6, t7; sync_slave_with_master; +# +# BUG#32709: Assertion failed: trx_data->empty(), file .\log.cc, line 1293 +# + +connection master; +eval CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=$type; + +INSERT INTO t1 VALUES (1), (2), (3); +--error ER_DUP_ENTRY +UPDATE t1 SET a = 10; +INSERT INTO t1 VALUES (4); +sync_slave_with_master; + +let $diff_table_1=master:test.t1; +let $diff_table_2=slave:test.t1; +source include/diff_tables.inc; + +connection master; +drop table t1; +sync_slave_with_master; diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result index 4cb1b037345..d9d96cf7eda 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_2myisam.result @@ -520,3 +520,10 @@ INSERT INTO t7 VALUES (1, "", 1); INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); Comparing tables master:test.t7 and slave:test.t7 drop table t1, t2, t3, t4, t5, t6, t7; +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='MYISAM' ; +INSERT INTO t1 VALUES (1), (2), (3); +UPDATE t1 SET a = 10; +ERROR 23000: Duplicate entry '10' for key 'PRIMARY' +INSERT INTO t1 VALUES (4); +Comparing tables master:test.t1 and slave:test.t1 +drop table t1; diff --git a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result index 913ca8d4a49..72c94ceb525 100644 --- a/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result +++ b/mysql-test/suite/rpl/r/rpl_row_basic_3innodb.result @@ -520,3 +520,10 @@ INSERT INTO t7 VALUES (1, "", 1); INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); Comparing tables master:test.t7 and slave:test.t7 drop table t1, t2, t3, t4, t5, t6, t7; +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='INNODB' ; +INSERT INTO t1 VALUES (1), (2), (3); +UPDATE t1 SET a = 10; +ERROR 23000: Duplicate entry '10' for key 'PRIMARY' +INSERT INTO t1 VALUES (4); +Comparing tables master:test.t1 and slave:test.t1 +drop table t1; diff --git a/sql/log.cc b/sql/log.cc index 30575b5befd..7775fb44b65 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -1421,6 +1421,7 @@ binlog_end_trans(THD *thd, binlog_trx_data *trx_data, If rolling back a statement in a transaction, we truncate the transaction cache to remove the statement. */ + thd->binlog_remove_pending_rows_event(TRUE); if (all || !(thd->options & (OPTION_BEGIN | OPTION_NOT_AUTOCOMMIT))) trx_data->reset(); else // ...statement @@ -3769,6 +3770,31 @@ THD::binlog_set_pending_rows_event(Rows_log_event* ev) } +/** + Remove the pending rows event, discarding any outstanding rows. + + If there is no pending rows event available, this is effectively a + no-op. + */ +int +MYSQL_BIN_LOG::remove_pending_rows_event(THD *thd) +{ + DBUG_ENTER(__FUNCTION__); + + binlog_trx_data *const trx_data= + (binlog_trx_data*) thd_get_ha_data(thd, binlog_hton); + + DBUG_ASSERT(trx_data); + + if (Rows_log_event* pending= trx_data->pending()) + { + delete pending; + trx_data->set_pending(NULL); + } + + DBUG_RETURN(0); +} + /* Moves the last bunch of rows from the pending Rows event to the binlog (either cached binlog if transaction, or disk binlog). Sets a new pending diff --git a/sql/log.h b/sql/log.h index 20a1b7e8e6d..891134a9762 100644 --- a/sql/log.h +++ b/sql/log.h @@ -307,6 +307,7 @@ public: void update_table_map_version() { ++m_table_map_version; } int flush_and_set_pending_rows_event(THD *thd, Rows_log_event* event); + int remove_pending_rows_event(THD *thd); #endif /* !defined(MYSQL_CLIENT) */ void reset_bytes_written() diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 4712caa5d1b..6f682368334 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -3502,6 +3502,21 @@ int THD::binlog_delete_row(TABLE* table, bool is_trans, } +int THD::binlog_remove_pending_rows_event(bool clear_maps) +{ + DBUG_ENTER(__FUNCTION__); + + if (!mysql_bin_log.is_open()) + DBUG_RETURN(0); + + mysql_bin_log.remove_pending_rows_event(this); + + if (clear_maps) + binlog_table_maps= 0; + + DBUG_RETURN(0); +} + int THD::binlog_flush_pending_rows_event(bool stmt_end) { DBUG_ENTER("THD::binlog_flush_pending_rows_event"); diff --git a/sql/sql_class.h b/sql/sql_class.h index 8ceb93940ab..9a0c305aa9e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1360,6 +1360,7 @@ public: Rows_log_event* binlog_get_pending_rows_event() const; void binlog_set_pending_rows_event(Rows_log_event* ev); int binlog_flush_pending_rows_event(bool stmt_end); + int binlog_remove_pending_rows_event(bool clear_maps); private: uint binlog_table_maps; // Number of table maps currently in the binlog From dbbb48c3c7295539a3fc1a71e21f5649ee02637b Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Wed, 3 Sep 2008 22:52:54 +0200 Subject: [PATCH 427/435] BUG#32709: Assertion failed: trx_data->empty(), file log.cc Incremental fixes: updating a comment and fixing a result file. sql/sql_class.h: Changing comment. --- mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result | 7 +++++++ sql/sql_class.h | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result index c2cbb6885f2..2538358b4d3 100644 --- a/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result +++ b/mysql-test/suite/rpl_ndb/r/rpl_row_basic_7ndb.result @@ -520,3 +520,10 @@ INSERT INTO t7 VALUES (1, "", 1); INSERT INTO t7 VALUES (2, repeat(_utf8'a', 255), 2); Comparing tables master:test.t7 and slave:test.t7 drop table t1, t2, t3, t4, t5, t6, t7; +CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE='NDB' ; +INSERT INTO t1 VALUES (1), (2), (3); +UPDATE t1 SET a = 10; +ERROR 23000: Duplicate entry '10' for key 'PRIMARY' +INSERT INTO t1 VALUES (4); +Comparing tables master:test.t1 and slave:test.t1 +drop table t1; diff --git a/sql/sql_class.h b/sql/sql_class.h index 9a0c305aa9e..019699dff5a 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -1363,7 +1363,11 @@ public: int binlog_remove_pending_rows_event(bool clear_maps); private: - uint binlog_table_maps; // Number of table maps currently in the binlog + /* + Number of outstanding table maps, i.e., table maps in the + transaction cache. + */ + uint binlog_table_maps; enum enum_binlog_flag { BINLOG_FLAG_UNSAFE_STMT_PRINTED, From 788be2aebdb0bce63b45b1fecf2f2d8a12a5cfc7 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Fri, 5 Sep 2008 13:30:01 +0500 Subject: [PATCH 428/435] Fix for bug #39021: SELECT REGEXP BINARY NULL never returns Problem: SELECT ... REGEXP BINARY NULL may lead to server crash/hang. Fix: properly handle NULL regular expressions. mysql-test/r/func_regexp.result: Fix for bug #39021: SELECT REGEXP BINARY NULL never returns - test result. mysql-test/t/func_regexp.test: Fix for bug #39021: SELECT REGEXP BINARY NULL never returns - test case. sql/item_cmpfunc.cc: Fix for bug #39021: SELECT REGEXP BINARY NULL never returns - checking regular expressions' null_value we tested it without a val_xxx() call before, which is wrong. Now Item_func_regex::regcomp() returns -1 in the case and allows to handle NULL expessions properly. sql/item_cmpfunc.h: Fix for bug #39021: SELECT REGEXP BINARY NULL never returns - checking regular expressions' null_value we tested it without a val_xxx() call before, which is wrong. Now Item_func_regex::regcomp() returns -1 in the case and allows to handle NULL expessions properly. --- mysql-test/r/func_regexp.result | 12 ++++++++++++ mysql-test/t/func_regexp.test | 10 ++++++++++ sql/item_cmpfunc.cc | 31 ++++++++++++++++++++++--------- sql/item_cmpfunc.h | 2 +- 4 files changed, 45 insertions(+), 10 deletions(-) diff --git a/mysql-test/r/func_regexp.result b/mysql-test/r/func_regexp.result index c2dbfc3c331..f3a1c625a09 100644 --- a/mysql-test/r/func_regexp.result +++ b/mysql-test/r/func_regexp.result @@ -114,4 +114,16 @@ End of 4.1 tests SELECT 1 REGEXP NULL; 1 REGEXP NULL NULL +SELECT '' REGEXP BINARY NULL; +'' REGEXP BINARY NULL +NULL +SELECT NULL REGEXP BINARY NULL; +NULL REGEXP BINARY NULL +NULL +SELECT 'A' REGEXP BINARY NULL; +'A' REGEXP BINARY NULL +NULL +SELECT "ABC" REGEXP BINARY NULL; +"ABC" REGEXP BINARY NULL +NULL End of 5.0 tests diff --git a/mysql-test/t/func_regexp.test b/mysql-test/t/func_regexp.test index 1b35fab9d54..43fda0d11a8 100644 --- a/mysql-test/t/func_regexp.test +++ b/mysql-test/t/func_regexp.test @@ -64,4 +64,14 @@ drop table t1; SELECT 1 REGEXP NULL; + +# +# Bug #39021: SELECT REGEXP BINARY NULL never returns +# + +SELECT '' REGEXP BINARY NULL; +SELECT NULL REGEXP BINARY NULL; +SELECT 'A' REGEXP BINARY NULL; +SELECT "ABC" REGEXP BINARY NULL; + --echo End of 5.0 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 1994f6bf1a5..bec6c315c5e 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -4341,8 +4341,20 @@ void Item_func_like::cleanup() #ifdef USE_REGEX -bool -Item_func_regex::regcomp(bool send_error) +/** + @brief Compile regular expression. + + @param[in] send_error send error message if any. + + @details Make necessary character set conversion then + compile regular expression passed in the args[1]. + + @retval 0 success. + @retval 1 error occurred. + @retval -1 given null regular expression. + */ + +int Item_func_regex::regcomp(bool send_error) { char buff[MAX_FIELD_WIDTH]; String tmp(buff,sizeof(buff),&my_charset_bin); @@ -4350,12 +4362,12 @@ Item_func_regex::regcomp(bool send_error) int error; if (args[1]->null_value) - return TRUE; + return -1; if (regex_compiled) { if (!stringcmp(res, &prev_regexp)) - return FALSE; + return 0; prev_regexp.copy(*res); my_regfree(&preg); regex_compiled= 0; @@ -4367,7 +4379,7 @@ Item_func_regex::regcomp(bool send_error) uint dummy_errors; if (conv.copy(res->ptr(), res->length(), res->charset(), regex_lib_charset, &dummy_errors)) - return TRUE; + return 1; res= &conv; } @@ -4379,10 +4391,10 @@ Item_func_regex::regcomp(bool send_error) (void) my_regerror(error, &preg, buff, sizeof(buff)); my_error(ER_REGEXP_ERROR, MYF(0), buff); } - return TRUE; + return 1; } regex_compiled= 1; - return FALSE; + return 0; } @@ -4420,13 +4432,14 @@ Item_func_regex::fix_fields(THD *thd, Item **ref) const_item_cache=args[0]->const_item() && args[1]->const_item(); if (!regex_compiled && args[1]->const_item()) { - if (args[1]->null_value) + int comp_res= regcomp(TRUE); + if (comp_res == -1) { // Will always return NULL maybe_null=1; fixed= 1; return FALSE; } - if (regcomp(TRUE)) + else if (comp_res) return TRUE; regex_is_const= 1; maybe_null= args[0]->maybe_null; diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index d250e1b366a..1bd60ff37d9 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -1323,7 +1323,7 @@ class Item_func_regex :public Item_bool_func CHARSET_INFO *regex_lib_charset; int regex_lib_flags; String conv; - bool regcomp(bool send_error); + int regcomp(bool send_error); public: Item_func_regex(Item *a,Item *b) :Item_bool_func(a,b), regex_compiled(0),regex_is_const(0) {} From bf2f368087243eab333ead8d4db2fd5f3e6438c9 Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Fri, 5 Sep 2008 14:06:24 +0500 Subject: [PATCH 429/435] After-merge fix. --- mysql-test/r/create.result | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 1ff4c14c6d1..b8723a87661 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1565,10 +1565,10 @@ CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) SELECT a FROM t1; CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) SELECT a FROM t1; -ERROR 23000: Duplicate entry '1' for key 1 +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY) SELECT a FROM t1; -ERROR 23000: Duplicate entry '1' for key 1 +ERROR 23000: Duplicate entry '1' for key 'PRIMARY' DROP TABLE t1, t2; End of 5.0 tests CREATE TABLE t1 (a int, b int); From 1588c116babefd50672c912dc6bb059d8eb6587f Mon Sep 17 00:00:00 2001 From: Evgeny Potemkin Date: Fri, 5 Sep 2008 14:44:16 +0400 Subject: [PATCH 430/435] Bug#37908: Skipped access right check caused server crash. The check_table_access function initializes per-table grant info and performs access rights check. It wasn't called for SHOW STATUS statement thus left grants info uninitialized. In some cases this led to server crash. In other cases it allowed a user to check for presence/absence of arbitrary values in any tables. Now the check_table_access function is called prior to the statement processing. mysql-test/r/status.result: Added a test case for the bug#37908. mysql-test/t/status.test: Added a test case for the bug#37908. sql/sql_parse.cc: Bug#37908: Skipped access right check caused server crash. Now the check_table_access function is called when the SHOW STATUS statement uses any table except information.STATUS. sql/sql_yacc.yy: Bug#37908: Skipped access right check caused server crash. For the SHOW PROCEDURE/FUNCTION STATUS the 'mysql.proc' table isn't added to the table list anymore as there is no need. --- mysql-test/r/status.result | 18 ++++++++++++++++++ mysql-test/t/status.test | 33 +++++++++++++++++++++++++++++++++ sql/sql_parse.cc | 6 ++++-- sql/sql_yacc.yy | 4 ---- 4 files changed, 55 insertions(+), 6 deletions(-) diff --git a/mysql-test/r/status.result b/mysql-test/r/status.result index b6f855d96cb..97547ff7c47 100644 --- a/mysql-test/r/status.result +++ b/mysql-test/r/status.result @@ -180,3 +180,21 @@ Variable_name Value Com_alter_function 0 Com_create_function 1 Com_drop_function 1 +create database db37908; +create table db37908.t1(f1 int); +insert into db37908.t1 values(1); +grant usage,execute on test.* to mysqltest_1@localhost; +create procedure proc37908() begin select 1; end | +create function func37908() returns int sql security invoker +return (select * from db37908.t1 limit 1)| +select * from db37908.t1; +ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1' +show status where variable_name ='uptime' and 2 in (select * from db37908.t1); +ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1' +show procedure status where name ='proc37908' and 1 in (select f1 from db37908.t1); +ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1' +show function status where name ='func37908' and 1 in (select func37908()); +ERROR 42000: SELECT command denied to user 'mysqltest_1'@'localhost' for table 't1' +drop database db37908; +drop procedure proc37908; +drop function func37908; diff --git a/mysql-test/t/status.test b/mysql-test/t/status.test index bc629e9c86d..8bd9ee26b26 100644 --- a/mysql-test/t/status.test +++ b/mysql-test/t/status.test @@ -261,4 +261,37 @@ drop function f1; show status like 'Com%function'; +# +# Bug#37908: Skipped access right check caused server crash. +# +connect (root, localhost, root,,test); +connection root; +--disable_warnings +create database db37908; +--enable_warnings +create table db37908.t1(f1 int); +insert into db37908.t1 values(1); +grant usage,execute on test.* to mysqltest_1@localhost; +delimiter |; +create procedure proc37908() begin select 1; end | +create function func37908() returns int sql security invoker + return (select * from db37908.t1 limit 1)| +delimiter ;| + +connect (user1,localhost,mysqltest_1,,test); +connection user1; + +--error 1142 +select * from db37908.t1; +--error 1142 +show status where variable_name ='uptime' and 2 in (select * from db37908.t1); +--error 1142 +show procedure status where name ='proc37908' and 1 in (select f1 from db37908.t1); +--error 1142 +show function status where name ='func37908' and 1 in (select func37908()); + +connection root; +drop database db37908; +drop procedure proc37908; +drop function func37908; # End of 5.1 tests diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index eb643184e1f..1e253b8c662 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -2083,13 +2083,15 @@ mysql_execute_command(THD *thd) #endif case SQLCOM_SHOW_STATUS_PROC: case SQLCOM_SHOW_STATUS_FUNC: - res= execute_sqlcom_select(thd, all_tables); + if (!(res= check_table_access(thd, SELECT_ACL, all_tables, UINT_MAX, FALSE))) + res= execute_sqlcom_select(thd, all_tables); break; case SQLCOM_SHOW_STATUS: { system_status_var old_status_var= thd->status_var; thd->initial_status_var= &old_status_var; - res= execute_sqlcom_select(thd, all_tables); + if (!(res= check_table_access(thd, SELECT_ACL, all_tables, UINT_MAX, FALSE))) + res= execute_sqlcom_select(thd, all_tables); /* Don't log SHOW STATUS commands to slow query log */ thd->server_status&= ~(SERVER_QUERY_NO_INDEX_USED | SERVER_QUERY_NO_GOOD_INDEX_USED); diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index baecf716cdd..04f73cb963b 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -10105,8 +10105,6 @@ show_param: { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_STATUS_PROC; - if (!sp_add_to_query_tables(YYTHD, lex, "mysql", "proc", TL_READ)) - MYSQL_YYABORT; if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) MYSQL_YYABORT; } @@ -10114,8 +10112,6 @@ show_param: { LEX *lex= Lex; lex->sql_command= SQLCOM_SHOW_STATUS_FUNC; - if (!sp_add_to_query_tables(YYTHD, lex, "mysql", "proc", TL_READ)) - MYSQL_YYABORT; if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) MYSQL_YYABORT; } From 860f74a8c1e1ed8aa815e07bea9585e3092c5392 Mon Sep 17 00:00:00 2001 From: Narayanan V Date: Fri, 5 Sep 2008 20:20:26 +0530 Subject: [PATCH 431/435] updating server version number configure.in: change server version number to 5.1.29 --- configure.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.in b/configure.in index 7190965aebc..7365ddd9b66 100644 --- a/configure.in +++ b/configure.in @@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM # # When changing major version number please also check switch statement # in mysqlbinlog::check_master_version(). -AM_INIT_AUTOMAKE(mysql, 5.1.30) +AM_INIT_AUTOMAKE(mysql, 5.1.29) AM_CONFIG_HEADER([include/config.h:config.h.in]) PROTOCOL_VERSION=10 From cc26bc94662762b7c650d62f40a37ac13f7f65ce Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 5 Sep 2008 18:21:59 +0300 Subject: [PATCH 432/435] Bug #38701: Crash in String::append when inserting duplicate empty strings an uft8 SET col When reporting a duplicate key error the server was making incorrect assumptions on what the state of the value string to include in the error is. Fixed by accessing the data in this string in a "safe" way (without relying on it having a terminating 0). Detected by code analysis and fixed a similar problem in reporting the foreign key duplicate errors. mysql-test/r/type_set.result: Bug #38701: test case mysql-test/t/type_set.test: Bug #38701: test case sql/handler.cc: Bug #38701: don't rely on the presence of a terminating 0 in the string --- mysql-test/r/type_set.result | 10 ++++++++++ mysql-test/t/type_set.test | 19 +++++++++++++++++++ sql/handler.cc | 4 ++-- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/mysql-test/r/type_set.result b/mysql-test/r/type_set.result index e36f21f2996..09531ec60d5 100644 --- a/mysql-test/r/type_set.result +++ b/mysql-test/r/type_set.result @@ -93,4 +93,14 @@ c 1,2,3 64 DROP TABLE t1; +CREATE TABLE t1 ( +set_unique_utf8 set ('a','b','c','d','e','f','g','h','i','j','k','l', +'m','n','o','p','q','r','s','t','u','v','w','x', +'y','z') CHARACTER SET utf8, +unique (set_unique_utf8) +); +INSERT INTO t1 ( set_unique_utf8 ) VALUES ( '' ); +INSERT INTO t1 ( set_unique_utf8 ) VALUES ( '' ); +ERROR 23000: Duplicate entry '' for key 'set_unique_utf8' +DROP TABLE t1; End of 5.0 tests diff --git a/mysql-test/t/type_set.test b/mysql-test/t/type_set.test index e98555e137b..a851d116743 100644 --- a/mysql-test/t/type_set.test +++ b/mysql-test/t/type_set.test @@ -75,4 +75,23 @@ INSERT INTO t1 VALUES(9223372036854775808); SELECT * FROM t1; DROP TABLE t1; +# +# Bug #38701: Crash in String::append when inserting duplicate empty strings +# an uft8 SET col +# + +CREATE TABLE t1 ( + set_unique_utf8 set ('a','b','c','d','e','f','g','h','i','j','k','l', + 'm','n','o','p','q','r','s','t','u','v','w','x', + 'y','z') CHARACTER SET utf8, + unique (set_unique_utf8) +); + +INSERT INTO t1 ( set_unique_utf8 ) VALUES ( '' ); +--error ER_DUP_ENTRY +INSERT INTO t1 ( set_unique_utf8 ) VALUES ( '' ); + +DROP TABLE t1; + + --echo End of 5.0 tests diff --git a/sql/handler.cc b/sql/handler.cc index cc2db397ad4..f26e84bdfdf 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -2496,7 +2496,7 @@ void handler::print_keydup_error(uint key_nr, const char *msg) str.append(STRING_WITH_LEN("...")); } my_printf_error(ER_DUP_ENTRY, msg, - MYF(0), str.c_ptr(), table->key_info[key_nr].name); + MYF(0), str.c_ptr_safe(), table->key_info[key_nr].name); } } @@ -2564,7 +2564,7 @@ void handler::print_error(int error, myf errflag) str.append(STRING_WITH_LEN("...")); } my_error(ER_FOREIGN_DUPLICATE_KEY, MYF(0), table_share->table_name.str, - str.c_ptr(), key_nr+1); + str.c_ptr_safe(), key_nr+1); DBUG_VOID_RETURN; } textno= ER_DUP_KEY; From 589355f0f58dc91d0c2f779f1a66bc22f87ed5a2 Mon Sep 17 00:00:00 2001 From: Mats Kindahl Date: Tue, 9 Sep 2008 12:19:31 +0200 Subject: [PATCH 433/435] Bug #39106: SUPER is not required to change binlog format for session A user without SUPER privileges can change the value of the session variable BINLOG_FORMAT, causing problems for a DBA. This changeset requires a user to have SUPER privileges to change the value of the session variable BINLOG_FORMAT, and not only the global variable BINLOG_FORMAT. mysql-test/suite/binlog/t/binlog_grant.test: Adding test to test grants needed for SQL_LOG_BIN and BINLOG_FORMAT. sql/set_var.cc: Adding code to check that user has SUPER permission needed to change the value of BINLOG_FORMAT. sql/set_var.h: Adding function sys_var_thd_binlog_format::check() --- mysql-test/suite/binlog/r/binlog_grant.result | 28 +++++++++ mysql-test/suite/binlog/t/binlog_grant.test | 60 +++++++++++++++++++ sql/set_var.cc | 15 +++++ sql/set_var.h | 1 + 4 files changed, 104 insertions(+) create mode 100644 mysql-test/suite/binlog/r/binlog_grant.result create mode 100644 mysql-test/suite/binlog/t/binlog_grant.test diff --git a/mysql-test/suite/binlog/r/binlog_grant.result b/mysql-test/suite/binlog/r/binlog_grant.result new file mode 100644 index 00000000000..21ebb891103 --- /dev/null +++ b/mysql-test/suite/binlog/r/binlog_grant.result @@ -0,0 +1,28 @@ +reset master; +set @saved_binlog_format = @@global.binlog_format; +create user mysqltest_1@localhost; +show grants for mysqltest_1@localhost; +Grants for mysqltest_1@localhost +GRANT USAGE ON *.* TO 'mysqltest_1'@'localhost' +**** Variable SQL_LOG_BIN **** +[root] +set global sql_log_bin = 1; +ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL +set session sql_log_bin = 1; +[plain] +set global sql_log_bin = 1; +ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL +set session sql_log_bin = 1; +ERROR 42000: Access denied; you need the SUPER privilege for this operation +**** Variable BINLOG_FORMAT **** +[root] +set global binlog_format = row; +set session binlog_format = row; +[plain] +set global binlog_format = row; +ERROR 42000: Access denied; you need the SUPER privilege for this operation +set session binlog_format = row; +ERROR 42000: Access denied; you need the SUPER privilege for this operation +**** Clean up **** +set global binlog_format = @saved_binlog_format; +drop user mysqltest_1@localhost; diff --git a/mysql-test/suite/binlog/t/binlog_grant.test b/mysql-test/suite/binlog/t/binlog_grant.test new file mode 100644 index 00000000000..d36dcce4cc3 --- /dev/null +++ b/mysql-test/suite/binlog/t/binlog_grant.test @@ -0,0 +1,60 @@ +# Test grants for various objects (especially variables) related to +# the binary log + +source include/have_log_bin.inc; + +connection default; +--disable_warnings +reset master; +--enable_warnings + +set @saved_binlog_format = @@global.binlog_format; +create user mysqltest_1@localhost; +show grants for mysqltest_1@localhost; + +connect (plain,localhost,mysqltest_1,,test); +connect (root,localhost,root,,test); + +# Testing setting both session and global SQL_LOG_BIN variable both as +# root and as plain user. + +--echo **** Variable SQL_LOG_BIN **** + +connection root; +--echo [root] +--error ER_LOCAL_VARIABLE +set global sql_log_bin = 1; +set session sql_log_bin = 1; + +connection plain; +--echo [plain] +--error ER_LOCAL_VARIABLE +set global sql_log_bin = 1; +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +set session sql_log_bin = 1; + + +# Testing setting both session and global BINLOG_FORMAT variable both +# as root and as plain user. + +--echo **** Variable BINLOG_FORMAT **** + +connection root; +--echo [root] +set global binlog_format = row; +set session binlog_format = row; + +connection plain; +--echo [plain] +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +set global binlog_format = row; +--error ER_SPECIFIC_ACCESS_DENIED_ERROR +set session binlog_format = row; + +--echo **** Clean up **** +disconnect plain; +disconnect root; + +connection default; +set global binlog_format = @saved_binlog_format; +drop user mysqltest_1@localhost; diff --git a/sql/set_var.cc b/sql/set_var.cc index 7d9d88f0281..4259c3a6aaf 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1162,6 +1162,21 @@ void fix_slave_exec_mode(enum_var_type type) bit_do_set(slave_exec_mode_options, SLAVE_EXEC_MODE_STRICT); } + +bool sys_var_thd_binlog_format::check(THD *thd, set_var *var) { + /* + All variables that affect writing to binary log (either format or + turning logging on and off) use the same checking. We call the + superclass ::check function to assign the variable correctly, and + then check the value. + */ + bool result= sys_var_thd_enum::check(thd, var); + if (!result) + result= check_log_update(thd, var); + return result; +} + + bool sys_var_thd_binlog_format::is_readonly() const { /* diff --git a/sql/set_var.h b/sql/set_var.h index 603c3114d0e..8ae97c6502d 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -1126,6 +1126,7 @@ public: &binlog_format_typelib, fix_binlog_format_after_update) {}; + bool check(THD *thd, set_var *var); bool is_readonly() const; }; From c0cfce21d6cf6d1a1fbd8b080f91ed6a88b78329 Mon Sep 17 00:00:00 2001 From: Martin Hansson Date: Tue, 9 Sep 2008 12:49:08 +0200 Subject: [PATCH 434/435] Bug#35600: Security breach via view, I_S table and prepared statement/stored procedure View privileges are properly checked after the fix for bug no 36086, so the method TABLE_LIST::get_db_name() must be used instead of field TABLE_LIST::db, as this only works for tables. Bug appears when accessing views in prepared statements. mysql-test/r/view_grant.result: Bug#35600: Extended existing test case. mysql-test/t/view_grant.test: Bug#35600: Extended existing test result. sql/sql_parse.cc: Bug#35600: Using method to retrieve database name instead of field. --- mysql-test/r/view_grant.result | 7 +++++++ mysql-test/t/view_grant.test | 11 ++++++++++- sql/sql_parse.cc | 10 ++++++---- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/mysql-test/r/view_grant.result b/mysql-test/r/view_grant.result index 9a4fa95912d..1821e50e294 100644 --- a/mysql-test/r/view_grant.result +++ b/mysql-test/r/view_grant.result @@ -978,7 +978,9 @@ CREATE DATABASE mysqltest1; USE mysqltest1; CREATE VIEW v1 AS SELECT * FROM information_schema.tables LIMIT 1; CREATE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT 1 AS A; +CREATE VIEW test.v3 AS SELECT 1 AS a; GRANT SELECT ON mysqltest1.* to mysqluser1@localhost; +GRANT ALL ON test.* TO mysqluser1@localhost; PREPARE stmt_v1 FROM "SELECT * FROM mysqltest1.v1"; PREPARE stmt_v2 FROM "SELECT * FROM mysqltest1.v2"; REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost; @@ -986,6 +988,11 @@ EXECUTE stmt_v1; ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v1' EXECUTE stmt_v2; ERROR 42000: SELECT command denied to user 'mysqluser1'@'localhost' for table 'v2' +PREPARE stmt FROM "SELECT a FROM v3"; +EXECUTE stmt; +a +1 DROP VIEW v1, v2; DROP DATABASE mysqltest1; +DROP VIEW test.v3; DROP USER mysqluser1@localhost; diff --git a/mysql-test/t/view_grant.test b/mysql-test/t/view_grant.test index afef5c5bc7b..4e8d97e4444 100644 --- a/mysql-test/t/view_grant.test +++ b/mysql-test/t/view_grant.test @@ -1265,8 +1265,11 @@ USE mysqltest1; CREATE VIEW v1 AS SELECT * FROM information_schema.tables LIMIT 1; CREATE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT 1 AS A; +CREATE VIEW test.v3 AS SELECT 1 AS a; + --connection default GRANT SELECT ON mysqltest1.* to mysqluser1@localhost; +GRANT ALL ON test.* TO mysqluser1@localhost; --connect (connection1, localhost, mysqluser1, , test) PREPARE stmt_v1 FROM "SELECT * FROM mysqltest1.v1"; @@ -1281,9 +1284,15 @@ REVOKE SELECT ON mysqltest1.* FROM mysqluser1@localhost; EXECUTE stmt_v1; --error ER_TABLEACCESS_DENIED_ERROR EXECUTE stmt_v2; - --disconnect connection1 + +--connect (connection2, localhost, mysqluser1,,) +PREPARE stmt FROM "SELECT a FROM v3"; +EXECUTE stmt; +--disconnect connection2 + --connection default DROP VIEW v1, v2; DROP DATABASE mysqltest1; +DROP VIEW test.v3; DROP USER mysqluser1@localhost; diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 9bfa21b5e4b..ee52a516147 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -5196,12 +5196,14 @@ check_table_access(THD *thd, ulong want_access,TABLE_LIST *tables, tables->grant.privilege= want_access; else if (tables->db && thd->db && strcmp(tables->db, thd->db) == 0) { - if (check_access(thd,want_access,tables->db,&tables->grant.privilege, - 0, no_errors, test(tables->schema_table))) + if (check_access(thd, want_access, tables->get_db_name(), + &tables->grant.privilege, 0, no_errors, + test(tables->schema_table))) goto deny; // Access denied } - else if (check_access(thd,want_access,tables->db,&tables->grant.privilege, - 0, no_errors, test(tables->schema_table))) + else if (check_access(thd, want_access, tables->get_db_name(), + &tables->grant.privilege, 0, no_errors, + test(tables->schema_table))) goto deny; } thd->security_ctx= backup_ctx; From 776793a97c97c4e2b2c7a6a2870696c147eb235c Mon Sep 17 00:00:00 2001 From: Ramil Kalimullin Date: Tue, 9 Sep 2008 20:05:27 +0500 Subject: [PATCH 435/435] Fix for bug#37526: asymertic operator <=> in trigger Problem: <=> operator may return wrong results comparing NULL and a DATE/DATETIME/TIME value. Fix: properly check NULLs. mysql-test/r/type_datetime.result: Fix for bug#37526: asymertic operator <=> in trigger - test result. mysql-test/t/type_datetime.test: Fix for bug#37526: asymertic operator <=> in trigger - test case. sql/item_cmpfunc.cc: Fix for bug#37526: asymertic operator <=> in trigger - if is_nulls_eq is TRUE Arg_comparator::compare_datetime() should return 1 only if both arguments are NULL. --- mysql-test/r/type_datetime.result | 23 +++++++++++++++++++++++ mysql-test/t/type_datetime.test | 16 ++++++++++++++++ sql/item_cmpfunc.cc | 20 +++++++++++++------- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/mysql-test/r/type_datetime.result b/mysql-test/r/type_datetime.result index 3814e2f8348..9c358c41215 100644 --- a/mysql-test/r/type_datetime.result +++ b/mysql-test/r/type_datetime.result @@ -560,4 +560,27 @@ select * from t2 where id in (select id from t2 as x1 where (t2.cur_date is null)); id cur_date drop table t1,t2; +SELECT +CAST('NULL' AS DATE) <=> CAST('2008-01-01' AS DATE) n1, +CAST('2008-01-01' AS DATE) <=> CAST('NULL' AS DATE) n2, +CAST('NULL' AS DATE) <=> CAST('NULL' AS DATE) n3, +CAST('NULL' AS DATE) <> CAST('2008-01-01' AS DATE) n4, +CAST('2008-01-01' AS DATE) <> CAST('NULL' AS DATE) n5, +CAST('NULL' AS DATE) <> CAST('NULL' AS DATE) n6, +CAST('NULL' AS DATE) < CAST('2008-01-01' AS DATE) n7, +CAST('2008-01-01' AS DATE) < CAST('NULL' AS DATE) n8, +CAST('NULL' AS DATE) < CAST('NULL' AS DATE) n9; +n1 n2 n3 n4 n5 n6 n7 n8 n9 +0 0 1 NULL NULL NULL NULL NULL NULL +Warnings: +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' +Warning 1292 Truncated incorrect datetime value: 'NULL' End of 5.0 tests diff --git a/mysql-test/t/type_datetime.test b/mysql-test/t/type_datetime.test index 722e4c082a7..16a7bb66755 100644 --- a/mysql-test/t/type_datetime.test +++ b/mysql-test/t/type_datetime.test @@ -388,4 +388,20 @@ where id in (select id from t2 as x1 where (t2.cur_date is null)); drop table t1,t2; + +# +# Bug #37526: asymertic operator <=> in trigger +# +SELECT + CAST('NULL' AS DATE) <=> CAST('2008-01-01' AS DATE) n1, + CAST('2008-01-01' AS DATE) <=> CAST('NULL' AS DATE) n2, + CAST('NULL' AS DATE) <=> CAST('NULL' AS DATE) n3, + CAST('NULL' AS DATE) <> CAST('2008-01-01' AS DATE) n4, + CAST('2008-01-01' AS DATE) <> CAST('NULL' AS DATE) n5, + CAST('NULL' AS DATE) <> CAST('NULL' AS DATE) n6, + CAST('NULL' AS DATE) < CAST('2008-01-01' AS DATE) n7, + CAST('2008-01-01' AS DATE) < CAST('NULL' AS DATE) n8, + CAST('NULL' AS DATE) < CAST('NULL' AS DATE) n9; + + --echo End of 5.0 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index bec6c315c5e..0410c781590 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -966,19 +966,24 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg, 1 if items are equal or both are null 0 otherwise If is_nulls_eq is FALSE: - -1 a < b or one of items is null + -1 a < b or at least one item is null 0 a == b 1 a > b + See the table: + is_nulls_eq | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | + a_is_null | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | + b_is_null | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | + result | 1 | 0 | 0 |0/1|-1 |-1 |-1 |-1/0/1| */ int Arg_comparator::compare_datetime() { - bool is_null= FALSE; + bool a_is_null, b_is_null; ulonglong a_value, b_value; /* Get DATE/DATETIME/TIME value of the 'a' item. */ - a_value= (*get_value_func)(thd, &a, &a_cache, *b, &is_null); - if (!is_nulls_eq && is_null) + a_value= (*get_value_func)(thd, &a, &a_cache, *b, &a_is_null); + if (!is_nulls_eq && a_is_null) { if (owner) owner->null_value= 1; @@ -986,14 +991,15 @@ int Arg_comparator::compare_datetime() } /* Get DATE/DATETIME/TIME value of the 'b' item. */ - b_value= (*get_value_func)(thd, &b, &b_cache, *a, &is_null); - if (is_null) + b_value= (*get_value_func)(thd, &b, &b_cache, *a, &b_is_null); + if (a_is_null || b_is_null) { if (owner) owner->null_value= is_nulls_eq ? 0 : 1; - return is_nulls_eq ? 1 : -1; + return is_nulls_eq ? (a_is_null == b_is_null) : -1; } + /* Here we have two not-NULL values. */ if (owner) owner->null_value= 0;